🌐 第三章 网络间的通用语言TCP/IP
📄 一句话概括

1.2 讲过的"两套门牌号",本节给它们正式定名:互联网上走的是全局地址(全球唯一),私有网络里走的是私有地址(家家可重复)。两者靠路由器在边界上做翻译衔接——把「私有地址 + 端口」换成「全局地址 + 另一个端口」,回程再换回来。这台会翻译的路由器,就是 3.12 四件套里那个"默认网关"。

一、先正名:两种地址的正式叫法

全局地址 私有地址
又叫 公网地址、公网 IP(1.2 的叫法) 内网地址、私网 IP
唯一性 全世界独一份 只在自家网络里唯一,家家可重复
谁能用 互联网上通信必须用它 只能在私有网络内部通信
谁发 国际组织 → 运营商 → 你 自己(DHCP 或手工,3.12)
长相 其余地址,如 224.1.2.3 只有固定的三段(见下)

一句话记住分工:全局地址用来"对上全球",私有地址用来"管好自家"。

💡 地址不是设备的名字,是位置的名字

这条 3.8 讲过,本节再看一遍:同一台笔记本,在家拿到 192.168.1.101,到公司变成 10.0.0.37,连上手机热点又换一个——变的全是私有地址,因为"你在哪个网络里"变了。而全局地址是"哪个网络连着互联网"的标识,跟着路由器走,不跟着设备走。

二、私有地址只有三段(RFC 1918)

全世界的私有地址被规定只能用这三段:

网段(CIDR) 掩码 地址范围 典型出现在
10.0.0.0/8 255.0.0.0 10.0.0.0 ~ 10.255.255.255 大企业内网、校园网
172.16.0.0/12 255.240.0.0 172.16.0.0 ~ 172.31.255.255 中型企业内网
192.168.0.0/16 255.255.0.0 192.168.0.0 ~ 192.168.255.255 家用路由器、小办公室

这三段是国际标准(RFC 1918)专门划出来给私有网络用的保留段。因为大家心里有数"这些段不会出现在互联网上",所以全世界几亿个家庭都敢用自己的 192.168.1.101——出了围墙它就是废纸,谁也找不着(收 1.2)。

顺手把 1.2 的"三大姓氏"和 3.11 的掩码记法接上:这三段用 CIDR 写就是 /8、/12、/16——都是"一个整段"的写法,不细分成子网。

三、两种地址怎么衔接:NAT 与"翻译表"

全局地址这么稀缺,不可能给每台设备都发一个。于是路由器在边界上做一件事:翻译。

(对应上面两张图)

流程一句话:出门时把 私有地址:端口 换成 全局地址:另一个端口,并在表里记一笔;回包到达时按那个端口查表、把地址换回去,转给对应的设备。

关键就是那两个端口——三台设备共用同一个全局地址,全靠路由器分配的不同端口号来区分"这个包该给谁"。这正是 3.3 讲的"IP 找楼、端口找房"在边界上的实战:全局地址是小区总机号,端口是分机号。

📝 你设备的地址与路由器的地址
  • 你的电脑、手机:只有一个私有地址(ipconfig 看到的就是它)
  • 路由器:WAN 口持全局地址(面向互联网),LAN 口持私有地址(192.168.1.1,面向内网)
  • 所以严格说,全局地址在路由器身上,不在你的设备上——你的设备是"通过路由器"才用上了全局地址

四、由此推出的两条重要结论

结论一:出站容易,入站难。

因为"翻译表"是由内往外的连出动作建立的——先有内网设备发起连接,路由器才记下那一笔。互联网上的人想主动连进来,路由器查表:没这条记录,包直接丢掉。

这就是 NAT 天然带来的"单向性"。想让外面能主动访问内网设备,得手工开一条固定的翻译:

办法 干什么
端口转发 / 端口映射(路由器里叫"虚拟服务器") 指定"公网的某个端口 → 内网某台设备的某个端口",长期有效
UPnP / NAT-PMP 应用程序自己申请开洞(游戏、下载工具常用),方便但安全性要看软件
反向代理 / 内网穿透 借一台公网上的服务器中转,不直接暴露内网

结论二:NAT 顺手挡了一层,但不能替代防火墙。

NAT 的"没记录就不放行"看起来像防火墙,也确实挡住了大量扫描和探测。但它是副产物、不是设计目的,规则也粗糙——该配的防火墙、该打的补丁、该关的端口,一样都不能省。

五、为什么非要搞出私有地址

收 3.12 那笔账:IPv4 一共只有约 43 亿个地址,而全球联网设备早就超过这个数了。

私有地址 + NAT 的作用,就是让全世界共用很少的全局地址——一个家庭、一个公司只占一个(或几个),内网里想接多少设备就接多少。这也是 IPv4 能撑到今天的主要原因之一。

⚠️ 一层套一层的 NAT:CGNAT

