位置:51电子网 » 技术资料 » 通信网络

在VxWorks下实现NAT/NAPT的方法

发布时间:2008/5/29 0:00:00 访问次数:422

摘要:介绍nat、napt的基本概念和工作原理;结合vxworks的网络协议栈,描述一种利用vxworks操作系统提供的钩子函数来开发实现nat和napt的方法。

关键词:nat napt 钩子函数 网络协议栈 截获 转换 校验和

引言

近年来,随着internet的迅猛发展,连入internet的主机数量成倍增长。由于最初设计internet的时候并没有考虑到需要支持这么大的规模,因而internet使用的ipv4协议中ip地址的长度选择了32位,它可以使ip包的格式很好地对齐;但是,目前ip地址的短缺已经成为internet面临的最大问题之一。

为了解决ip地址短缺的问题,人们提出了许多解决方案,nternet能够支持到新一代ip协议ipv6的出台。在众多的解决方案中,网络地址转换nat(network address translation)技术提供了一种完全将私有网和公共网隔离的方法,从而得到了广泛的应用。

图1 nat工作原理示意图

1 nat技术

nat技术的基本功能就是,用1个或几个ip地址来实现1个私有网中的所有主机和公共网中主机的ip通信。nat技术可为tcp、udp以及icmp数据包提供透明转发。

1.1 nat工作原理

nat的基本工作原理是,当私有网主机和公共网主机通信的ip包经过nat网关时,将ip包中的源ip或目的ip在私有ip和nat的公共ip之间进行转换。

如图1所示,nat网关有2个网络端口,其中公共网络端口的ip地址是统一分配的公共ip,为202.204.65.2;私有网络端口的ip地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机166.111.80.200发送了1个ip包(des=166.111.80.200,src=192.168.1.2)。当ip包经过nat网关时,nat会将ip包的源ip转换为nat的公共ip并转发到公共网,此时ip包(des=166.111.80.200,src=202.204.65.2)中已经不含任何私有网ip的信息。由于ip包的源ip已经被转换成nat的公共ip,响应的ip包(des=202.204.65.2,src=166.111.80.200)将被发送到nat。这时,nat会将ip包的目的ip转换成私有网中主机的ip,然后将ip包(des=192.168.1.2,src=166.111.80.200)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。

1.2 napt技术

由于nat实现是私有ip和nat的公共ip之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到nat的公共ip地址数量的限制。为了克服这种限制,nat被进一步扩展到在进行ip地址转换的同时进行port的转换,这就是网络地址端口转换napt(network address port translation)技术。

napt与nat的区别在于,napt不仅转换ip包中的ip地址,还对ip包中tcp和udp的port进行转换。这使得多台私有网主机利用1个nat公共ip就可以同时和公共网进行通信。

如图2所示,私有网主机192.168.1.2要访问公共网中的http服务器166.111.80.200。首先,要建立tcp连接,假设分配的tcp port是1010,发送了1个ip包(des=166.111.80.200:80,src=192.168.1.2:1010),当ip包经过nat网关时,nat会将ip包的源ip转换为nat的公共ip,同时将源port转换为nat动态分配的1个port。然后,转发到公共网,此时ip包(des=166.111.80.200:80,src=202.204.65.2:2010)已经不含任何私有网ip和port的信息。由于ip包的源ip和port已经被转换成nat的公共ip和port,响应的ip包(des=202.204.65.2:,src=2010166.111.80.200:80)将被发送到nat。这时nat会将ip包的目的ip转换成私有网主机的ip,同时将目的port转换为私有网主机的port,然后将ip包(des=192.168.1.2:1010,src=166.111.80.200:80)转发到私网。对于通信双方而言,这种ip地址和port的转换是完全透明的。

2 vxworks的网络协议栈

与vxworks操作系统捆绑发行的标准网络协议栈,是一个与bsd4.4兼容、功能齐全并针对嵌入式应用作了大量优化的tcp/ip协议栈。该网络协议栈与vxworks操作系统、开发工具、设备管理工具以及上层协议和应用可以集成在一起,有完整的路由功能并可以根据需要进行剪裁。vxworks的网络协议栈的分层结构如图3所示。

