收到的arp數據包比發送的數據包大,為什麼?
我正在嘗試調試網路問題。在此過程中,我注意到當我嘗試進行 arping 時,接收到的 arp 數據包大於發送的 arp 數據包,如 tcpdump 輸出的那樣。
(注意兩端都有一個
br100
到eth1
介面的橋)。命令:
# 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)