浅谈NAT的原理、缺陷及其解决之道

更新时间: 2004-3-19 发布人员: 陈海平 查看次数: 62583


本文出自《网管员世界》2004年 第3期 知识讲堂 栏目

为什么会有NAT

犹如windows统治着绝大部分桌面系统一样,TCP/IP也是网络协议中的实际统治者,而IP正是这个协议统治的基础。作为标识TCP/IP网络中每个结点的IP地址,由于它只有32个bit的空间,随着网络的发展,它变得越来越稀有,再加上IP地址地区分配的极端不平衡,已使一些地区比如亚洲部分国家的IP资源很快就会用完,在IPv6还没有普及开来之时,为了解决IP地址的燃眉之急,我们需要一种手段来尽量减少对公网IP的使用,这种手段就是NAT(Network Address Translator):网络地址翻译器。

NAT的原理

NAT怎么能够节约公网IP地址呢?这是因为它能够让由私有IP构成的局域网内所有的计算机通过一台具有公网IP和NAT功能的计算机进入公网(Internet),比如上网冲浪,这样一个局域网就只需要一个或很少几个公网IP就行了,从而达到了节约公网IP地址的目的。也许你要问了,为什么需要NAT呢?局域网的私有IP计算机不是能够通过网关直接进入公网吗?非也,内网IP的数据包根本就不可能在公网上传播,因为公网上的路由器都是屏蔽掉了这些私网IP的,这是因为私有IP本来就是人为保留出来专供私有网络通信用的(RFC 1597中描述)。从另一个角度说,即使私有数据包能够到达公网目标地址,目标地址的响应包也不可能返回真正的源地址,因为源地址是私有IP,目标发送的响应包一种可能是被目标地址所在的拥有相同网络号的内网接收,一种可能就是这种子网不存在,数据包被抛弃。所以内网数据包在进入公网之前,必须被翻译成公网IP,这就是NAT的功能。而且NAT技术发展到现在,已不仅局限于翻译IP地址,现在实际翻译时,它不光翻译IP地址,还会翻译TCP/UDP端口。由于这个功能,NAT通常都位于网关计算机上,起着一种路由器的作用,为了讲述方便,以后我们就称这台网关计算机为NAT设备。下面就来看看NAT翻译的基本过程。
假定局域网192.168.0.0的NAT设备公网IP是218.70.201.185,私有IP是192.168.0.1,现在客户机192.168.0.88要通过NAT设备访问cn.yahoo.com的网页,cn.yahoo.com的IP是202.43.216.55。
当客户机192.168.0.88通过IE向http://cn.yahoo.com发出请求时,它发出的数据包含有下面的信息:
源地址和源端口:192.168.0.88:1234
目标地址和目标端口:202.43.216.55:80
当这个数据包到达NAT设备时,它会检测到这个数据包是要发向公网的,所以它会对源IP地址和端口进行修改(翻译),并在映射表中新建IP和端口的映射条目,然后再把修改的数据包转发出去,下面就是修改后数据包的相关信息:
源:218.70.201.185:8999
目标:202.43.216.55:80 (无需变)
当cn..yahoo.com响应时,它会把数据包发给NAT设备,它的数据包含有下面的信息:
源:202.43.216.55:80
目:218.70.201.185:8999
当NAT设备收到响应时,它会检查它的IP地址/端口映射表,并且会找到218.70.201.185:8999
与192.168.0.88:1234的映射条目,于是它又修改数据包,然后把数据包转发给192.168.0.88。
相关数据包信息如下:
源:202.43.216.55:80
目:192.168.0.88:1234
具体的翻译步骤就如图1(略)所示,其中图1黑线左侧是内网发向公网的翻译过程,右侧则是公网发向内网的翻译过程,从中可以看出,翻译过程也是从上层向下层进行的。

  >>>查看各学校访问情况>>>
关于我们 | 加入收藏 | 设为首页 | 联系我们 | 网管论坛
主办单位:宁波市江东区教育局    承办单位:宁波市江东区教育网络中心
Copyright © 2001-2010 jdedu.net All rights reserved.
宁波市江东教育信息网  版权所有    浙ICP备08110569号