vxworks网络协议栈传输数据使用的内存,是在系统启动

摘要:介绍nat、napt的基本概念和工作原理;结合vxworks的网络协议栈,描述一种利用vxworks操作系统提供的钩子函数来开发实现nat和napt的方法。

关键词:nat napt 钩子函数 网络协议栈 截获 转换 校验和

引言

近年来,随着internet的迅猛发展,连入internet的主机数量成倍增长。由于最初设计internet的时候并没有考虑到需要支持这么大的规模,因而internet使用的ipv4协议中ip地址的长度选择了32位,它可以使ip包的格式很好地对齐;但是,目前ip地址的短缺已经成为internet面临的最大问题之一。

为了解决ip地址短缺的问题,人们提出了许多解决方案,nternet能够支持到新一代ip协议ipv6的出台。在众多的解决方案中,网络地址转换nat(network address translation)技术提供了一种完全将私有网和公共网隔离的方法,从而得到了广泛的应用。

图1 nat工作原理示意图

1 nat技术

nat技术的基本功能就是,用1个或几个ip地址来实现1个私有网中的所有主机和公共网中主机的ip通信。nat技术可为tcp、udp以及icmp数据包提供透明转发。

1.1 nat工作原理

nat的基本工作原理是,当私有网主机和公共网主机通信的ip包经过nat网关时,将ip包中的源ip或目的ip在私有ip和nat的公共ip之间进行转换。

如图1所示,nat网关有2个网络端口,其中公共网络端口的ip地址是统一分配的公共ip,为202.204.65.2;私有网络端口的ip地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机166.111.80.200发送了1个ip包(des=166.111.80.200,src=192.168.1.2)。当ip包经过nat网关时,nat会将ip包的源ip转换为nat的公共ip并转发到公共网,此时ip包(des=166.111.80.200,src=202.204.65.2)中已经不含任何私有网ip的信息。由于ip包的源ip已经被转换成nat的公共ip,响应的ip包(des=202.204.65.2,src=166.111.80.200)将被发送到nat。这时,nat会将ip包的目的ip转换成私有网中主机的ip,然后将ip包(des=192.168.1.2,src=166.111.80.200)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。

1.2 napt技术

由于nat实现是私有ip和nat的公共ip之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到nat的公共ip地址数量的限制。为了克服这种限制,nat被进一步扩展到在进行ip地址转换的同时进行port的转换,这就是网络地址端口转换napt(network address port translation)技术。

napt与nat的区别在于,napt不仅转换ip包中的ip地址,还对ip包中tcp和udp的port进行转换。这使得多台私有网主机利用1个nat公共ip就可以同时和公共网进行通信。

如图2所示,私有网主机192.168.1.2要访问公共网中的http服务器166.111.80.200。首先,要建立tcp连接,假设分配的tcp port是1010,发送了1个ip包(des=166.111.80.200:80,src=192.168.1.2:1010),当ip包经过nat网关时,nat会将ip包的源ip转换为nat的公共ip,同时将源port转换为nat动态分配的1个port。然后,转发到公共网,此时ip包(des=166.111.80.200:80,src=202.204.65.2:2010)已经不含任何私有网ip和port的信息。由于ip包的源ip和port已经被转换成nat的公共ip和port,响应的ip包(des=202.204.65.2:,src=2010166.111.80.200:80)将被发送到nat。这时nat会将ip包的目的ip转换成私有网主机的ip,同时将目的port转换为私有网主机的port,然后将ip包(des=192.168.1.2:1010,src=166.111.80.200:80)转发到私网。对于通信双方而言,这种ip地址和port的转换是完全透明的。

2 vxworks的网络协议栈

与vxworks操作系统捆绑发行的标准网络协议栈,是一个与bsd4.4兼容、功能齐全并针对嵌入式应用作了大量优化的tcp/ip协议栈。该网络协议栈与vxworks操作系统、开发工具、设备管理工具以及上层协议和应用可以集成在一起,有完整的路由功能并可以根据需要进行剪裁。vxworks的网络协议栈的分层结构如图3所示。

vxworks网络协议栈传输数据使用的内存,是在系统启动

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!