NAT详解(网络地址转换)

一句话说清楚它是干什么的:

网络地址转换:是指通过专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址,它使得整个专用网只需要一个全球IP就可以访问互联网,由于专用网IP地址是可以重用的,所以NAT大大节省了IP地址的消耗。

概念:

NAT(Network Address Translation),是指网络地址转换,1994年提出的。

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

这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接

另外,这种通过使用少量的全球IP地址(公网IP地址)代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。

实现方式:

  • 静态转换:一对一,私有ip和共有ip的映射关系定下来就不会变了
  • 动态转换:也是一对一,但是每次私有ip跟共有ip的映射关系都是不一样
  • 端口多路复用(即端口地址转换(PAT,Port Address Translation)):内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,网络中应用最多的就是端口多路复用方式。

NAPT (Network Address Port Translation),即网络地址端口转换,可将多个内部地址映射为一个合法公网地址,NAPT也被称为"多对一"的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。

NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。除了一对源和目的IP地址以外,这个表还包括一对源和目的协议端口号,以及NAT盒使用的一个协议端口号。

PAT 叫端口地址转换,NAT是网络地址转换。

PAT可以看做是NAT的一部分。

在NAT时,考虑一种情形,就是只有一个Public IP,而内部有多个Private IP,这个时候NAT就要通过映射UDP和TCP端口号来跟踪记录不同的会话,比如用户A、B、C同时访问CSDN,则NAT路由器会将用户A、B、C访问分别映射到1088、1098、23100(举例而已,实际上是动态的),此时实际上就是PAT了。

由上面推论,PAT理论上可以同时支持(65535 - 1024)= 64511个连接会话。但实际使用中由于设备性能和物理连接特性是不能达到的,CISCO的路由器NAT功能中每个Public IP最多能有效地支持大约4000个会话。

PAT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。PAT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。也就是采用多路复用 技术,或改变外出数据的源port的技术将多个内部ip地址映射到同一个外部地址。

重点理解

参考博客NAT网络地址转换

NAT重载(经常应用到实际中)

这是最常用的NAT类型。NAT重载也是动态NAT,**它利用源端口将多个私网ip地址映射到一个公网ip地址(**多对一)。那么,它的独特之处何在呢?它也被称为端口地址特换(PAT)。通过使用PAT(NAT重载),只需使用一个公网ip地址,就可将数千名用户连接到因特网。其核心之处就在于利用端口号实现公网和私网的转换。

面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要NAT设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如TCP或UDP端口号 。这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT ,因为它是最典型的一种应用模式。

  • 举个例子,客户端172.18.250.6和百度服务器202.108.22.5通信,172.18.250.6发送数据时,先转换为219.155.6.240:1723(任意>1024的随机端口),然后再利用这个身份发送数据给百度服务器,然后百度服务器回应数据并发送给219.155.6.240:1723,NAT网关检查自己的关联表,意识到这是自己地私网中172.18.250.6的数据包,然后把这个数据发送给客户端

  • 也就是说,我们利用端口号的唯一性实现了公网ip转换为私网ip的这一步。PAT(NAT重载)能够使用传输层端口号来标识主机,因此,从理论上说,最多可让大约65000台主机共用一个公有IP地址

相关推荐
我是阿呆同学42 分钟前
仿mudou库one thread oneloop式并发服务器
网络
是阿建吖!1 小时前
【Linux | 网络】网络编程套接字
linux·网络
en-route2 小时前
HTTP cookie
网络·网络协议·http
yqcoder2 小时前
2. 你可以说一下 http 版本的发展过程吗
网络·网络协议·http
网硕互联的小客服3 小时前
未来趋势:AI与量子计算对服务器安全的影响
运维·服务器·网络·网络安全·量子计算
黑客老李3 小时前
EDUSRC:智慧校园通用漏洞挖掘(涉校园解决方案商)
服务器·前端·网络·安全·web安全
是阿建吖!3 小时前
【Linux | 网络】网络基础
linux·网络
W说编程3 小时前
物联网通信技术全景剖析:从LoRa到5G的深度对比与选型指南
网络·物联网·5g·射频工程
cui_win4 小时前
【网络】Linux 内核优化实战 - net.ipv4.tcp_timestamps
linux·网络·tcp/ip
薄荷椰果抹茶4 小时前
【网络安全基础】第七章---无线网络安全
网络·安全·web安全