TCP报头格式
经过前面的学习,大家已经了解到,TCP报头是在数据发送时,
经过TCP/IP4层协议中的(传输层)时添加上去的。
如果大家记不清楚(TCP/IP4层协议)可以回顾(目录)中的
(TCP/IP的4层协议数据传输分析)这一部分的内容。
接下来,我们开始介绍TCP报头的格式,如下表:
源端口 |
目标端口 |
|||
---|---|---|---|---|
序列号 |
||||
确认号 |
||||
报头长度 |
保留 |
编码位 |
窗口大小 |
|
校验和 |
紧急指针 |
|||
选项 |
填充 |
|||
数据 |
TCP报头各字段功能说明如下:
(1)源端口:长度为16位,是用于区分发送方应用进程的(端口号)。
(2)目标端口:长度为16位,是用于区分接收方应用进程的(端口号)。
(3)序列号:长度为32位,以字节为单位表示发送的数据序号。
(4)确认号:长度为32位,接收数据字节数加1的值。
(5)报头长度:长度为4位,表示报头的长度(一般是5)。
(6)编码位:在编码位字段中,保存各自(1比特)的SYN、ACK、URG、FIN、RST
等状态信息。
SYN:是初期连接请求时使用,表示序列号为初期值。
ACK:ACK为1时,表示确认号的值有效。
URG:表示紧急数据,当ACK为1时,表示紧急指针的值有效。
FIN:用于终止连接时使用。
RST:用于重新设置连接时使用。
(7)窗口大小:长度为16位,以字节为单位表示流量控制中数据接收窗口的大小。
(8)校验和:长度为16位,为了校验整个TCP PDU(Protocol Data Unit)和IP报头
后半部12字节(包含发送目的IP地址等信息)中错误而设置的校验码字段。
(9)紧急指针:长度为16位,用于保存紧急数据的位置。
(10)选项/填充:这两个字段的长度可变,选项是用于设置其它选项而存在的,
而填充字段是为了保证TCP报头以32位边界对齐而存在的。
具体的代码训练,大家可以通过下方的按钮进行下载,
然后,进行代码的实践与训练。
(通过游戏模式,结合真实的开发环境编程,需要在电脑上运行)