地址转换的概念、功能、优缺点

有线通信

23人已加入

描述

地址转换的概念
地址转换,又称地址代理,用来实现私有网络地址与公有网络地址之间的转换。
什么是私有及公有网络地址?
私有地址是指内部网络(局域网内部)的主机地址,而公有地址是局域网的
外部地址(在因特网上的全球唯一的IP 地址)。因特网地址分配组织规
定以下的三个网络地址保留用做私有地址:
10.0.0.0 —— 10.255.255.255
172.16.0.0 —— 172.31.255.255
192.168.0.0 —— 192.168.255.255
也就是说这三个网络的地址不会在因特网上被分配,但可以在一个企业
(局域网)内部使用。各个企业根据在可预见的将来主机数量的多少,
来选择一个合适的网络地址。不同的企业,他们的内部网络地址可以相
同。如果一个公司选择其他的网段作为内部网络地址,则有可能会引起
路由表的混乱。
什么情况下会用到地址转换?
当内部网络的主机访问因特网或与外部网络的主机通信时,需要用到地址转换。如图1 所示:

地址

图 1: 地址转换示意图
局域网内部网络的地址是10.0.0.0 网段,而对外的正式IP 地址是
202.196.3.23 。内部的主机10.1.1.48 以www 方式访问网外的服务器
202.18.245.251。主机10.1.1.48 发出一个数据报文,选择一个源端口6084,目的端口为80。在通过代理服务器后,该报文的源地址和端口可
能改为203.196.3.23:32814,目的地址与端口不做改变。在代理服务器
中维护着一张地址端口对应表。当外部网络的WWW 服务器返回结果时,
代理服务器会将结果数据报文中的目的IP 地址及端口转化为
10.1.1.48:6084。这样,内部主机10.1.1.48 就可以访问外部的服务器了。

地址转换的功能
在因特网的发展过程中,地址转换的提出是为了解决因特网地址短缺所
面临的问题。(RFC1631)。
路由器结合地址转换可以完成以下功能:
一个企业通过路由器来访问因特网,示意图如图2 所示;

地址

图2 通过路由器访问因特网
另外一个部门的路由器通过缺省路由功能,如图3 所示,利用此路由器访问因特网;

地址

地址转换的实现
实现的机制是将网内主机的IP 地址和端口替换为路由器的外部网络地址
和端口,以及从路由器的端口转换为主机的IP 地址和端口。也就是<地
址+端口> 􀙛 <端口>。(符号玙代表映射)
为了完成这样的转换,选取的数据结构至少需要包含下列信息:
主机地址;
主机端口;
转换之后的端口;
􀁹 该连接的协议类型;
针对FTP 应用的“port”命令的特殊情况,需要对报文做sequence num
调整。对于该调整需要做相应记录,数据结构中需要额外包括这些信息;
FTP 的“port”命令有什么特点?
FTP 涉及双重连接,一个是控制连接,一个是数据连接。控制连接负责
传输控制信息,尤其是客户命令。客户提出一个请求,服务器与客户建
立一个数据连接,进行实际数据传输。“port”命令用来指明与FTP 客户
端建立数据连接相关时,客户端的IP 地址及端口。即“port”命令的数
据中含有IP 地址(这个IP 地址甚至可以填上不是客户端地址的任意的一
个IP 地址。有关这个命令所引起的网络安全方面的问题,有兴趣的可以
在计算机紧急事件反应组织的网点查看:www.cert.org,由卡耐基.梅隆大
学维护)。这个IP 地址也需要进行转换,从而引起该tcp 报文所携带的
数据发生变化,需要进行sequence num 调整。
经过把数据报文中的地址和端口转换为路由器的地址与端口后,报头数
据发生了变化。而一般性的协议报头中都有一项称为checksum(校验和)
的域,那一项也需要做调整。否则在数据报文发送到对端,在IP 层进行
的校验和计算后,会被以“bad checksum”的原因被丢弃。
对于TCP、UDP 这些上层协议(包括ICMP),需要进行两次校验和调
整。一次是IP 报头自身的校验和调整,一次是TCP 等头标的校验和调整。
为了有效的实现〈地址+端口〉与〈端口〉之间的映射,选取hash 表的方
式来实现映射算法。选取以下的HASH 函数:
usIndex = ((ulIpAddr&0x000000FF)<<4) + (usSrcPort&0x000F);
采取此种方式是对在一个C 类子网内部的主机地址取其低8 位,由于一
台主机的socket API 中对于端口号一般是连续分配的(而在一台主机上所
开的通信客户端程序是有限的),再取其低4 位,可以较好地将由源地址
和源端口及协议所组成的半相关散列开至整个HASH 表中。采取hash 表结构后,还需要处理hash 冲突的情况,即需要维护一个链表
结构来放置hash 冲突之后的数据。
在具体实现的时候,考虑到一个连接都不会超过一定的时间。在数据结
构中增加一项用来记录该连接创建时的时间,如果超过了所设定的时间,
则将此项从hash 表中删除。
总结这一节,地址转换的实现要点如下:
选择一个数据结构来保存地址、端口等信息;
选择一个合适的算法来实现地址加端口与端口之间的映射;
对转换后的报文做校验和调整;
对FTP 的“port”命令做sequence number 调整;

地址转换的优缺点
地址转换的优点在于:
内部网络的主机可以通过该功能访问网外资源;
为内部主机提供了“隐私”(privacy)保护;
缺点也是由转换功能所引起:
由于需要对数据报文进行IP 地址的转换,涉及IP 地址的数据报的报头不
能被加密。在应用协议中,不能使用加密的FTP 连接。否则FTP 的port
命令不能被正确转换。
网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其他网
络,则很难指出究竟是哪一台机器是恶意的,因为主机的IP 地址被屏蔽了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分