TCP数据段的首部格式

在了解TCP首部各个字段的意义后,我们就能更清楚的了解TCP协议的。TCP首部字节有20个字节是固定了,后面还有可选选项。TCP是以32位(4字节)对齐的。

20180324192146298.png

源端口和目的端口:TCP是通过通口号来进行应用进程间的通信的。

序号:占32位,序号的范围是0~(2^32-1),当序号变为2^32-1后,下一个序号就要重新从0开始了。假如一个报文段的序号为1001,它的长度为100字节,那么下一个报文段的序号就是1101。

确认号:占32位。确认号是对收到的分组进行确认的。假如A向B发送了一个报文段,A的序号为101,报文段长度为100字节,那么B收到该报文段后,就需要对A发送确认报文段,这个确认报文段里的确认号为201。有以下公式:

如果确认号为N+1,那么表示到序号n位置的所有数据均已收到。

数据偏移:该字段即表示tcp首部的长度,该字段占4位,单位为4字节。所以,一个TCP的首部最大为60字节。

六个控制位:每个控制位都只占一位。

  • UGR:紧急字段,当该值为1时,表示此报文段含有紧急数据,应优先发送。该字段需要和后面会说到的紧急指针配合使用。

  • ACK:确认字段。该字段在建立连接和断开连接时会用到,传送数据阶段一律为1。

  • PSH:推送字段。为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

  • RST:重置连接字段志。用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

  • SYN:同步字段。用于建立连接时使用。

  • FIN:终止字段。用于释放连接时使用。

窗口:占16位。窗口值是的范围是【0,2^16-1】之间的整数。注意,它表示的是接受窗口,表示允许接受的字节数。比如,B的向A发送了一个确认报文段,该报文段的确认号为101,窗口值为1000.那么表示B下一个接受的报文段序号应该是101,且报文段长度不能超过1000字节。

校验和:占16位。用来检验报文段有没有错误

紧急指针:占16位。只有当URG字段为1时,该字段才有意思。它表示紧急数据的长度

相关推荐:《linux视频教程

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...