NAT技术

目录

前言

IP地址短缺问题并不是一个只有在将来某个时候可能发生的理论问题。现在,此时此地,这个问题已经发生。对于整个Internet而言,长期的解决方案是迁移到IPV6,它有128位地址。这个迁移过程正在缓慢地进行着,可能需要很长一段时间才可以完成。

为了在IPV6迁移的期间找到临时方案,今天普遍使用的解决方案是网络地址转换(NAT)。

一、NAT的基本思想

NAT的基本思想是Internet服务提供商(ISP,Internet Service Provider)为每个家庭或企业分配一个IP地址(或者,最多分配少量的IP地址),用这个IP地址来传输Internet流量。在客户网络内部,每台计算机有唯一的IP地址,该地址主要用来路由内部流量。当一个数据需要离开客户网络,发向其他ISP时,它需要执行一个地址转换,把内部唯一的IP地址转换成那个共享的IP地址。

通常,我们把由ISP分配的IP地址称为公网IP;
在客户网络内部的每一台计算机的IP地址称为私网IP,一般由一个DHCP服务器自动分配。

这种地址转换使用了IP地址的三个范围,这些地址已经被声明为私有化。任何网络可以在内部随意地使用这些地址。仅有的规则是不允许包含这些地址的数据包出现在Internet上 。这3个保留的地址范围为:

NAT的操作过程如下:

当一个数据包离开客户驻地时,首先经过一个NAT盒子(NAT box),NAT盒子将数据包的内部的IP地址(图中为10.0.0.1,私网IP)转换成客户拥有的真实IP地址(图中为198.60.42.12,公网IP)。

NAT盒子通常与防火墙组合成一个单一的设备,防火墙提供一种安全机制,它仔细地控制着进出客户网络的流量。

现在,NAT盒子一般集成到路由器或ADSL调制解调器中。

当一个数据包从客户网络经过地址转换之后发往Internet后,当应答数据包返回时(比如从Web服务器返回的应答包),本质上它的目标IP地址是198.60.42.12,也就是说应答包的目标IP地址。那么,当NAT收到这个包后,如何将应答数据包发给哪个客户网络的IP地址(私网IP)?

NAT的设计者们注意到,大多数IP数据包携带的要么是TCP有效载荷,要么是UDP有效载荷。无论是TCP,还是UDP,这两个协议的头都包含了一个源端口和目标端口字段。
NAT设计者利用发送方的源端口字段去解决这个问题 。下面以TCP头的源端口为例说明:
任何时候当出境数据包进入NAT盒子,其源地址10.0.0.1被真实的IP地址198.60.42.12取代,而且TCP的源端口(Source Port)字段被一个索引值取代,该索引值指向NAT盒子的地址转换表中的65536表项之一。该表项包含了原来的IP地址和原来的源端口。最后,NAT盒子重新计算IP头和TCP头的校验和,并将校验和插入到数据包中。(注:下图只是说明过程,并非真实的数据包格式和转换表)

当一个数据包从ISP到达NAT盒子时,从TCP头取出源端口字段,得到索引值,更加索引值查找NAT盒子的映射表。找到对应的表项后,从该表项提取出内部IP地址和原来的TCP源端口,并将它们插入到数据包中。然后重新计算IP和TCP校验和,并插入到数据包中。最后将该数据包传递给客户内部的路由器,它使用10.x.y.z地址进行正常的路由。

二、NAT的局限性

第一、因为NAT盒子上的映射是由出境数据包建立的,只能在出境数据包之后到达的入境数据包才能被接受。这意味着,家庭网络用户可以通过NAT与一台远程Web服务器建立TCP/IP连接,但远程用户无法与家庭网络的一台游戏服务器建立连接,这种情况需要特殊的配置技术或NAT穿越技术。

第二、NAT违反了最基本的协议分层规则,第K层不应该对第K+1层在本层的有效载荷中放什么做任何假设。

第三、Internet上的进程并不一定必须使用TCP或UDP。如果机器A上的一个用户觉得使用一种新的传输协议与机器B上的用户进行通话,那么,由于NAT的介入,这样的应用将无法工作。

第四、有些应用以规定的方式是使用多个TCP/IP连接或者UDP端口。例如,标准的文件传输协议(FTP,File Transfer Protocol)在数据包正文插入IP地址,接受正文提取这些地址,并使用它们。但NAT对这次安排一无所知,那么就无法进行正确的传输。

总结

相关推荐
小白爱电脑44 分钟前
WIFI网速不够是不是光猫的“路由模式”和“桥接模式”配置错了?
网络·智能路由器·桥接模式
qxqxa2 小时前
cfg80211是怎么配置无线设备的AP的?
网络·驱动开发
秋夫人3 小时前
http cache-control
网络·网络协议·http
不灭锦鲤5 小时前
ssrf学习(ctfhub靶场)
网络·学习·安全
weixin_548444265 小时前
2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程
网络
网络研究院8 小时前
如何安全地大规模部署 GenAI 应用程序
网络·人工智能·安全·ai·部署·观点
limengshi1383928 小时前
通信工程学习:什么是RIP路由信息协议
网络·网络协议·学习·智能路由器·信息与通信
limengshi13839212 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
麻辣韭菜14 小时前
网络基础 【HTTP】
网络·c++·http
Deryck_德瑞克15 小时前
Java网络通信—TCP
java·网络·tcp/ip