NAT 是路由器的一个比较重要的功能, 此技术主要解决的就是 IP 地址不够用的情况, 也可以说是一种过渡技术, 但是 NAT 技术也有多个技术缺陷; 本文主要介绍 NAT 及 NAPT 的相关概念; 其次 IPv4 协议和 IPv6 协议的区别也是比较重要的一个点, 还是多了解一下为好.
NAT / IPv6
☻NAT 及 NAPT
NAT (网络地址转换技术) 是一种地址转换技术, 可以将 IP 地址转换为另一个 IP 地址, 并通过相关的转换端口号达到地址重用的目的; NAT 作为一种缓解 IPv4 公网地址不够用的过渡技术, 实现并不复杂, 因此应用非常广泛.
主要特性如下:
- NAT 能够将私有 IP 对外通信时转为全局 IP, 也就是一种将私有 IP 和 全局 IP 相互转化的技术方法;
- 全局 IP 要求唯一, 但是私有 IP 不需要, 在不同的局域网中出现相同的私有 IP 是完全不影响的; 很多学校 / 公司内部都在终端设置私有 IP, 而在路由器或必要的服务器上设置全局 IP.
关于 NAT 的技术缺陷:
- 由于 NAT 依赖这个转换表, 所有就无法从 NAT 外部向内部服务器建立连接;
- 转换表的生成和销毁都需要额外的开销;
- 通信设备中一旦 NAT 设备异常, 所有的 TCP 连接也都会断开.
NAT 和 IP 的转换过程:
- NAT 路由器将源地址从 172.68.2.101 替换成全局的 IP 202.172.202.68;
- NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.172.202.68 替换回 172.68.2.101;
- NAT 路由器内部有一张自动生成的用于地址转换的表, 当 172.68.2.101 第一次问某个 IP 地址发送数据时就会生成表中的映射关系.
NAPT (网络地址端口转换)的相关概念:
学校或者大型公司会有自己的内部网络, 当大量的内网客户端想要跟外界进行通信而公网地址比较少时, 网关就无法完成私有地址和公网地址的一一映射; 这时网关需要结合 TCP 或者 UDP 的端口号完成多个内网映射成一个公网地址的转换, 这种转换方式就称之为 NAPT.
如果局域网内有多个主机都访问同一个外网服务器, 那么服务器返回的数据中目的 IP 都是相同的, 那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?
NAPT 就是来解决这个问题的, 主要是使用 IP + port 来建立这个关联关系; 这种关联关系也是由 NAT 路由器来自动维护的, 在 TCP 情况下建立连接时, 就会生成这个表项, 在断开连接后就会删除这个表项.
☻☻IP 协议的两个版本 - IPv4 和 IPv6
- IPv4 长度为 32 位来表示 IP 地址;
- IPv6 长度为 128 位来表示 IP 地址; 2 的 128 次方意味着将地球上的每一粒沙子都赋予一个 IP 地址也是够用的; 从根本上解决了 IP 地址不够用的问题. 但是现在 IPv6 的普及程度不是很高, 因为两者不兼容, 要想升级成 IPv6 得把相关的网络设备都得升级成 IPv6, 也就是这个网络链路上所有的交换机路 / 路由器 / 服务器都得升级成 IPv6, 因此普及程度不是很高.