共计 2846 个字符,预计需要花费 8 分钟才能阅读完成。
Win 查看 MTU
如果是 wlan 的话第一列应该是 1492,以太网 Ethernet II 是 1500(Why 1500?)
interface ipv4 show subinterfaces
MTU MediaSenseState 传入字节 传出字节 接口
------ --------------- --------- --------- -------------
4294967295 1 4552252 4865 Loopback Pseudo-Interface 1
1500 1 3022660347 234035687 以太网
1500 1 648 1443666 VirtualBox Host-Only Network
ping 网关
C:\Users\yaxia>ping -f -l 1473 10.70.30.1
正在 Ping 10.70.30.1 具有 1473 字节的数据:
需要拆分数据包但是设置 DF。需要拆分数据包但是设置 DF。10.70.30.1 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 0,丢失 = 2 (100% 丢失),Control-C
^C
C:\Users\yaxia>ping -f -l 1472 10.70.30.1
正在 Ping 10.70.30.1 具有 1472 字节的数据:
来自 10.70.30.1 的回复: 字节 =1472 时间 <1ms TTL=255
来自 10.70.30.1 的回复: 字节 =1472 时间 <1ms TTL=255
来自 10.70.30.1 的回复: 字节 =1472 时间 <1ms TTL=255
来自 10.70.30.1 的回复: 字节 =1472 时间 <1ms TTL=255
10.70.30.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间 (以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms
MTU 一般为 68-1500B,一般更改 MTU 大小指的是三层 MTU 的修改。1472+ 包头 28 字节 =MTU(Maximum Transmission Unit),是数据链路层,当第三层(ip)收到打包之后,要将数据包分片之后再往二层传输。而一般说的修改 MTU 就是说的修改 IP 层分片的大小,而不是指的(固定)大小的数据链路层的分片。
ipconfig/all
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel(R) Ethernet Connection (5) I219-LM
物理地址. . . . . . . . . . . . . : 8C-EC-4B-5F-E9-49
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::ed9a:ac29:db44:2570%11(首选)
IPv4 地址 . . . . . . . . . . . . : 10.70.30.47(首选)
子网掩码 . . . . . . . . . . . . : 255.255.254.0
获得租约的时间 . . . . . . . . . : 2019 年 9 月 18 日 15:43:11
租约过期的时间 . . . . . . . . . : 2019 年 9 月 23 日 15:43:13
默认网关. . . . . . . . . . . . . : 10.70.30.1
DHCP 服务器 . . . . . . . . . . . : 10.70.1.36
DHCPv6 IAID . . . . . . . . . . . : 42789963
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-22-50-8C-EE-8C-EC-4B-5F-E9-49
DNS 服务器 . . . . . . . . . . . : 10.70.1.38
10.70.1.39
TCPIP 上的 NetBIOS . . . . . . . : 已启用
以太网数据帧结构
- 前同步码:准确的说是前导码 7 个 Byte + 帧开始符 1 个 Byte,目的是时钟同步,为了支持不同的以太网类型
- 目的 mac 地址:可以是某个机器物理地址,也可以是广播地址(FF-FF-FF-FF-FF-FF for arp)
- 源 mac:略过
- 类型:允许以太网多路复用,常见的为 TCP/udp/IP,Novell IPX/SPX,Apple Talk Phase。这样以太网更好的胜任了数据链路层的工作
- 数据:46-1500Kb
- CRC:Cyclic Redundancy Check 循环校验。
综上最大应为:7+1+6+6+2+1500+4=1526,但是物理网卡会去掉一头的前同步码 8 个字节,去掉一尾的 crc4 个字节,wireshark 里展示的为核心需要解析的为 6 +6+2+(46-1500),最大为 1514 字节,最小为 60。如下图
ipv4
Ethernet II, Src: Dell_5f:e9:49 (8c:ec:4b:5f:e9:49), Dst: Cisco_8f:98:00 (84:b2:61:8f:98:00)
Destination: Cisco_8f:98:00 (84:b2:61:8f:98:00)
Source: Dell_5f:e9:49 (8c:ec:4b:5f:e9:49)
Type: IPv4 (0x0800)
arp
Ethernet II, Src: Cisco_8f:98:00 (84:b2:61:8f:98:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
Source: Cisco_8f:98:00 (84:b2:61:8f:98:00)
Address: Cisco_8f:98:00 (84:b2:61:8f:98:00)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: ARP (0x0806)
Padding: 000000000000000000000000000000000000
二层为 arp 广播,基本靠吼,通过 arp 广播查到网关地址
14 0.826054 Cisco_8f:98:00 Broadcast ARP 60 Who has 10.70.30.1? Tell 10.70.30.1
三层为路由,每一跳的 mtu 可能都不同,这就涉及到分包(DF),在发现下一跳路由器的 MTU 大小之后,会有两个选择:如果为 1 且包大于自己的 mtu,那就直接扔掉。如果为 0,那就准备 ip 分片发送。接收方收到后重组(reassemble)后放到自己的接收缓冲区。
Ethernet II 和 802.3
区别以及如何通过 13 和 14 字节区分,参考车总这个回答