NAT(Network Address Translation,网络地址转换)是一种技术,用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址
NAT的主要目的是解决IPv4地址短缺的问题,通过将一个外部IP地址和端口映射到更大的内部IP地址集来转换IP地址。它使用流量表将流量从一个外部(主机)IP地址和端口号路由到与网络上的终结点关联的正确内部IP地址。NAT技术可以在专用网(私网IP)连接到因特网(公网IP)的路由器上安装,使得所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
NAT的实现方式主要有三种:静态转换、动态转换、端口多路复用。静态转换中,一个内部IP地址对应一个全局IP地址;动态转换中,内部IP地址随机转换为全局IP地址;端口多路复用中,内部IP地址和端口号组合映射到外部IP地址和端口号,多个内部IP地址共享一个外部IP地址。
NAT的优点包括宽带共享和安全防护。通过一个公网地址可以让许多机器连上网络,解决了IP地址不够用的情况;同时,通过NAT技术转换后,实际机器隐藏自己的真实IP,仅通过端口来区别是内网中的哪个机器,保证了自身安全。然而,NAT也有一些缺点,如不能建立真正的端对端连接,不能参与一些因特网协议等。
NAT在当代Internet中被广泛采用,小至家庭网关,大到企业广域网出口甚至运营商业务网络出口。NAT技术不仅解决了IPv4地址短缺的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机
NAT的优点:
(1)宽带共享 :通过一个公网地址可以让许多机器连上网络;理论上所有网络端口有多少一个公网IP就能够支持多少台机器联网;解决了IP地址不够用的情况;
(2)安全防护:通过NAT技术转换后,实际机器隐藏自己的真实IP,仅通过端口来区别是内网中的哪个机器,保证了自身安全。
NAT的缺点:
在一个具有NAT功能的路由器下的主机并没有建立真正的端对端连接,并且不能参与一些因特网协议。一些需要初始化从外部网络建立的TCP连接,和使用无状态协议(比如UDP)的服务将被中断。除非NAT路由器作一些具体的努力,否则送来的数据包将不能到达正确的目的地址。(一些协议有时可以在应用层网关的辅助下,在参与NAT的主机之间容纳一个NAT的实例,比如FTP。)NAT也会使安全协议变的复杂
NAT的局限性(copy)
(1)NAT违反了IP地址结构模型的设计原则。IP地址结构模型的基础是每个IP地址均标识了一个网络的连接。Internet的软件设计就是建立在这个前提之上,而NAT使得有很多主机可能在使用相同的地址,如10.0.0.1。
(2)NAT使得IP协议从面向无连接变成立面向连接。NAT必须维护专用IP地址与公用IP地址以及端口号的映射关系。在TCP/IP协议体系中,如果一个路由器出现故障,不会影响到TCP协议的执行。因为只要几秒收不到应答,发送进程就会进入超时重传处理。而当存在NAT时,最初设计的TCP/IP协议过程将发生变化,Internet可能变得非常脆弱。
(3)NAT违反了基本的网络分层结构模型的设计原则。因为在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。NAT破坏了这种各层独立的原则。
(4)有些应用是将IP地址插入到正文的内容中,例如标准的FTP协议与IPPhone协议H.323。如果NAT与这一类协议一起工作,那么NAT协议一定要做适当地修正。同时,网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做相应的修改。由于NAT的存在,使得P2P应用实现出现困难,因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。
(5)NAT同时存在对高层协议和安全性的影响问题。RFC对NAT存在的问题进行了讨论。NAT的反对者认为这种临时性的缓解IP地址短缺的方案推迟了Ipv6迁移的进程,而并没有解决深层次的问题,他们认为是不可取的。