一句话总结
内网主机要跟外网通信,第一通过 DNS 把域名解析成公网 IP,再把带有私有地址的报文发给默认网关,网关用 NAT(地址/端口转换)把私有地址映射成公网上的“化名”后转给 Internet,外网主机的响应再经 NAT 回译到原内网主机。
详细解析
下面用“公司内线→总机→外网电话”做比喻,并配以流程图来说明内网与外网通信的全过程。
1. DNS 解析:找对方的“电话号码”
- 用户在浏览器输入 http://www.example.com
- 浏览器问本地 DNS(或 ISP DNS):“www.example.com 的 IP 是多少?”
- DNS 服务器逐级查询,最终返回93.184.216.34
- 浏览器拿到 IP,就像拿到对方电话号码,准备拨号
比喻:你在公司内线电话上按提示(DNS),先打给总机(DNS 服务器),总机告知你目标的外线号码。
2. 构造报文并发向网关:从内线拨到总机
- 应用层(HTTP)构造请求,传给传输层(TCP/UDP),再到 IP 层。
- 内网主机封装后的报文源地址是私有 IP(如192.168.1.10:34567),目的地址是外网 IP(93.184.216.34:80)。
- 按路由表发现下一跳是默认网关(如192.168.1.1),再用 ARP 拿到网关 MAC,将帧发出去。
┌──────┐ ┌────——┐
│192.168.1.10│─ARP─▶│192.168.1.1 │
│:34567 →:80│ │ (网关MAC) │
└──────┘ └──────┘
比喻:你在办公室用内线分机拨号:先打到公司总机(网关),告知对方“我要打外线号码 93…34”。
3. NAT 转换:总机为你“化名”
当总机收到内线请求后,会:
- 在 NAT 表中记录一条映射:
内部 (192.168.1.10:34567) ⟷ 外部 (203.0.113.5:40001)
- 改写 IP/端口:把源 IP 改为公网 IP203.0.113.5,端口改为40001(PAT)。
- 将报文发到 Internet。
原始 IP 数据报 NAT 后 IP 数据报
┌───────────┐ ┌───────────┐
│src=192.168.1.10 │ src=203.0.113.5
│:34567 dest=93.184…:80 │:40001 dest=93.184…:80
└───────────┘ └───────────┘
比喻:公司总机接到你的内线呼叫后,用公司外线(203…5)拨号,把你的分机号隐藏起来,只对外报自己的号码,并记住“哪路内线是谁打出去的”。
4. Internet 转发:跨网段“长途通话”
- 改写后的报文在 Internet 各级路由器中按目的 IP (93.184.216.34) 被转发。
- 目标服务器收到后,认为通信发起者是203.0.113.5:40001,回复报文。
服务器回复报文:
src=93.184.216.34:80 → dest=203.0.113.5:40001
比喻:总机帮你拨出来后,你和对方主线直接通话,就像在外网打电话。
5. NAT 回译与转发回内网:总机再找回你
- 网关收到服务器的回复,查 NAT 表:
外部 (203.0.113.5:40001) ⇒ 内部 (192.168.1.10:34567)
- 改写目标地址为内网主机私有 IP/端口,将报文交给内线分机。
- 内网主机收到后,应用层(HTTP)解析返回的数据。
NAT 回译前 NAT 回译后
┌───────────┐ ┌───────────┐
│dst=203…:40001 │ │dst=192.168.1.10:34567
│ │ │
└───────────┘ └───────────┘
关键技术点与生动比喻
- DNS 解析像 “打听外线号码” 的过程;
- ARP/NDP内网找网关 MAC,就像在前台问“总机在哪个插孔?”;
- NAT/PAT总机为各分机做外线映射,隐藏内部结构;静态 NAT:一台内网服务器映射到固定公网 IP;动态 PAT:多台内网主机共用一个公网 IP,只靠不同端口区分;
- 路由转发报文在公网上的多级路由器间传递,就像跨区间的长途电话交换;
- 状态维护NAT 表保存每个会话的映射,保证双向通信不丢失。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















- 最新
- 最热
只看作者