扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Microsoft 来源:Microsoft 2007年12月19日
关键字: 转换 网络 Windows Windows xp
同样,如果外部 IP 地址发生变化,则静态端口映射将自动获取更改的内容。
如果专用网络上不同客户机的多个应用程序使用同一内部端口号,应用程序就会要求进行修改,以支持多个客户机的运行。只有单个客户机能使用外部端口映射的内部端口号。此处建议让第一个客户机使用。其他客户机应请求内部端口数不同于外部端口数的非对称端口映射。
有一种特殊的情况:多个客户机可监听同一外部端口,而唯一的目的是被远程主机发现。输入数据包可以转换为使用内部客户机 IP 地址的广播地址,而非特定的客户机地址。监听该端口的客户机可通过启动自己与远程主机之间的连接而予以回复。建议不要普遍使用这种方案,因为到该地址的输入数据包将被网络上的所有客户机接收,并会反过来对它们造成影响。
如果服务需要短期监听某个随机端口,它应在应用程序中请求一个静态端口映射,而非使用脚本。服务结束时,应予以清除 (删除映射)。应用程序应保留一份自己特有端口映射的记录。这样,如果应用程序在崩溃时没有关闭映射,就可以在下一次启动时检索出清除端口映射所需的必要信息。
如果应用程序离开网络时没有清除其端口映射,则该映射就会保留下来,而清除任务就落在用户的身上。目前 Windows 中尚没有清除机制,这是因为很难判断应用程序不再使用映射的时间。
NAT 穿越的局限
尽管“NAT 穿越”可以解决与通过 NAT 设备进行连接时有关的多种问题,但还有“NAT 穿越”无法解决的问题及由其引起的问题。这些问题包括:
. NAT 穿越使用开放式信任模式。这意味着专用网络上的所有应用程序都能访问 NAT 上的所有端口映射。尽管这样可以增加一些管理方面的灵活性,但应用程序也就失去了对其映射的唯一占有权。
. 应用程序将负责解决冲突。如果应用程序尝试映射某个已映射给其他客户机的端口,它就应负责查找另一个端口或改写应用程序。
. NAT 穿越无法解决在 ISP 分发专用地址和使用 NAT 进行客户机连接方面的问题。这种情况下,NAT 位于 Internet 网关设备的外面,实际上位于服务提供商网络的内部。如果客户机网络上的 NAT 位于另一个同类 NAT 的后面,家庭或小型企业中的 NAT 穿越就会出现故障。因此,建议 Internet 服务提供商不要在自己的网络内部署 NAT。
. 应用程序获取 NAT 穿越时并非毫无代价。它们必须同时进行修改以调用 API,或者随带脚本以提供解决方案。这对于大多数开发人员而言仍在可控制的范围内,尤其是考虑到将这些 NAT 穿越机制并入应用程序后,应用程序就能自动与多种 Internet 网关设备协同使用。
. 使用完端口映射后,应用程序负责清除工作。静态映射会无限期存在,最好用于打算在整个应用程序生存期内监听知名端口的服务。
. 提供 NAT 的 Internet 网关必须支持通用即插即用 Internet 网关设备规范 (至少为版本 0.9)。
结论
NAT 是得到 IETF 认可的解决方案,针对的是 IPv4 名称空间耗用问题。使用 NAT 的 Internet 网关经常用于家庭和小型企业。之所以使用它们,是因为它们价格便宜,易于管理,无需用户安装特殊的软件。
使用 NAT 的不足在于会破坏许多聊天、多人游戏和对等应用程序。这是因为它们的网络协议对网络体系结构所做的假定已不成立。
“NAT 穿越”为应用程序提供了一条查找 NAT 设备、发现可全局路由的共享 IP 地址并配置静态端口映射以解决某些连接问题的途径。NAT 穿越解决方案无法解决与 NAT 有关的所有问题,但可以缓解部分问题。
本文的主要结论是:
. Internet 网关设备制造商应在自己的设备中支持 UPnP,从而支持“NAT 穿越”。
. 网络应用程序开发人员应使用 Windows NAT 穿越 API 来检测 NAT 的存在,并在必要时允许其应用程序经过 NAT。
. 用户应使用支持 UPnP 和“NAT 穿越”的 Internet 网关设备,以确保最佳的应用程序性能。
. DSL 和电缆调制解调器的服务提供商应指定、销售和租赁为 NAT 穿越提供 UPnP 支持的 Internet 网关设备。
在 IPv6 最终消除 NAT 之前,某些形式的 NAT 穿越仍会继续存在。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者