TCP数据报
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Source Port 源端口号,16位,取值范围0到65536。
-
Destination Port 目的端口号,16位,取值范围0到65536。
-
Sequence Number 序列号,32位。如果SYN位为1,序列号是随机的ISN,否则,序列号为Data第一个字节的编号。
-
Acknowledgment Number 确认号,32位,当ACK位为1时,确认号为程序期望收到的下一个序列号。当连接建立后,ACK总为1。
-
Data Offset 数据偏移量,4位,首部长度位数为
32*data_offset
。 -
Reserved 预留值,6位,全为0。
-
Control Bits: 控制位,6位 URG: 紧急标志,说明紧急指针有效 ACK: 确认标志,说明确认号有效 PSH: 推标志,接受方立即将请求交给上层协议 RST: 复位标志,重建连接时使用 SYN: 同步标志,建立连接时使用 FIN: 结束标志,结束连接时使用
-
Window: 16 bits 窗口大小,16位,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。
-
Checksum 校验和,16位
-
Urgent Pointer 紧急指针,16位
-
Options 选项,可变长度
-
Padding 填充位,可变长度,使TCP报头的长度为32位的整数倍
-
Data 数据