TCP协议
TCP协议
TCP协议全称 Transmission Control Protocol (传输控制协议),与UDP协议恰好相对,TCP协议是一种面向连接的,点对点的,提供可靠传输的传输层协议,只有确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
结构
为了实现可靠传输,TCP协议需要考虑数据破坏,丢包,重复,分片数据混乱等诸多问题,因此结构比较复杂,共有12段。
| 源端口 | 目的端口 | 序号 | 确认号 | 数据偏移 | 保留字段 | |——–|———|—-|—–|——|——|
| TCP标记 | 窗口 | 校验和 | 紧急指针 | TCP选项(可选) | TCP数据 | |——-|—-|—–|——|———–|—-|
各段含义如下:
- 源端口与目的端口与UDP协议中同义,共32位。
- 序号:TCP传输的数据字节流中的每一个字节都有号码标记,一个字节一个号码,范围在0 ~ (2^32 -1),占32位,TCP首部的序号是表示该TCP数据报首字节的号码。
- 确认号:与序号配合,表示期待下一段收到数据的首字节序号,占32位,如果某条报文确认号为N,说明N-1及之前的数据都已收到。
- 数据偏移:表示TCP数据偏离首部距离(即首部长度),占4位,单位为(32位),例如首部大小为20字节,数据偏移则为5。
- 保留字段:6位,尚未使用的字段。
TCP标记
占6位,分别是:
- URG:Uergent,紧急位, URG = 1 代表紧急数据。
- ACK:Acknowledgement,确认位,ACK = 1 确认号生效。
- PSH:Push,推送位,PSH = 1 表示需要尽快将数据交付应用层。
- RST:Reset,重置位,RST = 1 表示连接发生错误需要重新连接。
- SYN:Synchronization,同步位,SYN = 1 表示连接请求报文。
- FIN: Finish,终止位,FIN = 1 表示释放连接。
窗口
表明允许对方发送的数据量,占16位。
校验和
与UDP协议中同义,占16位。
紧急指针
当URG = 1时,紧急指针表示紧急数据在报文中的位置,占16位。
TCP选项
最多40字节,支持未来的拓展。