您的位置:首页 > 理论基础 > 计算机网络

网络地址转换(NAT)

2009-06-25 09:46 176 查看
From: http://tech.sina.com.cn/s/2004-11-05/0956454245.shtml

什么是 NAT?

网络地址转换 (NAT) 是一个 Internet 工程任务组 (Internet
Engineering Task Force,IETF) 标准,用于允许专用网络上的多台 PC (使用专用地址段,例如
10.0.x.x、192.168.x.x、172.x.x.x) 共享单个、全局路由的 IPv4
地址。IPv4
地址日益不足是经常部署 NAT 的一个主要原因。

NAT 设备上的输出数据包

NAT 设备将截获该输出数据包,然后利用目标 IP 地址 (服务器)、目标端口、NAT 设备的外部 IP 地址、外部端口、网络协议及客户机的内部 IP 地址和端口来创建端口映射。

NAT 设备将维护这些映射组成的表,并将该端口的映射存储在表中。外部 IP 地址和端口就是该数据通信用于取代内部客户机 IP 地址和端口的公共 IP 地址和端口。

NAT 设备随即将来自客户机专用内部 IP 地址和端口的数据包的源字段转换为 NAT 设备的公共 IP 地址和端口,从而对这些数据包进行转换。

然后,数据包将通过外部网络发送出去,并最终到达目标服务器。

NAT 设备上的输入数据包

NAT
从服务器那接收到这些数据包,然后将数据包与其端口映射表进行比较。如果 NAT 发现某个端口映射的远程主机 IP
地址、远程端口、外部端口及网络协议与输入数据包的源 IP 地址、源端口、目标端口和网络协议匹配,NAT 就会进行反向转换。NAT
将把数据包目标字段中的外部 IP 地址和外部端口替换为客户机的专用 IP 地址和内部端口。

然后,NAT 将内部网络上的数据包发送给客户机。然而,如果 NAT 找不到对应的端口映射,它就会丢弃输入数据包并中断连接。

什么是“NAT 穿越”?

“NAT 穿越”是这样一组功能:它允许网络应用程序能明确自己位于 NAT 设备的后面,获得外部 IP 地址,并将端口映射配置为将 NAT 外部端口的数据包转发给应用程序所用的内部端口,而所有这些都是自动完成的,因此用户不必手动配置端口映射或其他类似的方面。

NAT 穿越 API

当网络应用程序需要检测是否存在 NAT 设备并调整该设备的行为时,该应用程序可以使用 Windows 中提供的“NAT 穿越 API”(完整记录在 Platform SDK 中) 来实现下列功能:

- 判断 NAT 是否存在

- 获取 NAT 的外部 IP 地址。

- 获取特定外部端口的静态端口映射信息 (如果已映射)。

-添加静态端口映射 (除非已分配外部端口)。

- 启用或禁用特定的端口映射而不删除

- 编辑静态端口映射的界面友好描述

- 删除静态端口映射

- 获取局域网静态端口映射的列表。

结论

NAT 是得到 IETF 认可的解决方案,针对的是 IPv4
名称空间耗用问题。使用 NAT 的 Internet 网关经常用于家庭和小型企业。之所以使用它们,是因为它们价格便宜,易于管理,无需用户安装特殊的软件。

使用 NAT 的不足在于会破坏许多聊天、多人游戏和对等应用程序。这是因为它们的网络协议对网络体系结构所做的假定已不成立。

“NAT 穿越”为应用程序提供了一条查找 NAT 设备、发现可全局路由的共享 IP 地址并配置静态端口映射以解决某些连接问题的途径。NAT 穿越解决方案无法解决与 NAT 有关的所有问题,但可以缓解部分问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: