数据链路层

图片素材来自免费商用图库(pixabay),非本站项目实拍。

1. 怎么分离报文头部与有效载荷?

以太网头部长度固定为 14 字节(6+6+2)。 收到完整以太网帧之后:

总帧数据,跳过前面固定 14 字节的帧头,剩下的部分就是上层有效载荷。 公式:载荷 = 整个以太网帧 – 14 字节帧头 – 末尾 4 字节 CRC 校验。

关键点:以太网帧头固定长度,不需要额外长度字段,直接偏移固定字节就能取出载荷。

2. 类型字段(2 字节)的作用:分用(多路分解)

分用(demultiplexing):接收方拿到载荷之后,判断交给上层哪个协议。 类型字段标记数据载荷里面是什么协议:

  • 0x0800 → IPv4 报文(最常见)
  • 0x86DD → IPv6 报文
  • 0x0806 → ARP 报文

一句话理解:MAC 层收到帧,剥离 14 字节帧头拿到载荷,读取【类型字段】,知道载荷里面装的是 IP/ARP,然后交给对应的上层模块,这个过程就叫分用。

ARP 与 RARP 报文属于数据链路层报文,被封装在以太网帧载荷中。 以太网帧数据载荷最小为 46 字节;ARP 报文固定 28 字节,不足部分使用 PAD (一般是全0)填充补齐 18 字节。       

IP vs MAC  

IP 地址:远大最终目标 好比唐僧取经,目标是从东土大唐,一路去往西天。 代表端到端的最终目的地,全程不变,从头到尾目标不变。

MAC 地址:当下这一段的下一站 就像取经路上一站一站赶路:女儿国→车迟国→狮驼岭。 MAC 只管当前这一段链路,只负责走到下一站;每进入一个新国家(新链路 / 新局域网),就要更换下一站目的地。


早期总线型共享以太网,所有主机共用一条通信线路,同一时刻只允许一台主机发送数据。主机发送的以太网帧会广播到局域网内全部主机;主机收到帧后比对目的 MAC,不是发给自己的报文直接丢弃。

当两台主机同时发送数据,会产生信号碰撞,报文损坏。CSMA/CD 就是用来处理介质冲突的机制:先听后发,边发边听,冲突停发,随机重传。主机发送前监听线路,空闲才发送;发送过程持续检测碰撞,一旦检测冲突就停止发送,等待随机时间后重试。

注意区分:现代交换机以太网工作在全双工模式,收发使用独立通道,不再存在信号碰撞,CSMA/CD 仅作为理论考点。

  1. 帧长度会影响碰撞概率。帧越长,信道占用时间越长,其他主机在发送期间同时发包的可能性变大,碰撞概率越高;短帧占用介质时间短,碰撞概率更低。
  2. 主机数量增多,冲突概率显著增加。更多主机竞争共享总线,更容易出现多主机同时发送,频繁发生碰撞,大量资源消耗在冲突与重传,网络有效吞吐量下降。

交换机

交换机在某种意义上,将一个局域网分成了两个part,

左侧机器的通信不会影响右侧机器的相互通信,同时又能实现两侧机器来实现相互通信,增加了通信的效率

交换机最核心的优势就是分割碰撞域,支持局域网内多组主机并行传输,提升带宽利用率;依靠 MAC 地址表实现精准单播转发,当目的 MAC 未知时执行泛洪。

工作原理
  1. 主机 A 封装帧:src MacA,dst MacD,把帧发送到网线,从eth_left端口进入交换机。
  2. 第一步:MAC 自学习 交换机读取帧里的源 MAC MacA,查表:MacA 对应的端口就是当前入端口 eth_left,条目不变,无需更新。
  3. 第二步:查询目的 MAC,做转发决策 读取目的 MAC MacD,查询 MAC 地址表:

MacD 对应的端口:eth_left,也就是和入端口是同一个端口!

交换机规则:如果目的端口 == 报文的入端口 → 直接丢弃该帧,不向任何其他端口转发。


