网关设备上缓存及转发数据包的方法及网关设备的制作方法

文档序号:7693176阅读:175来源:国知局
专利名称:网关设备上缓存及转发数据包的方法及网关设备的制作方法
技术领域
本发明属于数据通信领域,尤其涉及网关设备上緩存及转发数据包的方 法及网关设备。
背景技术
随着计算机网络的普及,网络安全已成为大众越来越关注的焦点。网络 攻击、病毒文件传播、垃圾邮件泛滥等,严重影响了正常业务的开展。运营 商、政府部门、企业用户等迫切需要防御设备以减小损失,于是各种网关如 防火墙、病毒过滤、邮件过滤等设备应运而生。与防火墙不同,病毒过滤与 邮件过滤网关需要依靠緩存数据包来实现其安全保护功能,如阻止病毒文件或垃圾邮件,对于经过^r测的数据包,还需要转发至原目的地。TCP协议提供一种面向连接的、可靠的字节流服务,客户端与服务器端在 彼此交换数据前必须先建立一个TCP连接。基于TCP协议的数据传输模式普遍 使用于数据传输应用中,Internet上文件传输、电子邮件等应用,在传输层 几乎都是采用TCP协议。TCP协议普遍使用滑动窗口协议,即发送方不必每发送一个数据包后就停 下来等待确认。首部中的窗口大小字段表明的是接收方希望接收的字节数, 发送方可以一次发送不大于窗口大小的字节数。该字段是2字节的无符号数, 能表示的最大值为65535,通过修改TCP选项还能增大。使用该协议可以加速 数据传输。在网关设备上緩存和转发数据包的一现有技术,是利用已有的TCP连接, 只緩存最近收到的若干个数据包,并保证缓存大小小于窗口大小。该方案包 括以下步骤(11) 预先设定需要緩存的TCP连接的四元组,包括源IP地址、源端口、目的IP地址、目的端口,并根据窗口大小设定数据包的最大緩存个数;(12) 接收并解析经过网关设备的数据包,提取出该数据包的四元组;步骤(12);(14) 判断当前四元组中已经緩存的数据包个数;(15) 如果小于设定值,緩存该数据包,并修改已经缓存的数据包个数, 回到步骤(12);(16) 如果等于设定值,緩存该数据包的同时,转发已緩存数据包中序号 字段最小的,回到步骤(12)。该方案在保证已緩存的数据包的个数少于窗口大小的情况下,接收方始 终能够收到新的数据包,于是会回复确认报文给发送方,发送方在收到确认 报文后便可以不间断的发送新数据包(字节),因此连接不会中断。发明人在实现本发明的过程中,发现上述现有技术存在以下缺陷11 )不能完全满足各种应用需要。由于缓存的数据包数量有限,在很多 应用中都存在限制。例如,应用在邮件过滤网关中,判断出当前邮件满足过 滤条件,需要删除或者在邮件标题中加入提示信息时,由于前面的数据包已 经放过,这些处理方法并不能实现。又比如,应用在病毒过滤网关中,当发 现某文件携带病毒时,可能已经放过了该文件的大部分。虽然可以不转发后 续的数据包给用户,用户接收到的是不完整或格式损坏的文件,但如果使用 文件修复工具进行修复,用户仍然有可能打开一个携带病毒的文件。12)可能对正常的TCP连接造成影响。TCP连接在建立时,都会指定该连 接上的最大数据包长度(Maxi咖m Segment Size,筒称MSS)。如果接收方的 窗口等于MSS,那么发送方的一个数据包就能够填满窗口。收到确认报文之前, 发送方不会继续发送新的数据包。由于数据包被网关设备緩存,接收方不会 回复确认报文,因此,TCP连接会在发送方的若干次重传之后中断。另外,如果緩存数据包的个数设定不当,导致緩存的长度超过窗口,也会造成同样的 后果。在网关设备上緩存和转发数据包的另一现有技术,是利用socket。 socket 封装了TCP协议栈,收到数据包时能主动回复确认报文,并能根据收到的确认 报文控制数据包的发送。具体实现是,当需要緩存的TCP连接经过网关时,并 不让它通过,而是利用socket,在网关与发送方、接收方之间,分别建立一 个TCP连接,并在两个连接之间交换数据。交换数据是指如果其中一个TCP连 接收到了携带净荷,或者携带重置(Reset,简称RST)标志位、终止(Finish, 简称FIN)标志位的数据包时,将净荷部分或有相同标志位的数据包交由另一 个TCP连接,转发至另一方,如果是确认报文则直接丟弃而不转发。通过分析 净荷,发现是需要緩存的数据包后暂不中转,即达到了緩存的目的。在该方 案中,发送方和接收方之间并不存在真正的连接,网关在其间起到了中转的 作用。该方案包括以下步骤(21) 预先设定需要緩存的TCP连接的四元组,包括源IP地址、源端口、目 的IP地址、目的端口;(22) 接收并解析经过网关设备的数据包,提取出该数据包的四元组;(23) 判断提取出的四元组是否等于预先设定的四元组,如果不是,回到步 骤(22);(24) 如果是连接建立数据包,丟弃,并在网关上新建socket,利用socket 对该数据包进行回复,同时新建与原接收方之间的另一个socket,如果建立 失败,则断掉与发送方之间的连接。回到步骤(22);(25) 如果数据包未携带净荷或RST、 FIN标志位,丟弃,回到步骤(22);(26) 分析净荷,如果緩存尚未开始,将此净荷或有相同标志位的数据包交 由另一个连接发送,否则暂不发送,等到緩存、处理完毕再发送。回到步骤 (22)。发明人在实现本发明的过程中,发现上述现有技术存在以下缺陷21) 对于每一个需要緩存的TCP连接,都需要在网关上新建两个socket, 占用内存、CPU等资源较多;对连接中每个携带净荷的数据包都回复后转发, 至少存在两次内存拷贝操作,即,先将净荷从一个连接的socket緩冲区拷贝 到内存,再从内存拷贝到另一个连接的socket緩冲区,增加了网关的处理, 严重降低了性能。22) 由于网关代替回复连接建立数据包,即使接收方并未开启相应服务, 发送方也会显示连接已经建立成功。网关与真正的接收方建立连接失败后, 才能通知发送方。此时,连接发起方的显示结果会是连接建立后又立即中断, 与正常的表现不符。23)由于socket封装了 TCP协议栈,不能通过传输层,因而不能达 到控制数据包緩存和提高转发速度的目的。发明内容本发明提供了 一种网关设备上緩存及转发数据包的方法及网关设备,以 实现在不影响正常连接的情况下,实现对需要缓存的数据包的高效緩存。本发明緩存及转发数据包的方法的实施例,包括网关设备确认第一设 备发送的数据包是否需要緩存,如果需要緩存,在当前TCP连接上向第一设 备回复确认报文,并緩存该数据包;网关设备将緩存的数据包转发至第二设 备,并拦截第二设备回复的确认报文。本发明网关设备的实施例,包括协议分析模块,确认报文回复模块、緩存模块及转发模块;协议分析模块,用于确认第一设备发送的数据包是否需要緩存,如果需要緩存,通知确认报文回复模块在当前TCP连接上向第一设备 回复确认报文,并通知緩存模块緩存该数据包;转发模块,用于将緩存模块 中缓存的数据包转发至第二设备,并拦截第二设备回复的确认报文。上述緩存及转发数据包的方法及网关设备的实施例中,网关设备对需要 緩存的数据包进行缓存,由于网关设备无需对所有经过网关设备的数据包进行緩存,降低了网关设备的处理负荷,实现高效的緩存所有需要缓存的数据 包,同时网关设备对需要緩存的数据包进行緩存并回复确认报文,由于网关 设备接收到需要緩存的数据包时,由网关设备及时向发送方回复确认报文,这样就可以保证接收方及时收到确认报文进行后续数据包的发送;另外网关设备将緩存的数据包转发到接收方时,拦截接收方回复的确认报文,由于网 关设备对接收方回复的针对緩存的数据包的确认报文进行拦截,而不回送至 接收方,这样可以避免由于接收方再次收到緩存的数据包的确认报文而进行后续报文的重发;综上分析,该实施例既降低了网关设备的处理负荷,高效 的緩存所有需要緩存的数据包,又不会对发送方与接收方之间正常的TCP连 接造成影响。


