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 连接也都会断开;