IP、Subnet Mask、Gateway 是什么?MAC Address 网络基础完整教程
MAC Address、IP 地址、Subnet Mask、Gateway 是网络通信最核心的四个概念。弄清楚它们各自的用途与相互关系,不管是排查网络问题、设置静态 IP,还是理解数据包如何在网络上传递,都会变得清晰许多。本文用白话说清楚,搭配命令示例带你实际操作。
MAC Address(媒体访问控制地址)
MAC Address 是什么?
MAC Address(Media Access Control Address,媒体访问控制地址)是网络接口卡(NIC,Network Interface Card)在出厂时烧录进去的唯一标识码。你可以把它想象成每张网卡的「身份证号码」——全球每张网卡理论上都不重复。
MAC Address 工作在 OSI 模型的第二层(数据链路层),负责在**同一个局域网(LAN)**内让设备互相识别。当你的电脑要把数据传给同一个网络上的另一台电脑时,最终送达的依据就是 MAC Address,而不是 IP 地址。
MAC Address 的格式
MAC Address 是一个 48 位(bit)的数值,通常以六组两位十六进制数字表示,例如:
aa:bb:cc:11:22:33
这六组数字分成两段:
- 前三组(OUI,Organizationally Unique Identifier):厂商识别码,由 IEEE 分配给各网络设备制造商。例如
00:1A:2B可能代表某个特定厂商。 - 后三组(设备序号):厂商自行分配的流水号,确保旗下所有设备的 MAC Address 不重复。
因此,只要看到 MAC Address 的前六码,就能查询这张网卡是哪个厂商制造的。
如何查看 MAC Address
Linux(使用 ip link 命令):
ip link show
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether aa:bb:cc:11:22:33 brd ff:ff:ff:ff:ff:ff
# link/ether 后面那串就是 MAC Address
Linux/macOS(使用 ifconfig):
ifconfig
输出示例:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether aa:bb:cc:11:22:33 # 这就是 MAC Address
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
Windows(使用 ipconfig /all):
ipconfig /all
输出示例:
以太网适配器 以太网:
...
物理地址 . . . . . . . . . . . : AA-BB-CC-11-22-33
# 「物理地址」就是 MAC Address,Windows 用连字符分隔
MAC Address 可以更改吗?
虽然 MAC Address 是「烧录」在硬件里的,但操作系统允许在软件层面暂时覆盖它(称为 MAC Spoofing)。这在某些需要绕过 MAC 过滤的场景会用到,但正常使用下不需要修改。
IP 地址
IP 地址是什么?
IP 地址(Internet Protocol Address)是设备在网络上的「逻辑地址」。和 MAC Address 不同,MAC Address 是硬件固定的,而 IP 地址是由网络环境动态或静态分配的,同一台设备在不同网络环境下可能有不同的 IP 地址。
IP 地址工作在 OSI 模型的第三层(网络层),负责跨网络的路由寻址。简单说,MAC Address 负责「同一栋楼里找到哪个房间」,而 IP 地址负责「先找到哪栋楼」。
IPv4 vs IPv6
目前网络上同时存在两个版本:
IPv4:
- 32 位,格式为四组 0–255 的十进制数字,例如
192.168.1.100 - 理论上最多约 43 亿个地址(2³²),已近乎耗尽
- 目前仍是绝大多数设备的主要使用版本
IPv6:
- 128 位,格式为八组四位十六进制,例如
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - 地址空间极大(2¹²⁸),解决 IPv4 不足问题
- 正逐渐普及,但许多内网设备仍主要用 IPv4
本文主要讨论 IPv4。
公有 IP vs 私有 IP
IP 地址分为公有 IP 和私有 IP,这是理解现代网络架构的关键:
私有 IP(Private IP):
私有 IP 仅在局域网(LAN)内使用,不能直接连上互联网。IANA 保留了以下三个私有 IP 范围:
| 范围 | 说明 |
|---|---|
10.0.0.0 – 10.255.255.255 | A 类私有,大型企业网络 |
172.16.0.0 – 172.31.255.255 | B 类私有,中型网络 |
192.168.0.0 – 192.168.255.255 | C 类私有,家用/小型办公室最常见 |
你家路由器分配给你电脑的 192.168.1.100 就是私有 IP。
公有 IP(Public IP):
公有 IP 是由 ISP(互联网服务提供商)分配给你的对外 IP,全球唯一,用来在互联网上识别你的网络连接。
NAT(网络地址转换):
由于私有 IP 不能直接上网,路由器使用 NAT(Network Address Translation)技术,将你的私有 IP 在出去互联网时转换为公有 IP,收到响应时再转换回来。这让家里多台设备可以共用一个公有 IP 地址上网。
如何查看 IP 地址
查看内部(私有)IP:
# Linux:使用 ip addr 命令
ip addr show
# 输出示例(只看 eth0 接口)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
# inet 后面就是 IPv4 地址,/24 是子网掩码的 CIDR 表示法
# macOS:使用 ifconfig
ifconfig en0
# Windows:使用 ipconfig
ipconfig
查看外部(公有)IP:
# 使用 curl 查询外部 IP
curl ifconfig.me
# 或
curl ipinfo.io/ip
子网掩码的进阶应用,请参考 Subnet Mask 是什么?子网掩码白话教程。
Subnet Mask(子网掩码)
Subnet Mask 是什么?
Subnet Mask(子网掩码)是一个和 IP 地址搭配使用的 32 位数值,用来判断两个 IP 地址是否在同一个网段(subnet)。
你可以把它想象成邮政编码的概念:北京市朝阳区的邮编是 100020,只要两个地址的邮编相同,邮递员就知道它们在同一个区域,可以直接送达;如果邮编不同,就要先送到不同地区的分局再转寄。Subnet Mask 的作用就是这个「邮编分界」。
Subnet Mask 如何运作
Subnet Mask 通过 AND 位运算来判断网段。以最常见的 255.255.255.0 为例:
IP 地址: 192.168.1.100
11000000.10101000.00000001.01100100 (二进制)
子网掩码:255.255.255.0
11111111.11111111.11111111.00000000 (二进制)
AND 运算结果(网络地址):
11000000.10101000.00000001.00000000
= 192.168.1.0 ← 这就是网络地址
判断逻辑:
- 如果两个 IP 地址与相同的 Subnet Mask 做 AND 运算后结果相同,代表它们在同一个网段,数据包可以直接传递。
- 如果结果不同,代表它们在不同网段,数据包必须通过 Gateway 转发。
常见 Subnet Mask 快速对照:
| Subnet Mask | CIDR | 可用主机数 |
|---|---|---|
255.255.255.0 | /24 | 254 |
255.255.0.0 | /16 | 65534 |
255.0.0.0 | /8 | 16777214 |
255.255.255.128 | /25 | 126 |
255.255.255.192 | /26 | 62 |
CIDR 表示法
CIDR(Classless Inter-Domain Routing,无类别域间路由)是一种更简洁的表示方式,直接在 IP 地址后面加上斜线和网络位数:
192.168.1.100/24等同于 IP192.168.1.100、子网掩码255.255.255.0/24代表前 24 个位是网络地址,后 8 个位是主机地址
现代 Linux 命令(如 ip addr)默认使用 CIDR 表示法。
Gateway(网关)
Gateway 是什么?
Gateway(网关,又称默认网关)是一台设备(通常是路由器),负责将不同网段之间的数据包转发出去。当你的电脑判断目标 IP 地址不在同一个网段时,就会把数据包先送到 Gateway,再由 Gateway 决定如何往下路由。
家用环境中,Gateway 通常就是你的 Wi-Fi 路由器,IP 地址常见为 192.168.1.1 或 192.168.0.1。
深入了解 Gateway 运作原理,请参考 Gateway 是什么?网络网关完整教程。
路由决策流程
当你的电脑要发送数据包时,会依照以下步骤决定如何处理:
- 判断目标 IP 是否在同一网段:用自己的 IP 和 Subnet Mask 计算网络地址,再用目标 IP 和同一个 Subnet Mask 计算,比较两个网络地址是否相同。
- 同网段:通过 ARP(Address Resolution Protocol)查询目标 IP 对应的 MAC Address,直接在局域网内传送。
- 不同网段:把数据包送到 Gateway,由 Gateway 查询路由表决定下一跳(next hop)。
如何查看 Gateway
Linux(使用 ip route):
ip route show
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
# default via 后面就是 Gateway IP
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
macOS(使用 netstat -nr):
netstat -nr | grep default
输出示例:
default 192.168.1.1 UGScg en0
# 第二列就是 Gateway IP
Windows(使用 ipconfig):
ipconfig
输出示例:
默认网关 . . . . . . . . . . . : 192.168.1.1
四者的关系
理解了四个概念之后,我们来看它们如何在一次网络通信中协同运作。
关系总览表
| 概念 | 位于 OSI 层 | 作用范围 | 用途 |
|---|---|---|---|
| MAC Address | 第 2 层(数据链路层) | 同一局域网内 | 识别物理设备 |
| IP 地址 | 第 3 层(网络层) | 跨网络 | 逻辑寻址,路由目标 |
| Subnet Mask | 第 3 层(网络层) | 搭配 IP 使用 | 判断是否同一网段 |
| Gateway | 第 3 层(网络层) | 网段边界 | 跨网段数据包转发 |
一次完整的数据包传递流程
假设你的电脑(192.168.1.100/24)要连接到 Google(142.250.185.78):
判断网段:你的电脑用 Subnet Mask
255.255.255.0计算,192.168.1.100的网络地址是192.168.1.0,而142.250.185.78的网络地址是142.250.185.0——不同网段。送往 Gateway:电脑查询路由表,找到 Default Gateway
192.168.1.1,用 ARP 查到它的 MAC Address,把数据包的目标 MAC 填上路由器的 MAC Address,送出去。路由器转发:家用路由器收到数据包,查询自己的路由表,通过 NAT 把来源 IP 换成公有 IP,再往上送给 ISP。
互联网路由:数据包在互联网上经过多个路由器(hop)转发,最终抵达 Google 的服务器。
回程:Google 响应的数据包经过路由,NAT 把公有 IP 换回你的私有 IP,送回你的电脑。
实际操作
查看完整网络设置(Linux)
# 使用 ip addr 查看所有网络接口的完整信息
ip addr show
# 输出示例说明
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo # 本地回环地址
inet6 ::1/128 scope host
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether aa:bb:cc:11:22:33 brd ff:ff:ff:ff:ff:ff # MAC Address
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 # IP/Subnet Mask
inet6 fe80::a8bb:ccff:fe11:2233/64 scope link # IPv6 链路本地地址
查看路由表(含 Gateway)
# 查看路由表
ip route show
# 输出说明
default via 192.168.1.1 dev eth0 # default 代表默认路由,192.168.1.1 就是 Gateway
192.168.1.0/24 dev eth0 scope link # 这个网段直接从 eth0 送出,不需要 Gateway
在 Linux 设置静态 IP(使用 Netplan,Ubuntu)
Ubuntu 18.04 以后使用 Netplan 管理网络设置,配置文件通常在 /etc/netplan/ 目录下:
# 查看现有配置文件
ls /etc/netplan/
# 通常会有类似 01-netcfg.yaml 或 00-installer-config.yaml 的文件
# 编辑配置文件
sudo nano /etc/netplan/01-netcfg.yaml
静态 IP 设置示例:
network:
version: 2
ethernets:
eth0:
dhcp4: false # 关闭 DHCP,改用静态 IP
addresses:
- 192.168.1.100/24 # 静态 IP / 子网掩码(CIDR 格式)
routes:
- to: default
via: 192.168.1.1 # Gateway
nameservers:
addresses:
- 8.8.8.8 # 主要 DNS(Google)
- 1.1.1.1 # 备用 DNS(Cloudflare)
# 应用设置
sudo netplan apply
# 验证设置是否生效
ip addr show eth0
ip route show
使用 ifconfig 设置(旧式方式,临时生效)
# 设置 IP 地址与子网掩码
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 添加 Gateway
sudo ip route add default via 192.168.1.1
# 注意:重启后设置会消失,永久设置请使用 Netplan
常见问题(FAQ)
Q1: MAC Address 和 IP 地址有什么区别?
MAC Address 是网卡出厂时烧录的物理地址,全球唯一且通常固定不变,工作在局域网层面,用来识别同一个网段内的设备。
IP 地址是逻辑地址,由 DHCP 服务器动态分配(或手动静态设置),可以随时更改,工作在网络层面,用来在整个互联网上寻址与路由。
一个简单的比喻:MAC Address 像身份证号码(永久),IP 地址像电话号码(可以换)。
Q2: 为什么需要 Subnet Mask?直接用 IP 不行吗?
IP 地址本身只是一串数字,Subnet Mask 的作用是告诉设备「哪几位是网络地址,哪几位是主机地址」。没有 Subnet Mask,设备就无法判断目标 IP 是否在同一个网段,也就无法决定数据包要直接传递还是送给 Gateway。
此外,Subnet Mask 让管理员可以把一个大 IP 区段切割成多个小子网,在大型企业或数据中心环境中能有效控制广播流量、提高网络安全性。
Q3: 家用网络的 Gateway 通常是什么 IP?
家用 Wi-Fi 路由器的 Gateway IP 最常见是 192.168.1.1 或 192.168.0.1,这是各大路由器厂商的默认设置。你可以通过 ip route show(Linux)、netstat -nr(macOS)或 ipconfig(Windows)查看实际的 Gateway IP。如果要进入路由器管理界面,直接在浏览器输入这个 IP 即可。