NAT Win XP中网络地址转换概述

简介
随着越来越多的家庭和小型企业添置计算机,它们会发现网络是一种非常强大的计算机资源共享工具 。Internet 连接则是网络上更珍贵的资源,有可能被共享 。为共享 Internet 连接,同时利用价格便宜、管理简单的家庭或小型办公网络,需要部署 Internet 网关 。Internet 网关通常将 NAT (网络地址转换) 作为将多个主机连接到 Internet 以共享单个公共 IP 地址的途径 。但不幸的是,该解决方案却会破坏多种网络应用程序 。我们将在本文中对此加以说明 。
现有的“NAT 穿越”技术允许网络应用程序检测是否存在本地 NAT 设备 。检测到后,应用程序随即对 NAT 进行配置,定义相应的映射来解决兼容性问题 。
本文属于概述性文章,将向网络应用程序的用户和开发人员简要介绍一下 NAT,介绍如何识别常见 NAT 问题,同时介绍应用程序如何使用 “NAT 穿越”解决这些问题 。需要关注的 Internet 网关设备的一个重要特征是 UPnP 认证 。使用者购买或从服务提供商那里租借 Internet 网关设备时,强烈建议只考虑那些通过用于 NAT 穿越的 UPnP 认证的设备,这是因为该功能对于满足用户、降低支持费用及使用更有创新性的服务和应用程序而言至关重要 。
对网关设备厂商而言,在 Internet 网关设备中加入对 NAT 穿越的 UPnP 技术支持并不复杂,费用不高,也不用花大量的时间 。通过使用 UPnP (已经是基于 Internet 标准和协议的),Internet 网关设备制造商就可以解决 NAT 穿越问题,并将优点延伸至大多数经过该设备的应用程序 。这同许多应用程序开发人员或网关设备制造商不得不为解决上述问题而提供一次性解决方案形成鲜明的对比 。本文并非旨在为希望在 Internet 网关设备中实施“NAT 穿越”的硬件制造商提供详细的指南 。有关此信息,请参阅 UPnP 论坛 Web 站点 。
Windows 体系结构、网络以及 UPnP 体系结构方面的知识会对充分理解本文会有所帮助,但并不是必需的 。
什么是 NAT?
网络地址转换 (NAT) 是一个 Internet 工程任务组 (Internet Engineering Task Force,IETF) 标准,用于允许专用网络上的多台 PC (使用专用地址段,例如 10.0.x.x、192.168.x.x、172.x.x.x) 共享单个、全局路由的 IPv4 地址 。IPv4 地址日益不足是经常部署 NAT 的一个主要原因 。Windows XP 和 Windows Me 中的“Internet 连接共享”及许多 Internet 网关设备都使用 NAT,尤其是在通过 DSL 或电缆调制解调器连接宽带网的情况下 。
NAT 对于解决 IPv4 地址耗费问题 (在 IPv6 部署中却没必要) 尽管很有效,但毕竟属于临时性的解决方案 。这种 IPv4 地址占用问题在亚洲及世界其他一些地方已比较严重,且日渐成为北美地区需要关注的问题 。这就是人们为什么长久以来一直关注使用 IPv6 来克服这个问题的原因所在 。
除了减少所需的 IPv4 地址外,由于专用网络之外的所有主机都通过一个共享的 IP 地址来监控通信,因此 NAT 还为专用网络提供了一个隐匿层 。NAT 与 防火墙 或代理服务器不同,但它确实有利于安全 。

图 1:使用 NAT 设备进行 Internet 通信的网络示例 。
正如固定电缆调制解调器或 DSL 调制解调器可以作为 NAT 设备一样,
PC 也可以作为 NAT 设备 。

常规 NAT 操作
NAT 设备后面的客户端通常通过 DHCP (动态主机配置协议) 分配到专用的 IP 地址,或者由管理员进行静态配置 。在该专用网络的外面进行通信时,通常会发生下列事情 。
在客户机上
当应用程序想同服务器通信时,它将打开与源 IP 地址、源端口、目标 IP 地址、目标端口及网络协议相关联的套接字 。这样可以识别通信所需的两个端点 。当应用程序利用该套接字传输信息时,客户机的专用 IP 地址 (源 IP 地址) 和端口 (源端口) 将被插入数据包的源字段中 。数据包的目标字段将包含服务器的 IP 地址 (远程主机 - 目标 IP 地址) 和端口 。由于该数据包的目的地是该专用网络之外的某个位置,因此客户机将把该数据包转发给默认的网关 。这种情况下的默认网关就是 NAT 设备 。

推荐阅读