关于NAT的基础知识

来源:互联网 发布:淘宝全球购是正品吗 编辑:程序博客网 时间:2024/05/01 22:44

NAT,Network Address Translation 地址转换,是路由器将内网地址转换为公网地址的一种技术。 

NAT的实现方式主要有三种:

(1)静态转换:静态转换是一对一的转换,有多少内网地址需要转换,就需要相应的公网地址;用得很少;

(2)动态转换:动态转换是多对多的转换,通常需要转换的内网地址略多于相应的公网地址;将公网地址放在一个地址池里,当有内网地址需要访问外部网站时,从地址池中取出一个公网地址,用于内网地址到公网地址的转换;该方式适用于内网地址略多于给定的公网地址,如果内网地址远大于公网地址,当多台内网机器需要访问公网时,会出现地址池枯竭,无法获得对应的公网地址;

(3)端口多路复用:通常是多对一的关系,当只存在一个公网地址时,可用这种方式;通过端口号来确定内网的具体机器。例如内网机器192.168.1.116 需要访问外部网站www.baidu.com ;在数据包通过路由器转发时,NAT会产生一个session,保存地址对应的端口信息,再将数据包中的IP地址转换为  202.11.25.56:1234 --->www.baidu.com ,转发出去。其中的端口1234应该是动态生成,并记录下来。当www.baidu.com 有响应信息时,响应数据包经过路由器时,NAT查询对应端口对应的内网IP,将数据包内的地址更改回去,转发进内网,这样就实现了数据的交换。


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协议与IP Phone协议H.323。如果NAT与这一类协议一起工作,那么NAT协议一定要做适当地修正。同时,网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做相应的修改。由于NAT的存在,使得P2P应用实现出现困难,因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。

  (5)NAT同时存在对高层协议和安全性的影响问题。RFC对NAT存在的问题进行了讨论。NAT的反对者认为这种临时性的缓解IP地址短缺的方案推迟了Ipv6迁移的进程,而并没有解决深层次的问题,他们认为是不可取的。


后续将聊聊外网如何访问内网服务;两个不同的内网机器如何进行通信。