TCP详解

发布时间 2023-12-13 16:54:41作者: kiper

1. TCP头格式

  • 源端口号/目的端口号
  • 序号
    解决包乱序问题
  • 确认序列
    目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达,这个是为了解决丢包的问题。
  • 首部长度
    表示TCP首部有多少个(4字节)的值。
  • 状态位
    • URG ( urgent pointer) :紧急指针,当URG标志位被设置为1时,紧急指针被用来告诉设备发送的数据包的紧急程度。当标志位被设置为0时,紧急指针不产生任何效果。
    • ACK (acknowledgment):确认,当ACK标志位被设置为1时,确认号字段有效。TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1。
    • PSH (push):该位为 1 时,接收设备应该立即将这个数据包交给应用程序,而不是缓冲它。
    • RST (reset):该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
    • SYN (synchronize):该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
    • FIN (finish):该位为 1 时,表示今后不会再有数据发送,希望断开连接。
  • 窗口大小
    双方都维护一个窗口(缓存大小),标识自己当前能够的处理能力。解决流量控制及拥塞控制问题。
  • 校验和
    TCP头部和数据部分的校验和,这是一个强制性的字段,由发送端计算和存储,并由接收端进行验证。其主要功能是检查数据在传输过程中是否发生了错误。
  • 紧急指针
    只在URG位字段被设置时才有效。这个“指针”是一个必须要加到报文段的序列号字段上的正偏移,以产生紧急数据的最后一个字节的序列号。TCP的紧急机制是一种让发送方给另一端提供特殊标志数据的方法。