网络原理(7)-NAT(Network Address Translation)

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时会重新分配一个新的外网源端口

相关推荐
Escalating_xu6 小时前
【C 语言】深入理解指针(5):sizeof、strlen、数组名语义与指针笔试题全解析
java·c语言·开发语言
HEJOO97 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
谢亮_vipxieliang7 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
Code_Solitude7 小时前
c语言:递归
java·c语言·算法
Nebula_g7 小时前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
估值探索者7 小时前
【Python量化系统工程实战 #08】从脚本到生产:量化系统上线 checklist 的最小闭环
java·开发语言·jvm·python·数据挖掘·数据·股票数据api接口
Wang's Blog7 小时前
Java框架 SpringCloud 快速入门: Nacos 环境隔离
java·开发语言·spring cloud
巨擎网络7 小时前
为什么打开 App,消息才一股脑涌进来?
网络协议·app
万年咸鱼7 小时前
解决C语言的内存释放机制
java·c语言·python
一木 之林8 小时前
DeepSeek Agent 开发(三)
java·大数据·linux