NAT(Network Address Translation,网络地址转换)

NAT是什么

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

在专用网络内部分配的IP地址是内网IP(比如192.168..之类的),但是当别人访问你的IP地址的时候,总不能输入你的内网IP,但是用外网IP又不知道是哪一台机器,所以要用NAT来转换。NAT最大的作用就是宽带分享,记得以前应该是零几年的时候,不知道用路由器(就不知道路由器这个东西),家里两台电脑就一台能上网,眼巴巴等着网上冲浪,后来听说别人家用路由器就能让两台电脑都上网,感觉不可思议,好像占了多大便宜,可把我高兴坏了(当时观念就是上一台电脑的网掏一台的钱),感觉路由器这个东西不简单,NB,卧槽扯远了。

NAT实现方式

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。

  • 静态转换:IP地址一对一,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
  • 动态转换:IP地址多对一,一个内网IP不会变成特定的外网IP。
  • 端口多路复用(PAT):改变外出数据包的源端口并进行端口转换,不同内网IP 用不同的端口号来区分,目前网络中应用最多。说起来端口号在计算机网络模型里面算比较上层的东西了,这么算有NAT功能的路由器就不只是IP层的设备了。
  • 应用程序级网关技术(ALG):传统的NAT技术只对IP层和传输层头部进行转换处理,但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令、DNS协议的 “A” 和 “PTR” queries命令和部分ICMP消息类型等都需要相应的ALG来支持。

如果协议数据报文中不包含地址信息,则很容易利用传统的NAT技术来完成透明的地址转换功能,通常我们使用的如下应用就可以直接利用传统的NAT技术:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等。

NAT工作原理

核心就是替换源IP地址,内网数据发送到NAT设备,NAT会把IP数据报的报头中源IP替换成公网IP,并记录相关信息等到接收到相应数据时再换回来,比如PAT或者叫NAPT,会记录内网IP并为之分配端口号。还有的应用程序会在IP数据报的数据部分嵌入IP,这时候也要替换相应的IP为公网IP。

NAT(Network Address Translation,网络地址转换)_第1张图片
(图片来源:百度百科)

NAT的弊端

NAT违反了基本的网络分层结构模型的设计原则。因为在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。NAT破坏了这种各层独立的原则。
NAT同时存在对高层协议和安全性的影响问题。NAT的反对者认为这种临时性的缓解IP地址短缺的方案推迟了Ipv6迁移的进程,而并没有解决深层次的问题,他们认为是不可取的。

你可能感兴趣的:(基础原理-计算机网络)