一 交换机

交换机是“二层设备”,它是个“脸盲”,根本看不懂 IP 地址,它只认物理网卡的 MAC 地址。
我们可以把局域网比作一栋单身公寓,交换机就是公寓一楼的宿管大爷

  • 端口(Port): 连着网线的物理接口,相当于通往各个房间的走廊。俗称网口。
  • MAC 地址: 网卡出厂自带的硬件地址,相当于每个房间门上永远不会变的物理门牌号(比如 101房、102房)。
  • IP 地址: 相当于住户的名字
    在这个比喻下,交换机(宿管大爷)的工作机制只有非常简单的三个动作:学习、泛洪、转发

1 基本组成:多个端口 + MAC 地址表逻辑

  • 物理形态: 就是一堆平等的端口(LAN 口)。
  • 核心逻辑:不处理 ARP。ARP 是两台电脑/服务器之间为了询问对方 MAC 地址而大喊大叫的动作。交换机的核心逻辑是维护“MAC 地址表”
  • 它的视角: 它是个“瞎子”,看不见 IP 地址,也听不懂 ARP 里的内容。它只负责看数据包外壳上的源物理 MAC 地址目标物理 MAC 地址,然后根据自己的 MAC 表,决定把数据从哪个端口扔出去。
  • 总结: 交换机 = 多端口 + 基于 MAC 地址的物理转发规则

2 能力

A 学习(Learning):记小本本

交换机内部有一张极其重要的表,叫 MAC 地址表(MAC Table)。一开始,这张表是空的。 当你的电脑接入网线并随便发送一个数据帧时,交换机会立刻拆开数据帧看一眼:

“哎?从我的 1号端口 进来一个数据,发送方门牌号(源 MAC)是 AA:AA:AA。”

于是,交换机会在小本本上记下一笔:1号端口 <---> AA:AA:AA。这就是“学习”。只要设备发数据,交换机就会默默记住哪个 MAC 地址连在哪个端口上。

B. 泛洪(Flooding):大喇叭广播

假设你的电脑(门牌号 AA:AA:AA)要给新服务器发数据。但是你只知道服务器的名字(IP 地址:192.168.21.x),不知道它的物理门牌号(MAC 地址)。
你的电脑只能在走廊里大喊一声(这就是 ARP 广播包):“谁的名字是 192.168.21.x?请把你的门牌号告诉我!” 这个广播包的收件人被标记为“所有人”(全 FF:FF:FF:FF:FF:FF)。
交换机收到这个广播包后,一看收件人是“所有人”,或者小本本上没有记录目标 MAC 地址。这时候它就会采取最简单粗暴的动作——泛洪(复制并群发)。 除了刚才发消息的那个端口外,交换机会把这个消息复制一份,从所有其他端口扔出去。

C. 转发(Forwarding):精准投递

新服务器连在 2号端口上,它收到了大喇叭广播,发现是在叫自己,于是它回了一句:“我就是 192.168.21.x,我的门牌号(源 MAC)是 BB:BB:BB,我要回话给 AA:AA:AA。”
这时候,奇妙的事情发生了:

  1. 再次学习: 交换机一听,马上在小本本上记下:2号端口 <---> BB:BB:BB
  2. 精准转发: 交换机看了一眼这个包裹的收件人是 AA:AA:AA。它翻开小本本,发现刚才记过,AA:AA:AA 就在 1号端口!于是,它不再广播,而是直接把包裹塞进 1号端口。

二 WAN 口 和 LAN 口

继续用我们刚才**“公寓”**的比喻。

  • LAN 口(Local Area Network,局域网): 就是公寓内部的走廊和各个房间。那几个 LAN 口本质上是连在一起的(就是刚才说的“宿管大爷”交换机负责管理的区域)。
  • WAN 口(Wide Area Network,广域网): 则是公寓的对外大门,门外连接着市政公路(也就是电信/联通等运营商的公网,或者上级网络)。
    它们两者之间的关系,本质上是**“内外隔离,靠网关(路由器 CPU)来代收代发”**的关系。

1. 物理上的界限:跨界必须经过“安检”

你的电脑插在 LAN 口,获取的是私有 IP(比如 192.168.20.100)。这个 IP 就像是“公寓 101 室”这样的内部房号,走到大街上(互联网)别人是根本不认识的。
WAN 口插着光猫连向外网,它获取的是运营商分配的 IP(比如 203.0.113.5),这是真正在互联网上拥有唯一合法身份的“街道门牌号”。
在路由器内部,LAN 口(交换机芯片)和 WAN 口之间是有一道“墙”的。跨越这道墙的唯一通道,就是路由器的 CPU(核心路由程序)

2. 核心魔法:NAT(网络地址转换)

当你的电脑想看网页(比如访问百度的服务器)时,数据包是怎么从 LAN 口走到 WAN 口的呢?这里全靠一项叫 NAT(Network Address Translation) 的核心技术。
我们来看看这个“代收代发”的完整流程:

  1. 内部寄信: 你的电脑(内部房号 192.168.20.100)把数据包发给路由器(网关 192.168.20.1),说:“麻烦帮我把这个送到百度的服务器。”
  2. 拆包换皮(NAT 出站): 路由器收到包裹后,发现源地址是个内部房号(公网上不认)。于是路由器把包裹拆开,把发件人 192.168.20.100 抹掉,换成自己 WAN 口的合法门牌号 203.0.113.5,然后在自己的“小本本(NAT 映射表)”上记一笔:“我刚才替 101 室给百度发了个包裹”。
  3. 公网传输: 这个换了皮的包裹从 WAN 口发出去,成功到达百度。
  4. 外网回信: 百度处理完后,把回信发给路由器的 WAN 口(203.0.113.5)。
  5. 查表派件(NAT 入站): 路由器收到回信,赶紧查一下刚才的 NAT 小本本:“哦!这是百度回给 101 室(192.168.20.100)的信。”于是它再次“换皮”,把收件人改成局域网 IP,然后顺着 LAN 口(交换机)准确无误地扔回给你的电脑。

