1
我在閱讀「Unix Network Programming」和tcpdump這個例子生成的數據包。這個例子只是發送一個包含字符串「liha」的包。TCP數據包中的冗餘數據是什麼?
我讀了TCP/IP RFC,發現正常的IP頭是20B。除了數據是正常的TCP頭部是24B。
所以,在捕獲的數據包中有字符串「liha」之前有8B。 「0121 3d2a 0120 b43e」是無用的嗎?
11:00:51.690949 IP localhost.40163 > localhost.9877: Flags [P.], seq 94:99, ack 95, win 513, options [nop,nop,TS val 18955562 ecr 18920510], length 5
0x0000: 4500 0039 ddc6 4000 4006 5ef6 7f00 0001 [email protected]@.^.....
0x0010: 7f00 0001 9ce3 2695 8465 e35c 8466 58ca ......&..e.\.fX.
0x0020: 8018 0201 fe2d 0000 0101 080a 0121 3d2a .....-.......!=*
0x0030: 0120 b43e 6c69 6861 0a ...>liha.
Dummy00001,謝謝,但在RFC793 http://www.faqs.org/rfcs/rfc793.html, 圖3中,選項在21B〜23B,而不是25B〜28B在這種情況下?任何建議? – David 2010-07-02 13:06:15
選項具有動態大小(我不知道如何精確定義)。這就是爲什麼TCP頭部有數據偏移量字段:前20個字節是固定的,其餘的數據偏移量是選項。 – Dummy00001 2010-07-02 15:00:50
選項解析示例:http://lxr.linux.no/#linux+v2.6.33/net/ipv4/tcp_input.c#L3729 – Dummy00001 2010-07-02 15:20:43