图1为本发明网关设备上緩存及转发数据包的方法实施例 一的流程图; 图2为本发明网关设备上緩存及转发数据包的方法实施例二的流程图; 图3为本发明网关设备上緩存及转发数据包的方法实施例三的流程图; 图4为本发明网关设备上緩存及转发数据包的方法实施例四的流程图; 图5为本发明网关设备上緩存及转发数据包的方法实施例五的信令流程图;图6为本发明网关设备上緩存及转发数据包的方法实施例六的信令流程图;图7为本发明网关设备上緩存及转发数据包的方法实施例七的信令流程图;图8为本发明网关设备实施例一的结构示意图; 图9为本发明网关设备实施例二的结构示意图; 图10为本发明网关设备实施例三的结构示意图; 图11为本发明网关设备实施例四的结构示意图;图12为本发明网关设备实施例五的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为本发明网关设备上緩存及转发数据包的方法实施例一的流程图。所述网关设备上緩存及转发数据包的方法包括步骤IOI、网关设备确认第一设备发送的数据包是否需要緩存,如果需要 緩存,在当前TCP连接上向第一设备回复确认报文,并缓存该数据包;步骤102、网关设备将缓存的数据包转发至第二设备,并拦截第二设备回 复的确认报文。该实施例中,网关设备对需要緩存的数据包进行缓存,由于网关设备无 需对所有经过网关设备的数据包进行緩存,降低了网关设备的处理负荷,实 现高效的缓存所有需要緩存的数据包;同时网关设备对需要緩存的数据包进 行緩存并回复确认报文,由于网关设备接收到需要緩存的数据包时,由网关 设备及时向发送方回复确认报文,这样就可以保证接收方及时收到确认报文 进行后续数据包的发送;另外网关设备将緩存的数据包转发到接收方时,拦 截接收方回复的确认报文,由于网关设备对接收方回复的针对緩存的数据包 的确认报文进行拦截,而不回送至接收方,这样可以避免由于接收方再次收 到緩存的数据包的确认报文而进行后续报文的重发;综上分析,该实施例既 降低了网关设备的处理负荷,高效的緩存所有需要緩存的数据包,又不会对 发送方与接收方之间正常的TCP连接造成影响。图2为本发明网关设备上緩存及转发数据包的方法实施例二的流程图。 该实施例与上一实施例的区别在于还包括上层应用按照预设需求对网关设 备中緩存的数据包进行处理,处理完毕后将经过处理的数据包进行转发。如 图2所示,所述方法包括步骤201、网关设备确认第一设备发送的数据包是否需要緩存,如果需要10緩存,在当前TCP连接上向第一设备回复确认报文,并緩存该数据包。步骤202、上层应用按照预设需求对网关设备中緩存的数据包进行处理。 步骤203、网关设备将緩存的数据包转发至第二设备,并拦截第二设备回 复的确认报文。该实施例中,由于上层应用按照预设需求能够直接对网关设备中所有緩 存的数据包进行处理,处理后再将緩存的数据包进行转发,该方法能够保证 对缓存的数据包的完整处理,尤其应用在邮件过滤网关以及病毒过滤网关等 中,能够保证对需要处理的缓存的数据包进行完整处理,从而真正体现邮件 过滤以及病毒过滤的功 育b。图3为本发明网关设备上緩存及转发数据包的方法实施例三的流程图。 该实施例中所述网关设备确认第一设备发送的数据包是否需要缓存具体为 分析当前TCP连接上的数据包是否出现緩存开始的特征或缓存结束的特征, 当出现緩存开始的特征时,确认当前TCP连接上第一设备发送的数据包需要 緩存;当出现緩存结束的特征时,确认当前TCP连接上第一设备发送的数据 包不需要緩存。如图3所示包括步骤301、网关设备判断当前TCP连接上的数据包是否出现緩存开始的特 征,当出现緩存开始的特征时,执行步骤302;否则,执行步骤303。步骤302、网关设备在当前TCP连接上向第一设备回复确认报文,并緩存 该数据包。步骤303、网关设备将当前TCP连接上的数据包转发至第二设备,然后返 回执行步骤301,继续判断当前TCP连接上的数据包是否出现》爰存开始的特征。步骤304、网关设备判断当前TCP连接上的数据包是否出现緩存结束的特 征,当出现緩存结束的特征时,执行步骤305;否则,执行步骤302。步骤305、停止緩存。图4为本发明网关设备上緩存及转发数据包的方法实施例四的流程图。 该实施例中,所述网关设备设有用于表示缓存开始状态或緩存结束状态的状态标志位信息。当网关设备中设有用于表示緩存开始状态或緩存结束状态的 状态标志位信息时,网关设备确认第一设备发送的数据包是否需要缓存还可 以具体为分析网关设备中的状态标志位信息是否为緩存开始状态或緩存结束状态,当状态标志位信息为緩存开始状态时,确认当前TCP连接上第一设 备发送的数据包需要緩存;当状态标志位信息为緩存结束状态时,确认当前 TCP连接上第一设备发送的数据包不需要緩存。如图4所示包括步骤401、网关设备判断网关设备中的状态标志位信息是否为緩存开始状 态,当状态标志位信息为緩存开始状态,执行步骤402;否则,执行步骤403。步骤402、网关设备在当前TCP连接上向第一设备回复确认报文,并缓存 该数据包。步骤403、网关设备将当前TCP连接上的数据包转发至第二设备,然后返 回执行步骤401,继续判断网关设备中的状态标志位信息是否为緩存开始状 态。步骤404、网关设备判断网关设备中的状态标志位信息是否为緩存结束状 态,当状态标志位信息为缓存开始状态,执行步骤405;否则,执行步骤402。 步骤4Q5、停止緩存。该实施例中,当网关设备接收到来自第一设备的数据包时,分析网关设 备中的状态标志位信息是否为緩存开始状态或緩存结束状态,当状态标志位 信息为緩存开始状态时,便可以直接确认当前TCP连接上第一设备发送的数 据包需要緩存,而无需通过判断TCP连接上出现緩存开始的特征时,来确定 当前TCP连接上第一设备发送的数据包需要緩存,从而能够进一步降低了网 关设备的处理负荷;当状态标志位信息为緩存结束状态时,便可以直接确认 当前TCP连接上第一设备发送的数据包无需緩存,而无需通过判断TCP连接 上出现緩存开始的特征,来确定当前TCP连接上第一设备发送的数句包不需 要緩存,从而能够进一步降低了网关设备的处理负荷。该实施例中的状态标志位信息可以人为设定,也可以由网关设备根据当前TCP连接上的数据包出现的緩存开始的特征或緩存结束的特征进行自动设定。网关设备根据当前TCP连接上的数据包出现的緩存开始的特征或缓存结 束的特征进行自动设定状态标志信息的步骤具体包括分析网关设备中的状态标志位信息是否为缓存开始状态或缓存结束状 态,若状态标志位信息为緩存开始状态时,则当网关设备检测到当前TCP连 接上出现緩存结束的特征时,将状态标志位信息转换为緩存结束状态;若状 态标志位信息为緩存结束状态时,则当网关设备^r测到当前TCP连接上出现 緩存开始的特征时,将状态标志位信息转换为緩存开始状态。TCP协议中,进 行通信的双方,其中连接的一方在收到新的数据包后,需要发送确认报文以 通知另一方。另一方根据接收的确认报文报文继续后续数据包的发送。具体 本发明的实施例,在数据包的緩存流程中,第一设备在向网关设备发送数据 包时,需要根据接收的确认报文继续后续的发送。本发明实施例通过在网关设备上实现TCP协议栈,利用已有的TCP连接, 对于不需要緩存的数据包,让其直接通过,而对于需要緩存的,由网关设备 冒充作为接收方的第二设备向作为发送方的第 一设备回复确认报文。等到緩 存、处理完毕后,向第二设备转发緩存的数据包,当第二设备收到网关设备 转发的緩存的数据包时,向网关设备发送确认报文,由于网关设备在緩存该 数据包时,已经向第一设备发送了确认报文,因此网关设备无需将第二设备 发送的关于该数据包的确认报文转给第一设备,第二设备发送的确认报文被 网关设备拦截而无需转发给第 一设备。确认报文的生成需要分析数据包的序号字段。发送方在发送时,序号字 段是依次递增的,但是在传输过程中,由于延时、路由等原因,导致到达网 关时可能失序。如果确认报文丟失导致发送方重传,还可能收到重复数据包。 因此网关设备接收到第一设备发送的当前数据包有三种类型顺序数据包当前数据包的序号字段等于已经连续接收的数据包的序号 字段;乱序数据包当前数据包的序号字段大于已经连续接收的数据包的序号 字段;重叠数据包,又包括部分重叠数据包和完全重叠数据包当前数据包的 序号字段小于已经连续接收的数据包的序号字段,但加上当前数据包的净荷 长度后超过已经连续接收的数据包的序号字段,为部分重叠;当前数据包的 序号字段小于已经连续接收的数据包的序号字段,但加上其净荷长度后仍未 超过已经连续接收的数据包的序号字段,为完全重叠。依据TCP协议,确认不同类型的数据包,确认报文是不同的。根据当前 数据包的以上不同类型,网关设备向第 一设备回复确认报文具体包括当网关设备接收到的当前数据包为顺序数据包或部分重叠数据包时,向 第 一设备回复当前数据包的确认报文;当网关设备接收到的当前数据包为乱序数据包或完全重叠数据包时,向 第一设备回复前一数据包的确认报文。其中对于完全重叠数据包,网关设备 在向第一设备回复前一数据包的确认报文之后还包括丟弃该完全重叠数据 包。上述网关设备上缓存及转发数据包方法实施例中,网关设备将緩存的数 据包转发至第二设备具体包括网关设备分析第二设备回复的确认报文,根 据滑动窗口协议,将緩存的数据包发送至第二设备直至緩存的数据包发送完 毕。按照滑动窗口协议,网关设备不必每发送一个緩存数据包后就停下来 等待确认,首部中的窗口大小字段表明的是第二设备希望接收的字节数, 网关设备一次发送给第二设备的数据包的长度不大于窗口大小的字节数。TCP协议中,进行通信的双方,其中连接的一方在收到新的数据包后, 需要发送确认报文以通知另一方。另一方根据接收的确认报文继续后续数 据包的发送。具体本发明的实施例,在緩存的数据包的转发流程中,网络 设备在向第二设备发送数据包时,需要根据接收的确认报文继续后续的发 送。本发明实施例通过在网关设备上实现TCP协议栈,利用已有的TCP连接,对于不需要缓存的数据包,让其直接通过,而对于需要緩存的,由网 关设备冒充第二设备向第一设备回复确认报文。等到緩存、处理完毕后, 再由网关设备冒充第 一设备,根据收到的确认报文来转发緩存的数据包,从而达到在不影响原TCP连接的情况下,緩存所有需要緩存的数据包的目 的。而且,緩存的是原始数据包,而不仅是净荷部分,因此除了各种具体 应用在修改净荷部分后,需要重新调整首部的序号、校验和等字段外,转 发时可以直接转发,不存在任何的内存拷贝。依据TCP协议,确认不同类型的数据包,确认报文是不同的。根据当 前数据包的以上不同类型,第二设备向网关设备发送确认报文时,也要判 断当前接收的数据包是顺序数据包、部分重叠数据包、乱序数据包、完全重 叠数据包中的哪种类型。第二设备向网关设备回复确认报文具体包括当第二设备接收到的当前数据包为顺序数据包或部分重叠数据包时,向 网关设备回复当前数据包的确认报文;当第二设备接收到的当前数据包为乱序数据包或完全重叠数据包时,向 网关设备回复前一数据包的确认报文。其中对于完全重叠数据包,第二设备 在向网关设备回复前一数据包的确认报文之后还包括丟弃该完全重叠数据 包。以上网关设备上緩存及转发数据包方法的实施例中,网关设备收到了第 二设备发送的某数据包的确认报文时,即得知第二设备收到了该数据包后, 可以将确认报文所确认的数据包进行释放以进一步降低了网络设备的缓存负 荷。各种基于TCP的常见协议,数据传输往往发生在一系列的命令交互之后。 例如P0P3协议,在正式接收邮件体之前,会先对接收者账户、密码等进行验 证。命令交互不需要緩存,不必由网关设备代替回复确认报文,可以直接放 过。以下分别通过基于具体的应用场景的网关设备上缓存及转发数据包的方法的实施例三、实施例四及实施例五来分别说明本发明网关设备上緩存及转 发数据包的方法。图5为本发明网关设备上緩存及转发数据包的方法实施例五的信令流程图。该实施例具体应用在邮件过滤网关中,以SMTP协议为例。[Caceres et al. 1991]说明,所有TCP连接中大约一半是用于简单邮件传送协议SMTP的。在最常见的SMTP协议交互中,有如下6个命令1、 helo:客户用于标 识自己。2、 mail from:标识邮件的发起人。3、 rcpt to:标识邮件的接收 方,如果有多个接收方,可以发多个此命令。4、 data:标识邮件内容开始发 送。5、"."标识邮件末尾。6、 quit:结束邮件的发送。对应以上命令,作为接收方的第二设备都有相应回复码。邮件正文部分 (Mail body)在data命令和".,,命令之间发送。该实施例中分别以data 的回复码作为緩存开始的特征,以及以"."命令作为緩存结束的特征。在一 个SMTP连接中,方案具体如下步骤(501 ) 、 data命令及之前的数据包直接通过邮件过滤网关发送到第 二设备,相应地,第二设备直接通过邮件过滤网关将data命令之前的数据包 的回复码及data命令的回复码回复给第一设备。邮件过滤网关在转送这些数 据时,相当于透传,不对这些数据进行任何操作。步骤(502 )、邮件过滤网关解析到緩存开始的特征,即data命令的回 复码,如"354",緩存开始。步骤(503 )、第一设备向邮件过滤网关发送邮件正文"Mail body"。步骤(504 )、邮件过滤网关向第一设备回复确认报文"Ack"。步骤(505 )、第一设备向邮件过滤网关发送緩存结束的特征,即"." 命令时,緩存结束。步骤(506 )、邮件过滤网关向第一设备回复确认报文"Ack"。步骤(507 )、检测邮件正文。步骤(508 )、邮件过滤网关向第二设备发送邮件正文"Mail body"。步骤(509 )、第二设备向邮件过滤网关回复确认报文"Ack"。图6为本发明网关设备上緩存及转发数据包的方法实施例六的信令流程 图。该实施例具体应用在邮件过滤网关中,以P0P3协议为例。与SMTP协议相 似,P0P3协议同样属于邮件协议,不同的是,P0P3协议是用于收取邮件的。在最常见的P0P3命令交互中,有如下4个命令1、 USER:指定邮箱。2、 PASS: 口令。3、 RETR:接收指定邮件。4、"."标识邮件末尾。与SMTP协议类似,对应以上命令,作为接收方的第二设备都有相应回复 码,邮件正文部分在RETR命令和"."命令之间发送,该实施例中以RETR的回 复码作为緩存开始的特征,以及以".,,命令作为緩存结束的特征。在一个P0P3 连接中,方案如下步骤(601) 、 RETR命令及之前的数据包直接通过邮件过滤网关发送至第二 设备,相应地,第二设备直接通过邮件过滤网关将RETR命令之前的数据包的 回复码及RETR命令的回复码回复给第一设备。邮件过滤网关在转送这些数据 时,相当于透传,不对这些数据进行任何操作。步骤(602)、邮件过滤网关解析到緩存开始的特征,即RETR命令的回复码 时,如RETR命令的"OK"回复码时,邮件过滤网关中状态标志位信息设置为 緩存开始状态,緩存开始,对之后接收的数据包进行緩存。步骤(603 )、第一设备向邮件过滤网关发送邮件正文"Mail body"。步骤(604 )、邮件过滤网关向第一设备回复确认报文"Ack"。由于邮 件过滤网关中的状态标志位信息为緩存开始状态,因此邮件过滤网关对第一 设备发送邮件正文"Mail body"进行緩存。步骤(605 )、第一设备向邮件过滤网关发送緩存结束的特征,即"." 命令。步骤(606 )、邮件过滤网关中状态标志位信息设置为緩存结束状态,缓 存结束,对之后的接收的数据包不进行緩存。步骤(607 )、邮件过滤网关向第一设备回复确认报文"Ack"。由于邮件过滤网关中的状态标志位信息为緩存开始状态,因此邮件过滤网关对第一设备发送邮件正文"Mail body"进行緩存。 步骤(608 ) 、 4企测邮件正文。步骤(609 )、邮件过滤网关向第二设备发送邮件正文"Mail body"。 步骤(610)、第二设备向邮件过滤网关回复确认报文"Ack"。 图7为本发明网关设备上緩存及转发数据包的方法实施例七的信令流程 图。该实施例具体应用在FTP过滤网关中,以FTP协议为例。FTP协议是用于 文件传输的协议。与邮件传输不同的是,FTP协议的命令交互和文件传输不是 由同一个TCP连接完成。用于文件传输的TCP连接又称为数据通道,在数据 通道中,只有文件传输,而没有命令交互。在数据通道时,緩存开始和緩存 结束的特征分别是第一个携带净荷的数据包和FIN报文。在FTP文件传输中, 方案如下步骤(701)、对于由数据通道建立的数据包在经过病毒网关时直接通过。 步骤(702)、解析到连接建立后第一个携带净荷的数据包时,緩存开始。 步骤(703 )、第一设备向病毒网关网关发送携带净荷的数据包。 步骤(704 )、病毒网关向第一设备回复确认报文"Ack"。 步骤(705 )、第一设备向病毒网关发送緩存结束的特征,如FIN报文。 步骤(706 )、病毒网关向第一设备回复确认报文"Ack"。 步骤(707 )、检测携带净荷的数据包。 步骤(708 )、病毒网关向第二设备发送携带净荷的数据包。 步骤(709 )、第二设备向病毒网关回复确认报文"Ack"。 本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读 取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述 的存储介质包括R0M、 RAM、磁碟或者光盘等各种可以存储程序代码的介质。 图8为本发明网关设备实施例一的结构示意图。包括协议分析模块100,确认报文回复模块200、緩存模块300及转发模块400。
协议分析模块100,用于确认第一设备发送的数据包是否需要缓存,如果 需要緩存,通知确认报文回复模块200在当前TCP连接上向第一设备回复确 认报文,并通知緩存模块2GG緩存该数据包;
转发模块400,用于将缓存模块30G中緩存的数据包转发至第二设备,并 拦截第二设备回复的确认报文。网关设备将緩存的数据包转发至第二设备具
体包括网关设备分析第二设备回复的确认报文,根据滑动窗口协议,当网 关设备接收到第二设备发送的窗口信息时,根据窗口信息中指定的希望接收 的字节数信息,将緩存模块中緩存的数据包转发至第二设备。
图9为本发明网关设备实施例二的结构示意图。该实施例中的网关设备 还包括上报模块500,与緩存模块300连接,用于将緩存模块300中緩存的数 据包上报至上层应用处理单元,所述上层应用处理单元用于按照预设需求对 网关设备中緩存的数据包进行处理。
图10为本发明网关设备实施例三的结构示意图。所述协议分析模块IOO 包括第一分析模块111,用于分析当前TCP连接上的数据包是否出现緩存开始 的特征或緩存结束的特征,当出现緩存开始的特征时,确认当前TCP连接上 第一设备发送的数据包需要緩存,当出现緩存结束的特征时,确认当前TCP 连接上第 一设备发送的数据包不需要缓存。
图11为本发明网关设备实施例四的结构示意图。该实施例中协议分析才莫 块100包括
状态标志位模块122,用于存储表示緩存开始状态或緩存结束状态的状态 标志位信息;
第二分析模块121,与状态标志位模块122连接,用于分析状态标志位模 块122中的状态标志位信息是否为緩存开始状态或緩存结束状态,当状态标 志位信息为緩存开始状态时,确认当前TCP连接上第一设备发送的数据包需 要緩存;当状态标志位信息为緩存结束状态时,确认当前TCP连接上第一设备发送的数据包不需要緩存。
图12为本发明网关设备实施例五的结构示意图。该实施例中转发模块4 0 0 包括释放模块401,用于当转发模块400接收到第二设备的确认报文时,释放 緩存模块300中该确认报文所确认的数据包。综上所述,本发明网关设备上 緩存及转发数据包的方法的实施例及网络设备的实施例,具有以下优点
(1 )通过在网关设备上实现TCP协议栈,利用原有TCP连接,由网关设 备对需要緩存的数据包进行回复,不需要緩存的数据包直接通过,并在緩存 完毕,根据作为接收方的第一设备的确认报文转发缓存数据包,从而在不影
响连接的情况下达到緩存的目的。其中,只对需要缓存的数据包进行緩存并 回复,而对不需要缓存的数据包,让其直接通过,能够减少网关的处理。
(2 )网关设备监控需要緩存的TCP连接,在收到需要缓存的数据包后, 代替接收方回复确认报文,使得作为发送方的第二设备误认为接收方已经收 到。在缓存、处理完毕后,代替发送方转发緩存的数据包,使得接收方误认 为是发送方在发送,緩存与转发过程中,发送方和接收方始终只有一个连接, 从而达到不影响连接的情况下实现緩存的目的。
(3)整个过程中,发送方和接收方之间始终只有一个连接。而且,緩存 的是原始lt据包,并不只是净荷部分,IP、 TCP首部和净荷部分始终存在,除 因上层处理导致的必要修改外,除了各种具体应用在修改净荷部分后,需要 重新调整首部的序号、校验和等字段外,可以直接转发,不存在任何的内存 拷贝,因此提高了转发效率。
最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其 限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术 人员应当理解其依然可以对前述各实施例所记载的技术方案进行^奮改,或 者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技
术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1、一种网关设备上缓存及转发数据包的方法,其特征在于,包括网关设备确认第一设备发送的数据包是否需要缓存,如果需要缓存,在当前TCP连接上向第一设备回复确认报文,并缓存该数据包;网关设备将缓存的数据包转发至第二设备,并拦截第二设备回复的确认报文。
2、 根据权利要求1所述的方法,其特征在于,网关设备对该数据包进行 緩存之后,将緩存的数据包转发至第二设备之前还包括上层应用按照预设 需求对网关设备中緩存的数据包进行处理。
3、 根据权利要求1所述的方法,其特征在于,所述网关设备确认第一设 备发送的数据包是否需要缓存具体为分析当前TCP连接上的数据包是否出现缓存开始的特征或緩存结束的特 征,当出现緩存开始的特征时,确认当前TCP连接上第一设备发送的数据包 需要緩存,当出现緩存结束的特征时,确认当前TCP连接上第一设备发送的 数据包不需要緩存。
4、 根据权利要求1所述的方法,其特征在于,所述网关设备设有用于表 示緩存开始状态或緩存结束状态的状态标志位信息,所述网关设备确认第一 设备发送的数据包是否需要緩存具体为分析网关设备中的状态标志位信息是否为緩存开始状态或緩存结束状 态,当状态标志位信息为緩存开始状态时,确认当前TCP连接上第一设备发 送的数据包需要緩存;当状态标志位信息为緩存结束状态时,确认当前TCP 连接上第 一设备发送的数据包不需要緩存。
5、 根据权利要求1所述的方法,其特征在于,网关设备向第一设备回复 确认报文具体包括当网关设备接收到的当前数据包为顺序数据包或部分重叠数据包时,向 第 一设备回复当前数据包的确认报文;当网关设备接收到的当前数据包为乱序数据包或完全重叠数据包时,向 第 一设备回复前一数据包的确认"^艮文。
6、 根据权利要求1所述的方法,其特征在于,所述网关设备将緩存的数 据包转发至第二设备具体包括网关设备分析第二设备回复的确认报文,才艮 据滑动窗口协议,将缓存的数据包发送至第二设备直至緩存的数据包发送完 毕。
7、 根据权利要求1所述的方法,其特征在于,网关设备接收到第二设备 的确认报文时,释放该确认报文所确认的数据包。
8、 一种网关设备,其特征在于,包括协议分析模块,确认报文回复模块、 緩存模块及转发模块;协议分析模块,用于确认第一设备发送的数据包是否需要緩存,如果需 要緩存,通知确认报文回复模块在当前TCP连接上向第一设备回复确认报文, 并通知緩存^t块缓存该数据包;转发模块,用于将緩存模块中緩存的数据包转发至第二设备,并拦截第 二设备回复的确认报文。
9、 根据权利要求8所述的网关设备,其特征在于,还包括上报模块,与 缓存模块连接,用于将緩存模块中緩存的数据包上报至上层应用处理单元, 所述上层应用处理单元用于按照预设需求对网关设备中緩存的数据包进行处 理。
10、 根据权利要求8所述的网关设备,其特征在于,所述协议分析模块 包括第一分析模块,用于分析当前TCP连接上的数据包是否出现緩存开始的 特征或緩存结束的特征,当出现緩存开始的特征时,确认当前TCP连接上第 一设备发送的数据包需要緩存,当出现緩存结束的特征时,确认当前TCP连 接上第 一设备发送的数据包不需要緩存。
11、 根据权利要求8所述的网关设备,其特征在于,所述协议分析模块 包括状态标志位模块,用于存储表示緩存开始状态或缓存结束状态的状态标志位信息;第二分析模块,与状态标志位模块连接,用于分析状态标志位模块中的 状态标志位信息是否为缓存开始状态或緩存结束状态,当状态标志位信息为 緩存开始状态时,确认当前TCP连接上第一设备发送的数据包需要緩存;当 状态标志位信息为緩存结束状态时,确认当前TCP连接上第一设备发送的数 据包不需要緩存。
12、根据权利要求8所述的网关设备,其特征在于,所述转发模块包括 释放模块,用于当转发模块接收到第二设备的确认报文时,释放缓存模块中 该确认才艮文所确认的^:据包。
全文摘要
本发明的实施例涉及网关设备上缓存及转发数据包的方法及网关设备。网关设备上缓存和转发数据包的方法的实施例包括网关设备确认第一设备发送的数据包是否需要缓存,如果需要缓存,在当前TCP连接上向第一设备回复确认报文,并缓存该数据包;网关设备将缓存的数据包转发至第二设备,并拦截第二设备回复的确认报文。网关设备的实施例包括协议分析模块,确认报文回复模块、缓存模块及转发模块。本发明的实施例中,网关设备只对需要缓存的数据包进行缓存,无需对所有经过网关设备的数据包进行缓存,从而降低了网关设备的处理负荷。
文档编号H04L12/66GK101247352SQ20081010235
公开日2008年8月20日 申请日期2008年3月20日 优先权日2008年3月20日
发明者魏玉璋 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1