1.把IP地址分为两大类:
1.外网IP/公网IP
全球互联网上唯一;
不允许内网重复使用。
2.内网IP/私网IP
在以下范围内的都叫内网:
10.*:10.0.0.0~10.255.255.255
172.16~172.31*:172.16.0.0~172.31.255.255
192.168.*:192.168.0.0~192.168.255.255
2.NAT
我们知道,相同局域网内的设备可以直接连接。
而约定不同局域网的IP地址允许重复,大部分设备都是在局域网中的,这就大大提高了IP的利用率。
因为两个局域网的IP有可能相同,所以不同局域网内的设备不能直接连接。
那么,如果跨局域网访问该怎么办呢?
分为以下几类:
1.同一局域网内的两个设备访问
允许访问。
2.两个带有外网IP的设备访问
两个外网IP也是全局唯一的。允许访问。
3.不同局域网中的两个设备访问
不允许访问!
4.外网IP的设备访问内网IP的设备
不允许访问!
5.内网IP的设备访问外网IP的设备
触发NAT。NAT设备(路由器)对IP数据报中的"源IP"做出修改,修改成自己的IP。

这个过程涉及一次NAT;
NAT的目的是:访问外网设备,需要外网IP;
一台运营商路由器可以代指上百台内网设备,多台内网设备公用一个外网IP。
*
但是,仔细想想,如果多台内网IP设备访问一个外网IP设备,路由器在NAT时,把不同内网IP都替换为同一路由器外网IP,那么服务器在计算/返回响应时,该怎么区分应该返回给哪一台设备呢?
如下图所示:

端口号区分
端口号可以区分一台主机上的不同应用程序,也可以区分不同主机上的不同应用程序。
如图:服务器根据端口号,就知道这是两个不同的客户端请求,返回的响应就包含了不同的端口号

NAT设备中维护了一个表,其中包含了映射关系:

*
那么,还有一个问题,如果两个不同的内网设备系统随机分配到相同的端口号(虽然概率很小),那又该怎么处理呢?
解决方法:路由器NAT时会重新分配一个新的外网源端口

