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

相关推荐
jaysee-sjc1 小时前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
雨辰AI1 小时前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端
AI深栈1 小时前
第 12 章 · AI智能体的结构化输出与流式响应
java·人工智能
君顾11 小时前
本地AI错题纠正小程序:端侧推理与错题闭环实战
java·开发语言·错题
Wang's Blog1 小时前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
爱研究的小梁1 小时前
异构链路科普:5G/4G、卫星、专网、WiFi、光纤,如何聚合工作?
网络·网络协议·udp·信息与通信
Java内核笔记1 小时前
Spring Boot 4 与 Spring AI 2.0 深度集成:ChatClient、Advisor 链与 MCP(源码级实战)
java·后端
可爱的小小小狼1 小时前
【无标题】
java·算法
用户3126874877201 小时前
Java SPI 到底怎么实现动态扩展的?从 ServiceLoader 到 Dubbo SPI 全链路拆解
java