【TCP/IP详解】第11章 UDP:用户数据报协议

来源:互联网 发布:美国零售数据最新 编辑:程序博客网 时间:2024/05/16 18:01
11 UDP:用户数据报协议
U D P是一个简单的面向数据报的运输层协议
U D P不提供可靠性:它把应用程序传给 I P层的数据发送出去,但是并不保证它们能到达目的地。
UDP首部
端口号表示发送进程和接收进程。 U D P长度字段指的是U D P首部和 U D P数据的字节长度。
UDP检验和
U D P检验和覆盖 U D P首部和U D P 数据。回想 I P首部的检验和,它只覆盖 I P的首部。
U D P的检验和是可选的,而 T C P的检验和是必需的
U D P检验和的基本计算方法与 I P首部检验和计算方法相类似( 16 bit字的二进制反码和),但是它们之间存在不同的地方。首先, U D P数据报的长度可以为奇数字节,但是检验和算法是把若干个 16 bit字相加。解决方法是必要时在最后增加 填充字节 0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。其次, U D P数据报和T C P 段都包含一个 1 2字节长的 伪首部,它是为了计算检验和而设置的。伪首部包含 I P首部一些字段。其目的是让 U D P两次检查数据是否已经正确到达目的地。
IP分片
把一份I P 数据报分片以后,只有到达目的地才进行重新组装。。重新组装由目的端的 I P层来完成,其目的是使分片和重新组装过程对运输层( T C PU D P )是透明的, I P首部中包含的数据为分片和重新组装提供了足够的信息。
对于发送端发送的每份I P数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置 1。片偏移字段指的是该片偏移原始数据报开始处的位置。
另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置 1I P 将不对数据报进行分片。相反把数据报丢弃并发送一个 I C M P差错报文给起始端。
ICMP不可达差错(需要分片)
当路由器收到一份需要分片的数据报,而在 I P首部又设置了不分片(D F)的标志比特。如果某个程序需要判断到达目的端的路途中最小 MTU是多少—称作路径MTU发现机制,那么这个差错就可以被该程序使用。
Traceroute 确定路径 MTU
采用UDP 的路径MTU发现
最大 UDP数据报长度
理论上,I P 数据报的最大长度是 6 5 5 3 5字节,这是由I P首部 1 6比特总长度字段所限制的。去除 2 0字节的I P 首部和8个字节的 U D P首部,U D P 数据报中用户数据的最长长度为 6 5 5 0 7字节。但是,大多数实现所提供的长度比这个最大值小。
ICMP源站抑制差错
当一个系统(路由器或主机)接收数据报的速度比其处理速度快时,可能产生这个差错。注意限定词“可能”。即使一个系统已经没有缓存并丢弃数据报,也不要求它一定要发送源站抑制报文。
原创粉丝点击