重组IP分段包超长及其解决方法

本文介绍IP数据包在网络中传输时如何根据不同网络的最大传输单元(MTU)进行分段与重组。详细解释了IP头字段在这一过程中的作用,并讨论了分段重组过程中可能遇到的安全隐患及防御措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     
国际互联网是由许许多多的网络连接在一起而构成的。这些相互连接在一起的网络往往拥有不同的最大传输单元(MTU)。为了使IP数据包能够在MTU不同的网络之间无差错传递,IP提供了对IP数据包进行分段和重组的功能。即为了将IP数据包发往MTU较小的网络,IP以目的网络的MTU为IP包的最大包长,将本地生成的较大的IP数据包分成若干个分段,发往目的主机。当这些IP分段数据包到达目的主机的IP时,目的主机的IP发现到来的IP数据包不是一个完整的数据包,就会将这些IP数据包先缓冲起来,一旦这些IP数据包全部到齐,IP就将这些IP数据包组合成一个完整的IP数据包,交给上层协议处理。IP头的标识域(Identification   field   )、协议域(Protocol   field)、源地址域(Source   addreee   field)、目的地址域(destination   address   field)这四个域可用来唯一标识同属于一个完整的IP数据包的所有IP分段数据包。IP头中的标志域(Flag   field)的DF位表示是否允许分段,MF位表示该IP数据包是否是一个IP分段数据包。IP头的分段偏移域(Fragment   offset   field)表示该分段在完整IP包中的位置。IP就是根据这六个域来对IP数据包进行分段和重新组合的。重新组合的过程是将所有标志域的MF位为1的同属于一个完整IP包的IP分段合并成一个IP包,直收到最后一个MF位为0的IP分段。重新组合而成的IP数据包长度由各个IP分段的数据长度累加而成。IP头中的数据包长度域只有16位,这就限制了IP包的长度最大为65535。如果到来的IP分段的累加长度大于65535,而IP又没有进行检查,IP会因溢出而处于崩溃或不能继续提供服务的状态。通常情况下不会出现这种情况,但是常常有攻击者利用这样的隐患发动攻击,很多网络操作系统都有这种隐患。著名的Ping攻击就是利用这一安全隐患进行攻击的。Ping是一个用来诊断网络状况的常用诊断程序,它实际上是依据互联网控制报文协议,通过向目的主机发送类型为请求响应(ECHO_REQUEST)的ICMP包,如果目的主机的ICMP模块接收到该包,会向源主机发回一个类型为响应回答(ECHO_RESPONSE)的ICMP包。如果在规定的时间内ICMP响应回答包没有返回,ping就超时显示目的地址不可到达。Ping攻击也是向被攻击主机发送请求响应包,但是请求响应包是由攻击者手工生成的一系列IP分段数据包构成,并且这一系列IP分段数据包的累加和大于65535。其目的是造成目的主机的IP对这些IP分段数据包进行重新组合,使其面对如何处理长度大于65535的IP包这一不正常情况。   
    
解决方法:重组IP数据分段时,要加入对大于65535的IP包的判断和处理。如果发现已经收到的IP分段数据包的累计长度已经大于65535,则将已经收到的IP分段数据包全部丢弃,并且释放它们所占的资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值