3. 网络层核心协议:IP协议(IPv4与IPv6)、子网划分与CIDR、ARP协议原理、ICMP协议与Ping工具

网络层是整个协议栈的“交通枢纽”。说白了,它的任务就是把数据包从源主机送到目标主机,中间可能跨过好几个路由器。我刚开始学网络时,总觉得这层离应用层太远,不如HTTP直观。直到有一次排查一个跨机房延迟问题,才发现不懂网络层,你连问题出在哪都说不清楚。

这一章我们聚焦四个核心话题:IP协议(IPv4和IPv6)、子网划分与CIDR、ARP协议、ICMP协议。它们构成了网络层的基础骨架。

本章知识体系速览

网络层核心协议知识体系 网络层核心协议 IP协议 子网划分与CIDR ARP协议 ICMP协议 IPv4 IPv6 VLSM / 无类域间路由 MAC地址解析 Ping / Traceroute 核心关系:IP负责寻址和路由,ARP解决IP到MAC的映射,ICMP提供差错报告与诊断

3.1 IP协议:IPv4与IPv6

IP协议是网络层的“身份证”。每个设备要想上网,就得有一个IP地址。IPv4是32位地址,写成四个十进制数,比如192.168.1.1。你想想看,32位最多也就42亿个地址。90年代大家觉得够用了,结果移动互联网一来,地址瞬间枯竭。

IPv6就是来救场的。128位地址,写成八组十六进制数,比如2001:db8::1。这个地址空间有多大?地球上每一粒沙子都能分到好几个IP。我前几年帮一个物联网项目做架构,客户坚持用IPv4私网,结果设备一上万,NAT表撑爆了。后来全切IPv6,问题迎刃而解。

特性 IPv4 IPv6
地址长度 32位 128位
表示方式 点分十进制 冒号十六进制
地址数量 约43亿 约3.4×10^38
NAT需求 普遍需要 基本不需要
头部长度 可变(20-60字节) 固定40字节
安全性 可选(IPsec) 原生支持IPsec

我的习惯:在规划新网络时,我会优先考虑IPv6。即使当前只用IPv4,也建议预留IPv6地址空间。否则以后迁移,成本翻倍。

3.2 子网划分与CIDR

子网划分说白了就是把一个大网络切成几个小网络。为什么要切?因为广播域太大,网络效率会下降。我记得有一次帮一个学校做网络改造,他们整个校园网就一个C类段,200多台电脑天天广播风暴。后来我帮他们按楼层划了4个/26的子网,广播域缩小了,网络瞬间稳定了。

CIDR(无类域间路由)是更灵活的方式。它用“IP地址/前缀长度”来表示网络范围,比如192.168.1.0/24。前缀长度就是网络位的个数。你想想看,/24就是255.255.255.0,/26就是255.255.255.192。

划分子网时,记住两个关键点:

  • 网络地址:主机位全0,代表这个子网本身
  • 广播地址:主机位全1,代表这个子网的所有设备

举个例子,192.168.1.0/26:

  • 子网掩码:255.255.255.192
  • 可用主机数:2^(32-26) - 2 = 62台
  • 网络地址:192.168.1.0
  • 广播地址:192.168.1.63
  • 可用IP范围:192.168.1.1 ~ 192.168.1.62

我曾经踩过的坑:有一次配置路由器,我把子网掩码写成了255.255.255.128,结果两个子网的路由器无法互通。查了半天才发现,我忘了把路由器接口的IP地址配置成对应子网的网关。记住,网关IP必须是该子网内的可用地址。

3.3 ARP协议原理

ARP(地址解析协议)解决一个问题:我知道对方的IP,但不知道它的MAC地址,怎么把数据帧发过去?

ARP的工作流程很简单:

  1. 主机A广播一个ARP请求:“谁的IP是192.168.1.2?请告诉我你的MAC地址。”
  2. 主机B收到后,发现IP是自己的,就单播回复一个ARP应答:“我是192.168.1.2,我的MAC是00:1a:2b:3c:4d:5e。”
  3. 主机A收到后,把IP和MAC的映射关系缓存到ARP表中。

ARP缓存一般保留几分钟。为什么?因为设备可能更换网卡,MAC地址会变。我遇到过一个问题:一台服务器换了网卡,但ARP缓存没更新,导致其他设备一直往旧MAC发数据,丢包严重。解决办法就是手动清ARP缓存:

# Windows
arp -d

# Linux
ip neigh flush all

# 查看ARP表
arp -a

避坑指南:ARP欺骗是局域网常见攻击。攻击者伪造ARP应答,让网关把流量发到它的机器上。防范方法:在交换机上配置动态ARP检测(DAI),或者绑定静态ARP条目。

3.4 ICMP协议与Ping工具

ICMP(互联网控制报文协议)是IP协议的“小助手”。它不传输用户数据,而是传递控制信息和差错报告。最常见的ICMP消息类型有:

类型 代码 含义
0 0 Echo Reply(Ping响应)
3 0 目标网络不可达
3 1 目标主机不可达
8 0 Echo Request(Ping请求)
11 0 TTL超时(Traceroute用)

Ping工具就是基于ICMP的Echo请求和应答。它发送一个ICMP Echo Request,目标主机回复Echo Reply。通过计算往返时间(RTT),你可以判断网络连通性和延迟。

我个人习惯用Ping做第一轮排查:

  • 先Ping 127.0.0.1(本地回环),确认本机协议栈正常
  • 再Ping网关,确认局域网连通
  • 然后Ping外网地址,确认路由和NAT正常
# 连续Ping 5次
ping -c 5 8.8.8.8

# Windows下持续Ping
ping -t 8.8.8.8

# 指定数据包大小
ping -s 1000 8.8.8.8

注意:有些网络会屏蔽ICMP,导致Ping不通。这时候不代表网络不通,可能是防火墙策略。我曾经遇到过客户说“网络断了”,结果一查,只是防火墙禁了ICMP,业务流量完全正常。所以Ping不通时,别急着下结论,试试用telnet或curl测一下具体端口。

Traceroute工具也是基于ICMP(或UDP)。它通过发送TTL从1递增的数据包,让沿途路由器返回ICMP超时消息,从而绘制出路径拓扑。这个工具在排查路由环路和延迟瓶颈时特别好用。

# Linux
traceroute www.baidu.com

# Windows
tracert www.baidu.com

好了,这一章的内容就这些。IP协议是网络层的基石,子网划分和CIDR是网络规划的基本功,ARP和ICMP则是日常排查的利器。把这些搞明白,网络层你就入门了。