Linux

收到的arp數據包比發送的數據包大,為什麼?

  • April 5, 2013

我正在嘗試調試網路問題。在此過程中,我注意到當我嘗試進行 arping 時,接收到的 arp 數據包大於發送的 arp 數據包,如 tcpdump 輸出的那樣。

(注意兩端都有一個br100eth1介面的橋)。

命令:

# arping 10.40.0.5 -I br100 -c1
ARPING 10.40.0.5 from 10.40.0.1 br100
Sent 1 probes (1 broadcast(s))
Received 0 response(s)

tcpdump(發件人):

# tcpdump -nnvvXSs 1514 arp -i eth1
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 1514 bytes
21:32:29.529106 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.40.0.5 (ff:ff:ff:ff:ff:ff) tell 10.40.0.1, length 28
   0x0000:  0001 0800 0604 0001 5478 1a86 50c9 0a28  ........Tx..P..(
   0x0010:  0001 ffff ffff ffff 0a28 0005            .........(..

tcpdump(接收方):

# tcpdump -nnvvXSs 1514 arp -i eth1
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 1514 bytes
21:32:29.532966 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.40.0.5 (ff:ff:ff:ff:ff:ff) tell 10.40.0.1, length 46
   0x0000:  0001 0800 0604 0001 5478 1a86 50c9 0a28  ........Tx..P..(
   0x0010:  0001 ffff ffff ffff 0a28 0005 0000 0000  .........(......
   0x0020:  0000 0000 0000 0000 0000 dac7 07ed       ..............

收到的arp包比發送的arp包大18個字節。我試圖弄清楚這是否正常或有問題。(這個數據包最終會被綁定到一個沒有正確接收它的虛擬機實例)。

誰在添加這 18 個字節,為什麼?是發送者、交換機還是接收者?它們是什麼意思?

我懷疑它是(Cisco Nexus 3000)交換機,它與 802.1Q 封裝有關。

46 字節是乙太網數據包中允許的最小使用者數據量。

有一個 8 字節的前導碼、一個 6 字節的目標 MAC、一個 6 字節的源 MAC、一個 2 字節的類型/長度、使用者數據和一個 4 字節的幀校驗序列。由於最小數據包是 64 字節,這意味著使用者數據不能少於 46 字節。

建立在乙太網之上的每個協議都必須處理這個問題。ARP 通過忽略數據後的“垃圾”來處理它。

只是想添加額外的資訊(網路視角),為什麼路由器在哪種情況下不接受數據包

如果數據包大小低於 64 字節,則路由器將假定數據包為 RUNT 並拒絕該數據包

(數據包 <= 64 拒絕 RUNT 數據包)

因為在數據標頭大小中它自己是 64 頭,所以似乎數據包不包含數據包損壞的某些原因。

如果數據包大小高於埠(​​路由器)MTU(FastEthernet 預設為 1500,千兆介面預設為 9000),則數據包計為 GIANT 數據包並拒絕該數據包。因為 Port MTU 是 1500 它不會接受 Packets 。

(數據包 > 埠 MTU (1500) 將其拒絕為 GIANT )

如果 Packets Size 為 1519-1564 ,則此 Packets 稱為 Jambo baby Packets 並且僅接受 Port MTU 為 9000 的情況

如果所有條件都通過,則路由器將執行循環冗餘校驗 (CRC)

引用自:https://serverfault.com/questions/496324