ARP

拿到目的 IP,通过子网掩码计算目标网络,查询路由表得到下一跳 IP 地址。 想要在以太网中发送数据,必须知道下一跳路由器 / 主机的 MAC 地址。 在同一个网段内,需要一种技术,将下一跳 IP 解析为下一跳设备的 MAC 地址。 这个局域网协议就是:ARP 地址解析协议。

我们根据上面整个来完成下面整个目标

此时主机A在他所在的以太网发送他的arp报文给所有的主机

比如是B主机收到了的报文,他进行报头与有效载荷的分离,然后看目的ip地址,比对发现不是自己,就会将报文丢弃

如果是E主机收到了报文,他进行报头与有效载荷的分离,然后看目的ip地址,比对发现就是自己,然后就会将构建arp应答,那么还要进行arp报文的区分

主机a的报文

主机e的报文

这样主机A就获得了主机E的mac地址

  1. A 发 ARP 广播请求 (op=1):请问 ipE 的 MAC 是谁?全网主机收到。
  2. B 等其他主机:目标 IP 不是自己,丢弃。
  3. E 匹配目标 IP,构造 ARP 单播应答 (op=2),带上自己 MacE 发给 A。
  4. A 收到应答,得到 ipE ↔ MacE 映射,存入 ARP 缓存
  1. 缓存里存储的是IP 与 MAC 的映射条目。
  2. ARP 缓存条目带有老化时间(时间限制),不是永久保存。
    • 长时间没有使用这条 IP-MAC 映射,条目就会自动过期删除。
    • 好处:如果设备更换网卡、IP 发生变化,旧的失效 MAC 记录可以自动清除,防止通信故障。

ARP 欺骗(ARP 中间人攻击)极简介绍

核心原理

ARP 协议没有身份校验机制:只要收到 ARP 应答报文,主机就会无条件更新自己 ARP 缓存里的 IP→MAC 映射,不管有没有主动发 ARP 请求(免费 ARP)。

ARP 欺骗就是攻击者伪造 ARP 应答报文,篡改目标主机 ARP 缓存:

告诉受害主机:网关 IP 对应的 MAC = 攻击者主机 MAC 同时告诉网关:受害主机 IP 对应的 MAC = 攻击者主机 MAC

于是受害主机发给网关的流量、网关返回给受害主机的流量,全部先经过攻击者机器转发,这就是ARP 中间人攻击。

一、分层排障模型(从物理层到应用层)

网络故障排查最忌”乱试”。按 OSI 自底向上:物理层(网卡/线缆/光模块/端口灯)→ 数据链路层(VLAN、MAC、STP、协商速率)→ 网络层(IP、网关、路由、ARP)→ 传输层(TCP/UDP 端口、ACL)→ 应用层(DNS、代理、证书)。先确认链路通断(网卡 up、协商速率正常),再 ping 网关,再 traceroute 看断点在第几跳,最后查应用端口与日志。

二、排障工具箱

  • ping / pathping / mtr:看连通性与逐跳丢包延迟。
  • traceroute / tracert:定位故障跳点,区分运营商侧还是内网侧。
  • Wireshark:抓包看 TCP 重传、RST、DNS 超时、ARP 风暴,可复现 NAT 穿透与三次握手异常。
  • 交换机端口:err-disable、CRC 错包、双工不匹配、loop guard 是端口故障高频原因,show interface 看 counters 是第一步。
  • 防火墙:iptables/firewalld/nftables/ufw 规则顺序与默认策略决定放行,改前先备份规则、确认 SSH 不会被锁死。

三、工程经验

交换机端口频繁 err-disable 多因 BPDU guard 或线缆接触不良;无线与有线混排时优先固化上联端口;变更防火墙前在测试环境验证并保留回滚命令。运维类故障的闭环是:复现 → 定位 → 临时恢复 → 根因修复 → 复盘沉淀。

相关阅读