wireshark-数据链路层

74次阅读

共计 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  . . . . . . . : 已启用 

以太网数据帧结构

  1. 前同步码:准确的说是前导码 7 个 Byte + 帧开始符 1 个 Byte,目的是时钟同步,为了支持不同的以太网类型
  2. 目的 mac 地址:可以是某个机器物理地址,也可以是广播地址(FF-FF-FF-FF-FF-FF for arp)
  3. 源 mac:略过
  4. 类型:允许以太网多路复用,常见的为 TCP/udp/IP,Novell IPX/SPX,Apple Talk Phase。这样以太网更好的胜任了数据链路层的工作
  5. 数据:46-1500Kb
  6. 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 字节区分,参考车总这个回答

正文完
 0