TCP数据包

来源:互联网 发布:唱简谱软件 编辑:程序博客网 时间:2024/06/01 08:31

先上图:
TCP数据包格式

TCP段格式:

中间的标志位就是用于协议的一些机制的实现的比特位,有6种比特,它们依次如下:

URG、ACK、PSH、RST、SYN、FIN。

URG表示紧急指针字段有效;

ACK置位表示确认号字段有效;

PSH表示当前报文需要请求推(push)操作;

RST置位表示复位TCP连接;

SYN用于建立TCP连接时同步序号;

FIN用于释放TCP连接时标识发送方比特流结束。

源端口和目的端口:各为16比特,用于表示应用层的连接。
源端口表示产生数据包的应用层进程,而目的端口则表示数据包所要到达的目的进程。

序列号:为32比特,序列号为首字节在整个数据流中的位置。初始序列号随机产生,并在连接建立阶段予以同步。

确认号:表示 序号为确认号减去1的数据包及其以前的所有数据包已经正确接收,也就是说他相当于下一个准备接收的字节的序号。

头部信息:4比特,用于指示数据起始位置。由于TCP包头中可选项的长度可变,因此整个包头的长度不固定。如果没有附加字段,则TCP数据包基本长度为20字节。

窗口:16位,表示源端主机在请求接收端等待确认之前需要接收的字节数。它用于流量控制,窗口大小根据网络拥塞情况和资源可用性进行增减。

校验位:16位。用于检查TCP数据包头和数据的一致性。

紧急指针:16位。当URG码有效时只向紧急数据字节。

可选项:存在时表示TCP包头后还有另外的4字节数据。TCP常用的选项为最大数据包(并非整个TCP报文)MSS。每一个TCP段都包含一个固定的20字节的段头。TCP段头由20字节固定头和一些可选项组成。实际数据部分最多可以有65495(65535-20-20=65495)字节。

0 0
原创粉丝点击