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


.IGD 支持允许任何远程 IP 地址将数据包发送给内部客户机的端口映射 。
.IGD 支持具有广播地址 (列为客户机) 的端口映射
.IGD 支持 NAT 外部端口数与客户机内部端口数不同 。
.IGD 将声明版本号 1 。
.静态端口映射 (或称持续时间设置为无限的端口映射) 将无限期存在 。即使是重新启动系统、更改 IP 地址或是服务器上存在客户机,都无法去除静态端口映射 。
本文写作的过程中,几个业界领先的制造商已经宣布在 2001 年提供支持这些 UPnP 方法并且能与 Windows NAT 穿越 API 协同使用的 Internet 网关设备 。对于业界和用户而言,这都是向前迈进的有意义的一步 。
随着越来越多的 Internet 网关设备提供商认识到使用 UPnP 解决上述问题所具有的优势,随着更多一般用户和小型企业用户开始意识到与 NAT 有关的问题及这些支持 UPnP 的 NAT 穿越解决方案的强大功能,为 NAT 穿越提供 UPnP 支持有望成为此类设备的必备功能或入市前提 。
Internet 网关制造商应加入 UPnP 论坛,了解如何使自己的 Internet 网关设备符合 UPnP 标准 。
应说明的是:Windows XP 上的“Internet 连接共享”支持 UPnP IGD 标准 0.9 版 。预计版本 1.0 将与版本 0.9 兼容 。
应用程序怎样使用 NAT 穿越
应用程序使用“NAT 穿越”的方式与多个因素有关,包括端口映射期望的生存期及端口是否用于多个客户机或服务 。应用程序应清除自己创建的所有静态端口映射,以避免出现孤立映射及端口被其他应用程序占尽的情况 。
如果应用程序是一种网络服务 (例如 Web 服务器),并在生存期内要求使用已知端口,它的安装程序就可以使用 “NAT 穿越 API” 来配置一个静态端口映射 。假定其他应用程序、网络管理员、网络拓扑结构都维持原状,而清除机制也保持映射不变,则外部客户机就能在服务生存期内连接该服务 。应用程序卸载服务负责删除这个映射 。如果出现崩溃,即使服务已不存在,静态端口映射也仍将存在 。如果外部 IP 地址发生变化,则静态端口映射将自动获取更改的内容 。
如果应用程序并不始终运行,或者对网络维护其静态端口映射的信任度降低,它就可以在每次启动时保留某个已知端口,并在每次关闭时恢复资源 。这一点可通过运行某个并行脚本来实现 。作为添加和删除端口映射的替代方案,可以让应用程序根据需要启用和禁用映射 。应用程序还可以始终保留静态端口映射,且只在每次启用时刷新映射 。
同样,如果外部 IP 地址发生变化,则静态端口映射将自动获取更改的内容 。
如果专用网络上不同客户机的多个应用程序使用同一内部端口号,应用程序就会要求进行修改,以支持多个客户机的运行 。只有单个客户机能使用外部端口映射的内部端口号 。此处建议让第一个客户机使用 。其他客户机应请求内部端口数不同于外部端口数的非对称端口映射 。
有一种特殊的情况:多个客户机可监听同一外部端口,而唯一的目的是被远程主机发现 。输入数据包可以转换为使用内部客户机 IP 地址的广播地址,而非特定的客户机地址 。监听该端口的客户机可通过启动自己与远程主机之间的连接而予以回复 。建议不要普遍使用这种方案,因为到该地址的输入数据包将被网络上的所有客户机接收,并会反过来对它们造成影响 。
如果服务需要短期监听某个随机端口,它应在应用程序中请求一个静态端口映射,而非使用脚本 。服务结束时,应予以清除 (删除映射) 。应用程序应保留一份自己特有端口映射的记录 。这样,如果应用程序在崩溃时没有关闭映射,就可以在下一次启动时检索出清除端口映射所需的必要信息 。

推荐阅读