TCP/IP之九:UDP用户数据包协议

本文解析了UDP数据报格式及其校验和计算方法,并介绍了UDP的差错控制机制,包括如何处理校验和错误以及可能使用的ICMP源站遏制差错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

至此,我们已经基本讨论完网络接口层和网络层的主要协议,终于来到传输层的领地,传输层从内容复杂性上来讲基本上是TCP一雄称霸,另外还有UDP这个小国,本文我们先讨论一下UDP。

UDP数据报格式如下:

5S0W)V`1`[E7CUSL9(1YTY6

(1)Source Port为源端口号;Destination Port为目的端口号;Length为UDP长度,包含头部与数据部分;checksum为校验和。
(2)Checksum的计算:这个校验和是16位反码求和,在进行校验和计算之前,先给UDP数据包加一个伪首部,并在尾部加适当字节的填充,填充的方法和以太网帧的尾部填充是一样的。而伪首部格式如下

_AUL4FFY9BC@[UVC2QS95U7

这个伪首部的作用等我分析UDP源码的时候我再详细进行阐述,tcp中也有类似的伪首部。
The pseudo  header  conceptually prefixed to the UDP header contains the source  address,  the destination  address,  the protocol,  and the  UDP length.   This information gives protection against misrouted datagrams.This checksum procedure is the same as is used in TCP.

需要注意的是:如果计算的校验和为全0,UDP将校验和字段全置为1;而如果接收端发现校验和字段为全0,说明发送端没有计算校验和。

UDP中的差错控制:

(1)UDP的差错控制能力很弱,一般来说就只有校验和,如果发现这个校验和错了,就丢弃该分节;
(2)除了校验和之外,还有一个ICMP源站遏制差错(Source Quench Message)可能被UDP使用,当接收端的处理速度赶不上数据发送速度时,即数据来得太快导致接收端处理不过来时,接收端可能会发送这个ICMP源站遏制差错报文,Source Quench Message的格式如下,详细介绍请参考ICMP的RFC(http://www.rfc-editor.org/rfc/rfc792.txt):

(D9%[C7G3_~HP]UL}CP)VW0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值