浅析IP分片原理


浅析IP 分片原理
IP 分片是网络上传输 IP 报文的一种技术手段。 IP 协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。
不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层 MTU (最大传输单元)。常见以太网的 MTU 1500 ,若 IP 协议在传输数据包时, IP 报文长度大于转发接口的 MTU ,则将数据报文分为若干分片进行传输,分片报文到达接收方时,由接收方完成重组。
对于不同的传输层协议,在 IP 层上,需不需要进行分片是不同的:
对于 TCP 来说,它是尽量避免分片的。因为当在 IP 层进行了分片后,如果其中的某片数据丢失,则需对整个数据报进行重传。因为 IP 层本身没有超时重传机制,当来自 TCP 报文段的某一片丢失后, TCP 在超时后重发整个 TCP 报文段,该报文段对应于一份 IP 数据报,没有办法只重传数据报中的一个数据报片。而且如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的,因此基于这种原因, TCP 是经常要避免分片的。
那么 TCP 层是如何避免 IP 层的分片呢?首先, TCP 在建立连接时会进行 3 次握手,而在这 3 次握手中,客户端和服务端通常会协商一个值,那就是 MSS (最长报文大小),用来表示本段所能接收的最大长度的报文段。 MSS=MTU-TCP 首部大小 -IP 首部大小, MTU 值通过查询链路层得知。
当两端确认好 MSS 后进行通信, TCP 层往 IP 层传输数据时,如果 TCP 层缓冲区的大小大于 MSS ,那么 TCP 层都会将其中的数据 分组进行传输,这样就避免了在 IP 层进行分片。

对于 UDP 而言,由于 UDP 是不需要保证可靠性的,没有超时和重传机制,这使得 UDP 很容易导致 IP 分片。
那么数据报被分片后是怎样的呢,又是以何种算法进行分片呢?首先我们回忆 IP 首部:

对于每份 IP 数据报来说,其 16 位标识字段都包含一个唯一值。在数据报被分片时,这个值同时被复制到每个片中。

IP 首部中,我们看到有一个占了 3 位的标志字段,其中第 1 位作为保留字段;第 2 位分段用来表示一个数据报是否允许在 IP 层被分片;而第 3 位更多分片字段,则是当数据报被分片时,让接收端知道在什么时候完成所有的分片组装,除了最后一片外,其他每个组成数据报的片都要把该比特置 1

而如果将其中的分段标志比特位置 1 ,表示不允许 IP 层对数据报进行分片。例如当路由器收到一份需要分片的数据报,而在 IP 首部又设置了不分片( DF )的标志比特,路由器会丢弃数据报并发送一个 ICMP 差错报文(“需要进行分片但设置了不分片比特”)。

IP 首部中 13 位的偏移量字段表示 IP 分片在整个数据流中的位置,第一个数据报分片的偏移量置为 0 ,而后续的分片偏移量则是根据网络的 MTU 大小设置,且必须为 8 的整数倍。

需要注意的是,任何传输层的首部只出现在第一片数据中,后续报文均不带传输层信息。


这是 IP 分片的第一个数据分片,可以看出其 IP 的上层协议为 ICMP 协议,而在后续的分片报文中却无法看到上层协议的具体信息。

接收方在收到经过 IP 层分片的数据报文后,首先根据分片标志中的更多分段位判断是否是最后一个分片报文,如果是,则根据分片偏移量计算各个分片报文在原始数据报中的位置,进行重组。如果不是最后一个分片,则需等待所有分片到达后再完成重组。
分片带来的问题:

1.分片带来的性能消耗

分片和重组会消耗发送方、接收方一定的CPU等资源,如果存在大量的分片报文的话,可能会造成较为严重的资源消耗;
分片对接收方内存资源的消耗较多,因为接收方要为接收到的每个分片报文分配内存空间,以便于最后一个分片报文到达后完成重组。

2.分片丢包导致的重传问题

如果某个分片报文在网络传输过程中丢失,那么接收方将无法完成重组,如果应用进程要求重传的话,发送方必须重传所有分片报文而不是仅重传被丢弃的那个分片报文,这种效率低下的重传行为会给端系统和网络资源带来额外的消耗。

3.分片攻击

黑客构造的分片报文,但是不向接收方发送最后一个分片报文,导致接收方要为所有的分片报文分配内存空间,可由于最后一个分片报文永远不会达到,接收方的内存得不到及时的释放(接收方会启动一个分片重组的定时器,在一定时间内如果无法完成重组,将向发送方发送ICMP重组超时差错报文,,只要这种攻击的分片报文发送的足够多、足够快,很容易占满接收方内存,让接收方无内存资源处理正常的业务,从而达到DOS的攻击效果。

4.安全隐患

由于分片只有第一个分片报文具有四层信息而其他分片没有,这给路由器、防火墙等中间设备在做访问控制策略匹配的时候带来了麻烦。
如果路由器、防火墙等中间设备不对分片报文进行安全策略的匹配检测而直接放行IP分片报文,则有可能给接收方带来安全隐患和威胁,因为黑客可以利用这个特性,绕过路由器、防火墙的安全策略检查对接收方实施攻击;
如果路由器、防火墙等中间设备对这些分片报文进行重组后在匹配其安全策略,那么又会对这些中间设备的资源带来极大的消耗,特别是在遇到分片攻击的时候,这些中间设备会在第一时间内消耗完其所有内存资源,从而导致全网中断的严重后果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值