TCP (Transmission Control Protocol) 是一个面向连接的、可靠的传输层协议。

  • 主要特点:
    • 面向连接:数据传输前必须建立连接。
    • 点到点:每条 TCP 连接只能有两个端点(套接字)。
    • 全双工通信:连接双方可以同时发送数据。
    • 面向字节流:将应用层交付的数据视作无结构的字节流。

TCP 报文段格式

  • 序号 (Sequence Number):4 字节,本报文段所发送数据第一个字节在字节流中的序号。
  • 确认号 (Acknowledgment Number):4 字节,期望收到对方下一个报文段数据的第一个字节序号。
  • 数据偏移(首部长度):4 位,指出 TCP 报文段的数据起始处距离报文段起始处的距离(以 4 字节为单位)。
  • 控制位:
    • URG:紧急 URG=1 时,紧急指针有效。
    • ACK:确认 ACK=1 时,确认号有效。
    • PSH:推送 PSH=1 时,尽快交付接收应用进程。
    • RST:复位 RST=1 时,表明出现严重差错,必须释放连接再重新建立。
    • SYN:同步 SYN=1 时,表示连接请求或连接接受报文。
    • FIN:终止 FIN=1 时,表明发送方数据发送完毕,要求释放连接。
  • 窗口:2 字节,接收方的接收窗口 (rwnd),用于流量控制。
  • 校验和:2 字节,范围包括首部和数据。
  • 紧急指针:2 字节,指出本报文段中紧急数据的字节数。
  • 选项:长度可变。
    • MSS (Maximum Segment Size):最大报文段长度,指数据字段的最大长度。

TCP 核心机制

拥塞控制 vs. 流量控制

  • 拥塞控制:全局性过程,涉及所有主机、路由器,防止过多的数据注入网络导致吞吐量下降。
  • 流量控制:点对点问题,抑制发送端发送速率以适应接收端来不及接收的情况。