当前位置:网站首页>HCIE学习记录——数据封装与常用协议(TCP/UDP)
HCIE学习记录——数据封装与常用协议(TCP/UDP)
2022-08-02 14:14:00 【机器学习小弟】
前言
本文主要介绍数据封装过程与常用的协议。
一、数据封装过程
二、传输层协议——TCP、UDP
1.TCP协议
一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。
报文格式
Seq number:序号,表示传输第几个数据段
Ack number:确认号,收到多少数据段
SYN:同步请求,建立连接
ACK:代表收到对方数据段的状态。
FIN:结束,断开连接。
TCP的连接——三次握手
任何基于TCP的应用,电脑需要与服务器进行连接,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
1.请求端PC——>服务器端。SYN置位,请求建立连接。Seq number为产生的随机序号a,Ack number为0(尚未进行连接)。
2.服务器端——>请求端PC。SYN置位,请求建立连接;ACK置位,确认收到请求。Seq number为产生的随即序号b,Ack number为a+1(对方序号+1)。
3.请求端PC——>服务器端。ACK置位,确认收到请求。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
TCP连接建立。
第三次传输有什么作用?
答:当网络质量差时,前面的数据段可能会延迟回复,如果没有第三次传输确认,会导致服务器端连接一直打开,造成资源浪费。
TCP的关闭——四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
1.请求端PC——>服务器端。FIN置位,ACK置位。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
2.服务器端——>请求端PC。ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
3.服务器端——>请求端PC。FIN置位,ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
4.请求端PC——>服务器端。ACK置位。Seq number为a+2,Ack number为b+2。
TCP连接断开。
为什么服务器端要分两次传输置位信息呢?
答:第一次传输是确认收到断开连接请求,但是不确定自身是否也要断开连接(保证自身数据段的完整性)。第二次传输则是确认自身也要断开连接。
2.UDP协议
一种简单的无连接的传输层协议,由IETF的RFC 768定义。
报文格式
边栏推荐
猜你喜欢
随机推荐
如何编辑VirtualLab Fusion结果的格式
unity-shader(中级)
MySQL协议长什么样子
Debug on pure method is called
为什么Volatile能保证双重检查锁的线程安全
Evaluate multipath BBR congestion control on ns3
类模板/赋值运算和加等运算
Test case exercises
系统性能和TCP/UDP网络优化-学习大杂烩
C#实现简单的计算器
mininet multihomed topology
深入理解Mysql索引底层数据结构与算法
光波导的入射耦合和出射耦合区域
计算机导论——数据库
光学好书推荐
Windows下mysql服务无法启动:服务没有报告任何错误。
泰伯效应.
嵌入式学习硬件篇------初识ARM
远程连接Ubuntu中的Mysql
固态硬盘到底要不要分区