分为基础包头(20字节) + 选项段(0~40字节)
基础包头
1-2: 源端口
3-4: 目标端口
5-8: 序号(使用的是当前包数据头相对整体数据头的偏移字节数,当前0,本包数据长500,下个包序号即500)
9-12: 确认序号(预期确认包返回的序号值)
13-14: 基础包头长(4 bits) + 保留(6 bits) + 标志(6 bits)
包长: 基础包头长度的字节数 / 4, 16个bits的最左边,即第15~12位
标志: 16个bits的最右边,即第5~0位
5 URG 紧急指针的值有效
4 ACK 确认序号的值有效
3 PSH 接收方尽快提交至应用层
2 RST 重新连接
1 SYN 发起连接
0 FIN 释放连接
15-16: 窗口大小(可以接收的数据长度)
17-18: 包头校验值
19-20: 紧急指针(紧急数据偏移量)
选项段
变长, 可由多个选项组成, 每个选项包括 Kind(1字节) + Length(1字节) + Value(变化值)
Kind:
0 选项结束, 无Length和Value
1 无操作, 无Length和Value
2 MSS, Length值为4, Value长2字节
3 窗口扩大, Length值为3, Value长1字节
8 时间戳, Length值为10, Value长8字节
----
0 End of Option List [RFC793]
1 No-Operation [RFC793]
2 Maximum Segment Size [RFC793]
3 WSOPT - Window Scale [RFC1323]
4 SACK Permitted [RFC2018]
5 SACK [RFC2018]
6 Echo (obsoleted by option 8) [RFC1072]
7 Echo Reply (obsoleted by option 8)[RFC1072]
8 TSOPT - Time Stamp Option [RFC1323]
9 Partial Order Connection Permitted[RFC1693]
10 Partial Order Service Profile [RFC1693]
11 CC [RFC1644]
12 CC.NEW [RFC1644]
13 CC.ECHO [RFC1644]
14 TCP Alternate Checksum Request [RFC1146]
15 TCP Alternate Checksum Data [RFC1146]
16 Skeeter [Knowles]
17 Bubba [Knowles]
18 Trailer Checksum Option [Subbu & Monroe]
19 MD5 Signature Option [RFC2385]
20 SCPS Capabilities [Scott]
21 Selective Negative Acknowledgements [Scott]
22 Record Boundaries [Scott]
23 Corruption experienced [Scott]
24 SNAP [Sukonnik]
25 Unassigned (released 12/18/00)
26 TCP Compression Filter [Bellovin]
Length:
表示整个选项的值,即要算上Kind和Length两个字段的2字节。
图示