tcp序列号_tcp序列号和确认号详解 - CSDN
精华内容
参与话题
  • 20-1-tcp连接——初始化序列号(ISN)

    千次阅读 2020-05-18 12:51:50
    大家不妨先思考一下:为什么要在建立tcp连接时初始化序列号?如果双方在建立tcp连接时使用相同的序号又会有什么问题? 2. 使用固定序列号的问题   带着这几个问题,我们通过这个例子来看一下在tcp连接...

    1. 为什么要初始化序列号(ISN)

       在前面学习tcp连接三次握手的时候,客户端和服务端在建立tcp连接时,双方都会发送SYN报文并初始化序号(英文为:Initial Sequence Number,简称ISN)。大家不妨先思考一下:为什么要在建立tcp连接时初始化序列号?如果双方在建立tcp连接时使用相同的序号又会有什么问题?


    2. 使用固定序列号的问题

      带着这几个问题,我们通过这个例子来看一下在tcp连接建立时使用相同序号的情况,如下图所示:
    这里写图片描述

      1. 假设现在A和B使用固定的序号,A使用序号1和B建立tcp连接,发送一个SYN报文,SEQ = 1,经过三次握手后A和B之间就建立tcp连接完成。

      2. 当A和B建立完tcp连接后,然后A又使用相同的序号1向B发送了200字节数据,不过因为网络拥塞问题,这个tcp数据报一直在网络中逗留,并没有立即到达B。

      3. 由于A发送的tcp数据报一直没到达B,正好此时A发生故障并重启,于是B就释放这条tcp连接了。

      4. 然后A重启后又使用序号1和B建立新的tcp连接。

      5. 当tcp连接建立完成后,A又使用序号1向B发送了240字节的数据,不过这次网络很稳定,B马上就收到A发送的这240字节的数据,注意:此时A发送数据是使用的新的tcp连接。

      6. 然后A之前发送的tcp数据报(200字节)经过一段时间后,终于到达B。不过这个tcp数据报是属于之前已经释放的旧的tcp连接,按理来说,B应该把这个数据报丢弃掉才是。但是由于A每次发送报文都使用了相同的序号(SEQ = 1),这可能会让B误认为这200字节是属于新建立的tcp连接的,因此B会对这200字节数据照收不误。这就导致B在收到新tcp连接的数据后,又收到旧tcp连接的数据,从而出现数据乱序的问题。


    3. 初始化序列号的目的

      由于A和B之间的一个tcp连接通常是由A和B的2个ip地址,2个端口号构成的四元组,因此当A出现了故障把这个tcp连接断开了,之后再以相同的四元组建立新的tcp连接(也就是说A和B两次建立tcp连接都是使用了相同的ip地址和端口),就会出现数据乱序的问题。

      换句话说,只要A发送了一个tcp报文段,且这个tcp报文段的四元组和序号,和之前的tcp连接(四元组和序号)相同的话,就会被B确认。这其实反映了tcp的一些缺点,如果被一些恶意攻击者加以利用tcp的这种缺点:选择合适的序号,ip地址和端口的话,就能伪造出一个tcp报文段,从而打断正常的tcp连接。但是初始化序号的方式(通过算法来随机生成序号)就会使序号难以猜出,也就不容易利用这种缺点来进行一些恶意攻击行为。

      通过上面所述我们知道,如果A和B之间发送数据每次都使用相同序号的话可能会引发一系列的问题,但是使用不同序号的话,那么B在接收到这个序号为1的tcp报文时,发现这个tcp报文的序号不在新tcp连接的接收范围内时会把这个tcp报文丢弃掉,也就避免了数据乱序的问题。

      因此我们可以明白,客户端和服务端双方在建立tcp连接并初始化序列号,那么上面所说的这些情况从一开始就可以避免。另外,tcp在初始化序列号的过程也是比较复杂的,一般来说,这个序号的范围是0 — 23212^{32} - 1之间,而且序号的生成也是随机的,通常是一个很大的数值,也就是说每个tcp连接使用的序号也是不一样的。


      序号(ISN)在tcp中是非常重要的,学好tcp的第一步就是先把序号(ISN)搞懂。

    展开全文
  • TCP序列号和确认号详解

    万次阅读 2010-08-18 19:16:00
    在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们 学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP...

    转自:http://blog.csdn.net/webnumen/archive/2007/03/26/1541330.aspx

    TCP序列号和确认号详解

    在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们 学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP通讯 的过程,并没有对序列号和确认号进行详细介绍,结合实例的讲解就更没有了。近段时间由于工作的原因,需要对TCP的序列号和确认号进行深入学习,下面便是 我学习后的一些知识点总结,希望对TCP序列号和确认号感兴趣的朋友有一定帮助。

    1.  序列号和确认号的简介及作用

    TCP 协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包 内也包括一个序列号,表示接收方准备好这个序列号的包。在TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个 包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。另外,TCP通过数据分段中的序列号来 保证所有传输的数据可以按照正常的顺序进行重组,从而保障数据传输的完整。

    2.  TCP的通讯过程

    在TCP通讯中主要有连接的建立、数据的传输、连接的关闭三个过程!每个过程完成不同的工作,而且序列号和确认号在每个过程中的变化都是不同的。

    2.1 TCP建立连接

    TCP建立连接,也就是我们常说的三次握手,它需要三步完成。在TCP的三次握手中,发送第一个SYN的一端执行的是主动打开。而接收这个SYN并发回下一个SYN的另一端执行的是被动打开。

    这里以客户端向服务器发起连接来说明。

    1)  第1步 :客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号(ISN)是客户端随机产生的一个值,确认号是0;

    2)  第2步 :服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号(ISN)是服务器随机产生的一个值,确认号是客户端的初始序列号+1;

    3)  第3步 :客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。

    注意 :因为一个SYN将占用一个序号,所以要加1。

    初始序列号(ISN)随时间而变化的,而且不同的操作系统也会有不同的实现方式,所以每个连接的初始序列号是不同的。TCP连接两端会在建立连接时,交互一些信息,如窗口大小、MSS等,以便为接着的数据传输做准备。

    RFC793指出ISN可以看作是一个32bit的计数器,每4ms加1,这样选择序号的目的在于防止在网络中被延迟的分组在以后被重复传输,而导致某个连接的一端对它作错误的判断。

    2.2 TCP传输数据

    在TCP建立连接后,就可以开始传输数据了。TCP工作在全双工模式,它可以同时进行双向数据传输。这里为了简化,我们只谈服务器向客户端发送数据的情况,而客户端向服务器发送数据的原理和它是类似的,这里便不重复说明。
    服务器向客户端发送一个数据包后,客户端收到这个数据包后,会向服务器发送一个确认数据包。

    传输数据的简要过程如下:

    1)  发送数据 :服务器向客户端发送一个带有数据的数据包,该数据包中的序列号和确认号与建立连接第三步的数据包中的序列号和确认号相同;

    2)  确认收到 :客户端收到该数据包,向服务器发送一个确认数据包,该数据包中,序列号是为上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+所该数据包中所带数据的大小。
    数据分段中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证数据传输的完整性。

    2.3 TCP关闭连接

    前 面我们提到,建立一个连接需要3个步骤,但是关闭一个连接需要经过4个步骤。因为TCP连接是全双工的工作模式,所以每个方向上需要单独关闭。在TCP关 闭连接时,首先关闭的一方(即发送第一个终止数据包的)将执行主动关闭,而另一方(收到这个终止数据包的)再执行被动关闭。

    关闭连接的4个步骤如下:

    1)  第1步 :服务器完成它的数据发送任务后,会主动向客户端发送一个终止数据包,以关闭在这个方向上的TCP连接。该数据包中,序列号为客户端发送的上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+该数据包所带的数据的大小;

    2)  第2步 :客户端收到服务器发送的终止数据包后,将对服务器发送确认信息,以关闭该方向上的TCP连接。这时的数据包中,序列号为第1步中的确认号值,而确认号为第1步的数据包中的序列号+1;

    3)  第3步 :同理,客户端完成它的数据发送任务后,就也会向服务器发送一个终止数据包,以关闭在这个方向上的TCP连接,该数据包中,序列号为服务器发送的上一个数据包中的确认号值,而确认号为客户端发送的上一个数据包中的序列号+该数据包所带数据的大小;

    4)  第4步 :服务器收到客户端发送的终止数据包后,将对客户端发送确认信息,以关闭该方向上的TCP连接。这时在数据包中,序列号为第3步中的确认号值,而确认号为第3步数据包中的序列号+1;

    注意 : 因为FIN和SYN一样,也要占一个序号。理论上服务器在TCP连接关闭时发送的终止数据包中,只有终止位是置1,然后客户端进行确认。但是在实际的 TCP实现中,在终止数据包中,确认位和终止位是同时置为1的,确认位置为1表示对最后一次传输的数据进行确认,终止位置为1表示关闭该方向的TCP连 接。

    3.  实际数据包分析

    结合上面的理论,下面我们访问网页来捕获数据包,通过实际的数据包来验证序列号和确认号在TCP连接建立、传输数据以及关闭连接时的变化。

    打开科来网络分析系统,首先为减少数据干扰,在过滤器中设置只捕获TCP协议的数据,然后开始捕获,同时,访问www.csna.cn ,待页面下载完成后,停止捕获。

    此次环境中,客户端为192.168.0.92,服务器为:222.77.187.23。

    3.1 TCP建立连接

    在捕获的数据包中,首先我们来查看建立连接的三次握手信息,并且观察数据包中序列号和确认号的变化。为了让大家看的更加明白,我在这里使用了“添加数据包注释”的功能。
    我们先来查看建立连接的第一步,如图1所示。




    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图1  建立连接第一步)

    图1中,客户端向服务器发起一个同步请求数据包,请求连接服务器的80端口,客户端随机产生一个初始序列号(ISN)为2712239078,确认号为0。

    注意 :在实际情况中,我们访问网站首先进行的是域名解析,这里我们设置了过滤器所以没有捕获到DNS数据包。
    接下来我们再看建立连接的第二步。如图2。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图2  建立连接第二步)

    图2 中,服务器收到客户的同步请求数据包后,并向客户端发送一个同步确认数据。这个数据包中,服务器随机产生一个初始序列号(1288781508),同时, 将客户端发送的初始序列号(ISN)加1(2712239078+1=2712239079)以作为确认号发回给客户段进行确认。
    我们再来查看建立连接的第三步,如下图3。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图3  建立连接第三步)

    图3 中,客户端收到这个同步确认数据包后,再次对服务器进行一次确认。在这个数据包中,序列号为上一个数据包的确认号(2712239079),确认号为服务 器的初始序列号(ISN)加1(1288781508+1=1288781509),以对服务器的同步确认数据包进行确认,这样TCP连接就建立了。

    3.2 TCP传输数据

    TCP连接建立后,马上就开始传输数据,这里客户端主动向服务器发送一个GET请求,来提交自己的请求信息。
    下面我们就来看客户端发送给服务器的GET请求数据包,如图4所示,


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图4  传输数据)

    图4中的是客户端向服务器发送的GET请求据数据包,我们注意看序列号和确认号的值!该数据包中,序列号为2712239079,确认号为1288781509,这和三次握手的第三步的数据包中的序列号和确认号相同。
    从 图4中看出这个数据包的大小为1018字节,其中减去14字节Ethernet报头,20字节的IP报头,20字节的TCP报头和4字节的FCS (1018-14-20-20-4=960),得到传输的数据大小为1432。我们将该数据包中的序列号加上该数据大小(即2712239079+960 =2712240039),发现与“下一个序列号”的值完全吻合,也就是下一个数据包中服务器发送给客户端的数据包中的确认号,如图5所示。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图5 确认收到)

    注意 :“下一个序列号”是科来网络分析系统为了方便用户查找下一个连续数据包,而根据数据包序列号和确认号自动计算得出,该字段在实际数据包中是不存在的。

    3.3 TCP关闭连接

    在传输数据完成之后,TCP会关闭连接,这里是服务器主动关闭该方向上的TCP连接。我们继续来观察捕获的数据包,先来看关闭连接的第一步,这里是服务器主动发起关闭,如图6。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图6  关闭连接第一步)

    图6 中,服务器向客户端主动发起确认位和终止位同时置为1的数据包,确认位置1表示对最后一次传输的数据进行确认,终止位置1表示关闭该方向的TCP连接,关 闭服务器和客户端的TCP连接。在这个数据包中,序列号为客户端发送的上一个数据包中所带的确认号值(1288781777),而确认号为服务器发送的上 一个数据包中的序列号+该数据包所带的数据的大小(2712238597+1432=2712240039);

    然后客户端收到该终止数据包,会对服务器发送一个确认数据包,该数据包中,序列号为第1步中的确认号值(2712240039),而确认号为第1步的数据包中的序列号+1(1288781777+1=1288781778);
    我们注意观察序列号和确认号的变化情况,如图7所示。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图7  关闭连接第二步)

    随后,就是来自客户端被动发起的关闭,它与服务器主动发起的关闭同理,只不过这次是被动关闭客户端方向上的TCP连接,我们就不重复说明,如图8和图9所示。


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图8  关闭连接第三步)


    Click here to open new window CTRL+Mouse wheel to zoom in/out
    (图9  关闭连接第四步)

    我们根据以上对TCP的建立连接、传输数据和关闭连接三个过程的抓包分析,成功的验证了前面所说的理论。

    展开全文
  • TCP协议中的序列号

    千次阅读 2017-10-22 11:53:12
    TCP 协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序列号的包。在TCP...


    TCP 协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序列号的包。在TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。另外,TCP通过数据分段中的序列号来 保证所有传输的数据可以按照正常的顺序进行重组,从而保障数据传输的完整。

    在TCP通讯中主要有连接的建立、数据的传输、连接的关闭三个过程!每个过程完成不同的工作,而且序列号和确认号在每个过程中的变化都是不同的。

    TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收。

    TCP建立连接 

    TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有可以设置多个标志位。

    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    位码即TCP标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
    我们常用的是以下三个标志位:

      • SYN - 创建一个连接

      • FIN - 终结一个连接

      • ACK - 确认接收到的数据

     


     

    握手过程

    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

    三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

    1)  第1步 :客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号(ISN)是客户端随机产生的一个值,确认号是0;

    2)  第2步 :服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号(ISN)是服务器随机产生的一个值,确认号是客户端的初始序列号+1;

    3)  第3步 :客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。

     

    第一次握手:

    客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

    第二次握手:

    服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

     

    第三次握手:

    客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1。

     

    初始序列号(ISN)随时间而变化的,而且不同的操作系统也会有不同的实现方式,所以每个连接的初始序列号是不同的。TCP连接两端会在建立连接时,交互一些信息,如窗口大小、MSS等,以便为接着的数据传输做准备。
    RFC793指出ISN可以看作是一个32bit的计数器,每4ms加1,这样选择序号的目的在于防止在网络中被延迟的分组在以后被重复传输,而导致某个连接的一端对它作错误的判断。

    用wireshark抓包我们可以分析:以打开百度网站为例(115.239.211.112百度网站IP地址):

    第一步:客户端发送SYN标志:

    SYN置位,初始序列号为0。

    第二步:服务器应答:

     

    SYN、ACK置位,确认序列号为客户端ISN+1 。服务器发送序列号为0。

    第三步:客户端再发确认包

    客户端再次发送确认包(ACK) ,SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确认字段中发送给对方。


     

    TCP传输数据 

    在TCP建立连接后,就可以开始传输数据了。TCP工作在全双工模式,它可以同时进行双向数据传输。这里为了简化,我们只谈服务器向客户端发送数据的情况,而客户端向服务器发送数据的原理和它是类似的,这里便不重复说明。
    服务器向客户端发送一个数据包后,客户端收到这个数据包后,会向服务器发送一个确认数据包。
    传输数据的简要过程如下:
    1)  发送数据 :服务器向客户端发送一个带有数据的数据包,该数据包中的序列号和确认号与建立连接第三步的数据包中的序列号和确认号相同;
    2)  确认收到 :客户端收到该数据包,向服务器发送一个确认数据包,该数据包中,序列号是为上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+所该数据包中所带数据的大小。
    数据分段中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证数据传输的完整性。

    TCP关闭连接 

    前面我们提到,建立一个连接需要3个步骤,但是关闭一个连接需要经过4个步骤。因为TCP连接是全双工的工作模式,所以每个方向上需要单独关闭。在TCP关 闭连接时,首先关闭的一方(即发送第一个终止数据包的)将执行主动关闭,而另一方(收到这个终止数据包的)再执行被动关闭。
    关闭连接的4个步骤如下: 
    1)  第1步 :服务器完成它的数据发送任务后,会主动向客户端发送一个终止数据包,以关闭在这个方向上的TCP连接。该数据包中,序列号为客户端发送的上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+该数据包所带的数据的大小;
    2)  第2步 :客户端收到服务器发送的终止数据包后,将对服务器发送确认信息,以关闭该方向上的TCP连接。这时的数据包中,序列号为第1步中的确认号值,而确认号为第1步的数据包中的序列号+1;
    3)  第3步 :同理,客户端完成它的数据发送任务后,就也会向服务器发送一个终止数据包,以关闭在这个方向上的TCP连接,该数据包中,序列号为服务器发送的上一个数据包中的确认号值,而确认号为客户端发送的上一个数据包中的序列号+该数据包所带数据的大小;
    4)  第4步 :服务器收到客户端发送的终止数据包后,将对客户端发送确认信息,以关闭该方向上的TCP连接。这时在数据包中,序列号为第3步中的确认号值,而确认号为第3步数据包中的序列号+1;
    注意 : 因为FIN和SYN一样,也要占一个序号。理论上服务器在TCP连接关闭时发送的终止数据包中,只有终止位是置1,然后客户端进行确认。但是在实际的 TCP实现中,在终止数据包中,确认位和终止位是同时置为1的,确认位置为1表示对最后一次传输的数据进行确认,终止位置为1表示关闭该方向的TCP连接。


     版权所有权归卿萃科技,转载请注明出处  

    作者:卿萃科技ALIFPGA  

    原文地址:卿萃科技FPGA极客空间 微信公众号


      

    扫描二维码关注卿萃科技FPGA极客空间

     


     

    展开全文
  • TCP序列号和确认号

    2019-03-14 12:31:30
    序列号:占32位,用来标示本端发送的数据位数,初始序列号是随机的(0-4,294,967,295),之后根据某种规律递增、循环(归零)。 确认号:占32位,用来通知发送端数据成功接收的数据位数,等于接收的数据包的序列号+接收...

            哎呦!为什么知识的传播总要夹杂一些废话呢?!!!真是看不下去,还是总结自己的理解吧。好了,我的废话说完了,下面直奔主题:

    begin:

    序列号:占32位,用来标示本端发送的数据位数,初始序列号是随机的(0-4,294,967,295),之后根据某种规律递增、循环(归零)。

    确认号:占32位,用来通知发送端数据成功接收的数据位数,等于接收的数据包的序列号+接收的数据位数,SYN标志位和FIN标志位相当于1位数据,也要占1位。

    end.

    展开全文
  • 原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 如果你...不幸的是,对很多人来说,对TCP的学习就仅限于此了。尽管年代久远,TCP仍是一个相当复杂并且值得研...
  • TCP序列号和确认序列号

    千次阅读 2019-01-21 18:38:58
    仔细检查序列和确认号码。...您可以看到,序列号继续确认号码。 我们将要解释这些数字如何增加,它们的意思是什么,各种操作系统如何以不同的方式处理它们,最后是什么方式,这些数字可能成为那些需要...
  • 6-TCP 协议(序号和确认号)

    万次阅读 多人点赞 2017-11-20 12:03:30
    转载请注明出处:...为了方便你回忆 TCP 首部,这里再次把这个图贴出来,以便对照。 图1 TCP 首部 1. 序号序号占用 4 字节,即 32 位。它的范围是 [0,232−1][0, 2^{32}-1],也就是说一共有 4 294
  • tcp 序列号

    2018-03-05 22:51:56
    为了方便你回忆 TCP 首部,这里再次把这个图贴出来,以便对照。 图1 TCP 首部 1. 序号1.1 序号存在的意义首先得弄清楚为什么要有序号。在 APUE 基础中,我们通过 TCP 协议将数据发送给对方,就比如 hel...
  • Kevin Mitnick的TCP序列号预测攻击原理

    千次阅读 2016-10-03 01:10:53
    Kevin Mitnick的TCP序列号预测攻击原理TCP/IP协议栈的设计和利用还是让我觉得太炫酷了!! 环境分析 涉及到四台机器:攻击者:Mitnick 受害者:Shimomura 中间被利用者:Remote 测试ISN算法机器:Tester 攻击入口 ...
  • 计算TCP序列号

    2018-01-18 09:27:09
    #!/usr/bin/python #coding=utf-8 from scapy.all import * def calTSN(tgt): seqNum = 0 preNum = 0 diffSeq = 0 # 重复4次操作 ... # 若不是第一次发送SYN包,则设置前一个序列号值为上一次SYN/A
  • tcp序列号回绕与解决

    千次阅读 2019-01-11 16:01:44
    问题描述 ...一个tcp流的初始序列号(ISN)并不是从0开始的,而是采用一定的随机算法产生的,因此ISN可能很大(比如(2^32-10)),因此同一个tcp流的seq号可能会回绕到0。而我们tcp对于丢包和乱序等问...
  • 转自:... 原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 如果你正在读这篇文章,很可能你对TCP“非著名”的“三次握手”或者说“SYN,SYN/AC...
  • 概述: 听了yeslab的秦珂老师的ASA的课程,讲到ASA对TCP的随机初始化序列号扰乱功能,于是搭建环境进行测试,发现其实不仅对TCP初始化的序列号进行扰乱,对后续的TCP序列号也会进行扰乱。----后记:听了后面的教程...
  • TCP序列号/确认号详解

    2019-06-20 21:03:27
    转载:http://blog.csdn.net/a19881029/article/details/38091243原文:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/注:①序列号:自己发送了多少数据bytes(不包含...
1 2 3 4 5 ... 20
收藏数 46,220
精华内容 18,488
关键字:

tcp序列号