3、网络层核心:IP地址与子网掩码、路由表与路由转发、ICMP协议与Ping工具
网络层,说白了就是整个互联网的「交通调度中心」。没有它,数据包就像没有导航的快递员,根本找不到目的地。今天咱们就聊聊网络层的三个核心组件:IP地址与子网掩码、路由表与路由转发、以及ICMP协议与Ping工具。
3.1 IP地址与子网掩码:你的网络身份证
IP地址就像你家的门牌号。IPv4地址是32位的,通常写成点分十进制,比如 192.168.1.1。但光有门牌号还不够,你还得知道哪些邻居在同一个小区——这就是子网掩码的作用。
子网掩码也是一个32位的数字,它用连续的1表示网络位,用连续的0表示主机位。比如 255.255.255.0 表示前24位是网络位,后8位是主机位。我刚开始学的时候,总觉得这玩意儿抽象。后来在项目里排查一个跨网段不通的问题,才发现子网掩码配错了,两台机器根本不在同一个广播域里。
核心公式:网络地址 = IP地址 & 子网掩码
如果两台机器的网络地址相同,它们就在同一个子网内,可以直接通信。
举个例子:
- IP:
192.168.1.10,子网掩码:255.255.255.0→ 网络地址:192.168.1.0 - IP:
192.168.1.20,子网掩码:255.255.255.0→ 网络地址:192.168.1.0 - 它们在同一子网,可以直接通信。
但如果你把子网掩码改成 255.255.255.128,那 192.168.1.10 的网络地址是 192.168.1.0,而 192.168.1.130 的网络地址是 192.168.1.128,它们就不在同一个子网了。嗯,这里要注意:子网划分是网络规划的基础,配错了整个网络都可能瘫痪。
3.2 路由表与路由转发:数据包的导航地图
当数据包要离开本地子网时,它需要路由器帮忙。路由器手里有一张「地图」——路由表。路由表里记录着:要去哪个网络,该走哪个接口,下一跳是谁。
路由表的核心条目包括:
- 目的网络:目标子网的地址
- 子网掩码:用于匹配目的网络
- 下一跳:下一个路由器的IP地址
- 出接口:数据包从哪个口出去
- 优先级/度量值:多条路由时选最优的
我记得有一次线上故障,某个网段突然不通了。排查了半天,发现是路由表里多了一条静态路由,优先级比动态路由高,结果数据包被引到了错误的路径上。所以啊,路由表不是越复杂越好,清晰简洁才是王道。
避坑指南:我曾经在配置静态路由时,把下一跳写成了自己的IP地址,结果数据包一直在本地打转,形成路由环路。检查路由表时一定要确认下一跳是可达的,并且不是自己。
路由转发的过程其实很简单:
- 数据包到达路由器,路由器提取目的IP地址。
- 路由器用目的IP和路由表中的每一条条目进行匹配(按最长前缀匹配原则)。
- 找到最匹配的条目后,将数据包从对应的出接口转发出去。
- 如果没有匹配条目,数据包被丢弃,并返回ICMP目标不可达消息。
你想想看,互联网上有几十万条路由,路由器怎么处理得过来?其实路由器内部有硬件加速,比如TCAM(三态内容寻址存储器),一次就能查完所有条目。但这是硬件层面的事了,咱们做运维的,更关心路由表配得对不对。
3.3 ICMP协议与Ping工具:网络医生的听诊器
ICMP(Internet Control Message Protocol)是网络层的「信使」。它不传输用户数据,而是传递控制信息和错误报告。最常见的ICMP消息类型有:
| 类型 | 代码 | 含义 |
|---|---|---|
| 0 | 0 | Echo Reply(Ping响应) |
| 8 | 0 | Echo Request(Ping请求) |
| 3 | 0 | 目标网络不可达 |
| 3 | 1 | 目标主机不可达 |
| 11 | 0 | TTL超时 |
Ping工具就是基于ICMP的。它发送一个Echo Request,对方回复一个Echo Reply。通过Ping,你可以快速判断网络通不通、延迟高不高、有没有丢包。
我个人习惯,排查网络问题时第一步就是Ping。但要注意,有些防火墙会屏蔽ICMP,这时候Ping不通不代表网络不通。我曾经遇到过一台服务器,Ping不通但SSH能连上,就是因为防火墙把ICMP给过滤了。
警告:不要在生产环境大量使用Ping进行压力测试。ICMP包虽然小,但大量发送会消耗路由器的CPU资源,甚至引发网络拥塞。我见过有人用Ping -f把核心交换机的CPU打满的案例。
除了Ping,ICMP还有更高级的用法。比如 traceroute 工具,它利用TTL超时机制,逐跳探测数据包经过的路径。每次发送一个TTL为1、2、3...的UDP包,中间路由器返回TTL超时消息,就能勾勒出完整的路径。
举个例子:
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.198 ms 1.165 ms
2 10.0.0.1 (10.0.0.1) 2.456 ms 2.432 ms 2.401 ms
3 172.16.0.1 (172.16.0.1) 5.678 ms 5.654 ms 5.621 ms
4 * * *
5 8.8.8.8 (8.8.8.8) 12.345 ms 12.321 ms 12.298 ms
看到第4跳全是星号了吗?那可能是某个路由器不响应ICMP,或者路径上有防火墙。这时候别慌,只要最终能到达目标,中间丢几跳是正常的。
3.4 知识体系总览
下面这张图,把网络层的核心逻辑串起来了。你一看就明白:IP地址和子网掩码决定了「你是谁、你在哪」,路由表决定了「你怎么走」,ICMP则负责「路上出了啥问题」。三者缺一不可。
好了,网络层的核心就这些。IP地址和子网掩码是基础,路由表是大脑,ICMP是眼睛和耳朵。下次遇到网络不通,别急着重启,先Ping一下,看看路由表,八成能找到问题。
一句话总结:IP地址告诉你「我是谁」,子网掩码告诉你「我在哪」,路由表告诉你「怎么走」,ICMP告诉你「走没走通」。
可可精品资料库