分为基础包头(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字节。