📌 核心结论(TL;DR):
IP 与 MAC:IP 是跨网段的终极目标(一般不变),MAC 是局域网内"下一跳"的目标(一直变化)。
MTU:以太网一帧最大 1500 字节,超过会触发 IP 分片,严重损耗性能。
ARP 协议 :已知 IP 求 MAC。通过局域网广播 请求,单播回应,并缓存在本地。
ARP 欺骗:因为 ARP 协议无验证机制,黑客可伪造网关 MAC,充当中间人截获所有数据。
一、 数据链路层的定位
数据链路层负责在**同一个局域网(或同一条链路)**内的相邻节点之间传输数据。它就像一个快递员,只负责自己辖区的配送。
二、 核心概念:MAC 地址与 IP 地址

-
IP 地址:网络层地址。描述的是旅途的"起点和终点"。
-
MAC 地址 :链路层地址。长度为 48 位,烧录在网卡上。描述的是旅途中"每一小段的起点和终点"。
结论:在数据包跨网段传输时,IP 地址不变,但每经过一个路由器,目标 MAC 地址就会改变。
三、 ARP 协议:已知 IP,求 MAC

-
主机 A 想和主机 B(同网段)通信,但在以太网帧中必须填目标 MAC。
-
A 发起 ARP 广播 :"谁是
192.168.1.2" -
B 收到广播后,回一个 ARP 单播 :"我是,我的 MAC 是
xx:xx:xx:xx:xx:xx。" -
A 将映射关系存入本机的 ARP 缓存表 (可通过
arp -a查看)。
四、 致命漏洞:ARP 欺骗与中间人攻击

由于 ARP 协议没有任何认证机制,如果有人伪造 ARP 应答,接收方也会当真。
-
攻击过程:黑客伪造网关的 ARP 包,广播给局域网内所有用户:"我是网关,我的 MAC 是黑客的 MAC。"
-
后果:用户的流量全部流向黑客(黑客成为"中间人"),黑客可以窃取密码(甚至篡改数据),再转发给真网关。
-
防范:在企业网络中,通常使用静态 ARP 绑定,或者部署 DAI(动态 ARP 检测)技术来防御。
五、 实战命令

bash
ip link show # 查看本机 MAC 地址
arp -a # 查看 ARP 缓存表 (IP 与 MAC 的映射关系)
自我实战操作
咱们不搞复杂的黑客工具,直接通过 Linux 命令看看你本机的 MAC 和 ARP 缓存。
bash
cd ~/linux_study/network_test
实战 1:查看你的 MAC 地址
bash
# 查看网卡信息 (找 link/ether 后面的就是 MAC 地址)
ip link show
# 或者
ifconfig

👉 现象 :你会看到一串类似 00:16:3e:xx:xx:xx 的字符,这就是你的 MAC。
实战 2:查看你的 ARP 缓存表

很多新手看到密密麻麻的路由表就头晕,其实只需要盯住第一行:
default via 10.0.0.1 dev eth0。
-
default表示这是默认路由。 -
via后面的 IP 就是你的网关(如10.0.0.1)。 -
dev后面跟的是网卡名称(如eth0)。 -
src后面是你当前网卡的内网 IP。
在云服务器环境中,你还会看到云厂商在底层植入的特定路由(如 183.60.x.x)。这验证了 IP 协议"一跳一跳"找路的过程:目的 IP 如果不在本地局域网,就统统交给网关去处理。
bash
# 先 ping 一下网关,强制触发一次 ARP 解析
ping -c 1 你的网关IP(用 ip route 看 default via 后面的 IP)
# 查看 ARP 缓存
arp -a
# 或者用较新的命令
ip neigh

现象 :在云服务器上执行 ping 10.0.0.1(网关)显示 100% packet loss。但执行 arp -a 和 ip neigh 时,网关的状态却是 REACHABLE(可达),且能正确解析出 MAC 地址。
原因分析:
-
ICMP 被拦截 :云厂商为了保证底层网络设备的安全,通常在网关上屏蔽了 ICMP 协议(即禁 ping)。所以网关不会回应你的
ping请求。 -
ARP 层连通 :
ip neigh获取的是二层的 MAC 地址。只要你能解析到网关的 MAC 地址并显示REACHABLE,就证明你的网卡和网关物理链路是通的。
验证方法 :要测试外网是否通畅,直接 ping www.baidu.com 或 curl -I http://www.baidu.com。只要能访问公网,就说明网关转发完全正常。
总结:网络排错要分层看。二层通(ARP),不代表三层(IP/Ping)一定会回应,云环境下的"禁 ping"是常态。
实战 3:ARP 缓存更新测试
-
删掉刚才的 ARP 缓存(需要 root 权限):
sudo arp -d 192.168.1.1 -
再次执行
ip neigh,你会发现那个 IP 对应的 MAC 变成了FAILED或者消失了。 -
再次 ping 网关,ARP 缓存就会重新建立(重新广播了一次)。