3. 网络层核心:IP地址、子网掩码、网关与ARP协议

设备要上网,得先有个“门牌号”。这个门牌号就是IP地址。但光有门牌号还不够,你还得知道哪些邻居在同一个小区(子网),哪个门是通往外面世界的(网关),以及怎么找到邻居家的门牌号(ARP)。

这一节,我把这几个概念串起来讲。你理解透了,网络层的骨架就算搭起来了。

3.1 IP地址:设备的“门牌号”

IP地址分两代:IPv4和IPv6。IPv4是32位的,写成4个十进制数,比如 192.168.1.1。IPv6是128位的,写成8组十六进制数,比如 2001:db8::1。

IPv4地址数量有限,全球早就分完了。IPv6就是为了解决地址枯竭问题。我个人习惯,新项目能上IPv6就上,省得以后迁移麻烦。

特性 IPv4 IPv6
地址长度 32位 128位
表示方式 点分十进制 冒号十六进制
地址数量 约43亿 约3.4×10³⁸
配置方式 DHCP或手动 SLAAC或DHCPv6
小提示:IPv6的地址写起来很长,但可以用双冒号 :: 省略连续的0。比如 2001:0db8:0000:0000:0000:0000:0000:0001 可以简写为 2001:db8::1。

3.2 子网掩码:划清“小区”边界

子网掩码的作用,就是告诉设备:哪些IP地址跟你在同一个局域网里。它也是32位的,写成 255.255.255.0 这种形式。

怎么用?把IP地址和子网掩码做“与”运算,得到网络地址。网络地址相同的设备,就在同一个子网里,可以直接通信。

举个例子:

IP地址:    192.168.1.10
子网掩码:  255.255.255.0
网络地址:  192.168.1.0

如果另一台设备的IP是 192.168.1.20,网络地址也是 192.168.1.0,它们就在同一个子网里。

注意:子网掩码配错了,设备可能找不到邻居,或者把本该发到局域网的数据包扔给了网关。我曾经遇到过一台设备ping不通同网段的其他机器,查了半天,发现子网掩码写成了 255.255.255.252,只允许两个IP,其他地址全被当成外网了。

3.3 网关:通往外部世界的“大门”

网关就是连接本地网络和外部网络的设备,通常是一台路由器。设备要访问互联网,必须把数据包发给网关,由网关转发出去。

网关的IP地址,通常是子网中的第一个或最后一个可用地址。比如子网 192.168.1.0/24,网关往往是 192.168.1.1 或 192.168.1.254。

设备判断要不要走网关的逻辑很简单:

  • 目标IP跟自己在同一个子网 → 直接发ARP请求找目标MAC
  • 目标IP不在同一个子网 → 发给网关,让网关转发
核心要点:网关是设备访问外部网络的唯一出口。网关配错了,设备能跟局域网内通信,但上不了互联网。

3.4 ARP协议:IP地址到MAC地址的“翻译官”

设备在局域网内通信,最终靠的是MAC地址。但应用层只知道IP地址,不知道MAC地址。这时候就需要ARP协议来帮忙。

ARP的工作流程是这样的:

  1. 设备A想跟设备B通信,但不知道B的MAC地址
  2. 设备A在局域网内广播一个ARP请求:“谁的IP是192.168.1.20?请告诉我你的MAC地址”
  3. 设备B收到请求,发现问的是自己,就回复一个ARP应答:“我是192.168.1.20,我的MAC地址是00:1a:2b:3c:4d:5e”
  4. 设备A收到应答,把IP和MAC的对应关系缓存起来,下次直接用

ARP缓存会老化,一般几分钟到几十分钟不等。老化后,下次通信又要重新请求。

避坑指南:ARP协议没有认证机制,任何人都可以伪造ARP应答。这就是ARP欺骗攻击的原理。我曾经在项目现场排查过一起网络故障,发现某台设备不断发送伪造的ARP应答,导致整个局域网内的流量都被劫持了。解决办法是配置静态ARP表,或者启用交换机的DAI(动态ARP检测)功能。

3.5 知识体系总览

下面这张图,把IP地址、子网掩码、网关和ARP协议的关系串起来了。你一看就明白。

网络层核心知识体系 网络层核心 IP地址 (IPv4/IPv6) 子网掩码 网关 ARP协议 32位 vs 128位 网络地址计算 默认路由 请求/应答 核心关系 IP地址 + 子网掩码 → 确定子网范围 → 判断是否走网关 → ARP协议解析MAC地址

3.6 实战:配置一个静态IP

说了这么多,咱们动手配一个。假设你要给一台Linux设备配置静态IP,参数如下:

  • IP地址:192.168.1.100
  • 子网掩码:255.255.255.0
  • 网关:192.168.1.1
  • DNS:8.8.8.8

用 nmcli 命令配置:

nmcli con mod eth0 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns 8.8.8.8 \
  ipv4.method manual

nmcli con up eth0

配置完成后,用 ip addr 查看IP地址,用 ip route 查看路由表,用 arp -n 查看ARP缓存。

小技巧:如果发现ping不通网关,先检查网线,再检查IP和子网掩码是否匹配,最后用 arping 命令测试网关的MAC地址是否能解析到。

嗯,这一节的内容就到这里。IP地址、子网掩码、网关、ARP协议,这四个概念是网络层的基石。你理解了它们,后面学路由协议、VLAN、NAT都会轻松很多。