TCP报文段的首部格式.png
    (1)源端口和目的端口
    各占2字节,端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现
    (2)序号字段
    占4字节,TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
    (3)确认号
    占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号
    (4)数据偏移(首部长度)
    占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远
    (5)保留字段
    占6位,保留为今后使用,目前应置为0
    (6)紧急URG
    当URG=1时,表明紧急指针字段有效,它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据)
    (7)确认ACK
    只有当ACK=1时确认号字段才有效,当ACK=0时,确认号无效
    (8)推送PSH(PuSH)
    接收TCP收到PSH=1的报文段,就尽快的交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
    (9)复位RST(ReSeT)
    当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接
    (10)同步SYN
    同步SYN=1表示这是一个连接请求或连接接受报文
    (11)终止FIN(FINish)
    用来释放一个连接,FIN=1表明此报文的发送端的数据已发送完毕,并要求释放运输连接
    (12)窗口字段
    占2字节,用来让对方设置发送窗口的依据
    (13)检验和
    占2字节,检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
    (14)紧急指针字段
    占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
    (15)选项字段
    长度可变,TCP最初只规定了一种选项,即最大报文段长度MSS
    ①MSS与接收窗口值没有关系
    ②若选择较小的MSS长度,网络的利用率就降低
    ③若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段,当传输出错时还要进行重传,这些也都会使开销增大
    ④MSS应尽可能大些,只要在IP层传输时不需要再分片就行,最佳的MSS是很难确定的
    其他选项
    ①窗口扩大选项
    占3字节,其中有一个字节表示位移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小
    ②时间戳选项
    占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字节(4字节)
    ③选择确认选项