基于中间件实现网关napt功能的方法及装置制造方法

文档序号:7805221阅读:276来源:国知局
基于中间件实现网关napt功能的方法及装置制造方法
【专利摘要】本发明实施例提供一种基于中间件实现网关NAPT功能的方法及装置。该方法包括:中间件获取数据包;若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表;若所述NAPT表中不存在源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,将源IP、源端口号、修改后的源IP和修改后的源端口号存储到所述NAPT表中。本发明实施例通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整。
【专利说明】基于中间件实现网关NAPT功能的方法及装置
【技术领域】
[0001]本发明实施例涉及通信技术,尤其涉及一种基于中间件实现网关NAPT功能的方法及装置。
【背景技术】
[0002]网络地址端口转换(Network Address Port Translation,简称 NAPT)是一种将多个私有内部IP地址映射为一个合法公网IP地址的转换技术,也就是〈内部地址+内部端口〉与〈外部地址+外部端口〉之间的转换。接入网关设备一般具备这种NAPT功能,以用于局域网与广域网之间的互联互通。
[0003]现有的实现NAPT功能的方法主要分为三类:一是在内核态下对操作系统的协议栈进行相应修改来实现NAPT功能,具有处理速度快和可靠性高等优点;二是在用户态下用代理软件来实现NAPT功能;三是在底层驱动中实现NAPT功能。第一种和第三种方法的缺陷在于NAPT功能与操作系统和底层驱动的耦合度大,第二种方法的缺陷在于NAPT功能扩
展性差。
[0004]现有技术中缺乏一种能够同时克服内核态下、用户态下和底层驱动中实现NAPT功能不足之处的基于中间件实现网关NAPT功能的方法。

【发明内容】

[0005]本发明提供一种基于中间件实现网关NAPT功能的方法及装置,以克服内核态下、用户态下和底层驱动中实现NAPT功能不足之处。
[0006]本发明的一个方面是提供一种基于中间件实现网关NAPT功能的方法,包括:
[0007]中间件获取数据包,并判断所述数据包是否为IP数据包;
[0008]若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系;若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备;
[0009]所述中间件将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
[0010]本发明的另一个方面是提供一种中间件,包括:
[0011]数据获取模块,用于获取数据包,并判断所述数据包是否为IP数据包;
[0012]查询模块,用于若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系;
[0013]处理模块,用于若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备;并将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
[0014]本发明的另一个方面是提供一种网关设备,包括所述的中间件、内核操作系统和底层驱动,所述中间件位于所述内核操作系统和所述底层驱动之间。
[0015]本发明提供的基于中间件实现网关NAPT功能的方法及装置,通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整。
【专利附图】

