引言
学习网络时,最容易混淆的不是协议流程,而是几个看起来相近、其实不在一个层面的概念,比如:
私网 IP 和公网 IP
路由表和转发表
“在链路上”到底是什么意思
MAC 地址和 IP 地址分别属于哪一层
这篇文章把这些概念放到同一条线上梳理清楚,尽量用能直接形成画面的方式去理解。
私网 IP、公网 IP 和 NAT 到底是什么关系
很多人第一次接触家庭网络时,容易把 192.168.x.x 这类地址叫成“虚拟 IP”。这个说法不够准确,更准确的叫法应该是:
公网 IP
私网 IP
NAT
什么是公网 IP
公网 IP 是可以在互联网范围内参与路由的地址。通常一个家庭宽带、一个企业出口、一个云服务器,都会有一个或多个公网 IP。
从互联网的视角看,真正能被外部网络直接识别和访问的,通常是这个公网 IP。
什么是私网 IP
私网 IP 是保留给局域网内部使用的地址,不能直接在公网中路由。最常见的私网地址范围有三段:
10.0.0.0/8
172.16.0.0/12 到 172.31.255.255
192.168.0.0/16
家里的手机、电脑、平板连上同一个路由器后,通常拿到的就是私网 IP,比如:
192.168.1.2
192.168.1.3
192.168.1.4
路由器在这里做了什么
可以把家用路由器理解成“局域网出口”。
路由器通常同时扮演两个角色:
在内网一侧给设备分配私网 IP
在外网一侧使用公网 IP 和互联网通信
当内网设备访问外网时,数据会先发给路由器,然后由路由器通过 NAT 转换,把“内网地址 + 端口”映射成“公网地址 + 端口”,再发到互联网。
外部响应返回时,路由器再根据 NAT 映射表,把数据转回对应的内网设备。
所以“虚拟 IP”这个说法哪里不准确
在家庭路由器场景里,192.168.x.x 更准确的名称是“私网 IP”或“内网 IP”,而不是“虚拟 IP”。
因为这里的重点不是“虚拟化”,而是:
这些地址只在局域网内部有效
真正和公网通信时,需要借助 NAT
所以更准确的理解应该是:
“路由器用一个公网 IP 对外通信,同时在局域网内部管理一批私网 IP,并通过 NAT 帮这些内网设备和互联网交换数据。”
路由表里显示“在链路上”是什么意思
在 Windows 的 route print 输出中,经常能看到网关一栏显示“在链路上”。
这个词的核心含义其实很简单:
“这个目标是直连可达的,不需要再交给下一跳网关。”
也可以理解成英文里的 on-link。
什么叫直连可达
假设你的电脑地址是:
192.168.1.100/24
运行项目并下载源码
text
1
那么 192.168.1.0/24 这个网段就是你当前网卡直连的本地网络。
这时如果你要访问:
192.168.1.50
运行项目并下载源码
text
1
目标就在同一个网段里,所以不需要把数据先交给路由器。系统会直接:
查路由表,发现目标网络是直连网络
看到网关显示“在链路上”
通过 ARP 查询对方 MAC 地址
直接把帧发给目标设备
这里没有“下一跳路由器”这个环节,所以网关列不会出现一个真正的网关 IP。
常见几类“在链路上”路由
在 Windows 路由表里,下面几类条目很常见:
本地局域网网段,比如 192.168.1.0/24
本机地址,比如 192.168.1.100/32
广播地址,比如 192.168.1.255/32
回环地址,比如 127.0.0.0/8
它们的共同点都是:
数据不需要经过外部网关转发
系统自己就能直接处理,或者直接在当前链路内发送
所以“在链路上”不是说“链路里有很多网关”,而是说:
“这个目标本来就在当前链路上,可以直接到达。”
路由表和转发表有什么区别
这两个概念很像,但职责并不完全相同。
路由表是什么
路由表更偏“控制平面”。
它保存的是路由信息,用来决定:
某个目标网络应该怎么走
下一跳是谁
应该从哪个接口发出
典型字段包括:
目标网络
子网掩码
下一跳
出接口
Metric
简单说,路由表回答的是:
“去这个目标网络,原则上该走哪条路?”
转发表是什么
转发表更偏“数据平面”。
当数据包真正到达路由器,需要立即转发时,设备不会每次都拿复杂的路由信息重新计算,而是直接查更适合快速匹配的数据结构,这就是转发表。
它更像是:
“最终给硬件或转发引擎使用的快速查表结果。”
两者的关系
可以这样理解:
路由表负责产出转发决策
转发表负责执行快速转发
在很多设备里,转发表往往是由路由表计算、筛选、收敛之后生成的。
所以如果要一句话区分:
路由表偏“怎么选路”
转发表偏“怎么转包”
MAC 地址和 IP 地址分别属于哪一层
这一点也很容易记混。
MAC 地址属于数据链路层
MAC 地址是网卡层面的硬件地址,用于局域网内的二层通信。
它解决的问题是:
“这一帧数据,当前这一跳到底发给哪块网卡?”
注意,MAC 地址属于数据链路层,不属于物理层。物理层负责的是比特流、电信号、光信号和传输介质,而不是地址编址。
IP 地址属于网络层
IP 地址用于跨网络定位主机,解决的是:
“这个包最终要送到哪台主机?”
所以 IP 地址的作用范围比 MAC 地址更高一层,也更广。
为什么既需要 MAC,又需要 IP
因为它们解决的不是同一个问题。
IP 负责“最终送到谁”
MAC 负责“这一跳交给谁”
例如从你电脑访问公网服务器时:
IP 头里的目标 IP 可能是远端服务器地址
但二层帧里的目标 MAC,往往先写的是你家路由器的 MAC
也就是说,IP 决定终点,MAC 决定当前这一跳。
把这些概念串起来理解
假设你的电脑地址是 192.168.1.100,家里路由器 LAN 口是 192.168.1.1,路由器对外有一个公网 IP。
当你访问外网服务器时,大致过程如下:
电脑查路由表,发现目标不在本地网段
因此走默认路由,把数据交给网关 192.168.1.1
电脑通过 ARP 获得路由器的 MAC 地址
数据帧先发给路由器
路由器执行 NAT,把私网地址转换为公网地址
路由器根据自己的路由信息继续转发到互联网
返回流量再通过 NAT 映射回到内网主机
如果访问的是同网段设备,比如 192.168.1.50,流程就不一样:
电脑查路由表,发现目标“在链路上”
不需要经过网关
直接 ARP 查询目标 MAC
直接发送二层帧
这样就把私网 IP、公网 IP、NAT、路由表、MAC 地址这些概念串起来了。
总结
这篇文章的重点可以压缩成四句话:
192.168.x.x 这类地址更准确地叫“私网 IP”,不是“虚拟 IP”
“在链路上”表示目标是直连可达的,不需要经过下一跳网关
路由表负责选路,转发表负责高速转发
MAC 地址属于数据链路层,IP 地址属于网络层
把这四点想清楚,后面再看 ARP、默认网关、NAT、路由转发时,很多原来容易混的概念都会一下子顺起来。
————————————————
版权声明:本文为CSDN博主「小红的布丁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41165867/article/details/159955011