你家的全局地址,在运营商那边可能也是个私有地址——运营商自己也用 NAT 把成千上万户收敛进少量全局地址,这叫 CGNAT(运营商级 NAT,会认级)。

后果是:你无法靠"端口转发"让外网访问家里(因为最外面那层 NAT 不归你管)。要对外提供服务,只能走内网穿透、或者向运营商申请固定的公网 IP。

六、动手 Demo27:两头都看一眼

  1. 内网侧: ipconfig 看到的 192.168.x.x 就是私有地址。再看 ipconfig /all 的默认网关(通常 192.168.1.1)——它就是要做翻译的那台设备(收 3.12 四件套)。

  2. 外网侧:浏览器搜"IP 查询",显示的是全局地址。和上一步对比——两个号一定不一样(1.2 的 Demo02 升级版)。

  3. 看路由器两面:进路由器管理页,找 WAN 口状态 / 外网设置,那里显示的 IP 就是全局地址;而 LAN 设置里的 192.168.1.1 是它面向内网的一面。一台路由器,两张脸。

  4. 看翻译在发生: netstat -an | findstr ESTABLISHED 本机侧显示的地址全是私有地址(192.168.1.101:xxxxx)——你从来看不到自己的全局地址,因为它只出现在路由器往外的那个方向上(收 3.5 的 ESTABLISHED)。

  5. 找一找端口转发:在路由器管理页找 "端口转发 / 虚拟服务器 / NAT" 一栏。先别急着开——看清它长什么样、默认是关闭的,就知道"外面默认进不来"这件事是路由器在替你挡着。

  6. 30 秒实验:一夜之间的"同号"

    手机和电脑同时连家里 Wi-Fi,各自查公网 IP——两个号完全相同(全家共用一个全局地址); 再各自看 ipconfig / Wi-Fi 详情里的地址——两个号不同(各持私有地址)。

    然后把手机切到流量、再查一次——公网 IP 变了,而且大概率是个运营商分配的公网号(有时也会落在 CGNAT 的内网段里)。同一台手机,走 Wi-Fi 和走流量,对外身份完全不同。

❓ 自测一下
  1. 全局地址和私有地址,各自的核心特征是什么?
  2. 私有地址是哪三段?为什么全世界的家用路由器都能用 192.168.1.x 而不冲突?
  3. 家用路由器实际做的是 NAT 还是 NAPT?靠什么区分"这个回包该给哪台设备"?
  4. 用 ipconfig 为什么看不到自己的全局地址?它在哪台设备上?
  5. 为什么互联网上的人无法主动访问你家内网的设备?想让他能访问,要怎么办?
  6. NAT 能当防火墙用吗?
  7. 什么是 CGNAT?它给你带来什么麻烦?

答案: ① 全局地址全球唯一、互联网通信必须用它;私有地址只在自家网络内唯一、可全球重复使用。 ② 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16(RFC 1918 保留段)。私有地址只在各自围墙内有效,出了网络就不作数,所以重复也不会撞。 ③ 实际用的是 NAPT(也叫 IP 伪装),靠路由器分配的端口号区分——三台设备共用一个全局地址,但各占不同端口,而"表里的记录"就是出处。 ④ 因为全局地址在路由器身上(WAN 口);你自己的设备只有私有地址,是靠路由器做翻译才用上全局地址的。 ⑤ 因为翻译表是内网设备主动连出时才建立的,没有记录的回包会被直接丢弃(NAT 的单向性)。想让他访问,得做端口转发/端口映射,或走反向代理、内网穿透。 ⑥ 不能。NAT 的"挡"是副产物,规则粗糙;防火墙该配还是得配。 ⑦ CGNAT = 运营商级 NAT:运营商也把用户收敛进少量全局地址。后果是你家的"公网 IP"可能本身也是私有地址,导致端口转发对外失效,无法自建对外服务。

常见误区:

  1. ❌ "私有地址是假地址" → 它是真实可用的地址,只是被国际标准划成"不用于互联网"的保留段
  2. ❌ "全局地址是我电脑的地址" → 严格说它在路由器上;你的设备只有私有地址
  3. ❌ "有 NAT 就不用防火墙" → NAT 只是"没预约的进不来",不能替代防火墙
  4. ❌ "NAT 改了端口,TCP 就不靠谱了" → NAT 只换地址与端口,不碰 TCP 的序号与确认机制(3.5),可靠传输不受影响
  5. ❌ "私有地址段可以自己随便定" → 只能用 RFC 1918 那三段;用了别的段,设备会"以为自己能直接上外网",结果处处不通
  6. ❌ "IP 冲突只是家里的事" → 多级 NAT / CGNAT 下,上层网络里的地址同样可能撞
  7. ❌ "有了 NAT 就不需要全局地址了" → 每一条出网的路径最终仍要落到某个全局地址上,只是共用而已

七、下一步学什么

相关笔记