第11章UDP用户数据报协议
1、UDP首部
2、UDP分片
在第二章,讲链路层是,提到过以太网,刨除数据帧帧头,最多传输的长度为1500,也就是说,如果一个ip数据报,长度大于1500,则需要分片。
分片方法:
- 在ip头中3位标志,13位片偏移,这俩东西就是用来分片的。
- 3位标志中:一个更多的片标识,除了最后一个分片,其它分片都要有这个标识,还有一个不分片标识,如果置上,则即便IP数据报再长,也不分片,但是会将该IP数据报丢弃,并发送一个ICMP差错报文给发送端。
- 13位片偏移:用于表示相对于起始的偏移量,就是个offset。
- 每个分片都有一个独立的IP头,20个字节。
- IP的分片和组装都是在IP层完成的,其对UDP/TCP网络层是透明的。
- 如果在传输过程中,某个分片丢失,则需要重传整个IP数据报,不能单独传递某个分片,这主要是,如果是中间某个路由器做的分片,起始端也不知道如何分片的,所以只能重传整个IP数据报。
- 至于重不重传。则只能有网络层来决定。TCP会丢包重传,但是UDP则不会,IP层是没有丢包重传机制的。
- 传输单元,IP层叫IP数据报,链路层叫分组
IP报分片如下图所示,注意,只有第一个分片有UDP头,但是每个分片都有IP首部。
3、ICMP不可达差错(需要分片)
如果在IP首部设置了不可分片标志,但是达到MTU上限,必须分片,则会丢弃该IP报,返回ICMP不可达差错。