Transmission Control Protocol TCP 传输控制协议解析

发布时间 2023-04-14 11:36:47作者: 秋来叶黄

数据在网络中传输,底层并不能保证其稳定性。也就是数据是否到达,到达的顺序是否一直,这些都是无法保证的。TCP就是在底层IP协议的基础上,人为的增加了一种规定,用来保证数据的准确性。就是所有的入网设备,大家都按照我这个规定:发送数据的时候增加一个编号,对方收到数据返回一个通知。数据到达后根据编号进行排序,如果规定时间内还没有收到对应数据,则发送消息让对方重发。

TCP由底层操作系统等实现,我们不需要关心只需要使用即可。

协议头

|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
|              Source port                      |               Destination port                |
|                                        Sequence number                                        |
|                                   Acknowledgment(ACK) number                                  |
|Data offset| Reserved  |C |E |U |A |P |R |S |F |               Window Size                     |
|               Checksum                        |               Urgent pointer                  |
|                                   Options(if Data offset > 5)                                 |
|                                              Data                                             |

TCP协议头与IP的比较相似

Source port 源端口 16bits

发送方端口

Destination port 目的端口 16bits

接收方端口

Sequence number 序列号 32bits

发送方数据编号

Acknowledgment(ACK) number 确认序列号 32bits

告知发送方,数据接收到哪里

Data offset head长度 4bits

表示有几个32bits的数据,与IP协议类似,表示协议头的长度,记住不是数据长度。

Reserved 保留 4bits

保留字段,赋值为0,不予处理。也有说保留字段是6bits,那么后面紧跟的标识字段就会少2个。

标志位 8bits

  • CWR(Congestion Window Reduce) 拥塞窗口减少标志,发送端通过降低发送窗口的大小来降低发送速率

  • ECE(ECN Echo) ECN响应标志

  • URG(Urgent) 表示紧急点标识(Urgent pointer)标志有效

  • ACK(Acknowledgment) 表示Acknowledgment Number字段是否有效

  • PSH(Push) 要求将缓冲数据推送到接收应用程序

  • RST(Reset) 复位TCP连接

  • SYN(Synchronize) 同步序列编号(Synchronize Sequence Numbers)有效

  • FIN(Finish) 结束TCP会话

Windows size 窗口大小 16bits

发送方的接收窗口大小,便于接收方回传数据时判断可以最多发送多少数据。

Checksum CRC校验码 16bits

Urgent pointer 紧急指针 16bits

表示哪些是紧急数据

Options 可选项

数据必须填充为32bits的倍数