【附图说明】
[0016]图1为本发明实施例提供的基于中间件实现网关NAPT功能的方法流程图;
[0017]图2为本发明另一实施例提供的基于中间件实现网关NAPT功能的方法适用的信令图;
[0018]图3为本发明另一实施例提供的基于中间件实现网关NAPT功能的方法适用的数据结构图;
[0019]图4为本发明另一实施例中间件的处理模块执行基于中间件实现网关NAPT功能的方法的流程图;
[0020]图5为本发明另一实施例提供的中间件的结构图;
[0021]图6为本发明另一实施例提供的中间件的结构图;
[0022]图7为本发明另一实施例提供的网关设备的结构图。
【具体实施方式】
[0023]本发明实施例适用于在网关设备中实现NAPT功能的方法,具体为在网关设备的内核操作系统和底层驱动之间增加一个中间件,由中间件实现NAPT功能,图1为本发明实施例提供的基于中间件实现网关NAPT功能的方法流程图,具体步骤如下:
[0024]步骤S101、中间件获取数据包,并判断所述数据包是否为IP数据包;
[0025]中间件通过第三方软件函数包Libpcap和Libnet获取数据包,第三方软件函数包Libpcap和Libnet用于从底层驱动获取进入网关设备的数据包,中间件对获取到的数据包进行过滤,选择出目标MAC是网关MAC的数据包,并对目标MAC是网关MAC的数据包进行分析,判断是否为IP数据包。
[0026]步骤S102、若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系;若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备;
[0027]若中间件判断出所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则依据所述IP数据包携带的源IP与TCP报文或UDP报文携带的源端口号查询NAPT表是否存储有源IP与源端口号的对应关系,其中,NAPT表至少包括源IP、源端口号、修改后的源IP和修改后的源端口号,及对应关系,此外,NAPT表还包括目的端口号和目的IP。
[0028]源IP标识IP数据包进入网关之前携带的用户主机的IP地址;源端口号标识IP数据包进入网关之前,IP数据包携带的用户主机的端口号;修改后的源IP标识网关设备的IP地址,即IP数据包出网关时的源IP;修改后的源端口号标识中间件修改源端口号后的端口号,即IP数据包出网关时的源端口号,且不是同一用户主机同一端口发出的IP数据包出网关时携带的源端口号不相同;目的IP标识网络侧服务器的IP地址;目的端口号标识网络侧服务器的端口号;IP数据包携带的目的IP与目的端口号在经过网关时不发生改变。
[0029]若所述NAPT表中没有所述IP数据包携带的源IP与源端口号的对应关系,中间件将IP数据包携带的源IP修改成网关的IP地址,并修改IP数据包携带的源端口号,保证不是同一用户主机同一端口发出的IP数据包出网关时携带的源端口号不相同。
[0030]步骤S103、所述中间件将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
[0031]所述中间件将与IP数据包对应的源IP、源端口号、修改后的源IP和修改后的源端口号存储到所述NAPT表中,具体为在NAPT表中创建一个表项,所述表项包括源IP、源端口号、修改后的源IP、修改后的源端口号、目的IP和目的端口号组成的六元组。
[0032]本发明实施例通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整。
[0033]在上述实施例的基础上,步骤S103还包括若所述NAPT表中存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件从所述NAPT表中,获取与所述源IP与源端口号对应的修改后的源IP和修改后的源端口号,并将所述IP数据包携带的所述源IP与源端口号分别修改为所述修改后的源IP和修改后的源端口号。
[0034]当中间件接收到携带TCP报文或UDP报文的IP数据包后,查询获知NAPT表中存在所述IP数据包携带的源IP与源端口号的对应关系的表项,即中间件接收到了同一用户主机同一端口发出的IP数据包,则按照表项中所述IP数据包携带的源IP与源端口号对应的修改后的源IP和修改后的源端口号分别修改所述IP数据包中的源IP与源端口号。
[0035]步骤S102还包括若所述数据包是IP数据包,且所述IP数据包携带有ICMP报文,则所述中间件查询ICMP表中是否有所述IP数据包携带的源IP ;若所述ICMP表中没有所述IP数据包携带的源IP,则所述中间件修改所述ICMP报文携带的主题查询ID号,并将所述IP数据包携带的源IP存储到所述ICMP表中;若所述ICMP表中有所述IP数据包携带的源IP,则所述中间件修改所述ICMP报文携带的主题查询ID号。
[0036]所述中间件修改所述ICMP报文携带的主题查询ID号包括:所述中间件将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节。
[0037]当中间件接收到携带ICMP报文的IP数据包后,则查询ICMP表,若ICMP表中没有记录所述IP数据包携带的源IP,则中间件将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节,并将所述IP数据包携带的源IP存储到所述ICMP表中;若所述ICMP表中记录有所述IP数据包携带的源IP,则中间件直接将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节。[0038]本发明实施例通过对ICMP报文、TCP报文或UDP报文进行分类处理,中间件实现了 NAPT功能。
[0039]在上述实施例的基础上,所述中间件获取数据包,并判断所述数据包是否为IP数据包之后,还包括:若所述数据包是IP数据包,所述中间件将所述IP数据包对应的源MAC地址修改为包含所述中间件的设备的MAC,将所述IP数据包对应的目的MAC修改为下一跳接收设备的MAC ;若所述数据包是ARP数据包,则所述中间件将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中。
[0040]步骤SlOl之后,若中间件判断获知接收到的数据包是IP数据包,则将携带IP数据包的以太帧对应的源MAC地址修改为网关设备的MAC,依据网关设备中的转发表查找下一跳接收设备,并将以太帧对应的目的MAC修改为下一跳接收设备的MAC,以便网关设备转发IP数据包。若中间件判断获知接收到的数据包是ARP数据包,则将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中,而不对携带ARP数据包的以太帧进行MAC地址修改,即网关设备不转发ARP数据包。
[0041]在本发明实施例中,基于中间件实现网关NAPT功能的方法还包括:所述中间件对修改后的所述IP数据包进行校验更正,并转发所述修改后的所述IP数据包。
[0042]中间件校验更正修改后的所述IP数据包,并通过第三方软件函数包Libpcap和Libnet将校验更正后的IP数据包发送到底层驱动,由底层驱动对IP数据包进行转发。
[0043]本发明实施例通过中间件对MAC地址的修改、对ARP数据包的处理、校验更正IP数据包,以及转发IP数据包,进一步扩展了中间件的功能。
[0044]图2为本发明另一实施例提供的基于中间件实现网关NAPT功能的方法适用的信令图。图2所示的基于中间件实现网关NAPT功能的方法适用的信令图具体步骤如下:
[0045]步骤S201、第三方软件函数包从底层驱动获取数据包;
[0046]步骤S202、中间件中的数据获取模块通过第三方软件函数包获取数据包;
[0047]数据获取模块通过第三方软件函数包Libpcap循环捕获数据包,并选择出目的MAC是网关设备MAC的数据包。
[0048]步骤S203、数据获取模块向处理模块发送数据包;
[0049]数据获取模块将选择出的目的MAC是网关设备MAC的数据包向处理模块发送。
[0050]步骤S204、处理模块在存储模块中查询表项,修改数据包;
[0051 ] 处理模块在存储模块中查询的NAPT表、ICMP表和ARP表的结构如图3所示,处理模块依据表项内容修改数据包的具体流程如图4所示。
[0052]图3为本发明另一实施例提供的基于中间件实现网关NAPT功能的方法适用的数据结构图。存储模块中存储有NAPT表、ICMP表和ARP表,NAPT表存储有源IP、源端口号、修改后的源IP、修改后的源端口号、目的IP和目的端口号组成的六元组;ICMP表存储有源IP ;ARP表存储有源IP和源MAC,及对应关系;且NAPT表、ICMP表和ARP表均采用如图3所示的哈希表和链表相结合的形式,若干个链表头组成一个哈希表,每个链表头指向一个独立的链表。
[0053]图4为本发明另一实施例中间件的处理模块执行基于中间件实现网关NAPT功能的方法的流程图,具体步骤如下:
[0054]步骤S400、处理模块接收数据包;[0055]步骤S401、处理模块中的链路层判断数据包是否为IP数据包,若是转到步骤S405,若否转到步骤S402 ;
[0056]步骤S402、处理模块中的链路层判断数据包是否为ARP数据包,若是转到步骤S404,若否转到步骤S403 ;
[0057]步骤S403、丢弃数据包;
[0058]步骤S404、处理模块更新ARP表;
[0059]处理模块中的链路层依据数据包的帧格式选择出IP数据包或ARP数据包,丢弃除IP数据包和ARP数据包之外的数据包,若数据包是ARP数据包,则处理模块将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中。
[0060]步骤S405、处理模块中的链路层修改承载IP数据包的以太帧的源MAC和目的MAC ;
[0061]步骤S406、处理模块中的网络层判断IP数据包是否为TCP报文或UDP报文,若是转到步骤S411,若否转到步骤S407 ;
[0062]步骤S407、处理模块中的网络层判断IP数据包是否为ICMP报文,若是转到步骤S408,若否转到步骤S403 ;
[0063]步骤S408、处理模块查询ICMP表是否有ICMP报文对应的源IP,若是转到步骤S410,若否转到步骤S409 ;
[0064]步骤S409、处理模块修改所述ICMP报文携带的主题查询ID号,并更新ICMP表;
[0065]步骤S410、处理模块修改所述ICMP报文携带的主题查询ID号;
[0066]若数据包是IP数据包,则链路层依据转发表修改承载IP数据包的以太帧的源MAC和目的MAC,并将IP数据包上传到网络层,由网络层判断IP数据包是ICMP报文、TCP报文或m)P报文,若IP数据包携带有ICMP报文,则处理模块查询ICMP表,判断获知ICMP表中没有ICMP报文对应的源IP时,则修改所述ICMP报文携带的主题查询ID号,并将源IP存储到所述ICMP表中;若判断获知ICMP表中有ICMP报文对应的源IP,则直接修改所述ICMP报文携带的主题查询ID号。
[0067]步骤S411、处理模块查询NAPT表中是否有TCP报文或UDP报文对应的源IP与源端口号,若是转到步骤S412,若否转到步骤S413 ;
[0068]步骤S412、处理模块的网络层修改源IP,传输层修改源端口号,并更新NAPT表;
[0069]步骤S413、处理模块的网络层修改源IP,传输层修改源端口号。
[0070]若IP数据包携带有TCP报文或UDP报文,则处理模块查询NAPT表,判断获知NAPT表中没有TCP报文或UDP报文对应的源IP与源端口号的对应关系时,网络层将IP数据包的源IP修改成网关设备的IP地址,并将TCP报文或UDP报文上传到传输层,由传输层修改源端口号,若TCP报文具体为FTP报文,则传输层将FTP报文上传到应用层,由应用层修改FTP报文载荷信息中的源端口号,处理模块将TCP报文或UDP报文对应的源IP、源端口号、修改后的源IP和修改后的源端口号存储到所述NAPT表中;若判断获知NAPT表中有TCP报文或m)P报文对应的源IP与源端口号的对应关系时,网络层、传输层和应用层依据NAPT表中已有的表项分别修改源IP、源端口号。
[0071]步骤S205、处理模块通过校验更正模块校验更正数据包;
[0072]处理模块将上述步骤S409、S410修改的ICMP报文,步骤S412、S413修改的TCP报文或UDP报文通过校验更正模块进行校验更正。
[0073]步骤S206、处理模块向发送模块转发数据包;
[0074]处理模块将校验更正后的ICMP报文、TCP报文或UDP报文封装成以太帧,并转发到发送模块。
[0075]步骤S207、发送模块向第三方软件函数包转发数据包;
[0076]步骤S208、第三方软件函数包向底层驱动发送数据包。
[0077]发送模块通过第三方软件函数包Iibnet向底层驱动发送数据包。
[0078]本发明实施例通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整。
[0079]图5为本发明另一实施例提供的中间件的结构图。本发明实施例提供的中间件可以执行基于中间件实现网关NAPT功能的方法实施例提供的处理流程,如图5所示,中间件50包括数据获取模块51、查询模块52和处理模块53,其中,数据获取模块51用于获取数据包,并判断所述数据包是否为IP数据包;查询模块52用于若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系;处理模块53用于若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备;并将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
[0080]在本发明实施例的基础上,处理模块53还用于若所述NAPT表中存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件从所述NAPT表中,获取与所述源IP与源端口号对应的修改后的源IP和修改后的源端口号,并将所述IP数据包携带的所述源IP与源端口号分别修改为所述修改后的源IP和修改后的源端口号。
[0081]查询模块52还用于若所述数据包是IP数据包,且所述IP数据包携带有ICMP报文,则查询ICMP表中是否有所述IP数据包携带的源IP ;相应的,处理模块53用于若所述ICMP表中没有所述IP数据包携带的源IP,则修改所述ICMP报文携带的主题查询ID号,并将所述IP数据包携带的源IP存储到所述ICMP表中;若所述ICMP表中有所述IP数据包携带的源IP,则修改所述ICMP报文携带的主题查询ID号。
[0082]处理模块53具体用于将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节。
[0083]本发明实施例提供的中间件可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
[0084]本发明实施例通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整。
[0085]图6为本发明另一实施例提供的中间件的结构图。本发明实施例提供的中间件可以执行基于中间件实现网关NAPT功能的方法实施例提供的处理流程,如图6所示,处理模块53还用于若所述数据包是IP数据包,将所述IP数据包对应的源MAC地址修改为包含所述中间件的设备的MAC,将所述IP数据包对应的目的MAC修改为下一跳接收设备的MAC ;若所述数据包是ARP数据包,则将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中。
[0086]中间件50还包括校验更正模块61和发送模块62,其中,校验更正模块61用于对修改后的所述IP数据包进行校验更正;发送模块62用于转发所述修改后的所述IP数据包。
[0087]本发明实施例提供的中间件可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
[0088]本发明实施例通过中间件对MAC地址的修改、对ARP数据包的处理、校验更正IP数据包,以及转发IP数据包,进一步扩展了中间件的功能。
[0089]图7为本发明另一实施例提供的网关设备的结构图。本发明实施例提供的网关设备可以执行基于中间件实现网关NAPT功能的方法实施例提供的处理流程,如图7所示,网关设备70包括上述实施例所述的中间件50、内核操作系统71和底层驱动72,中间件50位于网关设备70的内核操作系统71和底层驱动72之间。
[0090]本发明实施例提供的网关设备可以执行基于中间件实现网关NAPT功能的方法实施例提供的处理流程。
[0091]综上所述,本发明实施例通过中间件实现NAPT功能,相比于内核态下和底层驱动中实现NAPT功能而言,降低了耦合度;相比于用户态下实现NAPT功能,中间件具有良好的功能可扩展性,能够进行NAPT功能调整;通过对ICMP报文、TCP报文或UDP报文进行分类处理,中间件实现了 NAPT功能;通过中间件对MAC地址的修改、对ARP数据包的处理、校验更正IP数据包,以及转发IP数据包,进一步扩展了中间件的功能。
[0092]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0093]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
[0094]本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0095]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种基于中间件实现网关NAPT功能的方法,其特征在于,包括: 中间件获取数据包,并判断所述数据包是否为IP数据包; 若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系;若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备; 所述中间件将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
2.根据权利要求1所述的方法,其特征在于,还包括: 若所述NAPT表中存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件从所述NAPT表中,获取与所述源IP与源端口号对应的修改后的源IP和修改后的源端口号,并将所述IP数据包携带的所述源IP与源端口号分别修改为所述修改后的源IP和修改后的源端口号。
3.根据权利要求1所述的方法,其特征在于,还包括: 若所述数据包是IP数据包,且所述IP数据包携带有ICMP报文,则所述中间件查询ICMP表中是否有所述IP数据包携带的源IP ; 若所述ICMP表中没有所述IP数据包携带的源IP,则所述中间件修改所述ICMP报文携带的主题查询ID号,并将所述IP数据包携带的源IP存储到所述ICMP表中; 若所述ICMP表中有所述IP数据包携带的源IP,则所述中间件修改所述ICMP报文携带的主题查询ID号。
4.根据权利要求3所述的方法,其特征在于,所述中间件修改所述ICMP报文携带的主题查询ID号包括: 所述中间件将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节。
5.根据权利要求1所述的方法,其特征在于,所述中间件获取数据包,并判断所述数据包是否为IP数据包之后,还包括: 若所述数据包是IP数据包,所述中间件将所述IP数据包对应的源MAC地址修改为包含所述中间件的设备的MAC,将所述IP数据包对应的目的MAC修改为下一跳接收设备的MAC ; 若所述数据 包是ARP数据包,则所述中间件将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括: 所述中间件对修改后的所述IP数据包进行校验更正,并转发所述修改后的所述IP数据包。
7.—种中间件,其特征在于,包括: 数据获取模块,用于获取数据包,并判断所述数据包是否为IP数据包; 查询模块,用于若所述数据包是IP数据包,且所述IP数据包携带有TCP报文或UDP报文,则所述中间件查询NAPT表中是否存在所述IP数据包携带的源IP与源端口号的对应关系; 处理模块,用于若所述NAPT表中不存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件分别修改所述IP数据包中的源IP与源端口号,以使修改后的源IP为所述中间件当前所处装置的IP,修改后的源端口号与所述NAPT表中存在的修改后的源端口号均不相同,以实现将所述修改后的数据包发送给外网设备;并将所述源IP、所述源端口号、所述修改后的源IP和所述修改后的源端口号的对应关系存储到所述NAPT表中。
8.根据权利要求7所述的中间件 ,其特征在于,所述处理模块还用于若所述NAPT表中存在所述IP数据包携带的源IP与源端口号的对应关系,则所述中间件从所述NAPT表中,获取与所述源IP与源端口号对应的修改后的源IP和修改后的源端口号,并将所述IP数据包携带的所述源IP与源端口号分别修改为所述修改后的源IP和修改后的源端口号。
9.根据权利要求7所述的中间件,其特征在于,所述查询模块还用于若所述数据包是IP数据包,且所述IP数据包携带有ICMP报文,则查询ICMP表中是否有所述IP数据包携带的源IP ; 相应的,所述处理模块用于若所述ICMP表中没有所述IP数据包携带的源IP,则修改所述ICMP报文携带的主题查询ID号,并将所述IP数据包携带的源IP存储到所述ICMP表中;若所述ICMP表中有所述IP数据包携带的源IP,则修改所述ICMP报文携带的主题查询ID号。
10.根据权利要求9所述的中间件,其特征在于,所述处理模块具体用于将所述ICMP报文携带的主题查询ID号修改为所述IP数据包携带的源IP的最后一个字节。
11.根据权利要求7所述的中间件,其特征在于,所述处理模块还用于若所述数据包是IP数据包,将所述IP数据包对应的源MAC地址修改为包含所述中间件的设备的MAC,将所述IP数据包对应的目的MAC修改为下一跳接收设备的MAC ;若所述数据包是ARP数据包,则将所述ARP数据包携带的源IP和源MAC,及对应关系存储到ARP表中。
12.根据权利要求7-11任一项所述的中间件,其特征在于,还包括: 校验更正模块,用于对修改后的所述IP数据包进行校验更正; 发送模块,用于转发所述修改后的所述IP数据包。
13.—种网关设备,其特征在于,包括如权利要求7-12任一项所述的中间件、内核操作系统和底层驱动,所述中间件位于所述内核操作系统和所述底层驱动之间。
【文档编号】H04L29/12GK104010050SQ201410240188
【公开日】2014年8月27日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】刘锋, 陈旭, 陈凌鹏, 徐桢, 刘凯 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1