3. 如果外面的人想主动进来怎么办?

这就是 LAN 和 WAN 关系中最有意思的地方。
如果是内部(LAN)主动访问外部(WAN),路由器知道怎么记录和转发。但是,如果是外部(WAN)主动发起请求想进入内部(LAN)呢?
比如,如果你在内网的服务器上跑了一些自己托管的服务(比如通过反向代理网关暴露的服务),外网的访客直接敲打你 WAN 口的大门,路由器默认是会直接丢弃这个包裹的。因为路由器不知道这个包裹该送给公寓里的哪个房间(NAT 表里没有记录)。
这时候就需要你手动在路由器上配置 “端口映射(Port Forwarding)”,明确告诉路由器:“凡是从 WAN 口 80 端口敲门的人,你都不要拦,直接把包裹转交给 LAN 口 192.168.20.88 这个房间。
一句话总结: LAN 口是让你屋里的设备互相串门用的(二层交换),WAN 口是让你屋里的设备统一通过一个合法身份去和全世界交流用的(三层路由+NAT)。

三交换机、路由器和网关

把你的 192.168.20.x 局域网想象成一个封闭的别墅小区

  • 交换机:是小区内部的道路
  • 网关(Gateway):是小区的大门(传达室)
  • 路由器:是坐在传达室里的快递中转站站长,他不仅管着小区大门,还认识外面的世界(广域网)。

我们来看看它们是怎么配合的,以及网关到底扮演了什么角色。

1. 网关(Gateway)到底是什么?谁在用?

网关本质上是一个 IP 地址。 在你的网络里,它通常是路由器的 LAN 口 IP,比如 192.168.20.1

  • 谁提供网关? 路由器。路由器伸进局域网的那只“脚”(LAN 口),就是网关。
  • 谁使用网关? 局域网里的所有终端设备。你的 Mac、Debian 服务器、手机,它们的网络配置里都必须填上这个网关地址。

网关的作用只有一个:当设备想要和“非本网段”的设备通信时,把数据包扔给网关,让网关去想办法。

路由器(Router):WAN 口 + LAN 口 + 路由表/NAT 逻辑

  • 物理形态: 至少有一个 WAN 口(对外部)和一个 LAN 口(对内部网络/网关)。
  • 核心逻辑: 1. 路由表(Routing Table): 决定 IP 包该往哪里走(比如去网段 A 走哪个口,去外网走默认网关)。 2. NAT(网络地址转换): 在内网私有 IP 和外网公网 IP 之间做“拆包换皮”的翻译工作。
  • 它的视角: 它是更高维度的设备,它要拆开数据包看里面的源 IP 地址目标 IP 地址
  • 总结: 路由器 = 跨网段接口 + 基于 IP 地址的路径规划与翻译规则

2. 交换机与路由器的完美配合(两个真实场景)

记住一个核心判定规则:设备在发数据前,会先用自己的 IP 和子网掩码算一下,目标 IP 是不是和自己在同一个网段。

场景一:内部通信(不经过网关,交换机全权负责)

假设你的 Mac(192.168.20.100)想 SSH 连接你的 Debian 服务器(192.168.20.88)。

  1. Mac 思考:目标 .88 和我 .100 都在 20 段,是同小区的邻居!
  2. Mac 行动:不需要找网关(传达室)。Mac 直接在局域网里吼一嗓子(ARP 广播):“谁的 IP 是 .88?把你网卡 MAC 地址给我!”
  3. 交换机介入:交换机把这个广播扩散,Debian 收到后回复了自己的 MAC 地址。
  4. 直接互通:Mac 用对方的 MAC 地址封装数据,通过交换机这座“桥梁”直接发给 Debian。
  5. 结果路由器 CPU 和网关全程都在“睡大觉”,没有任何参与。 流量只在二层交换机芯片里跑。

场景二:跨网通信(交换机送货,网关接收,路由器转发)

假设你的 Mac(192.168.20.100)想要访问外部网站(比如 GitHub 140.82.x.x)。

  1. Mac 思考:目标 140.82.x.x 跟我不是一个网段的,在小区外面!我不知道路怎么走。
  2. 寻找网关:Mac 查自己的配置表,发现默认网关是 192.168.20.1(传达室)。既然不知道怎么走,就把包裹交给传达室吧。
  3. 请求 MAC:Mac 在局域网大喊:“谁是 192.168.20.1(网关)?给我你的 MAC 地址!”(注意,这时候 Mac 是在要网关的 MAC 地址,而不是 GitHub 的)。
  4. 交换机送货:路由器回复了自己的 MAC 地址。Mac 把访问 GitHub 的包裹贴上网关的 MAC 地址,通过交换机送到了路由器的 LAN 口。
  5. 路由器接手:路由器(网关)收到包裹,拆开一看:“哦,里面写着要去 GitHub。没问题,我懂外面的路。”
  6. NAT 转发:路由器进行我们上次说的 NAT(换上 WAN 口的公网 IP),然后把包裹扔向外网。