RFC793
    共20-60字节

    image.png
    image.png

    源端口2bytes:
    目的端口2bytes:
    序号4bytes:seq,tcp数据段发送的第一个字节的序号,范围[0,2^32 - 1],即mod 2^32
    tcp是面向字节流的,在tcp连接中每一个字节流都按顺编号
    确认号4bytes:ack,期望收到对方下一个报文段的第一个数据字节序号
    若确认号=N,则表示序号N-1为止的序列号已正确收到
    数据偏移4bits:指定报文段的首部长度,单位:字(4bytes),最大15字即60bytes,即TCP首部最大长度
    保留6bits:为0
    控制位6bits:UAPRSF,取值0/1
    URG:1表示高优先级数据包,紧急指针字段有效。(告诉系统此报文段有紧急数据,应尽快传输,而不要原来的排队顺序)
    ACK:1 表示确认号字段有效(连接建立后,传输的报文段都应该置为1)
    PSH:1表示是带有PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满
    RST:1表示出现严重差错。可能需要重现创建TCP连接。还可以用于拒绝非法的报文段和拒绝连接请求。RST 可称为重建位&重置位
    SYN:1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步
    FIN:1 表示发送方没有数据要传输了,要求释放连接
    窗口2bytes:表示从确认号开始,本报文的接受方可以接收的字节数,即接收窗口大小,用于流量控制。动态变化
    校验和 2bytes:对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。这是一个强制性的字段。对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。这是一个强制性的字段
    紧急指针 2字节:本报文段中的紧急数据的最后一个字节的序号
    选项字段 0-40bytes:每个选项的开始是1字节的kind字段,说明选项的类型。
    最大报文段长度(4字节,Maximum Segment Size,MSS)通常在创建连接而设置SYN标志的数据包中指明这个选项,指明本端所能接收的最大长度的报文段。通常将MSS设置为(MTU-40)字节,携带TCP报文段的IP数据报的长度就不会超过MTU,从而避免本机发生IP分片。只能出现在同步报文段中,否则将被忽略。
    窗口扩大因子(4字节,wscale),取值0-14。用来把TCP的窗口的值左移的位数,使窗口值乘倍。只能出现在同步报文段中,否则将被忽略。这是因为现在的TCP接收数据缓冲区(接收窗口)的长度通常大于65535字节。
    sackOK—发送端支持并同意使用SACK选项。
    SACK实际工作的选项。
    时间戳(10字节,TCP Timestamps Option,TSopt)
    发送端的时间戳(Timestamp Value field,TSval,4字节)
    时间戳回显应答(Timestamp Echo Reply field,TSecr,4字节)
    TCP数据段_加载中…-CSDN博客_tcp段