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

     
国际互联网是由许许多多的网络连接在一起而构成的。这些相互连接在一起的网络往往拥有不同的最大传输单元(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分段数据包全部丢弃,并且释放它们所占的资源
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sharppcap.net是一个强大的网络捕捉和分析库,它提供了对TCP/IP协议栈的全面支持。在该库中,重组TCP分段是一个常见的操作。 TCP是一种可靠的传输协议,它将数据分割成称为分段(Segment)的小块进行传输。在传输过程中,如果某个分段丢失或乱序到达,接收端需要重新组装这些分段以获取完整的数据。这个过程就是重组TCP分段。 sharppcap.net库提供了可以实现TCP分段重组的功能。它可以监听网络接口,捕获和解析TCP分段,并通过组合这些分段以重建完整的数据流。通过使用这个库,我们可以分析和监视TCP连接的数据传输,了解通信的内容和性能。 使用sharppcap.net进行TCP分段重组的步骤如下: 1. 创建一个捕捉器(Capture Device),选择网络接口进行监听。 2. 定义一个过滤器(Filter),用于过滤出需要的TCP分段。 3. 设置捕捉器的数据处理方法,当捕获到TCP分段时,执行相应的处理操作。 4. 在处理方法中,解析TCP分段的头部信息,括源IP地址、目的IP地址、源端口号、目的端口号等。 5. 根据TCP分段的顺序和序列号,将分段重组成完整的数据流。 6. 对重组后的数据流进行进一步的分析和处理,例如提取数据内容、计算传输性能指标等。 总结来说,sharppcap.net库是一个功能强大的工具,可以帮助我们重组TCP分段并进行网络数据捕获和分析。通过使用该库,我们可以深入了解和监控TCP连接的传输过程,对网络性能进行评估和优化。 ### 回答2: sharppcap.net是一个开源的.NET库,主要用于网络数据的捕获和分析。它的目的是帮助开发人员轻松地编写网络嗅探和数据分析工具。 在TCP协议中,为了更高效地传输数据,数据通常会被分成多个称为分段的片段进行传输。然而,在一些特殊情况下,这些分段可能被重新组合成原始数据。 sharppcap.net提供了一种重组TCP分段的方式,使开发人员能够轻松地将TCP分段重组成原始数据。 要重组TCP分段,首先需要将捕获的分段进行分析,了解它们之间的关联关系。然后,根据TCP协议的规则,将这些分段按照正确的顺序重组成原始数据。 sharppcap.net提供了一些有用的函数和类来帮助实现这个过程。其中一个是PcapDotNet.Packets.Tcp.TcpReassembler类,它可以接收捕获的TCP分段并将它们重组成原始数据。使用这个类,开发人员可以轻松地实现TCP分段重组功能。 总而言之,sharppcap.net提供了重新组合TCP分段的功能,使开发人员能够更方便地分析和处理网络数据。通过使用这个功能,可以更好地了解网络传输中的数据流,并且可以应用于各种网络安全和网络性能优化的实际场景中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值