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

来源:互联网 发布:如何查看淘宝产品排名 编辑:程序博客网 时间:2024/05/23 14:07

至此,我们已经基本讨论完网络接口层和网络层的主要协议,终于来到传输层的领地,传输层从内容复杂性上来讲基本上是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



0 0
原创粉丝点击