三、网络层

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分片?
网络层没有超时重传机制,如果在网络层对数据报进行分片,只要有一个分片丢失,那就需要依赖传输层进行重传,因此所有的分片都需要重传一遍,这个代价是巨大的。

除此之外还存在一些问题:分片经过路由器的时候,是不适合重组

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值