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


如果服务器试图用嵌入 IP 地址和端口进行回复,而非 NAT 提供的映射地址和端口,系统就会丢弃该数据包 。这是因为嵌入 IP 地址是无法路由的 。如果网络应用程序能找到 NAT 设备并检索到所要使用的外部 IP 地址和外部端口映射,应用程序就可以在数据包中嵌入正确的信息 。
 使用分散套接字的应用程序
还有一些网络应用程序使用端口 " X " 上的套接字向服务器或对等计算机发送通讯信息,然后等待将服务器的通讯信息接收到端口 " Y " 的独立监听套接字上 。NAT 将监视输出通讯并为端口 " X " 创建端口映射,但并不对寻址到端口 " Y " 的返回数据包进行端口映射 。寻址到端口 " Y " 的输入数据包将被丢弃 。
需要端口可用
有些网络协议假定始终有可全局路由的已知端口可用 。当多个客户机共享 IP 地址时,每次将只有一个客户机能使用已知端口 。例如,每次只有一个 Web 服务能使用本地网络上的端口 80 。如果不是这样,NAT 设备将无法确定外部请求所适用的客户机 。即使在配置端口映射的用户的帮助下,如果从本地网络的外部能找到多个客户机,也必须采取某些特殊的措施 。
多个 NAT
对于客户机位于一个 NAT 后面的 NAT 的后面这个问题已经超出了本文所涵盖的范围 。
对用户和行业的影响
上一段介绍了与 NAT 穿越有关的技术问题 。从用户的角度讲,它所造成的影响比较简单:人们再也无法使用受 NAT 干扰的服务或应用程序 。
现在,大多数用户甚至没有意识到自己已成为这种 NAT 问题的“受害者” 。他们只是知道,当试图玩多人游戏或者使用对等应用程序 (例如进行实时通讯) 或其他某些应用程序时,却无法玩或无法使用 。他们可能会在 PC 上看到类似“无法连接”等的错误消息,或者在试图使用应用程序时,程序却出现故障 。
有时,具有拨号调制解调器 Internet 连接的用户在使用拨号调制解调器时不会出现上述问题 。但当用户使用宽带服务并将 DSL 或电缆调制解调器设备与 NAT 一起使用时,却出现故障 。在进行快速 Internet 连接的情况下,这些用户尤其会受到 NAT 问题的困扰:它们会突然导致用户无法玩游戏或使用其他服务 。
这导致了用户的不满,矛头指向 PC 生产商、ISP、Internet 网关提供商等等 。通常,用户并不知道问题的根源,而技术支持人员也并不总能知道如何通过电话解决这些问题 。
这已不仅是用户的问题 。它也成为向用户提供产品和服务的制造商的问题 。用户在试图解决这些由 NAT 引起的问题时会拨打支持电话,而这部分费用会减少制造商或零售商的利润,甚至使其无利可图 。这些问题会导致用户对试用服务的不满,从而使某些用户降低了对后续的新服务或新应用程序的兴趣 。因此,NAT 会妨碍其他创新产品/服务的推出和使用 。
鉴于上述因素,解决 NAT 问题已成为业界的一项重要任务 。

什么是“NAT 穿越”?“NAT 穿越”是这样一组功能:它允许网络应用程序能明确自己位于 NAT 设备的后面,获得外部 IP 地址,并将端口映射配置为将 NAT 外部端口的数据包转发给应用程序所用的内部端口,而所有这些都是自动完成的,因此用户不必手动配置端口映射或其他类似的方面 。
相对与目前所用的、面向特定应用程序的其他方法而言,这对于解决由 NAT 引起的连接问题确实是一种更为全面的解决方案 。目前使用的那些专门解决方案有的要求用户具有一定的技术知识,有的要求应用程序开发人员或 Internet 网关提供商进行专门的开发工作,也有的则对二者都要求 。

推荐阅读