TCP/UDP协议格式&协议特性(简述)

UDP协议

协议格式:

16位源端端口以及16位对端端口:描述通信两端;

16位数据报长度:描述报文长度(包括头部),解决粘包问题,限制UDP报文必须小于64K;

sendto最多发送64K-8(报文头部占8个字节);

16位校验和:用于校验接收到的数据是否与对方发送的数据一致(二进制反码求和算法);

协议特性:

无连接,不可靠,面向数据报;

无连接:通信的时候不需要建立连接,知道对方地址即可;

不可靠:不保证数据能够安全到达对端,也不保证有序到达对端;

面向数据报:无连接,不可靠,有固定最大长度限度的传输方式(小于64K);

编程影响:

①UDP有可能会丢包,且不保证有序到达对端,需要程序员在应用层进行丢包检测、丢包重传以及包序管理;

②UDP要求数据整条传输交付,不能半条或多条,要求recvfrom接收数据时缓冲区足够大;

TCP协议

协议格式:

16位源端端口以及16位对端端口:描述通信两端;

32位序号:告诉接收端,这条数据在整体数据中的排序,根据接收信号进行排序;

32位确认序号:向发送端确认,确认序号之前的数据都已经收到了;

4位头部长度:以4节为单位描述TCP报文头部长度,最长为60字节,最小为20字节(上图前五行的固定长度为20字节);

6位保留:未使用的区域;

6位标志位:FIN(表示关闭连接,只表示不再给对方发送数据),SYN(表示当前的数据是连接建立请求数据),RST(重置链接),PUSH(提示接收端应用程序立刻从TCP缓冲区把数据读走),ACK(确认应答),URG(紧急指针有效位);

16位窗口大小:用于实现滑动窗口机制进行流量控制;

16位校验和:用于校验接收到的数据是否与对方发送的数据一致(二进制反码求和算法);

16位紧急指针:指向带外优先数据的结束位置;

0~40字节选项数据:通常为额外的协商信息

协议特性:

面向连接,可靠传输,提供字节流传输服务;

猜你喜欢

转载自blog.csdn.net/SFDWU3QVG/article/details/126875249
今日推荐