<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    以太網最大報文長度1500,為何要超它?

    VSole2022-04-02 12:24:02

    既然Ethernet的最大報文長度是1500,我們有什么理由發送大的報文呢?大的報文會導致ip分段。

    理想與現實的差距,網絡世界亦是如此。

    無論是家庭局域網,還是互聯網,網絡接口絕大多數使用Ethernet接口,Ethernet接口標準的MTU= 1500 Bytes。這是Ethernet接口對于承載的上層貨物制定的硬性限制

    什么是上層貨物?

    Ether-Type字段之后,FCS之前的數據字節,就是上層貨物。這個貨物可以為IP、ARP、IPv6等等。意味著,IP報文、ARP報文、IPv6報文最大尺寸為1500字節。通常稱它們為Packet

    1500字節包含Ethernet Header、Ethernet Tailer嗎?

    不包括。當來自上層的貨物(Packet),被Ethernet接口自動添加了Ethernet Header、Ethernet Tailer,就不叫Packet,而是叫Frame

    最長的Ethernet Frame是多少?

    Frame = Header + Packet + Tailer

    = Destination+Source +Ether-Type+Packet+FCS

    = 6 + 6 +2 + 1500 +4

    = 1518

    所以,Ethernet最長幀長度為1518字節,而不是1500字節

    每臺計算機都通過MTU=1500來限制上層貨物的大小。假設有一個IP Packet,報文長度為1500字節,正在離開家庭局域網某一臺電腦,經過電腦Ethernet口時,一切正常,順利通過。

    然后IP Packet繼續上行,到達家庭局域網的出口處,也就是光貓的WAN接口,出了一點小狀況。之所以出狀況,是因為光貓是PPPoE撥號客戶端,IP Packet外層需要先被PPPoE包裹(Encapsulation),然后才能被Ethernet包裹。這兩層的包裹關系可以看下方示意:

    Frame = Header + PPPoE + IP Packet+ Tailer

                = 14 + 8 + 1500+ 4

                = 1526

    從Ethernet接口的眼光看來,來自上層的貨物不再是1500字節長的IP Packet,而是1508字節的PPPoE + IP Packet。

    光貓的WAN口MTU = 1500,由于包裹的大小1508 > 1500 MTU,那么光貓需要將這個大包裹進行拆分成≤1500才能放行。

    IP包裹的拆分,會大大影響光貓或其他網絡設備的數據吞吐性能,所以網絡設計時會想盡一切方法予以避免。那么在真實網絡里是如何避免IP包裹的拆分(分片)的?

    手段千奇百怪,爭奇斗艷,但是不外乎兩種手段:

    • 內卷
    • 外卷

    什么是內卷?

    就是想盡一切辦法限制IP Packet的源頭(IP報文誕生地)的大小,通常小于標準MTU 1500字節。充分考慮IP報文端到端可能會添加形形色色的外層包裝,IP報文被添加了層層附加報文頭,在到達目的地的時候,依然≤1500字節,是不是一個好主意呢?

    是的,這是現網中最完美的解決方案。還是以上文的例子為例,如果數據的源頭IP報文大小不是1500,而是1492,那么在光貓的WAN口,即使添加8個PPPoE字節頭,報文也不過1500字節長,依然可以順利通過。說的容易,如何實現呢?

    TCP層面的限制

    通過將MSS變小,從而間接將IP報文變小。

    大家訪問知乎服務器,知乎服務器為了限制客戶端發出IP報文為1492,只需要在三次握手時使用MSS Option,將MSS 設置為1452即可。這種方法固然好,但是只能抵消因為添加PPPoE頭(8個字節)而增加的長度。

    但是,如果在客戶端與服務器之間,還有公司的VPN存在,如何處理?

    可以在VPN網關上,使用中間人技術(TCP Adjust-MSS),偷偷修改客戶端與服務器的TCP MSS,將其變得足夠小,可以充分抵消由于添加PPPoE、VPN而增加的報文頭。通常將MSS修改成1380可以應對絕大多數的網絡場景。

    能不能將MSS修改成1000或更小?

    當然可以,但是報文小會影響傳輸效率,所以1380是一個不錯的選擇。當然在復雜環境中,1380依然還是太大,可以繼續下調100字節到1280字節。

    UDP層面的限制(應用層面的限制)

    UDP是無狀態的,所以無法限制。為了限制數據源頭的IP報文大小,通常是在限制跑在UDP上的應用層的數據報文的大小。比如所有發出應用層報文限制在1380,少的120字節可以有效抵消互聯網附加的報文頭。

    認證服務器Radius,是一個基于UDP的應用。為了避免報文被分片,有一些廠商將數據源頭限制在1180字節,少的320字節可以完全應對最嚴峻的網絡環境。

    讀者是否覺得1180太保守?

    廠商吃了太多關于MTU、IP報文分片的苦頭,經過多年的網絡實踐,將其定為1180。盡管保守,但是卻非常可靠。

    一次網絡調試,其他廠商的Radius都出問題,唯獨這個保守的廠商沒有出問題。后來經過排錯,發現網絡端到端有效MTU不是1500,而是1450,而且不管DF是1還是0,只要超出1450統統無法通行。這家保守的廠商最后勝出!

    IP層面的限制

    通常IP層面不做限制,保持標準MTU = 1500。完全依賴于TCP、應用層面的限制。

    但是,如果各位電腦上遠程使用VPN,本地VPN接口MTU通常為1380甚至更小,這是IP層面的限制。談完內卷,再談談外卷。

    外卷

    網絡設備將MTU上調到大于1500,充分考慮到網絡可能附加的報文頭。

    依然以第一個例子為例,如果光貓的WAN接口MTU = 1508而不是1500,既然添加了8個字節的PPPoE報文頭,是不是也無需拆分IP報文?

    是的。

    假設IP報文順利離開光貓WAN口,進入運營商交換機,交換機上行Tunk口MTU = 1508夠用嗎?

    不夠,因為報文又被添加了一層或者兩層802.1Q,用于承載VLAN信息。怎么辦?

    很好辦,只要將Trunk口的MTU上調為1516甚至更大,完全Cover由于增添報文頭而帶來報文長度的增加。

    一句話概述,就是網絡設備將MTU大大調大,用于容納由于添加報文頭而增加的長度,避免由于報文頭增加而引起的IP報文分片。

    最后,IP報文越長傳輸效率越高,IP報文最長為65536字節。為何Ethernet接口不能將MTU設置為65536字節,而是限制在1500字節?

    這是一個歷史遺留問題。Ethernet發送方與接收方時鐘需要同步,發送長幀意味著更長的發送時長。接收方很難保持與發送方的時鐘同步,時鐘偏移變大,出錯的概率就會上升。為了限制錯誤率,將幀的長度做了上文的限制。

    90年代數字信號處理器DSP技術進步,鎖相環技術進步,帶來Ethernet傳輸技術進步。即使發10000字節長幀,雙方依然可以保持時鐘同步,出錯概率依然很小。當前的路由器、交換機支持MTU到9800字節、甚至更大。

    在數據中心的網絡里,為了提高數據的傳輸效率,通常采用外卷法,交換機MTU設置為9800甚至更大,當服務器與服務器之間使用9100字節進行通信時,無需任何IP分片,IP報文暢通無阻,將數據傳輸的效率最大化!

    mtu
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    nmap -PN -sS -sV --script=vulscan –script-args vulscancorrelation=1 -p80 target. nmap -PN -sS -sV --script=all –script-args vulscancorrelation=1 target. NetCat,它的實際可運行的名字叫nc,應該早很就被提供,就象另一個沒有公開但是標準的Unix工具。
    既然Ethernet的最大報文長度是1500,我們有什么理由發送大的報文呢?大的報文會導致ip分段。 理想
    在 Linux 中查找可用的網絡接口我們可以通過幾種方式找到可用的網卡。在本指南中,我們將討論列出 Linux 中網絡接口卡的 10 種方法。我相信一些 Linux 用戶可能仍在使用它。請注意netstat 已過時。的替代品"netstat -i"是"ip -s link"。它用于創建、顯示、編輯、刪除、激活和停用網絡連接以及顯示網絡狀態。
    ifconfig 命令 ifconfig命令 被用于配置和顯示Linux內核中網絡接口的網絡參數。用ifconfig命令配置的網卡信息,在網卡重啟后機器重啟后,配置就不存在。要想將上述的配置信息永遠的存的電腦里,那就要修改網卡的配置文件了。 # ifconfig
    昨天晚上群里有位同學提了工作中遇到的問題,如下所示: 遇到這樣一個問題。就是協商的mss 是1460。但服務
    ifconfig命令 被用于配置和顯示Linux內核中網絡接口的網絡參數。用ifconfig命令配置的網卡信息,在網卡重啟后機器重啟后,配置就不存在。要想將上述的配置信息永遠的存的電腦里,那就要修改網卡的配置文件了。
    用ifconfig命令配置的網卡信息,在網卡重啟后機器重啟后,配置就不存在。要想將上述的配置信息永遠的存的電腦里,那就要修改網卡的配置文件了。帶網口 命令僅顯示特定的接口詳細信息,例如?如果它也被禁用,選項將顯示所有可用的接口詳細信息。分配 IP 地址和網關分配一個?如果系統重新啟動,該設置將被刪除。
    使用Airodump-ng工具實施掃描,可以獲取到AP的相關信息,如SSID名稱、MAC地址、工作信道及加密方式等。
    2020年10月31日安全研究員Samy Kamka發布了一種被稱為NAT Slipstreaming的攻擊顛覆了人們對防火墻中NAT安全性認知。NAT Slipstreaming,利用誘騙了受害人訪問可能受到黑客控制的網站后,則允許攻擊者繞過受害人的網絡地址轉換或防火墻安全控制,遠程訪問綁定到受害者計算機的任何TCP/UDP服務。這種攻擊利用了對某些TCP和UDP數據包的數據部分的任意控制的優勢,而沒有包括HTTP或其他標頭。此外,還包括用于本地IP地址發現的新技術。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类