1.引言
UDP封装: 20字节IP首部+8字节UDP首部+UDP数据
2.UDP首部
端口号表示发送进程和接收进程.
UDP长度指UDP首部和数据的总长度.
UDP检验和覆盖UDP首部和数据.(不包括伪首部)
UDP伪首部包含了IP首部的一些字段,只在计算UDP校验和时使用,并不实际存在.
3.UDP检验和
UDP校验和包含UDP伪首部,UDP首部和数据,如果数据不足16bit的整数倍,填充0补数.
当接收端检查到校验和有误,直接丢弃DUP报文,而不产生差错报文.(与IP层检查IP首部校验和有错误时操作相同)
**TCP/IP协议使用的校验和都是16位的反码和,所以不能检查出交换2个16位的差错.
4.IP分片
IP首部中的16位标识字段,3位标志字段和13位片偏移字段作用于IP分组重组.
标识字段标识每一份IP数据报,IP数据报分片时该字段复制到每个分片中.
标志字段其中一位表示”更多的片”,除最后一片外,其他分组数据报都置为1.另一位表示”不分片位”,如果置为1,当需要对IP数据报分片时,丢弃数据报并发送ICMP差错报文(需要分片但设置了不分片选项).
片偏移字段表示该片偏移原始数据报开始处的位置.
分片重组过程:
(1)当IP层收到一份IP数据报,首先IP选路,然后查询该接口MTU,如果IP数据报长度大于接口MTU,既要IP分片.
(2)IP数据报分片,到达【最终目的地址】才进行重新组装.
(3)分组和重组发生在【网络层(IP)】,对运输层(UDP/TCP)是透明的.
(4)即使丢失了一片数据报,重传整个IP数据报.因为IP层没有超时重传机制,该机制由更高层协议提供,如TCP.
(5)在分片中,除最后一片外,其他数据部分(除IP首部外的数据)必须为8bit的倍数.
(6)【传输层】首部只出现在第一片IP数据报中.
IP数据报指IP层【端到端】的传输单元(在分片之前和重组之后).
分组指在IP层和链路层之间传输的数据单元.分组可以为一个完整的IP数据报,也可以为IP数据报的一个分片.然后把分组封装成链路层的数据帧.
5.ICMP不可达差错(需要分片)
当路由器收到一份【需要分片】的数据报,而在IP首部【设置了不分片(DF)】的标识比特,那么将向发送该数据报的源地址发送ICMP不可达差错(需要分片).路径MTU发现机制即利用该差错报文实现.
6.ICMP源站抑制差错
当一个系统接收数据报的速度大于数据处理的数据,就【可能】产生ICMP源站抑制差错.
7.UDP与ARP的交互
大多数ARP实现在等待ARP应答时只保留最近传送给目的端的数据报。