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):最大报文段长度,指数据字段的最大长度。