UDP不提供可靠性:它把应用程序传给 IP层的数据发送出去,但是并不保证它们能到达目的地。
应用程序必须关心 IP数据报的长度。如果它超过网络的 MTU,那么就要对 IP数据报进行分片。
如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。
UDP首部
UDP校验和( 二进制反码计算和)
- UDP检验和覆盖UDP首部和UDP数据。
- IP首部的检验和,它只覆盖 IP的首部—并不覆盖IP数据报中的任何数据
- UDP和TCP在首部中都有覆盖它们首部和数据的检验和。
- UDP的检验和是可选的,而TCP的检验和是必需的。
IP分片
- IP把MTU与数据报长度进行比较,如果需要则进行分片。
- 分片可以发生在原始发送端主机上,也可以发生在中间路由器上
- 把一份 IP数据报分片以后,只有到达目的地才进行重新组装
- 重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的。
IP标志位中有,"不分片"位,如果将该位置1,IP将不对数据报进行分片。
相反把数据报丢弃并发送一个ICMP差错报文(需要分片但设置了不分片位)
- 当IP数据报被分片后,每一片都成为一个分组,具有自己的 IP首部,并在选择路由时与其他分组独立。
- 这样,当数据报的这些片到达目的端时有可能会失序,
- 但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
问题:
- 但一片分页丢失时,重转整个数据报
- IP层本身没有重传机制
- 超时重传时,上层并不知道丢失的哪个一片分页
- 因为分页是在IP做的,并且是在中继路由器中做分页,
- 因此IP层 也不知道要重传那些片。
- 因此上层会将整个数据包重传过来。
注:
任何传输层首部只出现在第1片数据中
- ICMP不可达差错(需要分片)
- 当路由器收到一份需要分片的数据报,而在 IP首部又设置了不分片( DF)的标志比特。
- 如果某个程序需要判断到达目的端的路途中最小MTU
是多少—称作路径MTU发现机制,那么这个差错就可以被该程序使用。
- UDP和ARP之间的接口,大多数的ARP实现在等待ARP应答时只保留最近传送给目的端的数据报
- ICMP源站抑制差错报文
- 当系统接收IP数据报的速率超过这些数据报被处理的速率时