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 |
:: 省略连续的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,它们就在同一个子网里。
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的工作流程是这样的:
- 设备A想跟设备B通信,但不知道B的MAC地址
- 设备A在局域网内广播一个ARP请求:“谁的IP是192.168.1.20?请告诉我你的MAC地址”
- 设备B收到请求,发现问的是自己,就回复一个ARP应答:“我是192.168.1.20,我的MAC地址是00:1a:2b:3c:4d:5e”
- 设备A收到应答,把IP和MAC的对应关系缓存起来,下次直接用
ARP缓存会老化,一般几分钟到几十分钟不等。老化后,下次通信又要重新请求。
3.5 知识体系总览
下面这张图,把IP地址、子网掩码、网关和ARP协议的关系串起来了。你一看就明白。
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缓存。
arping 命令测试网关的MAC地址是否能解析到。
嗯,这一节的内容就到这里。IP地址、子网掩码、网关、ARP协议,这四个概念是网络层的基石。你理解了它们,后面学路由协议、VLAN、NAT都会轻松很多。