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

什么是“NAT 穿越”? “NAT 穿越”是这样一组功能:它允许网络应用程序能明确自己位于 NAT 设备的后面,获得外部 IP 地址,并将端口映射配置为将 NAT 外部端口的数据包转发给应用程序所用的内部端口,而所有这些都是自动完成的,因此用户不必手动配置端口映射或其他类似的方面 。
相对与目前所用的、面向特定应用程序的其他方法而言,这对于解决由 NAT 引起的连接问题确实是一种更为全面的解决方案 。目前使用的那些专门解决方案有的要求用户具有一定的技术知识,有的要求应用程序开发人员或 Internet 网关提供商进行专门的开发工作,也有的则对二者都要求 。
虽然 NAT 穿越可以解决一些 NAT 问题,但它不是万能药,不能解决所有问题 。尽管如此,在提高用户满意度、减少用户支持呼叫的次数和支持新的、具有创造性的服务和应用程序方面,这种自动化的 NAT 穿越代表了非常重要的一步,尤其对于家庭网络环境而言 。
NAT 穿越应视为一种在需要时使用的处理机制,而非在所有情况下都发挥作用 。在 IPv6 中,每个客户机都具有可全局路由的 IP 地址,因此已不再需要 NAT 及 NAT 穿越 。就 IPv6 能在多长时间得到普遍部署这一问题,有各种不同的预测 。在业界,包括 Microsoft,已投入巨资推进 IPv6,但在现在及未来的几年内,本文后面所述的 NAT 穿越解决方案对于希望解决 NAT 问题的一般用户和小型企业用户而言却意义非凡 。
NAT 穿越操作
“NAT 穿越”依赖于作为通用即插即用 (UPnP) 论坛规范组成部分的发现和控制协议 。UPnP 论坛有一个工作委员会主要负责定义 Internet 网关设备的控制协议并定义这些设备的服务 。
支持 Internet 网关设备控制协议基本元素的 Internet 网关设备可向局域网上的控制点声明自己的存在并发布 XML 描述文档 。利用这些 XML 描述文档,控制点就能了解用于确定 Internet 网关是否支持 NAT、获取 NAT 的外部 IP 地址及创建端口映射时需要调用的 UPnP 操作 。
Windows 中的“NAT 穿越 API”对直接使用 UPnP 的要求进行了提炼,可提供用于检测、管理和配置 NAT 设备的接口 。
NAT 穿越 API
当网络应用程序需要检测是否存在 NAT 设备并调整该设备的行为时,该应用程序可以使用 Windows 中提供的“NAT 穿越 API”(完整记录在 Platform SDK 中) 来实现下列功能:
.判断 NAT 是否存在
.获取 NAT 的外部 IP 地址 。
.获取特定外部端口的静态端口映射信息 (如果已映射) 。
.添加静态端口映射 (除非已分配外部端口) 。
.启用或禁用特定的端口映射而不删除
.编辑静态端口映射的界面友好描述
.【NAT 二 Win XP中网络地址转换概述】删除静态端口映射
.获取局域网静态端口映射的列表 。
利用这些功能,应用程序可以解决许多因 NAT 而导致的问题 。请注意:Windows NAT 穿越 API 目前仅在有限的时间内支持端口映射,否则将称为静态端口映射 。
Windows XP 中的 NAT 穿越 API
默认情况下,Windows XP 中将安装 NAT 穿越 API 。这些 API 也可安装在运行 Windows Me 和 Windows 98 的计算机中,方法是使用 Windows XP CD 上一个名为“网络安装向导”的工具 。为提供附加 XML 解析器支持,“NAT 穿越 API”还要求安装 Internet Explorer 6.0 。
Windows 2000 目前不支持“NAT 穿越” 。
Internet 网关中支持 NAT 穿越
Internet 网关对 NAT 穿越的支持是通过支持 “通用即插即用论坛” 所定义的 Internet 网关设备 (IGD) 规范而实现的 。网关制造商还应注意到:Windows 中的 NAT 穿越 API 对 IGD 进行下列假定:
.IGD 每次仅声明一个外部接口 。尽管在技术上允许 Internet 网关设备声明多个外部接口,但“NAT 穿越 API”却只使用第一个 。

推荐阅读