以太網(Ethernet)是一種常見的計算機組網技術,其技術标準在IEEE 802.3中規定。目前廣泛使用的以太網是通過雙絞線(俗稱網線)進行信息交換。那麼這些在以太網鍊路也就是在網線中傳輸的數據包被稱做以太網數據幀。我們知道,所有在互聯網上傳送的數據都以分組即IP數據報為傳送單位,那麼簡單地說當網絡層的IP數據報傳送到數據鍊路層時會在前後分别添加首部和尾部把它封裝成幀,這樣的幀就是數據據鍊路層的數據傳送單元。本文詳細介紹以太網數據幀的結構,并結合數據包分析工具Wireshark捕獲實際網絡中傳輸的數據包,深入理解以太網數據幀。
以太網數據幀簡稱以太幀,起始部分由前同步碼和幀開始定界符組成,後面緊跟着一個以太網報頭,以 MAC 地址說明目的地址和源地址。以太幀的中部是該幀負載的包含其他協議報頭的數據包,最常見的如 IP 協議。另外以太幀由一個 32 位冗餘校驗碼結尾,用于檢驗數據傳輸是否出現損壞。以太幀結構如下圖所示。
上圖中每個字段的含義如下說明:
因此,以上可知以太網數據幀的整體大小在 64~1518 字節之間(不含前導字段7字節和幀起始符1字節)。
Wireshark分析以太幀打開Wireshark工具找到自己ip對應的網卡抓取一些數據包,這裡以QQ程序傳輸的數據包為例,截圖如下:
說明如下:
Frame 3765: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface \Device\, id 0: 這句話的意思就是說數據幀号碼3765,捕獲了129個字節,也就是1032位(一字節等于八位),在interface 0上面,也就是在網卡0上面(一個機器可能有多個網卡)。
Ethernet II:以太幀的包頭, 可以清楚地看到裡面包含三個信息:Destination, Source,Type依次對應前面介紹以太幀數據結構的目的地址、源地址、類型,而type類型值為0x0800表示IPv4,也就是說它是一個IP包。
Internet Protocol Version 4:第三個就是IP數據包。關于IP數據包格式我們以後在進行介紹,這裡可以看到,這個IP數據包的總長度為115字節。
User Datagram Protocol:UDP數據包。這個IP數據包高層傳輸層協議為UDP,也就是說QQ這個應用程序選擇UDP作為通信協議,而不是TCP。關于傳輸層協議也以後再進行介紹。
那麼,最後我們可以得出捕獲到的這個以太幀的總長度為129字節,IP數據包的total length是115字節,加上以太幀的包頭(6 6 2=14)14字節,115 14就等于129字節,然而,根據前面介紹以太幀尾部還有四個字節的FCS校驗和。後面的FCS四個字節哪裡去了呢?是不是我們計算錯誤了?顯然我們的計算是正确的,這是因為數據包經過網絡設備,如路由器、交換機等硬件已經把以太幀的校驗做過了,它返回給操作系統的隻有前面的部分,FCS沒有返回給操作系統,所以wireshark也抓不到後面校驗的四個字節,當然,校驗錯誤的以太幀也不會被wireshark所捕獲,所以,我們看到的以太幀都是通多校驗的正确的以太幀。
以上就是以太網數據幀的相關内容并結合wireshark工具加以分析,關于更多網絡知識可以加個關注,另外對Wireshark數據包捕獲分析感興趣的同學可以訂閱專欄内容~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!