一篇文章搞懂,内网和外网到底怎么通信?( 二 )


我们都知道路由器有两个端口: LAN 口,WAN 口 。
WAN:接外部 IP 地址用,通常指的是出口,转发来自内部 LAN 接口的 IP 数据包 。
LAN:接内部 IP 地址用,LAN 内部是交换机 。我们可以不连接 WAN 口,把路由器当做普通交换机来使用 。
下面我们来看看到底怎么通信的 。为了便于理解,我们把运营商当做一个 NAT 设备 。

一篇文章搞懂,内网和外网到底怎么通信?

文章插图
 
为了方便大家理解,我们把 IP 的转化方向反过来分析(准确来说,公网转局域网) 。
A 主机IP 是私有 IP(192.168.1.2),该IP是从路由器的 LAN口分配的 。暂不讨论是如何获取的,这涉及到自动获取还是手动分配的 。
当我们访问百度服务器的时候,经过路由器的 wan口,进行相应的IP、端口转化:192.168.1.2:80 -> 10.221.0.24:8080,所以,从 wan口出去的地址为:10.221.0.24:8080 。
一篇文章搞懂,内网和外网到底怎么通信?

文章插图
 
 
通过10.221.0.24:8080能访问外网吗?显然不行,因为还是私有IP 。还需要一个步骤:转换为公网IP 。
经过运营商,运营商那边会做相应的端口映射(而且是动态端口映射),子网 IP(10.221.0.24:8080)转化为公网 IP(128.0.0.1:9999),通过这个公网 IP 去访问百度服务器 。
一篇文章搞懂,内网和外网到底怎么通信?

文章插图
 
 
同理,B 也是一样的过程 。通过这样的层层端口映射,最终保证地址(IP + 端口)的唯一性 。A 和 B 访问百度服务器,尽管它们的局域网 IP 是一样的,但是最终它们访问百度的地址(IP + 端口)是唯一的,所以,百度服务器回复时,原路返回时能够区分到底给谁回 。

【一篇文章搞懂,内网和外网到底怎么通信?】


推荐阅读