(转载)以太网最大帧和最小帧、MTU .
? ? 按照上述,最大幀應該是1526字節,但是實際上我們抓包得到的最大幀是1514字節,為什么不是1526字節呢?
? ? 原因是當數據幀到達網卡時,在物理層上網卡要先去掉前導同步碼和幀開始定界符,然后對幀進行CRC檢驗,如果幀校驗和出錯,就丟棄此幀。如果校驗和正確,就判斷幀的目的硬件地址是否符合自己的接收條件(目的地址是自己的物理硬件地址、廣播地址、可接收的多播硬件地址等),如果符合,就將幀交給“設備驅動程序”做進一步處理。這時我們抓包的軟件才能抓到數據,因此,抓包軟件抓到的是去掉前導同步碼、幀開始分界符、FCS之外的數據,其最大值是6 + 6 + 2 + 1500 = 1514。
? ? 以太網規定,以太網幀數據域部分最小為46字節,也就是以太網幀最小是 6 + 6 + 2 + 46 + 4 = 64。除去4個字節的FCS,因此,抓包時就是60字節。當數據字段的長度小于46字節時,MAC子層就會在數據字段的后面填充以滿足數據幀長不小于64字節。由于填充數據是由MAC子層負責,也就是設備驅動程序。不同的抓包程序和設備驅動程序所處的優先層次可能不同,抓包程序的優先級可能比設備驅動程序更高,也就是說,我們的抓包程序可能在設備驅動程序還沒有填充不到64字節幀的時候,已經捕獲了數據。因此不同的抓包工具抓到的數據幀的大小可能不同。(比如,wireshark抓到的可能沒有填充數據段,而sniffer抓到的就有填充數據段)
查看網絡接口MTU的方法:
Windows下,在命令提示符下輸入netstat -e -v
FreeBSD下,輸入netstat -i
總結
以上是生活随笔為你收集整理的(转载)以太网最大帧和最小帧、MTU .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)计算机科学中最重要的32个算法
- 下一篇: (转载)Using GCC’s C++