[发明专利]一种无协议栈模式下针对TCP的中间人处理方法有效
申请号: | 201410601880.8 | 申请日: | 2014-10-30 |
公开(公告)号: | CN105635058B | 公开(公告)日: | 2019-05-17 |
发明(设计)人: | 郑艳伟;袁鼎;宋磊;叶晓舟;周渊斐 | 申请(专利权)人: | 中国科学院声学研究所;北京中科智网科技有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L1/00 |
代理公司: | 北京方安思达知识产权代理有限公司 11472 | 代理人: | 王宇杨;杨青 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 协议 模式 针对 tcp 中间人 处理 方法 | ||
1.一种无协议栈模式下针对TCP的中间人处理方法,该方法不采用TCP/IP协议栈,直接在网络层中对传输层和应用层的数据报文进行处理,包括:
截取发送端向接收端发送的TCP数据包后,对TCP数据包进行TCP/IP重组;然后修改该TCP数据包的载荷长度;修改TCP数据包的TCP首部信息,至少包括序列号、确认号;最后对TCP数据包进行缓存,并向接收端转发;
该方法进一步包括:
步骤S101、收到一个TCP数据包;
步骤S102、对该TCP数据包进行TCP/IP重组;
步骤S103、通过TCP重组的信息判断该TCP数据包是否为重传包,若是,则转到重传包处理流程S108,否则,转到正常包处理流程S104;
步骤S104、按照需求修改该数据包的载荷长度,载荷长度变化值记为offset,转步骤S105;
步骤S105、检查该TCP数据包是否捎带了确认号,若是,则转步骤S106,否则,转步骤S107;
步骤S106、提取该TCP数据包的五元组,进行反向哈希查找,对反向的TCP流进行确认,在反向缓存队列中删除已经确认过的TCP数据包,并修改TCP首部的确认号,转步骤S107;反向缓存队列是指反向哈希查找所查找到的队列
步骤S107、以TCP数据包的五元组进行正向哈希查找,修改TCP首部的序列号,将该包插入正向缓存队列的队尾,并向前转发,转步骤S111;正向缓存队列是指正向哈希查找所查找到的队列;
步骤S108、确定该TCP数据包为重传包,判断该重传包是否已经被TCP中间人处理模块确认,若是,则转步骤S109,否则,转步骤S110;
步骤S109、以该TCP数据包的五元组进行反向哈希查找,找到反向缓存队列中对应的TCP数据包,将缓存队列中对应的TCP数据包向后转发,丢弃原TCP数据包,转步骤S111;
步骤S110、以该TCP数据包的五元组进行正向哈希查找,找到正向缓存队列中对应的TCP数据包,将缓存队列中对应的TCP数据包向前转发,丢弃原TCP数据包,转步骤S111;
步骤S111、该TCP数据包处理结束;
所述反向哈希查找将TCP数据包的目的地址、目的端口、源地址、源端口、协议类型作为value进行哈希匹配;所述正向哈希查找将TCP数据包的源地址、源端口、目的地址、目的端口、协议类型作为value进行哈希匹配;所述向前转发表示转发的方向与源TCP数据包发往的方向相同;所述向后转发表示转发的方向与源TCP数据包发往的方向相反。
2.根据权利要求1所述的无协议栈模式下针对TCP的中间人处理方法,其特征在于,在步骤S107中,所述修改TCP首部的序列号按如下计算公式进行:
修改后的序列号=修改前的序列号+累计的offset;其中,累计的offset=队尾TCP包的累计的offset+该TCP数据包的offset。
3.根据权利要求2所述的无协议栈模式下针对TCP的中间人处理方法,其特征在于,在步骤S106中,修改TCP首部的确认号采用如下计算公式:修改后的确认号=期望确认号-累计的offset;其中,所述期望确认号=修改后的序列号+修改后的TCP载荷长度。
4.根据权利要求1所述的无协议栈模式下针对TCP的中间人处理方法,其特征在于,在步骤S103中,采用如下方法对TCP数据包是否为重传包进行判断:若该TCP数据包的序列号大于TCP/IP重组过程输出的最大的序列号值,则说明该TCP包不是重传包,否则,该TCP包是重传包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所;北京中科智网科技有限公司,未经中国科学院声学研究所;北京中科智网科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410601880.8/1.html,转载请声明来源钻瓜专利网。