精华内容
下载资源
问答
  • TCP头部选项功能详解

    2017-12-15 10:24:31
    TCP头部选项功能详解 详细解释头部的各个信息 手头必备
  • TCP头部详解

    2021-01-30 12:29:55
    1. TCP的定义 TCP提供一种面向连接的、可靠的字节流服务。 面向连接: 两个使用TCP的应用(通常是一个客户和一个服务)在彼此交换数据之前必须建立一个TCP连接。 TCP提供可靠性的方式: 1)应用数据被分割成TCP认为...

    1. TCP的定义

    TCP提供一种面向连接的、可靠的字节流服务。

    面向连接: 两个使用TCP的应用(通常是一个客户和一个服务)在彼此交换数据之前必须建立一个TCP连接。

    TCP提供可靠性的方式:

    1)应用数据被分割成TCP认为最适合发送的数据块;

    2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

    3)当TCP收到来自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;(Delayed-ACK)

    4)TCP将保持它首部和数据的校验和;

    5)既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能失序,因此TCP报文段的到达也可能失序。如果有必要,TCP将对收到的数据进行重新排序;

    6)IP数据报可能会发生重复,TCP的接收端必须丢弃重复的数据;

    7)TCP提供流量控制;TCP连接的每一方都有固定大小的缓冲控件,TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这将防止较快主机致使减慢主机的缓冲区溢出;

    TCP的字节流:

    两个应用程序通过TCP连接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符,这就是字节流服务。

    2. TCP头部详解

    1)源端口和目的端口:用于寻找发端和收端的应用程序。这两个值加上IP首部的源端IP和目的端IP唯一确定一个TCP连接;

    2)序号(Seq):标识从TCP发端向TCP收端发送的数据字节流,它标识在这个报文段中的第一个数据字节的序号。如果将字节流看作在两个应用程序间的单向流动,

    则TCP用序号对每个字节进行计数。序号是32bit的无符号数,序号到达2的32次方减一后又从0开始。SYN标志消耗一个序号;

    3)确认序号(ACK):如果上次成功收到数据字节序号加一。只有ACK标志为1时确认序号才有效,ACK = Seq + 1

    4)数据偏移:标识该TCP头部有多少个32bit(4字节),4字节最大表示15,TCP头部最长为60字节

    5)窗口:TCP流量控制的手段,告诉对方,我的TCP接收端缓冲区还能容纳多少个字节,这样对方能控制发送数据的速度;

    6)校验和:由发送端填充,接收端对TCP报文执行CRC算法,以检验TCP报文段是否损毁。不仅校验头部,还包括数据部分;

    7)紧急指针:也称为紧急偏移。紧急指针是一个正的偏移量,和序号字段的值相加表示最后一个紧急指针的下一字节的序号。是相对于当前序号的偏移。紧急指针

    是发送端向接收端发送紧急数据的方法;

    8)六个标志位:

            a)URG:表示紧急指针是否有效;

            b)ACK:表示确认号是否有效,携带ACK标志的数据报文段为确认报文段

            c)PSH:提示接收端的应用程序应该立即从TCP接受缓冲区中读走数据,为接受后数据腾出空间;

            d)RST:表示要求对方重新建立连接,携带RST标志位的TCP报文段称为复位报文段

            e)SYN:  表示请求建立一个连接,携带SYN标志的TCP报文段称为同步报文段

            f)FIN:通知对方本端要关闭了,带FIN标志的TCP报文段称为结束报文段

    9)TCP头部选项:头部选项是一个可变长的信息,这部分最多包含40个字节(前面20字节是固定的)

    头部选项的实际运用:

            a)最大报文传输段(Maxinum Segment Size——MSS,后续进行详解

            b)窗口扩大选项(window scaling)

            c)选择确认选项(Selective Acknowledgements——SACK)

            d)NOP

    展开全文
  • TCP头部结构详解

    千次阅读 2018-10-15 15:06:45
    tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示:   tcp头部结构 1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用...

    tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示:
     

    tcp头部结构

    1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。进行tcp通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。

    2、32位序号:一次tcp通信过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行tcp通信,A发送给B的第一个tcp报文段中,序号值被系统初始化为某个随机值ISN。那么在该传输方向上(从A到B),后续的tcp报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个在整个字节流中的偏移。例如,某个tcp报文段传送的数据时字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025。另一个传输方向(从B到A)的tcp报文段的序号值也具有相同的含义。

    3、32位确认号:用作对另一方发送来的tcp报文段的相应。其值是收到的tcp报文段的序号值加1。假设主机A和主机B进行tcp通信,那么A发送出的tcp报文段不仅携带自己的序号,而且包含对B发送来的tcp报文段的确认号。反之,B发送出的tcp报文段也同时携带自己的序号和对A发送来的报文的确认号。

    4、4位头部长度:标识该tcp头部有多少个32bit字(4字节)因为4位最大能表示15,所以tcp头部最长是60字节。

    5、6位标志位(即图中的保留6位):标志位有如下几项

    • URG标志,表示紧急指针是否有效
    • ACK标志,表示确认号是否有效。称携带ACK标志的tcp报文段位确认报文段
    • PSH标志,提示接收端应用程序应该立即从tcp接受缓冲区中读走数据,为接受后续数据腾出空间(如果应用程序不将接收的数据读走,它们就会一直停留在tcp缓冲区中)
    • RST标志,表示要求对方重新建立连接。携带RST标志的tcp报文段为复位报文段。
    • SYN标志,表示请求建立一个连接。携带SYN标志的tcp报文段为同步报文段。
    • FIN标志,表示通知对方本端要关闭连接了。携带FIN标志的tcp报文段为结束报文段。

    6、16位窗口大小:是tcp流量控制的一个手段。这里说的窗口,指的是接收通告窗口。它告诉对方本端的tcp接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。

    7、16位校验和:由发送端填充,接收端对tcp报文段执行CRC算法以校验tcp报文段在传输过程中是否损坏。注意,这个校验不仅包括tcp头部,也包括数据部分。这也是tcp可靠传输的一个重要保障。

    8、16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。因此,确切的说,这个字段是紧急指针相对当前序列号的偏移,称为紧急偏移。tcp的紧急指针是发送端向接收端发送紧急数据的方法。

    9、16位选项:

           TCP头部的最后一个选项字段是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。典型的TCP头部选项结构如图3-4所示。

           选项的第一个字段kind说明选项的类型。有的TCP选项没有后面两个字段,仅包含1字节的kind字段。第二个字段length(如果有的话)指定该选项的总长度,该长度包括kind字段和length字段占据的2字节。第三个字段info(如果有的话)是选项的具体信息。常见的TCP选项有7种,如图3-5所示。

           kind=0是选项表结束选项。
           kind=1是空操作(nop)选项,没有特殊含义,一般用于将TCP选项的总长度填充为4字节的整数倍。
           kind=2是最大报文段长度选项。TCP连接初始化时,通信双方使用该选项来协商最大报文段长度(Max Segment Size,MSS)。TCP模块通常将MSS设置为(MTU-40)字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。这样携带TCP报文段的IP数据报的长度就不会超过MTU(假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免本机发生IP分片。对以太网而言,MSS值是1460(1500-40)字节。
           kind=3是窗口扩大因子选项。TCP连接初始化时,通信双方使用该选项来协商接收通告窗口的扩大因子。在TCP的头部中,接收通告窗口大小是用16位表示的,故最大为65?535字节,但实际上TCP模块允许的接收通告窗口大小远不止这个数(为了提高TCP通信的吞吐量)。窗口扩大因子解决了这个问题。假设TCP头部中的接收通告窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收通告窗口大小是N乘2M,或者说N左移M位。注意,M的取值范围是0~14。我们可以通过修改/proc/sys/net/ipv4/tcp_window_scaling内核变量来启用或关闭窗口扩大因子选项。
    和MSS选项一样,窗口扩大因子选项只能出现在同步报文段中,否则将被忽略。但同步报文段本身不执行窗口扩大操作,即同步报文段头部的接收通告窗口大小就是该TCP报文段的实际接收通告窗口大小。当连接建立好之后,每个数据传输方向的窗口扩大因子就固定不变了。关于窗口扩大因子选项的细节,可参考标准文档RFC 1323。
           kind=4是选择性确认(Selective Acknowledgment,SACK)选项。TCP通信时,如果某个TCP报文段丢失,则TCP模块会重传最后被确认的TCP报文段后续的所有报文段,这样原先已经正确传输的TCP报文段也可能重复发送,从而降低了TCP性能。SACK技术正是为改善这种情况而产生的,它使TCP模块只重新发送丢失的TCP报文段,不用发送所有未被确认的TCP报文段。选择性确认选项用在连接初始化时,表示是否支持SACK技术。我们可以通过修改/proc/sys/net/ipv4/tcp_sack内核变量来启用或关闭选择性确认选项。
           kind=5是SACK实际工作的选项。该选项的参数告诉发送方本端已经收到并缓存的不连续的数据块,从而让发送端可以据此检查并重发丢失的数据块。每个块边沿(edge of block)参数包含一个4字节的序号。其中块左边沿表示不连续块的第一个数据的序号,而块右边沿则表示不连续块的最后一个数据的序号的下一个序号。这样一对参数(块左边沿和块右边沿)之间的数据是没有收到的。因为一个块信息占用8字节,所以TCP头部选项中实际上最多可以包含4个这样的不连续数据块(考虑选项类型和长度占用的2字节)。
           kind=8是时间戳选项。该选项提供了较为准确的计算通信双方之间的回路时间(Round Trip Time,RTT)的方法,从而为TCP流量控制提供重要信息。我们可以通过修改/proc/sys/net/ipv4/tcp_timestamps内核变量来启用或关闭时间戳选项。

    展开全文
  • TCP详解之TCP头部结构

    2019-11-29 16:37:58
    TCP头部结构   TCP头部信息出现在每个TCP报文段,用于指定通信的源端端口,目的端口,管理TCP连接等。 TCP固定头部结构   16位端口号:告知主机该报文段是来自哪里(源端端口)以及传给哪个上层协议或应用程序...

    TCP头部结构

      TCP头部信息出现在每个TCP报文段,用于指定通信的源端端口,目的端口,管理TCP连接等。

    TCP固定头部结构

    在这里插入图片描述
      16位端口号:告知主机该报文段是来自哪里(源端端口)以及传给哪个上层协议或应用程序(目的端口)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号(所有知名端口号定义在/etc/services文件中)。
      32位序号SEQ(sequence number):一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值)。那么在该传输方向上(A->B),后续的TCP报文段序号值被系统设置为ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。例如,某个TCP报文段传送的数据是字节流中的1025–2048字节,那么该报文段的序号值就是ISN+1025。另一个方向的TCP报文段的序号值也具有相同的含义。
      32位确认号ACK(acknowledgement number):用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加一。假设主机A和主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含了对B发送来的TCP报文段的确认号。反之,B主机发送的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。
      4位头部长度:标识该TCP头部有多少个32bit字(字节)。因为4位最大表示15,所以TCP头部最长是60字节。
      6位保留:保留
      6位标志位:
    在这里插入图片描述
      16位窗口大小:是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口(Receiver Window,RWND)。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
      16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意:此处的校验不仅包括TCP头部,也包括数据部分。不同于IP数据报只校验IP头部。
      16位紧急指针:是个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。确切地说,这个字段是紧急指针相对于当前序号的偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

    TCP头部选项

      TCP头部的最后一个选项字段是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节。
    TCP头部选项的一般结构如图:
    在这里插入图片描述
      第一个字段kind说明选项的类型。有的TCP选项没有后面两个字段,仅包含一字节的kind字段。
      第二个字段length(若有的话)指定该选项的总长度,该长度包括kind字段和length字段占据的两个字节和info字段。
      第三个字段info(若有的话)是选项的具体信息。
    常见的TCP选项有7种:
    在这里插入图片描述
      kind=0是选项表结束选项。
      kind=1是空操作选项,没有特殊含义,一般用于将TCP选项的总长度填充为4字节的整数倍。
      kind=2是最大报文段长度选项。TCP连接初始化时,通信双方使用该选项来协商最大报文段长度(Max Segment Size,MSS)。TCP模块通常将MSS设置为(MTU-40)字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。这样携带TCP报文段的IP数据报长度就不会超过MTU(一般情况下TCP和IP头部不包含选项字段),从而在一般情况下避免本机发生IP分片。对于以太网来说,MSS值是1500-40=1460字节。
      kind=3是窗口扩大因子选项。TCP连接初始化时,通信双方使用该选项来协商接收通告窗口的扩大因子。在TCP头部中,接收通告窗口大小是用16位表示的,故最大为65535字节,但实际上TCP模块允许的接收通告窗口大小远不止这个数(为了提高TCP通信的吞吐量)。窗口扩大因子解决了这个问题。假设TCP头部中的接收通告窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收通告窗口大小是N左移M位的大小。M的取值范围是0-14。我们可以通过修改/proc/sys/net/ipv4/tcp_window_scaling内核变量来启用或关闭窗口扩大因子选项。和MSS选项一样,窗口扩大因子选项只能出现在同步报文段中,否则将被忽略。但同步报文段本身不执行窗口扩大操作,即同步报文段头部的接受通告窗口大小就是该TCP报文段的实际接受通告窗口大小。当连接建立好之后,每个数据传输方向的窗口扩大因子就固定不变了。
      kind=4是选择性确认(SACK)选项。TCP通信时,如果某个TCP报文段丢失,则TCP模块会重传最后被确认的TCP报文段后续的所有报文段,这样,原先已经正确传输的TCP报文段也可能重复发送,从而降低了TCP性能。SACK技术正是为改善这种情况而产生的,他使得TCP模块只重新发送丢失的TCP报文段,不用发送所有未被确认的TCP报文段。选择性确认选项用在连接初始化时,表示是否支持SACK技术。可以通过修改/proc/sys/net/ipv4/tcp_sack内核变量来启用或关闭选择性却惹选项。
      kind=5是SACK实际工作的选项。该选项的参数告诉发送方本端已经收到,并且已经缓存的不连续的数据块,从而让发送端可以据此检查并重发丢失的数据块。每个块边沿参数包含一个4字节的序号。其中块左边沿表示不连续块的第一个数据的序号,而块右边沿则表示不连续块的最后一个数据的序号的下一个序号。这样一对参数(块左边沿和块右边沿)之间的数据是没有收到的。因为一个块信息占用8字节,所以TCP头部选项中实际最多可以包含4个这样的不连续数据块(考虑选项类型和长度占用的2字节)。
      kind=8是时间戳选项。该选项提供了较为准确的计算通信双方之间的回路时间(Round Trip Time,RTT)的方法,从而为TCP流量控制提供重要信息。可以通过修改/proc/sys/net/ipv4/tcp_timestamps内核变量来启用或关闭时间戳选项。

    展开全文
  • TCP头部格式和封装

    千次阅读 2020-04-15 23:53:39
    文章目录12.3 TCP头部和封装12.3.1 端口号12.3.2 序列号12.3.3 头部长度12.3.4 相关控制位12.3.5 窗口大小12.3.6 校验和12.3.7 选项字段 12.3 TCP头部和封装 ​ 下图显示了TCP在IP数据报中的封装: ​ TCP头部紧跟...

    12.3 TCP头部和封装

    ​ 下图显示了TCP在IP数据报中的封装:
    在这里插入图片描述
    ​ TCP头部紧跟着IP头部或者IPv6扩展头部,经常是20字节(默认不带选项字段)。带选项字段的话,TCP头部最长可达60字节。常见的选项字段包括最大段大小时间戳窗口缩放选择性ACK等。

    ​ TCP的头部要比UDP等协议的复杂的多,因为保持连接的每一段都需要支持最新的状态信息。TCP头部格式如下图所示:
    在这里插入图片描述

    TCP头部的标准长度为20字节,除非出现选项字段。头部长度字段以4字节为单位给出头部大小(最小值为5)。带阴影的字段(确认号(Acknowledagment Number)、窗口大小(Window Size)以及ECE位和ACK位)用于与该报文段的发送方关联的反方向上的数据流。

    字段长度含义
    源端口16比特源端口,标识哪个应用程序发送
    目的端口16比特目的端口,标识哪个应用程序接收
    序列号32比特序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
    确认号32比特确认号,是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。
    首部长度4比特首部长度指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。
    保留位4比特必须填0
    CWR1比特拥塞窗口减(发送方降低它的发送速率)
    ECE1比特ECN回显(发送方收到一个更早的拥塞通告)
    URG1比特紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。很少被使用
    ACK1比特确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
    PSH1比特标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。
    RST1比特重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。
    SYN1比特同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。
    FIN1比特发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。
    窗口大小16比特窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。
    校验和16比特校验字段,包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
    紧急指针16比特紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
    选项选项字段。TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。 新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。 窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。 时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。 选项确认选项:

    12.3.1 端口号

    ​ 每一个TCP头部都包含了源端口和目的端口。这两个值与IP头部中的源和目的IP地址唯一标识一个连接(四元组)。这个特点在TCP服务器同时与多个客户端提供服务时特别重要,服务器就是根据四元组信息(或者五元组信息)来确定客户端的。

    12.3.2 序列号

    用于判断接收方是否重复接收到某一报文以及报文的乱序重组功能

    ​ 该字段标识了TCP发送端到TCP接收端的数据流中的一个字节,该字节代表着包含该序列号报文段的数据中的第一个字节。如果我们考虑在两个应用程序之间的一个方向上流动数据流,TCP给每一个字节赋予一个序列号。这个序列号是一个32位的无符号整数,到达2^32 -1 后再循环从0开始。因为每一个没交换的字节都被编号,确认号字段(ACK位置1,确认号字段生效)包含的值是数据的接收方(即ACK的发送方)期待接收到的下一个序列号。即最后被成功接收的数据字节序号加1。这个字段之后再ACK位被启动的情况才有效。

    • 当建立一个连接时,从客户端发送至服务器的第一个报文段中的SYN位字段被启用。这样的报文段简称为SYN;并且序列号字段包含了在这个方向上要是用的第一个序列号后续的序列号和返回的ACK都在这个方向上

      • 注意:这个初始的序列号不是0或1,而是随机生成的一个数值,成为初始序列号(Inital Sequence Number, 简称ISN), ISN不是0/1,是为了提高安全性,防止被黑客攻击利用。

      • 客户端发送的第一个报文时,第一个字节的序列号为ISN+1, 这意味着SYN报文消耗一个序列号,而消耗一个序列号意味着可以使用重传机制进行可靠传输。因此SYN、以及FIN报文是可以可靠传输的,而ACK报文不消耗序列号,因此无法保证ACK报文的可靠传输

    • TCP可以被描述为“一种带积累正向确认的滑动窗口协议”。ACK确认号字段被用于构建知名在接收方已经顺序收到的最大字节(确认号 -1 = 成功接收的字节)。然而现代的TCP有一个选择确认(Selective Acknowledgment, SACK)选项,可以允许接收方告诉发送方它正确的接收到的次序杂乱的数据。 当它与一个具有选择重发(selective repeat)能力的TCP进行通信时,可以显著的提高通讯效率。

    12.3.3 头部长度

    ​ 头部长度用来指出TCP头部的长度,以32比特为单位,由于存在选项字段,因此它是必须的。它的长度为4比特,因此TCP头部的长度限定为20~60字节(15*4=60),如果不带选项字段,即标准头部长度为20字节。

    12.3.4 相关控制位

    ​ 当前,为TCP头部定义了8位的字段,尽管有些老的实现只能理解最后的6位。

    • CWR : 拥塞窗口减(发送方减低它的发送速率)
    • ECE : ECN回显(发送方接收到了一个更早的拥塞通告)
    • URG : 紧急(紧急指针字段有效,很少被用到)
    • ACK : 确认 (确认号字段有效,连接建立后一般都处于启用状态)
    • PSH : 推送 (接收方应尽快给应用程序发送这个数据,目前没有可靠地实现或者用到)
    • RST : 重置连接 (当前连接关闭,重新建立新的连接)
    • SYN : 用于初始化一个连接的同步序列号
    • FIN : 该报文的发送方已经没有数据要发送,请求对方关闭当前连接。

    12.3.5 窗口大小

    ​ TCP的流量控制是通过通告窗口大小来控制实现的。这个窗口大小是指字节数,从确认号指定的,也就是从接收方想要接收的那个数据开始计算的。它是一个16比特的字段,因此限定了TCP的窗口大小最大为65535字节,从而限制了TCP的吞吐量性能。这个值可以通过窗口缩放手段进行修改。

    12.3.6 校验和

    ​ TCP的校验和字段覆盖了TCP头部和TCP数据,还包括一个伪头部。这个字段是强制性的,必须由发送方计算和保存、接收方进行验证。它与计算UDP的校验和方式相同。

    12.3.7 选项字段

    选项字段最最重要的就是MSS字段(又称为最大段大小)。连接的每一个端点一般都在它的第一个SYN报文上指定MSS的值,用来标明自己希望接收的最大段的消息。

    展开全文
  • TCP协议--TCP头部

    千次阅读 2017-11-25 17:19:10
    TCP协议的概念  TCP和UDP是传输层的两个主要协议。TCP相对于UDP来说,是面向连接、字节流和可靠传输。  (1) 面向连接   使用TCP通信的双方必须先建立起连接,然后才能开始数据的读写。建立连接后双方的系统...
  • #TCP/IP# TCP头部选项功能详解

    万次阅读 2019-10-26 14:16:40
    简单回顾下TCP报文格式 1)TCP报文:由 TCP首部 和 TCP数据 组成。 2)TCP首部:由 20字节的固定长度 和 可变长字段(选项和填充)组成。 3)TCP首部总长度:由TCP头中的“数据偏移”字段决定。该字段占4bit,...
  • TCP协议详解(一):TCP头部结构

    万次阅读 多人点赞 2018-05-02 20:13:46
    TCP字节流服务 网络传输层中,TCP是面向连接、可靠的、字节流传输。 TCP协议通信双方必须先建立连接,通信双方必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP是全双工的,即双方的数据...
  • 那么,我们先来看看TCP头部格式(RFC 793、1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有Wireshark对TCP抓包分析图) (根据上图,按从上往下,从左往右的顺序) Source Port:16bit源...
  • TCP头部选项功能详解.pdf
  • TCP头部结构

    千次阅读 2018-10-14 17:37:30
    TCP头部信息出现再每个TCP报文段中,用于指定通信的 源端端口,目的端口,管理TCP连接等。 1、TCP固定头部结构   16位端口号:告知主机该报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)...
  • TCP头部分析与确认号的理解 1、TCP的特点: 基于字节流 面向连接 可靠传输 缓冲传输 全双工 流量控制 2、头部格式和说明 图源百度。如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。 ...
  • TCP头部信息与UDP头部信息

    千次阅读 2019-05-20 14:52:30
    TCP头部信息 源端口号以及目的端口号: 各占2个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程,通过这两个端口号和IP头部的ip发送和接收号,可以唯一的确定一个连接。 一般来讲,通过端口号...
  • TCP头部格式的了解

    千次阅读 2017-05-02 13:41:43
    tcp头部格式如下图所示:   1.源端口号,16位,发送方的端口号。 2.目标端口号,16位,发送方的目标端口号。 3. 32为序列号,sequence number,保证网络传输数据的顺序性。 4. 32位确认号,acknowledgment ...
  • 2020-09-23:TCP头部信息有哪些?

    千次阅读 2020-09-23 19:02:48
    福哥口诀法:T源目序缺首保 紧确推和复同终 窗校紧选数(TCP格式:源端口,目的端口,序号,确认号,首部长度,保留,紧急位URG,确认位ACK,推送位PSH,复位位RST,同步位SYN,终止位FIN,窗口,校验和,紧急指针,...
  • TCP协议的特点: (1)相对于传输层的UDP协议,TCP协议的特点是面向连接的、可靠的传输和字节流。 (2)使用TCP协议通信的双方必须首先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,...
  • TCP头部和封装

    千次阅读 2019-02-25 09:56:40
    有趣的是,TCP报文段中的数据部分并不是必须的,当一个连接被建立和终止时,交换的报文段只包含了TCP头部而没有数据,一个不带任何数据的头部会被用于确认接收到的数据,也称为一个纯ACK。 接下来重点看TCP头部。 ...
  • IP数据包头部结构定义 ip_head struct  h_lenver db ? ;4位IP版本号+4位首部长度  TOS db ? ;8位服务类型  tcp_len dw ? ;16位TCP数据包总长度  ident dw ? ;16位标识  frag_and_flags dw ? ;3位分片标志...
  • TCP头部的ACK与SEQ

    千次阅读 2017-01-23 12:00:17
    TCP头部的ACK与SEQ这几天临近过年了,很多人都回去了,趁着闲着,把TCP/IP协议详解大概过了一过,有些以前似懂非懂的,现在貌似还是似懂非懂,不过至少比以前理解的好一点儿了,不过对于TCP的发包与回应之间的确认...
  • TCP协议的学习 (二)TCP头部信息

    千次阅读 2016-04-06 12:12:44
    TCP头部信息 头部结构
  • 背景 TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。...TimeStamp是tcp报文头部的一个可选项,一
  • TCP头部解析

    千次阅读 2015-06-13 13:24:28
    一一解析 SourcePort(源端口)和DestinationPort(目的端口):各占2个字节,端口是运输层与应用...SequenceNumber(序号):占4个字节,TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是
  • tcp头部没有数据长度信息

    千次阅读 2017-08-07 01:42:54
    tcp头部没有长度信息,而udp有长度信息
  • 三、mac头部 四、何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4.收到网络包后,协议如何工作 一、以太网包 TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块...
  • 先让我们看看IP,TCP,UDP的头部结构1. IPv4 头部2. TCP和UDP头部 可以看到IP的头部包换数据的长度,TCP头部不包含数据长度,UDP的头部则包含。从信息冗余的角度来看,UDP的长度信息是不需要的。因为IPv4的头部...
  • 背景 TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。...tcp头部信息会出现在每个tcp报文中,用于指定

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,121
精华内容 32,848
关键字:

tcp头部