网络层常见配套协议:MTU、ARP、NAT、DHCP、ICMP
一、先说结论
这一篇聚焦几个在面试里经常一起出现、但又容易零散记忆的知识点:
- MTU 是什么,为什么分片通常不是好事
- ARP 是干什么的
- NAT 为什么能让多个内网主机共享一个公网 IP
- DHCP 为什么能自动给电脑分配 IP
- ICMP 是什么,为什么 ping 能测连通性
如果先把主线压缩成几句话,可以这样记:
- MTU 决定一条链路上单个 IP 包能有多大
- ARP 负责在局域网里把 IP 解析成 MAC
- NAT 负责把内网地址转换成公网地址,并靠端口映射区分回包归属
- DHCP 负责给设备自动下发上网参数
- ICMP 是网络层的控制和诊断协议,ping 依赖它的回显请求 / 回显应答
二、MTU 是什么
MTU,Maximum Transmission Unit,最大传输单元。
它表示:
某条链路上一次最多能传输多大的 IP 数据报。
在常见以太网环境里,MTU 往往是:
1500 字节这里通常指的是:
- 一帧里可承载的网络层数据大小
- 不包含链路层头部本身
三、为什么会发生分片
如果一个 IP 包超过了路径上的 MTU,就可能需要被拆成多个更小的 IP 片段来传输。
这就叫:
IP 分片
例如:
- 要发送一个 3000 字节的 IP 包
- 某段链路 MTU 只有 1500
那这个大包就可能被拆成多个分片。
四、分片会带来什么问题
1. 额外头部开销
一个大包拆成多个小包后,每个分片都要带自己的 IP 首部。
所以整体会带来:
额外开销变大
2. 丢包影响被放大
这是最关键的问题。
只要多个分片里有任何一个丢了:
整个原始 IP 包就无法完整重组
也就是说,分片越多,成功率越容易下降。
3. 重组复杂、消耗资源
接收端需要:
- 缓存分片
- 按偏移重组
- 处理超时和异常情况
这会增加:
- 内存消耗
- CPU 开销
- 实现复杂度
4. 影响性能和稳定性
分片通常意味着:
- 包数量增加
- 头部开销增加
- 丢包后损失更大
- 中间设备处理更麻烦
所以工程上通常会尽量避免分片。
五、ARP 协议是做什么的
ARP 的作用可以压缩成一句话:
在局域网里,根据 IP 地址找到对应的 MAC 地址。
因为网络层通信知道的是:
- 目标 IP
但链路层真正发帧时还需要知道:
- 目标 MAC
所以主机在真正往局域网里发包之前,常常要先做一次:
IP -> MAC 的解析
这就是 ARP。
六、ARP 是怎么工作的
假设主机 A 要访问局域网里的 192.168.1.10,但不知道它的 MAC。
第一步:查 ARP 缓存
先看看本地之前有没有记住这条映射。
如果有,直接用。
第二步:广播 ARP 请求
如果没有,就在局域网里广播:
谁是
192.168.1.10?把你的 MAC 地址告诉我。
第三步:目标主机回复 ARP 应答
真正拥有这个 IP 的主机会单播回复:
我就是
192.168.1.10,我的 MAC 是 xx:xx:xx:xx:xx:xx。
第四步:写入缓存
发送方把结果写进本地 ARP 表,下次再发就不用重新广播了。
七、ARP 只用于本地局域网吗
基本上是的。
如果目标主机不在同一网段,主机通常不会去问远端主机的 MAC,而是会去解析:
默认网关的 MAC
然后先把数据交给网关,由网关继续往外转发。
所以 ARP 常见有两种用途:
- 找同网段目标主机的 MAC
- 找默认网关的 MAC
八、NAT 是什么
NAT,Network Address Translation,网络地址转换。
它的作用是:
把内网地址转换成公网地址,让多个内网主机可以共享一个公网 IP 上网。
家庭网络里最常见的内网 IP 就是:
192.168.x.x10.x.x.x172.16.x.x ~ 172.31.x.x
这些都是私有地址,不能直接在公网中路由。
所以路由器在内网主机访问互联网时,会做地址转换。
九、多个内网主机共用一个公网 IP 时,路由器怎么区分回包给谁
关键靠的是:
NAT 映射表(通常还包含端口映射)
例如:
- 电脑 A:
192.168.1.10:50000 -> 8.8.8.8:80 - 手机 B:
192.168.1.20:50001 -> 8.8.8.8:80
路由器经过 NAT 后,可能变成:
- A 对外:
1.2.3.4:40000 -> 8.8.8.8:80 - B 对外:
1.2.3.4:40001 -> 8.8.8.8:80
然后路由器记住:
1.2.3.4:40000 <-> 192.168.1.10:50000
1.2.3.4:40001 <-> 192.168.1.20:50001外部服务器回包回来时,路由器一查这张表,就知道该转回哪台内网主机。
所以本质上靠的是:
- 公网 IP
- 公网端口
- 协议(TCP / UDP)
- NAT 映射关系
共同决定回包归属。
十、DHCP 是做什么的
DHCP,Dynamic Host Configuration Protocol,动态主机配置协议。
它的作用就是:
自动给设备分配上网所需的网络参数。
最常见的包括:
- IP 地址
- 子网掩码
- 默认网关
- DNS 服务器
- 租约时间
所以你电脑连上 Wi-Fi 后不用手动填 IP,通常就是 DHCP 在工作。
十一、DHCP 的典型流程
DHCP 的经典流程通常叫:
DORA
1. Discover
客户端广播寻找 DHCP 服务器。
2. Offer
DHCP 服务器返回一个可用地址和配置建议。
3. Request
客户端表示接受某个服务器提供的配置。
4. ACK
服务器最终确认,把这套配置正式租给客户端。
所以可以简单背成:
Discover -> Offer -> Request -> ACK十二、ICMP 是什么
ICMP,Internet Control Message Protocol,互联网控制报文协议。
它一般归属于:
网络层
你可以把它理解成:
IP 的辅助控制与诊断协议
它主要不是传业务数据,而是用来:
- 传递差错信息
- 做网络探测
- 做可达性检测
- 做路径诊断
十三、ping 为什么能测连通性
ping 的原理是:
- 向目标主机发送 ICMP Echo Request(回显请求)
- 目标主机如果可达并允许响应,就返回 ICMP Echo Reply(回显应答)
- 发送方根据是否收到回复、耗时多久、丢了多少包,来判断网络状况
所以 ping 能测的是:
- 目标大致通不通
- RTT 大概多高
- 丢包多不多
但它不能完全代表:
- TCP 一定能连上
- HTTP 一定正常
- 业务接口一定可用
因为 ping 测的是:
ICMP 层面的连通性
而不是完整业务链路。
十四、这几个协议怎么串起来理解
你可以把它们这样放到同一张脑图里:
- MTU / 分片:限制一个 IP 包能有多大
- ARP:局域网里根据 IP 找 MAC
- NAT:把内网地址转换成公网地址
- DHCP:自动下发 IP、网关、DNS 等配置
- ICMP:网络诊断、差错和可达性反馈
它们很多都不是“主业务协议”,但都是面试里特别爱问的:
网络基础设施级知识点
十五、面试版回答
如果面试官问“MTU 是什么,分片有什么问题”,可以这样答:
MTU 是最大传输单元,表示一条链路上一次最多能传输多大的 IP 数据报。以太网中常见 MTU 为 1500 字节。如果 IP 包超过了链路 MTU,就可能发生分片,也就是把一个大包拆成多个更小的片段传输。分片会带来额外头部开销、分片重组成本增加,并且只要任意一个分片丢失,整个原始数据报就无法完整重组,因此工程上通常会尽量避免分片。
如果面试官问“ARP、NAT、DHCP、ICMP 分别是什么”,可以这样答:
ARP 用于在局域网内根据 IP 地址解析出对应的 MAC 地址;NAT 用于把内网地址转换成公网地址,使多个内网主机共享一个公网 IP,上网时通过端口映射表区分回包该给谁;DHCP 用于给设备自动分配 IP 地址、网关、DNS 和租约时间等网络参数;ICMP 是网络层的控制与诊断协议,ping 命令就是利用 ICMP 的回显请求和回显应答来探测连通性。
十六、一句话总结
- MTU:包能有多大
- ARP:IP 怎么找到 MAC
- NAT:多个内网主机怎么共用公网 IP
- DHCP:设备怎么自动拿到上网配置
- ICMP:网络出了什么问题、通不通、能不能测出来
