CN107071034B - 一种数据包传输方法和系统 - Google Patents

一种数据包传输方法和系统 Download PDF

Info

Publication number
CN107071034B
CN107071034B CN201710261406.9A CN201710261406A CN107071034B CN 107071034 B CN107071034 B CN 107071034B CN 201710261406 A CN201710261406 A CN 201710261406A CN 107071034 B CN107071034 B CN 107071034B
Authority
CN
China
Prior art keywords
request data
data package
label
broker program
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201710261406.9A
Other languages
English (en)
Other versions
CN107071034A (zh
Inventor
康若鹏
范自道
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201710261406.9A priority Critical patent/CN107071034B/zh
Priority to US16/329,461 priority patent/US10979512B2/en
Priority to EP17906278.1A priority patent/EP3499845B1/en
Priority to PCT/CN2017/082715 priority patent/WO2018192007A1/zh
Publication of CN107071034A publication Critical patent/CN107071034A/zh
Application granted granted Critical
Publication of CN107071034B publication Critical patent/CN107071034B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Library & Information Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种数据包传输方法,所述方法包括:代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送所述带标签的请求数据包;本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口;对代理程序发送出去的数据包进行标签设置,以使得本地系统可根据标签区分来自应用和代理的请求数据包,并进行相应操作,避免数据包在本地的死循环。本发明还公开了一种数据包传输系统。

Description

一种数据包传输方法和系统
技术领域
本发明涉及网络技术领域,尤其涉及一种数据包传输方法和系统。
背景技术
随着互联网技术的不断发展,各种应用程序如雨后春笋般密集涌现。为了提供更好的用户体验,针对应用程序的网络加速服务也应运而生,以Android应用代理加速为例,可以分为主动代理和被动代理两种方式,主动代理是应用程序在发起网络请求时主动进行代理加速,被动代理,又称本地代理,是在系统层面通过某些手段将特定的请求数据包拦截至本地的加速服务程序,由本地代理程序做相应的加速控制后再将数据包重新发出去。
现有的被动代理中,主要是通过添加重定向规则,将应用数据包重定向到代理程序来实现,但在某些实际应用中,发现仅仅依靠重定向规则可能无法区分待加速应用与经代理程序处理后发出的数据包,代理程序发出的数据包将会再次被重定向至代理程序,造成数据包在系统内死循环。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种数据包传输方法和系统。所述技术方案如下:
一方面,一种数据包传输方法,所述方法包括:
代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送所述带标签的请求数据包;
本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。
进一步的,所述代理程序在为所述请求数据包设置标签的同时,为所述标签添加掩码。
进一步的,所述掩码的取值范围为0x8000000~0xfff00000。
进一步的,所述本地系统版本为Android 5.0及其以上版本。
进一步的,在所述代理程序发送所述带标签的请求数据包之前,所述代理程序判断所述请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。
进一步的,判断所述请求数据包是否需要进行加速的方法包含:先白名单校验,若校验成功则所述请求数据包需要加速;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是HTTP,则根据URL及预设规则判断是否需要加速。
进一步的,所述代理程序和所述应用程序运行在所述本地系统上。
进一步的,所述本地系统内核为Linux内核。
另一方面,一种数据包传输系统,所述系统包括终端设备、加速服务器和源站,所述终端设备的本地系统上运行有应用程序、代理程序;其中,所述代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送所述带标签的请求数据包;本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包至所述加速服务器或所述源站,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。
进一步的,所述代理程序在为所述请求数据包设置标签的同时,为所述标签添加掩码。
进一步的,所述掩码的取值范围为0x8000000~0xfff00000。
进一步的,所述本地系统版本为Android 5.0及其以上版本。
进一步的,在所述代理程序包含加速处理单元,在所述代理程序发送所述带标签的请求数据包之前,所述代理程序的加速处理单元,判断所述请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。
进一步的,所述代理程序的加速处理单元判断所述请求数据包是否需要进行加速的方法包含:先白名单校验,若校验成功则所述请求数据包需要加速;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是HTTP,则根据URL及预设规则判断是否需要加速。
进一步的,所述本地系统内核为Linux内核。
本发明实施例提供的技术方案带来的有益效果是:本发明实施例的数据包传输方法,代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送所述带标签的请求数据包;本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口;对代理程序发送出去的数据包进行标签设置,以使得本地系统可根据标签区分来自应用和代理的请求数据包,并进行相应操作,避免数据包在本地的死循环。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种数据包传输方法的流程图;
图2是本发明实施例二提供的一种数据包传输方法的流程图;
图3是本发明实施例三提供的一种数据包传输系统结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
第一实施例
参见图1所示,本发明第一实施例提供一种数据包传输方法,该数据包传输方法中涉及代理程序、应用程序及本地系统,其中应用程序是为用户提供具体业务服务的程序,例如浏览器、音乐视频服务、及其他功能性服务程序,用户通过对该些应用程序的操作来获取相应的服务;代理程序对应用程序发出的请求数据包进行处理,以使得享受网络加速服务的应用程序所发出的请求数据包能被转发到加速服务器;应用程序及代理程序均运行在本地系统上,本发明的实施例中,本地系统的内核为Linux内核,可以是Android系统,本实施例就是以Android系统为例。
本实施例中的数据包传输方法包括步骤A101~A103和步骤S101~S102,详述如下。
步骤A101:代理程序通过监听端口接收请求数据包。如上所述,代理程序需要对应用程序发出的请求数据包进行处理,故在代理程序初始化时,设置专门的监听端口,用于接收应用程序的请求数据包,例如,代理程序的监听端口设置为8123。
步骤A102:代理程序为所述请求数据包设置标签。具体的,代理程序接收到请求数据包后通过创建代理socket,并使用Linux的setsockopt()函数对socket设置标签,例如mark=0x12345678。
步骤A103:代理程序发送带标签的请求数据包。代理程序发送出的带标签的请求数据包将被本地系统接收。
步骤S101:本地系统接收所述代理程序和所述应用程序发出的请求数据包。本发明的实施例中,本地系统为Android系统,而Android系统的内核为Linux内核,众所周知,Netfilter是Linux内核中的一个软件框架,用于管理网络数据包。iptables是基于Netfilter基本架构实现的一个可扩展的的用户层数据包管理工具,大部分Linux系统都自带iptables模块,并通过它对网络数据包进行过滤、拦截、重定向等操作,从而实现系统防火墙等功能,本发明的实施例中,也是通过iptables对代理程序和应用程序发出的请求数据包进行接收。
步骤S102:匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。同样的,本地系统通过设置iptables mark标签匹配规则和重定向规则,对数据包中的标签进行匹配,若匹配成功,根据设置规则则直接转发该请求数据包,若匹配失败,则重定向该请求数据包至代理程序监听端口。例如,设置iptables mark标签匹配规则、重定向规则如下:
iptables-t nat-A OUTPUT-m mark--mark 0x12345678-j RETURN
iptables-t nat-A OUTPUT-p tcp-j REDIRECT--to-port 8123
第一条规则的作用是当数据包具有mark=0x12345678的标签时,数据包不被重定向,以系统默认方式处理,否则执行第二条规则;第二条规则的作用是将数据包重定向至代理程序的监听端口8123端口。
如此一来,代理程序所发出的请求数据包均包含Mark标签,本地系统可通过Mark标签匹配来区分应用程序和代理程序,并进行分别处理,从而避免了背景技术中描述的死循环现象。
可以理解的是,虽然本实施例的图示中,步骤A103和S101之间是先后关系,但在实际应用中,步骤A101~A103为代理程序内部的执行步骤,而步骤S101~S102为本地系统内部执行的步骤,各步骤之间先后关系并非全部如此明确,故图示仅用于对本实施例进行示意说明,本发明并不以此为限。
更进一步的,本实施例中的数据包传输方法更包含步骤:代理程序判断请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。如此一来,当本地系统接收到需要加速的请求数据包时,根据重定向规则,将会按照该请求数据包的目的端口和目的IP地址转发该请求数据包至加速服务器,加速服务器为其提供相应的网络加速服务。该步骤设置在步骤A103之前。
具体而言,由于本地系统上可能安装了多种应用程序,然而有些应用程序并没有购买相应的加速服务,故代理程序应对需要加速的应用程序进行判断,具体的判断方法包含:先白名单校验,若校验成功则判断所述请求数据包需要加速,其中所述白名单中保存了需要加速的应用程序包名信息;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是HTTP,则根据URL及预设规则判断是否需要加速。
如此一来,可实现对应用程序的分类处理,只对需要加速的应用程序进行处理。
第二实施例
参见图2所示,本发明第二实施例提供一种数据包传输方法,该数据包传输方法中涉及代理程序、应用程序及本地系统,其中应用程序是为用户提供具体业务服务的程序,例如浏览器、音乐视频服务、及其他功能性服务程序,用户通过对该些应用程序的操作来获取相应的服务;代理程序对应用程序发出的请求数据包进行处理,以使得享受网络加速服务的应用程序所发出的请求数据包能被转发到加速服务器;应用程序及代理程序均运行在本地系统上,本发明的实施例中,本地系统的内核为Linux内核,可以是Android系统,本实施例就是以Android系统为例。
本实施例中的数据包传输方法包括步骤A201~A203和步骤S201~S202,详述如下。
步骤A201:代理程序通过监听端口接收请求数据包。如上所述,代理程序需要对应用程序发出的请求数据包进行处理,故在代理程序初始化时,设置专门的监听端口,用于接收应用程序的请求数据包,例如,代理程序的监听端口设置为8123。
步骤A202:代理程序为所述请求数据包设置标签,并为所述标签添加掩码。具体的,代理程序接收到请求数据包后通过创建代理socket,并使用Linux的setsockopt()函数对socket设置标签,并为该标签添加掩码,例如mark=0x12345678/0xfff00000。
步骤A203:代理程序发送带掩码标签的请求数据包。代理程序发送出的带标签的请求数据包将被本地系统接收。
步骤S201:本地系统接收所述代理程序和所述应用程序发出的请求数据包。本发明的实施例中,本地系统为Android系统,而Android系统的内核为Linux内核,众所周知,Netfilter是Linux内核中的一个软件框架,用于管理网络数据包。iptables是基于Netfilter基本架构实现的一个可扩展的的用户层数据包管理工具,大部分Linux系统都自带iptables模块,并通过它对网络数据包进行过滤、拦截、重定向等操作,从而实现系统防火墙等功能,本发明的实施例中,也是通过iptables对代理程序和应用程序发出的请求数据包进行接收。
步骤S202:匹配所述请求数据包中的掩码标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。同样的,本地系统通过设置iptables掩码标签匹配规则和重定向规则,对数据包中的掩码标签进行匹配,若匹配成功,根据设置规则则直接转发该请求数据包,若匹配失败,则重定向该请求数据包至代理程序监听端口。例如,设置iptables掩码标签匹配规则、重定向规则如下:
iptables-t nat-A OUTPUT-m mark--mark 0x12345678/0xfff00000-j RETURN
iptables-t nat-A OUTPUT-p tcp-j REDIRECT--to-port 8123
第一条规则的作用是当数据包具有mark=0x12345678/0xfff00000的掩码标签时,数据包不被重定向,以系统默认方式处理,否则执行第二条规则;第二条规则的作用是将数据包重定向至代理程序的监听端口8123端口。
如此一来,代理程序所发出的请求数据包均包含Mark标签,本地系统可通过Mark标签匹配来区分应用程序和代理程序,并进行分别处理,从而避免了背景技术中描述的死循环现象。
不仅如此,由于请求数据包中的标签均带有掩码,可避免请求数据包在传输过程中,标签被修改后无法正确匹配的问题,具体而言,在Android 5.0及其以上版本的系统中,系统中的Netd会对数据包中的标签进行篡改,若标签中没有增加掩码,则无法正确进行匹配,经仔细研究发现,Netd对于一个32bits的标签的篡改,仅会影响其低20bits,故本实施例中,为标签打上掩码,并同时修改匹配规则,对未被篡改的部分进行匹配,从而避免了标签被篡改后无法正确匹配的问题,相应的,在Android 5.0及其以上版本的系统中,掩码的取值范围为0x8000000~0xfff00000。可以理解的是,在一些其他版本的系统下,若符合相应规则,也可以根据本实施例的处理思路进行处理,本发明并不以此为限。
可以理解的是,虽然本实施例的图示中,步骤A203和S201之间是先后关系,但在实际应用中,步骤A201~A203为代理程序内部的执行步骤,而步骤S201~S202为本地系统内部执行的步骤,各步骤之间先后关系并非全部如此明确,故图示仅用于对本实施例进行示意说明,本发明并不以此为限。
更进一步的,本实施例中的数据包传输方法更包含步骤:代理程序判断请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。如此一来,当本地系统接收到需要加速的请求数据包时,根据重定向规则,将会按照该请求数据包的目的端口和目的IP地址转发该请求数据包至加速服务器,加速服务器为其提供相应的网络加速服务。该步骤设置在步骤A203之前。
具体而言,由于本地系统上可能安装了多种应用程序,然而有些应用程序并没有购买相应的加速服务,故代理程序应对需要加速的应用程序进行判断,具体的判断方法包含:先白名单校验,若校验成功则判断所述请求数据包需要加速,其中所述白名单中保存了需要加速的应用程序包名信息;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是HTTP,则根据URL及预设规则判断是否需要加速。
如此一来,可实现对应用程序的分类处理,只对需要加速的应用程序进行处理。
第三实施例
参见图3所示,本发明第三实施例提供一种数据包传输系统,所述数据包传输系统包括终端设备、加速服务器和源站,所述终端设备的本地系统上运行有应用程序、代理程序。
具体而言,应用程序是为用户提供具体业务服务的程序,例如浏览器、音乐视频服务、及其他功能性服务程序,用户通过对该些应用程序的操作来获取相应的服务。应用程序接收用户操作,并发出相应的请求数据包,该请求数据包将经过代理程序和本地系统,最终发送至加速服务器或者源站进行回源,以响应用户请求。
代理程序对应用程序发出的请求数据包进行处理,以使得享受网络加速服务的应用程序所发出的请求数据包能被转发到加速服务器。代理程序通过监听端口接收请求数据包,为请求数据包设置标签后,发送所述带标签的请求数据包。
详细而言,代理程序初始化时,设置专门的监听端口,用于接收应用程序的请求数据包,例如,代理程序的监听端口设置为8123。在接收到请求数据包后,通过创建代理socket,并使用Linux的setsockopt()函数对socket设置标签,例如mark=0x12345678。代理程序发送出的带标签的请求数据包将被本地系统接收。
值得注意的是,在本发明的一些其他较佳实施例中,代理程序为请求数据包添加的标签为带有掩码的标签,例如mark=0x12345678/0xfff00000,不仅可以实现标签同样的功能,还能防止在一些版本的系统中,标签被篡改的而无法正确匹配的问题。
例如在Android 5.0及其以上版本的系统中,系统中的Netd会对数据包中的标签进行篡改,若标签中没有增加掩码,则无法正确进行匹配,经仔细研究发现,Netd对于一个32bits的标签的篡改,仅会影响其低20bits,故本实施例中,为标签打上掩码,并同时修改匹配规则,对未被篡改的部分进行匹配,从而避免了标签被篡改后无法正确匹配的问题,相应的,在Android 5.0及其以上版本的系统中,掩码的取值范围为0x8000000~0xfff00000。可以理解的是,在一些其他版本的系统下,若符合相应规则,也可以根据本实施例的处理思路进行处理,本发明并不以此为限。
代理程序在发送带标签的请求数据包之前,还需判断请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。如此一来,当本地系统接收到需要加速的请求数据包时,根据重定向规则,将会按照该请求数据包的目的端口和目的IP地址转发该请求数据包至加速服务器,加速服务器为其提供相应的网络加速服务。而不需要加速的请求数据包将根据原始端口及IP地址被本地系统转发至源站。
具体而言,由于本地系统上可能安装了多种应用程序,然而有些应用程序并没有购买相应的加速服务,故代理程序应对需要加速的应用程序进行判断,具体的判断方法包含:先白名单校验,若校验成功则判断所述请求数据包需要加速,其中所述白名单中保存了需要加速的应用程序包名信息;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是HTTP,则根据URL及预设规则判断是否需要加速。
如此一来,可实现对应用程序的分类处理,只对需要加速的应用程序进行处理。
本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包至所述加速服务器或所述源站,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。
本发明的实施例中,本地系统为Android系统,而Android系统的内核为Linux内核,众所周知,Netfilter是Linux内核中的一个软件框架,用于管理网络数据包。iptables是基于Netfilter基本架构实现的一个可扩展的的用户层数据包管理工具,大部分Linux系统都自带iptables模块,并通过它对网络数据包进行过滤、拦截、重定向等操作,从而实现系统防火墙等功能,本发明的实施例中,也是通过iptables对代理程序和应用程序发出的请求数据包进行接收。
同样的,本地系统通过设置iptables标签匹配规则和重定向规则,对数据包中的标签进行匹配,若匹配成功,根据设置规则则直接转发该请求数据包,若匹配失败,则重定向该请求数据包至代理程序监听端口,可以理解的是,在本发明的实施例中,本地系统在设置iptables标签匹配规则时所设置的标签与代理程序为请求数据包设置的标签相同。以带有掩码的标签为例,设置iptables标签匹配规则、重定向规则如下:
iptables-t nat-A OUTPUT-m mark--mark 0x12345678/0xfff00000-j RETURN
iptables-t nat-A OUTPUT-p tcp-j REDIRECT--to-port 8123
第一条规则的作用是当数据包具有mark=0x12345678/0xfff00000的掩码标签时,数据包不被重定向,以系统默认方式处理,否则执行第二条规则;第二条规则的作用是将数据包重定向至代理程序的监听端口8123端口。
如此一来,代理程序所发出的请求数据包均包含Mark标签,本地系统可通过Mark标签匹配来区分应用程序和代理程序,并进行分别处理,从而避免了背景技术中描述的死循环现象。
不仅如此,由于请求数据包中的标签均带有掩码,可避免请求数据包在传输过程中,标签被修改后无法正确匹配的问题,具体而言,在Android 5.0及其以上版本的系统中,系统中的Netd会对数据包中的标签进行篡改,若标签中没有增加掩码,则无法正确进行匹配,经仔细研究发现,Netd对于一个32bits的标签的篡改,仅会影响其低20bits,故本实施例中,为标签打上掩码,并同时修改匹配规则,对未被篡改的部分进行匹配,从而避免了标签被篡改后无法正确匹配的问题,相应的,在Android 5.0及其以上版本的系统中,掩码的取值范围为0x8000000~0xfff00000。可以理解的是,在一些其他版本的系统下,若符合相应规则,也可以根据本实施例的处理思路进行处理,本发明并不以此为限。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种数据包传输方法,其特征在于,所述方法包括:
代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送带标签的请求数据包;所述代理程序在为所述请求数据包设置标签的同时,为所述标签添加掩码;所述掩码的取值范围为0x8000000~0xfff00000;
本地系统接收所述代理程序和应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。
2.根据权利要求1所述的数据包传输方法,其特征在于,所述本地系统版本为Android5.0及其以上版本。
3.根据权利要求1所述的数据包传输方法,其特征在于,在所述代理程序发送所述带标签的请求数据包之前,所述代理程序判断所述请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。
4.根据权利要求3所述的数据包传输方法,其特征在于,判断所述请求数据包是否需要进行加速的方法包含:先白名单校验,若校验成功则判断所述请求数据包需要加速;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是,则根据URL及预设规则判断是否需要加速。
5.根据权利要求1所述的数据包传输方法,其特征在于,所述代理程序和所述应用程序运行在所述本地系统上。
6.根据权利要求1所述的数据包传输方法,其特征在于,所述本地系统内核为Linux内核。
7.一种数据包传输系统,其特征在于,所述系统包括终端设备、加速服务器和源站,所述终端设备的本地系统上运行有应用程序、代理程序;其中,所述代理程序通过监听端口接收请求数据包,为所述请求数据包设置标签后,发送带标签的请求数据包,所述代理程序在为所述请求数据包设置标签的同时,为所述标签添加掩码,所述掩码的取值范围为0x8000000~0xfff00000;本地系统接收所述代理程序和所述应用程序发出的请求数据包,匹配所述请求数据包中的标签,若匹配成功,则直接转发所述请求数据包至所述加速服务器或所述源站,若匹配失败,则重定向所述请求数据包至所述代理程序监听端口。
8.根据权利要求7所述的数据包传输系统,其特征在于,所述本地系统版本为Android5.0及其以上版本。
9.根据权利要求7所述的数据包传输系统,其特征在于,所述代理程序包含加速处理单元,在所述代理程序发送所述带标签的请求数据包之前,所述代理程序的加速处理单元判断所述请求数据包是否需要进行加速,若需要则修改所述请求数据包的目的端口和目的IP地址至加速服务器。
10.根据权利要求9所述的数据包传输系统,其特征在于,所述代理程序的加速处理单元判断所述请求数据包是否需要进行加速的方法包含:先白名单校验,若校验成功则所述请求数据包需要加速;若校验失败,则判断所述请求数据包是否为HTTP请求的数据包,如果是,则根据URL及预设规则判断是否需要加速。
11.根据权利要求7所述的数据包传输系统,其特征在于,所述本地系统内核为Linux内核。
CN201710261406.9A 2017-04-20 2017-04-20 一种数据包传输方法和系统 Expired - Fee Related CN107071034B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710261406.9A CN107071034B (zh) 2017-04-20 2017-04-20 一种数据包传输方法和系统
US16/329,461 US10979512B2 (en) 2017-04-20 2017-05-02 Method and system of data packet transmission
EP17906278.1A EP3499845B1 (en) 2017-04-20 2017-05-02 Data packet transmission method and system
PCT/CN2017/082715 WO2018192007A1 (zh) 2017-04-20 2017-05-02 一种数据包传输方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710261406.9A CN107071034B (zh) 2017-04-20 2017-04-20 一种数据包传输方法和系统

Publications (2)

Publication Number Publication Date
CN107071034A CN107071034A (zh) 2017-08-18
CN107071034B true CN107071034B (zh) 2019-10-11

Family

ID=59600454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710261406.9A Expired - Fee Related CN107071034B (zh) 2017-04-20 2017-04-20 一种数据包传输方法和系统

Country Status (4)

Country Link
US (1) US10979512B2 (zh)
EP (1) EP3499845B1 (zh)
CN (1) CN107071034B (zh)
WO (1) WO2018192007A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107623634A (zh) * 2017-10-12 2018-01-23 网宿科技股份有限公司 业务流量路由方法及其系统和移动电子设备
CN109450991A (zh) * 2018-10-19 2019-03-08 网宿科技股份有限公司 基于移动应用的数据传输加速方法、相关设备和加速系统
CN109756474B (zh) * 2018-11-23 2021-02-05 国电南瑞科技股份有限公司 一种电力调度自动化系统的服务跨区域调用方法及装置
US11228657B2 (en) * 2019-12-03 2022-01-18 Red Hat, Inc. Hybrid proxying with user space hold
CN111510478B (zh) * 2020-04-07 2022-06-24 支付宝(杭州)信息技术有限公司 请求处理方法、装置、系统及电子设备
CN112583661B (zh) * 2020-12-02 2022-09-02 广州朗国电子科技股份有限公司 对不同网络共享方法、装置、存储介质及一体机设备
CN113507393B (zh) * 2021-09-08 2021-12-07 腾讯科技(深圳)有限公司 数据加速传输方法、装置、计算机设备和存储介质
CN114285794B (zh) * 2021-12-22 2023-08-18 网宿科技股份有限公司 报文转发控制方法、报文传输网络、电子设备及存储介质
CN114710548B (zh) * 2022-03-22 2024-04-05 阿里巴巴(中国)有限公司 报文转发方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245464A (zh) * 2015-08-27 2016-01-13 北京华夏创新科技有限公司 一种基于安卓系统的网络加速方法
CN105791315A (zh) * 2016-04-25 2016-07-20 网宿科技股份有限公司 一种udp协议加速方法和系统
CN106130997A (zh) * 2016-06-30 2016-11-16 网宿科技股份有限公司 流量引导的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098172A (en) 1997-09-12 2000-08-01 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with proxy reflection
US6728885B1 (en) * 1998-10-09 2004-04-27 Networks Associates Technology, Inc. System and method for network access control using adaptive proxies
US8943304B2 (en) * 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US8305896B2 (en) * 2007-10-31 2012-11-06 Cisco Technology, Inc. Selective performance enhancement of traffic flows
KR20130109148A (ko) * 2010-09-24 2013-10-07 프라발라 인코포레이티드 멀티 인터페이스 시스템 내의 로컬 네트워크 자원들에 액세스
CN102438016B (zh) 2011-12-13 2015-07-22 北京星网锐捷网络技术有限公司 获知报文所属进程的方法、访问控制方法、装置及设备
CN102594877B (zh) 2012-01-19 2015-08-12 网宿科技股份有限公司 结合重定向下载请求和代理服务加速网络服务的方法、系统
CN103974339B (zh) * 2013-01-28 2018-01-16 华为技术有限公司 一种数据缓存的方法和装置
US9241044B2 (en) * 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9513926B2 (en) * 2014-01-08 2016-12-06 Cavium, Inc. Floating mask generation for network packet flow
JP2017509074A (ja) 2014-03-04 2017-03-30 モボファイルズ インク. ディービーエー モボライズ 動的キャッシュ割当およびネットワーク管理

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245464A (zh) * 2015-08-27 2016-01-13 北京华夏创新科技有限公司 一种基于安卓系统的网络加速方法
CN105791315A (zh) * 2016-04-25 2016-07-20 网宿科技股份有限公司 一种udp协议加速方法和系统
CN106130997A (zh) * 2016-06-30 2016-11-16 网宿科技股份有限公司 流量引导的方法和装置

Also Published As

Publication number Publication date
CN107071034A (zh) 2017-08-18
US20190260837A1 (en) 2019-08-22
EP3499845B1 (en) 2020-11-25
EP3499845A1 (en) 2019-06-19
WO2018192007A1 (zh) 2018-10-25
EP3499845A4 (en) 2019-11-06
US10979512B2 (en) 2021-04-13

Similar Documents

Publication Publication Date Title
CN107071034B (zh) 一种数据包传输方法和系统
US11075985B2 (en) Early action on deploying and executing functions in a serverless environment
CN110535831B (zh) 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质
US11381629B2 (en) Passive detection of forged web browsers
CN110351156B (zh) 一种测试方法和装置
CN109996307B (zh) 一种数据路由方法以及终端
US9397901B2 (en) Methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device that emulates multiple application servers
CN108305170A (zh) 基于区块链的外部服务访问方法、系统、设备及存储介质
US20040122967A1 (en) Method and apparatus for managing packet flows for multiple network services
CN110719215B (zh) 虚拟网络的流信息采集方法及装置
CN106790221A (zh) 一种英特网协议安全IPSec协议加密方法和网络设备
US20230118176A1 (en) Data transmission method and apparatus, computer-readable storage medium, electronic device, and computer program product
EP3128713B1 (en) Page push method and system
US20220217582A1 (en) User plane replicator
CN103931162A (zh) 处理业务的方法和网络设备
CN110278094A (zh) 链路恢复方法及装置、系统、存储介质、电子装置
CN108337163A (zh) 用于汇聚链路的方法和装置
CN103152216B (zh) 一种互联网中系统的测试方法和装置
CN109783409A (zh) 用于处理数据的方法和装置
CN106059724B (zh) 一种报文传输方法和装置
CN112383489A (zh) 一种网络数据流量转发方法和装置
CN109587087A (zh) 一种报文处理方法及系统
CN108833418A (zh) 用于防御攻击的方法、装置和系统
CN113556742B (zh) 一种网络架构及分流策略配置方法
US20230419067A1 (en) ENHANCED QUICK RESPONSE (qr) CODE SCAN SECURITY

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20191011