NAT、代理服务、内网穿透

NAT、代理服务、内网穿透

NAT 技术背景

NAT 技术当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能;

• NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是就是一种将私有 IP 和全局IP 相互转化的技术方法:

• 很多学校, 家庭, 公司内部采用每个终端设置私有 IP, 而在路由器或必要的服务器上设置全局 IP;

• 全局 IP 要求唯一, 但是私有 IP 不需要; 在不同的局域网中出现相同的私有 IP是完全不影响的;

NAT IP 转换过程

• NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37;

• NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.244.174.37 替换回10.0.0.10;

• 在 NAT 路由器内部, 有一张自动生成的, 用于地址转换的表;

• 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的 IP 都是相同的. 那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候 NAPT 来解决这个问题了. 使用 IP+port 来建立这个关联关系

这种关联关系也是由 NAT 路由器自动维护的. 例如在 TCP 的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

NAT 技术的缺陷

由于 NAT 依赖这个转换表, 所以有诸多限制:

• 无法从 NAT 外部向内部服务器建立连接;

• 装换表的生成和销毁都需要额外开销;

外部向内部服务器建立连接;

• 装换表的生成和销毁都需要额外开销;

• 通信过程中一旦 NAT 设备异常, 即使存在热备, 所有的 TCP 连接也都会断开;

相关推荐
Escalating_xu1 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
默|笙2 小时前
【Linux网络】传输层协议TCP(3)滑动窗口、流量控制
linux·网络·tcp/ip
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
网络·c++·语言模型·chatgpt
幻智星科技4 小时前
FPGA数据采集接口选型终极指南
fpga开发·udp·硬件架构
无言听风雨丶4 小时前
systemd 与信号 / 僵尸进程:Linux 进程管理的底层逻辑与排错
linux·服务器·网络
小贾要学习5 小时前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
g5zhu58965 小时前
没有公网ip的情况下,本地能ping服务器服务器不能ping本地,让服务器能访问本地某端口的简单方法
服务器·网络协议·tcp/ip
SDWAN_Cheap5 小时前
BGP是什么,广播IP是什么?两个容易混淆的概念拆解
网络·tcp/ip·bgp·广播ip
程序员JerrySUN5 小时前
PCIe Gen5 SSD 为什么读得快、写得慢?从存储原理到 Linux 性能实测
linux·服务器·网络
guizhoumen6 小时前
net core下WebSocket请求总是断开的解决方案
网络·websocket·网络协议