2012-12-06 37 views
4

我有一個簡單的C++代碼,可以構建SYN數據包並通過原始套接字發送。 我爲此分配了54個字節(以太網14字節)。IP數據包在接收端有預告片,但不在發送端

發送方上的Wireshark顯示54個字節,但在接收方上顯示60個字節。 6個字節作爲尾部添加到數據包的末尾。

同樣的情況發生,如果我發送數據包scapy。 (發件人54人,收件人60人)

能否請您指教?

回答

5

以太網不能發送比64字節短的幀,其中60字節是有效負載,4字節是校驗和(FCS)。 FCS被硬件剝離並且從未被軟件看到。這就是爲什麼應用程序只能看到60個字節。

因此,您看到的額外字節添加由硬件添加,並且您無能爲力。預告片應該全部爲零。

Wireshark的有關於這個對他們的維基良好的信息:http://wiki.wireshark.org/Ethernet

+0

但我得到60個字節而不是64個 –

+1

正確,4個字節的FCS被硬件剝離。 – Gille

1

正如@Gille提到的,附加數據是因爲以太網的限制填充。但IP有一個「長度」字段,它會告訴你有多少數據包是真正的有效負載以及有多少填充。您的代碼(以及任何適當的代碼)必須能夠處理填充,這就是「長度」字段的用途。

假設您使用的是IPv4,請看看這個:http://en.wikipedia.org/wiki/IPv4#Packet_structure。我在談論「總長度」字段。

相關問題