家里用路由器上网,手机、电脑、平板都能连WiFi,但你有没有想过,这些设备是怎么一起上网的?其实背后靠的是NAT映射和公网IP的配合。
公网IP是网络世界的“门牌号”
每个能直接访问互联网的设备都需要一个公网IP地址,就像每栋房子都有唯一的门牌号。运营商会给你家的路由器分配一个公网IP,这个IP在整个互联网中是可被识别的。
比如你的路由器拿到的公网IP可能是 112.98.34.167,所有从你家发出去的网络请求,对外看起来都是从这个IP发出的。
内网设备用的是私有IP
你手机连上WiFi后,可能获得的是 192.168.1.100 这样的IP,这属于私有IP,不能直接在公网使用。路由器负责把这些私有IP的设备“翻译”出去,让它们也能上网。
NAT映射就是“地址翻译官”
NAT(Network Address Translation)就是网络地址转换。它运行在路由器上,把内网设备的私有IP + 端口,映射到公网IP的某个端口上。
举个例子:你用手机看视频,请求发给路由器,路由器记录下:
192.168.1.100:50233 → 112.98.34.167:61000
然后以自己的公网IP和新端口向外发送请求。等视频数据返回时,路由器根据端口号知道该转给谁,再送回你的手机。
为什么需要端口映射?
一台公网IP可以对应多个内网设备,靠的就是端口区分。比如:
- 手机用 61000 端口
- 电脑用 61001 端口
- 平板用 61002 端口
虽然对外都是同一个公网IP,但通过不同端口,数据不会搞混。
想从外网访问家里设备怎么办?
如果你在家里搭了个网站或监控系统,希望在外网访问,就得设置“端口转发”(Port Forwarding),也就是手动配置NAT映射。
比如你想让外人通过公网IP访问你家里的电脑(内网IP为 192.168.1.101)上的网页服务(端口80),可以在路由器里设置:
外部端口:8080
内部IP:192.168.1.101
内部端口:80
协议:TCP
这样别人访问 112.98.34.167:8080,就能看到你电脑上的网页了。
没有公网IP,NAT映射也白搭
有些家庭宽带其实是“共享公网IP”,你拿到的是运营商内网地址(比如 10.x.x.x),真正的公网IP在运营商机房。这种叫“多层NAT”,你自己设了端口转发也没用,因为外层IP不是你的。
这时候想远程访问家里设备,就得走内网穿透工具,比如 frp、ZeroTier,绕过NAT限制。
小结一下它们的关系
公网IP是出口,NAT映射是调度员。有了公网IP,NAT才能建立有效的内外通信路径;没有公网IP,哪怕NAT规则写得再准,外网也找不到你。
日常上网对普通用户透明,但如果你想做点自建服务、远程控制之类的事,理解这两者怎么配合,能少踩很多坑。