TCP数据包重组实现分析 tcp数据包重组

TCP重组数据包分析

参照TCP/IP详解第二卷24~29章,详细论述了TCP协议的实现,大概总结一下TCP如何向应用层保证数据包的正确性、可靠性,即TCP如何实现对数据报文的重组。

首先要设计两个报文队列,一个存放正常来到的报文,一个存放失序到来的报文。

比如正常报文队列最后一个报文数据如下:

报文数据段第一字节的序号数据报长度

seq1=100

len1=100

TCP数据包重组实现分析 tcp数据包重组

下一个来到的报文可能有多种情况,现依次分析如下:

1)正常报文

seq2=200

len2=200

seq2 = seq1+len1

由此报文的seq可知,这个报文携带数据序号200~399,正是上一个报文的预期后续报文,将此报文追加到正常报文队列。

2)完全重复报文

seq2=100

len2=100

seq2 ==seq1 而且len2==len1

这个报文携带数据序号100~199,与上一个报文携带的数据序号100~199完全一样,即完全重复,所以应该丢弃这个报文。

3)重复子报文

seq2=100

len2=50

seq2 ==seq1 而且len2<len1

这个报文携带数据序号100~149,说明这是上一个报文的一部分,所以应该丢弃这个报文。

注:第二、三这两种情况可以合并,即seq2 ==seq1而且len2<=len1,这里分别列出只是为了说明各种不同情况。

4)部分重复报文情况一

seq2=150

len2=30

seq2>seq1而且seq2<seq1+len1而且seq2+len2<=seq1+len1

即这个报文携带序号150~179,这个序号段被包含在上一个报文段中(100~199),

所以应该丢弃这个报文。

5)部分重复报文情况二

seq2=150

len2=100

seq2>seq1而且seq2<seq1+len1而且seq2+len2>seq1+len1

即这个报文携带序号150~249,这个序号段前一部分150~199被包含在上一个报文段(100~199)中,后一部分200~249是新的数据,此时应该对这个报文作如下处理:

A.计算重复字节数

(seq1+len1) - Seq2= 100+100-150 = 50

即这个报文段前50个字节是重复的。

B.截取报文段新数据

丢弃这个报文段的前50字节,截取后面的新数据,即只保留字节序号段200~249。

C.重新设置这个报文段的seq

seq2 = seq2+50 = 150+50 = 200

D.重新设置这个报文段的数据长度

len2 = len2-50 =100-50=50

E.重新设置后报文段如下

seq2=200

len2=50

即现在这个报文段携带数据序号200~249,正好是上一个报文的后续报文,现在可以将其作为正常报文追加到正常报文队列。

6)提前到达的报文

seq2=300

len2=100

seq2>seq1+len1

这个报文段携带序号300~399的数据,即不是上一个报文100~199的后续报文,而是提前到来的报文,此时应该将这个报文放置到失序报文队列存储起来,以备后续重组使用。

这样直到tcp断开这个socket的链接(FIN=1),此时将正常报文队列和失序报文队列中的数据合并起来,完成重组。取出正常报文队列最后一个报文的seq和len,在失序报文队列中查找属于它的后续报文,该报文是否可以作为正常报文队列的后续报文处理过程同前面1)~5)的分析。

  

爱华网本文地址 » http://www.413yy.cn/a/25101010/22519.html

更多阅读

Excel2013如何实现数据的快速分析 元数据 血缘分析 实现

Excel2013如何实现数据的快速分析——简介Excel2013给我们提供了快速分析数据的功能,下面给大家介绍快速分析怎么用。Excel2013如何实现数据的快速分析——工具/原料Excel2013Excel2013如何实现数据的快速分析——方法/步骤Excel20

DEA模型数据包络分析模型 数据包络分析模型

一、DEA模型的选取数据包络分析法(DEA)是根据已知数据,使用DEA模型得到相应的生产前缘,以评价具有多输入和多产出的决策单元(DMU)之相对有效性的一种方法。DEA最初由 Charnes,Cooper andRhodes(1978)提出,是为第一个DEA模型——CCR模型。

如何使用JpcapCaptor实例来捕捉网络数据包 截获网络数据包

当你通过打开网卡设备得到JpcapCaptor实例后,就可以利用它来捕捉网络数据包了。你可以利用以下两种方法来捕捉网络数据包。第一种是通过回调函数的机制,另一种是利用JpcapCaptor实例的getPacket()的方法,一个数据包一个数据包的接收。

IP数据包格式详解 ip头格式

TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报 (IP Datagram)。这是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部的前一部分是固定长度,共20 字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,

声明:《TCP数据包重组实现分析 tcp数据包重组》为网友少年狂妄分享!如侵犯到您的合法权益请联系我们删除