網路封包在傳輸時並非無限大,MTU(Maximum Transmission Unit)決定了單次可傳輸的封包上限。理解 MTU 能有效排除網路效能瓶頸與連線異常問題。
什麼是 MTU?核心概念解析
MTU 定義於網路層(Layer 3),代表單一封包最大可攜帶的資料量,單位為 Bytes。標準乙太網路的 MTU 預設為 1500 Bytes,此數值包含 IP 標頭(通常 20 Bytes)與 Payload,但不含 Layer 2 的乙太網路訊框標頭(14 Bytes)與 FCS(4 Bytes)。因此完整的乙太網路訊框實際約為 1518 Bytes。不同媒介有不同的 MTU 上限,例如 PPPoE 為 1492 Bytes、Jumbo Frame 可達 9000 Bytes。
封包分割(Fragmentation)機制
當封包大小超過路徑中任一節點的 MTU 時,路由器會將封包切割成多個片段(Fragments),並在目的端重組。IPv4 支援路由器分割,封包標頭中的 DF(Don't Fragment)位元若設為 1,則禁止分割,超限時直接丟棄並回傳 ICMP 錯誤。IPv6 則完全不允許路由器分割,僅允許來源端自行處理。現代網路通常透過 Path MTU Discovery(PMTUD)機制,動態探測路徑上最小的 MTU 值,避免分割帶來的效能損耗。
# Linux 查詢與設定網路介面 MTU
ip link show eth0
ip link set eth0 mtu 1400
# 使用 ping 手動測試 Path MTU(DF 位元設為 1)
ping -M do -s 1472 8.8.8.8
💡 重點整理
- 乙太網路標準 MTU 為 1500 Bytes,不含 Layer 2 訊框標頭。
- IPv4 路由器可分割封包;IPv6 禁止中間節點分割。
- PMTUD 機制可動態偵測路徑最小 MTU,避免效能損耗。
- VPN、PPPoE 等封裝會縮減可用 MTU,需手動調整避免分割。
MTU 看似簡單,卻是網路效能調校與故障排除的關鍵。正確設定 MTU 能避免不必要的封包分割,顯著提升傳輸效率與連線穩定性。
📚 參考文獻
- IETF RFC 791 – Internet Protocol (IPv4),定義 IP 分割與 MTU 相關規範:https://www.rfc-editor.org/rfc/rfc791
- IETF RFC 1191 – Path MTU Discovery,PMTUD 機制的標準定義:https://www.rfc-editor.org/rfc/rfc1191
- Cloudflare Learning – What is MTU?:https://www.cloudflare.com/learning/network-layer/what-is-mtu/
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。
留言
張貼留言