TCP
最后更新于:2022-04-02 04:06:56
[TOC]
## TCP 概念
TCP( Transmission Control protoco:传输控制协议),TCP协议是计算机网络中非常复杂的一个协议
## 特点
- TCP是面向连接的协议
- TCP的一个连接有两端(点对点通信)
- TCP提供可靠的传输服务
- TCP协议提供全双工的通信
- TCP是面向字节流的协议
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/67/87/678786472d246a108b0f741bfc6109f9_1562x654.png)
## 协议解析
### 序号
- 0~2^32-1
- 一个字节一个序号
- 数据首字节序号
### 确认号
- 0~2^32-1
- 一个字节一个序号
- **期望收到数据的首字节序号**
>[info] 确认号为N:则表示N-1序号的数据都已经收到
### 数据偏离
- 占4位:0~15,单位为:32位字
- 数据偏离首部的距离,因为**TCP选项**是可变长,所以需要通过数据偏离确定数据开始的实际位置
### TCP标记
占6位,每位各有不同意义
| 标记 | 含义 |
| --- | --- |
| URG | Urgent:紧急位,URG=1,表示紧急数据 |
| ACK | Acknowledgement:确认位,ACK=1,确认号才生效 |
| PSH | Push:推送位,PSH=1,尽快地把数据交付给应用层 |
| RST | Rest:重置位,RST=1,重新建立连接 |
| SYN | Synchronization:同步位,SYN=1表示连接请求报文 |
| FIN | Finish:终止位,FN=1表示释放连接 |
### 窗口
- 占16位:0~2^16-1
- 窗口指明允许对方发送的数据量
> 比如窗口的值是1000,确认号是501,则可以发送的数据为 501-1500
### 校验和
与UDP一致
### 紧急指针
- 紧急数据 (URG=1)
- 指定紧急数据在报文的位置
### TCP选项
- 最多40字节
- 支持未来的拓展
';