一句话:网关是连接两个不同网络的设备。当你的电脑要访问"不在同一个局域网里"的地址时,数据包会先交给网关,再由网关转发出去。
一、生活里的例子:小区快递站
你住在一个小区里:
- 给同一栋楼的邻居送东西 → 自己走过去敲门就行
- 给外地的朋友寄东西 → 交给小区门口的快递站,由它发往外面
你不需要知道包裹经过哪些城市、哪些中转站,只要知道"出小区找快递站"就够了。
| 小区 | 网络 |
|---|---|
| 小区 | 局域网(比如家里的 Wi-Fi) |
| 邻居 | 同一网段的设备 |
| 快递站 | 网关(通常是家里的路由器) |
| 外地朋友 | 互联网上的服务器 |
| 门牌号 | IP 地址 |
二、电脑怎么判断"要不要找网关"?
靠IP 地址 + 子网掩码。
假设你的电脑配置是:
IP 地址: 192.168.1.10 子网掩码: 255.255.255.0 (也写作 /24) 默认网关: 192.168.1.1/24的意思是:前三段相同,就是同一个网段。
| 目标地址 | 和我同网段吗? | 怎么发 |
|---|---|---|
| 192.168.1.20(家里的另一台电脑) | ✅ 是 | 直接发给它 |
| 192.168.1.1(路由器) | ✅ 是 | 直接发给它 |
| 8.8.8.8(外面的服务器) | ❌ 不是 | 交给网关 192.168.1.1 |
| 10.0.0.5(公司另一个网段) | ❌ 不是 | 交给网关 |
所以网关一定要和你在同一个网段。网关设成
192.168.2.1,电脑连它都找不到,自然也出不去。
三、一个数据包的完整旅程
你的电脑(192.168.1.10)要访问 8.8.8.8:
1. 电脑:8.8.8.8 不在我的网段 → 要交给网关 192.168.1.1 2. 电脑:网关的 MAC 地址是多少? → 发 ARP 广播:"谁是 192.168.1.1?" → 路由器回答:"我是,MAC 是 aa:bb:cc:11:22:33" 3. 电脑:组装数据包 ┌────────────────────────────────────────┐ │ 目标 MAC:aa:bb:cc:11:22:33(网关) │ ← 下一站 │ 目标 IP :8.8.8.8(最终目的地) │ ← 终点 └────────────────────────────────────────┘ 4. 网关收到:目标 IP 不是我 → 查路由表 → 往运营商方向转发 5. 一路经过很多路由器,每一跳都换 MAC,IP 基本不变 6. 到达 8.8.8.8关键点:
| 地址 | 作用 | 会不会变 |
|---|---|---|
| MAC 地址 | “下一站交给谁” | 每经过一个路由器就换一次 |
| IP 地址 | “最终送到哪” | 一般不变(NAT 除外,见下文) |
就像寄快递:收件地址一直写着朋友家,但每个中转站把包裹交给下一辆车。
四、和交换机、路由器有什么区别?
| 设备 | 工作层次 | 认什么 | 作用 |
|---|---|---|---|
| 集线器 | 第 1 层(物理层) | 什么都不认 | 收到什么就往所有口转发,已基本淘汰 |
| 交换机 | 第 2 层(数据链路层) | MAC 地址 | 在同一个局域网内转发 |
| 路由器 | 第 3 层(网络层) | IP 地址 | 在不同网络之间转发 |
| 网关(广义) | 第 3~7 层 | IP、协议、应用数据 | 连接不同网络,甚至翻译不同协议 |
"网关"更多是一个角色,而不是一种固定设备。在家庭网络里,"默认网关"指的就是路由器的局域网 IP。
五、家里的"路由器"其实是好几台设备合体
| 功能 | 作用 |
|---|---|
| 网关 / 路由 | 把局域网的包转发到外网 |
| NAT | 把内网地址换成公网地址 |
| DHCP | 自动给手机、电脑分配 IP、掩码、网关 |
| DNS 转发 | 帮你查询"域名对应的 IP" |
| 防火墙 | 默认挡住外面主动进来的连接 |
| 交换机 | 后面几个网口 |
| 无线接入点 | 发出 Wi-Fi 信号 |
这和前面"架构原则"刚好相反:家用路由器是一个"上帝对象",什么都管。企业网络里,这些功能通常拆成独立设备,好扩展、好排查。
六、NAT:网关最重要的"附加功能"
家里所有设备都是私有地址(192.168.x.x),而公网地址通常只有一个。网关要负责改地址、记账:
内网 网关(NAT) 外网 192.168.1.10:50000 ──→ 改成 203.0.113.5:62001 ──→ 游戏服务器 192.168.1.20:50000 ──→ 改成 203.0.113.5:62002 ──→ 游戏服务器网关里有一张NAT 映射表:
| 内网地址:端口 | 公网地址:端口 | 对方地址 |
|---|---|---|
| 192.168.1.10:50000 | 203.0.113.5:62001 | 游戏服务器:7777 |
| 192.168.1.20:50000 | 203.0.113.5:62002 | 游戏服务器:7777 |
回包到达时,网关查表,把地址改回去,送给正确的设备。
副作用:外面的人不能主动连进来,因为表里没有记录 —— 这对联机游戏影响很大(见第九节)。
七、网关的几种"类型"
"网关"这个词在不同场合意思不同:
| 名称 | 是什么 | 例子 |
|---|---|---|
| 默认网关 | 主机的"出口路由器" | 家里的 192.168.1.1 |
| NAT 网关 | 专门做地址转换 | 云服务器里的 NAT Gateway |
| 协议网关 | 在不同协议之间翻译 | 智能家居网关:把 Zigbee 转成 Wi-Fi/IP |
| VPN 网关 | 建立加密隧道,连接两个远程网络 | 公司总部和分部互联 |
| 安全网关 | 带深度检查的防火墙 | 企业出口防火墙 |
| API 网关(软件) | 服务的统一入口,做鉴权、限流、转发 | 游戏后台:所有请求先进网关,再分给登录、匹配、商城 |
最后一种和前面"系统设计"那一篇直接相关:API 网关是软件层面的"门卫",客户端只需要知道一个地址。
八、动手查看自己的网关
Windows
ipconfig# 查看 IP、掩码、默认网关route print# 查看路由表tracert8.8.8.8# 看数据包经过了哪些路由器Linux / macOS
ipaddr# 查看 IPiproute# 查看路由表(Linux)netstat-rn# 查看路由表(macOS)traceroute8.8.8.8# 追踪路径Linux 路由表示例:
$ ip route default via 192.168.1.1 dev wlan0 ← 默认网关:不认识的地址都发这里 192.168.1.0/24 dev wlan0 proto kernel ← 本网段:直接发路由表的规则:匹配得越精确的条目优先;都不匹配时,走default(默认网关)。
接上一篇的系统调用:游戏调用
sendto发包 → 进入内核 →内核查这张路由表决定从哪张网卡、发给哪个网关。
九、和联机射击游戏的关系
1. NAT 类型决定能不能和别人直连
主机上常见的"NAT 类型":
| 类型 | 意思 | 联机体验 |
|---|---|---|
| 开放(Open) | 外面可以主动连进来 | 能当房主,和谁都能连 |
| 中等(Moderate) | 有限制 | 大部分能连 |
| 严格(Strict) | 只能自己主动连出去 | 经常匹配失败、无法当房主 |
2. 游戏怎么"穿过"网关
| 技术 | 思路 |
|---|---|
| 端口转发 | 在路由器里手动设置:公网 7777 端口 → 转到 192.168.1.10:7777 |
| UPnP | 游戏自动请求路由器开端口(方便,但有安全风险) |
| UDP 打洞 | 双方先同时连一个中间服务器,借助 NAT 表里的记录互相连通 |
| 中继服务器 | 打洞失败时,所有数据经过服务器转发(稳定,但延迟高、费服务器) |
这也是很多射击游戏选择专用服务器(客户端都连服务器)的原因之一:客户端只需要"主动连出去",完全不受 NAT 限制,还顺便实现了服务器权威。
3. 网关也会影响延迟
| 问题 | 现象 |
|---|---|
| 路由器性能差 | 人多时延迟飙升 |
| 缓冲膨胀(Bufferbloat) | 有人下载大文件时,游戏延迟突然从 30ms 变成 300ms |
| Wi-Fi 信号差 | 丢包、抖动 |
解决:用网线、开启路由器的QoS / SQM,给游戏流量更高优先级。
十、网关坏了怎么办?(可靠性)
网关是整个局域网的单点:它挂了,所有人都上不了网。
企业网络常用VRRP / HSRP:
虚拟网关 IP:192.168.1.1 ┌──────┴──────┐ 路由器 A 路由器 B (主,在工作) (备,随时接管)电脑只认192.168.1.1,主路由器坏了,备用的马上接手这个地址,用户感觉不到。
这就是"系统设计"里说的冗余:给关键部件准备备份。
十一、常见的坑
| 坑 | 现象 | 原因 / 解决 |
|---|---|---|
| 网关不在同一网段 | 完全上不了网 | 网关必须和本机 IP 同网段 |
| 网关 IP 填错 | 内网能通,外网不通 | 用ipconfig确认,一般是.1或.254 |
| 能 ping 通 IP,打不开网页 | 网关没问题,DNS 有问题 | 检查 DNS 设置,试试 8.8.8.8 / 114.114.114.114 |
| 设置了多个默认网关 | 时好时坏 | 一台电脑通常只保留一个默认网关 |
| 双重 NAT | 光猫 + 路由器都在做 NAT,联机 NAT 类型严格 | 光猫改桥接,或路由器设为 AP 模式 |
| 运营商 CGNAT | 端口转发怎么设都没用 | 你拿到的也不是真正的公网 IP;向运营商申请公网 IP,或用中继/专用服务器 |
| 内网设备 IP 冲突 | 有设备频繁掉线 | 手动设的静态 IP 和 DHCP 分配的撞了 |
| 把网关和 DNS 混为一谈 | 排查方向错误 | 网关管"往哪发",DNS 管"名字查地址" |
一句话总结
网关 = 局域网通往其他网络的出口。电脑用"IP + 子网掩码"判断目标是否在本网段:在,就直接发;不在,就把包交给网关,由网关查路由表继续转发。
家用网关通常还兼做NAT、DHCP、DNS、防火墙;其中NAT 直接影响联机游戏能不能直连,这也是射击游戏偏爱专用服务器的原因之一。