IP协议
IP协议格式
- 版本:若为IPV4则为4,若为IPV6则为6。
- 首部长度:单位为4个字节。最小为5,最大为15。所以首部最小长度为20个字节,最大长度为60个字节。
- 服务类型:Qos用,目前不怎么用。
- 总长度:字节为单位,最多可以传送65535字节的IP数据包。若超过该长度,需要分片。
- 标识:唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装
- 标志:后两位才有用,最低位表示后面是否还有分片【MF:more fragment】,倒数第二位表示是否允许分片【DF:don’t fagment】。
- 片偏移:表示每个分片在整个数据包中的相对位置,用于重组。
- 生存时间TTL:经过一个路由器减一。字段值为0时,数据报被丢弃,并且发送ICMP报文通知源主机。目的是防止数据报在选路时无休止地在网络中流动。
- 协议:区分上层协议。表示数据字段装载的是传输层的哪一个协议,包括tcp、udp、ICMP、IGMP。
- 首部校验和:仅对IP首部进行校验。【tcp、udp、ICMP、IGMP:对首部和数据进行校验】
- 源地址:IP地址
- 目的地址:IP地址
- 可选字段:可选字段
- 填充
IP分片
当一个IP数据报,需要进行发送时需要先进行判断从哪个网络接口进行发送(选路),然后获得需要进行发送的接口的MTU值,和数据报大小进行比较,如果数据报大小大于MTU那么此时就需要进行分片,数据分片后,到达下一路由器或主机,会根据报头进行重组(注意下一站就会进行重组,而不是在到达目的地重组,)然后再转发时会进行相同的步骤,整个过程对传输层透明。
在这里需要注意的是数据报在发送端没有分片,在中间路由过程中是有可能会发生分片的,因此在不想分片时需要考虑路径MTU。另外在分片时会为每个分片添加IP首部。
片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
一数据报的总长度为3820字节,其数据部分为3800字节长(使用固定首部20字节),需要分片为长度不超过1420字节的数据报片。试给出分片后每个数据报片相关字段的值(包括MF、DF、片偏移)。
数据报 | 总长度(数据+首部) | MF | DF | 片偏移 |
---|---|---|---|---|
原始数据报 | 3820 | 0 | 0 | 0 |
数据报片1 | 1420 | 1 | 0 | 0(0/8) |
数据报片2 | 1420 | 1 | 0 | 175(1400/8) |
数据报片3 | 1020 | 0 | 0 | 350(2800/8) |
如何避免IP分片?
为什么需要避免IP分片?
网络层没有超时重传机制,如果在网络层对数据报进行分片,只要有一个分片丢失,那就需要依赖传输层进行重传,因此所有的分片都需要重传一遍,这个代价是巨大的。
除此之外还存在一些问题:分片经过路由器的时候,是不适合重组
今天的文章三、网络层_网络层包括哪些「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/75206.html