CN112769794B - 一种数据转换方法及装置 - Google Patents

一种数据转换方法及装置 Download PDF

Info

Publication number
CN112769794B
CN112769794B CN202011614650.7A CN202011614650A CN112769794B CN 112769794 B CN112769794 B CN 112769794B CN 202011614650 A CN202011614650 A CN 202011614650A CN 112769794 B CN112769794 B CN 112769794B
Authority
CN
China
Prior art keywords
data packet
protocol stack
system protocol
address
virtual network
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.)
Active
Application number
CN202011614650.7A
Other languages
English (en)
Other versions
CN112769794A (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.)
Shenzhou Lvmeng Chengdu Technology Co ltd
Original Assignee
Shenzhou Lvmeng Chengdu 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 Shenzhou Lvmeng Chengdu Technology Co ltd filed Critical Shenzhou Lvmeng Chengdu Technology Co ltd
Priority to CN202011614650.7A priority Critical patent/CN112769794B/zh
Publication of CN112769794A publication Critical patent/CN112769794A/zh
Application granted granted Critical
Publication of CN112769794B publication Critical patent/CN112769794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5053Lease time; Renewal aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及网络技术领域,提供一种数据转换方法及装置,该方法应用于包括第一***协议栈、第二***协议栈和虚拟网络设备的客户端中,包括:在需要建立TCP连接时,所述虚拟网络设备将收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;在所述TCP连接建立后,所述第一***协议栈通过所述虚拟网络设备向所述第二***协议栈传输业务数据包,以及所述虚拟网络设备将收到的所述第一***协议栈发送的所述业务数据包的地址修改后发送给所述第二***协议栈,通过规避使用用户态协议栈,实现了网络层数据到传输层数据的转换,实现过程简单,易于优化。

Description

一种数据转换方法及装置
技术领域
本申请涉及网络技术领域,尤其涉及一种数据转换方法及装置。
背景技术
基于虚拟网卡做流量劫持、代理等时,从虚拟网卡接收或发送的均为网络层数据,为了获取、修改传输层数据,需要将网络层数据转换为传输层数据。
现有技术中,引入用户态协议栈实现网络层数据到传输层数据的转换。用户态协议栈实现了复杂的传输控制协议/网际协议(Transmission Control Protocol/InternetProtocol,TCP/IP)协议,将从虚拟网络设备TUN获取到的IP数据报作为输入数据,自身模拟TCP服务端的角色与输入数据进行TCP协议交互,如三次握手、四次挥手、流控算法等流程,然后再输出传输层数据。引入用户态协议栈,实现过程较为复杂,且无法利用操作***中TCP/IP的特性。
发明内容
本申请提供一种数据转换方法及装置,用以实现网络层数据到传输层数据的转换。
第一方面,本申请提供一种数据转换方法,包括第一***协议栈、第二***协议栈和虚拟网络设备的客户端中,所述方法包括:
所述第一***协议栈向所述客户端要访问的服务器传输数据时,所述第一***协议栈和所述第二***协议栈通过所述虚拟网络设备传输用于TCP连接的握手数据包,以及所述虚拟网络设备将收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;
在所述TCP连接建立后,所述第一***协议栈向所述服务器发送业务数据包,所述业务数据包被路由到所述虚拟网络设备,以及所述虚拟网络设备将收到的所述第一***协议栈发送的所述业务数据包的地址修改后发送给所述第二***协议栈。
在一些实施例中,所述第一***协议栈和所述第二***协议栈通过所述虚拟网络设备传输用于TCP连接的握手数据包,以及所述虚拟网络设备将收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈,包括:
所述第一***协议栈发送用于TCP连接的第一握手数据包,所述第一握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第一握手数据包并对所述第一握手数据包的地址修改后,发送给第二***协议栈;
所述第二***协议栈在收到所述第一握手数据包后,发送用于TCP连接的第二握手数据包,所述第二握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第二握手数据包并对所述第二握手数据包的地址修改后,发送给所述第一***协议栈;
所述第一***协议栈在接收到所述第二握手数据包后,发送用于TCP连接的第三握手数据包,所述第三握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第三握手数据包并对所述第三握手数据包的地址修改后,发送给所述第二***协议栈。
在一些实施例中,所述虚拟网络设备通过以下方式修改所述第一握手数据包的地址:
所述虚拟网络设备将所述第一握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第一握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
所述虚拟网络设备通过以下方式修改所述第二握手数据包的地址:
所述虚拟网络设备将所述第二握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号修改为所述客户端要访问的服务器的端口号,将所述第二握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第一***协议栈的端口号;
所述虚拟网络设备通过以下方式修改所述第三握手数据包的地址:
所述虚拟网络设备将所述第三握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第三握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
在一些实施例中,所述虚拟网络设备通过以下方式修改所述业务数据包的地址:
所述虚拟网络设备将所述业务数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述业务数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
在一些实施例中,所述虚拟网络设备的端口与所述第二***协议栈的端口相同。
在一些实施例中,所述第一***协议栈位于网络层,所述第二***协议栈位于传输层。
第二方面,本申请提供一种客户端,包括第一***协议栈、第二***协议栈和虚拟网络设备:
所述第一***协议栈向所述客户端要访问的服务器传输数据时,所述第一***协议栈和所述第二***协议栈发送用于TCP连接的握手数据包;所述虚拟网络设备将接收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;
在所述TCP连接建立后,所述第一***协议栈向所述服务器发送业务数据包,所述业务数据包被路由到所述虚拟网络设备;所述虚拟网络设备将收到的所述第一***协议栈发送的所述业务数据包的地址修改后发送给所述第二***协议栈。
在一些实施例中,所述第一***协议栈,用于发送用于TCP连接的第一握手数据包,所述第一握手数据包被路由到所述虚拟网络设备;在接收到所述第二握手数据包后,发送用于TCP连接的第三握手数据包,所述第三握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备,用于接收所述第一握手数据包并对所述第一握手数据包的地址修改后,发送给第二***协议栈;接收所述第二握手数据包并对所述第二握手数据包的地址修改后,发送给所述第一***协议栈;接收所述第三握手数据包并对所述第三握手数据包的地址修改后,发送给所述第二***协议栈;
所述第二***协议栈,用于在收到所述第一握手数据包后,发送用于TCP连接的第二握手数据包,所述第二握手数据包被路由到所述虚拟网络设备。
在一些实施例中,所述虚拟网络设备具体用于:
将所述第一握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第一握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
将所述第二握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号修改为所述客户端要访问的服务器的端口号,将所述第二握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第一***协议栈的端口号;
将所述第三握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第三握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
在一些实施例中,所述虚拟网络设备具体用于:
将所述业务数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述业务数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
在一些实施例中,所述虚拟网络设备的端口与所述第二***协议栈的端口相同。
在一些实施例中,所述第一***协议栈位于网络层,所述第二***协议栈位于传输层。
第三方面,本申请提供一种客户端,包括:处理器、存储器、收发机;
所述收发机,用于收发数据;
所述存储器,用于存储挤塑机指令;
所述处理器,用于读取所述存储器中的计算机指令,执行如第一方面所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如第一方面所述的方法。
本申请的上述实施例中,客户端包括第一***协议栈、第二***协议栈、虚拟网络设备,在第一***协议栈向客户端要访问的服务器传输数据时,虚拟网络设备将第一***协议栈和第二***协议栈传输用于TCP连接的握手数据包的地址修改后发送给对应的协议栈,且在TCP连接建立后,虚拟网络设备接收到第一***协议栈向第二***协议栈传输业务数据包后,修改业务数据包的地址修改并发送给第二***协议栈,通过规避引入用户态协议栈,利用操作***中自带TCP/IP特性的两个***协议栈实现网络层数据到传输层数据的转换,实现过程简单,易于优化。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示例性示出了本申请实施例提供的应用场景示意图;
图2示例性示出了本申请实施例提供的使用用户态协议栈进行数据传输方法的方法流程图;
图3示例性示出了本申请实施例提供的一种数据传输方法的流程图;
图4示例性示出了本申请实施例提供的一种数据传输方法的完整流程图;
图5示例性示出了本申请实施例提供的一种客户端的功能结构图;
图6示例性示出了本申请实施例提供的一种客户端的硬件结构图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部份实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
基于本申请中示出的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整技术方案。
应当理解,本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,例如能够根据本申请实施例图示或描述中给出那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
本申请实施例中,名词“网络”和“***”经常交替使用,但本领域的技术人员可以理解其含义。
下面对本申请实施例中的名词术语进行解释说明。
TCP/IP协议:是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议结构分为应用层、传输层、网络层、网络接口层。TCP/IP协议是在网络的使用中的最基本的通信协议,定义了客户端如何连入因特网,以及数据如何在它们之间进行传输。
网络层:使用IP地址唯一标识互联网上的设备,依靠IP地址进行相互通信。本申请中主要指IP数据报所处的层次。
传输层:为应用进程提供端到端的通信服务,提供面向连接的数据流流量控制、多路复用等服务。本申请中主要指TCP数据报所处层次。
TUN设备:虚拟网络设备的统称,不同于硬件网卡,TUN设备完全由软件实现,模拟了硬件网卡的功能,可和硬件网卡设备一样设置IP、路由等。设置完成后,数据报会被路由到TUN设备,TUN设备可向应用发送数据,也可接收应用发送的数据。TUN设备接收的数据为网络层数据,TUN设备发送的数据也是网络层数据。
用户态(user mode):在CPU的设计中,用户态指非特权状态,在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作***带来安全隐患;在操作***的设计中,用户态指非特权的执行状态,内核禁止此状态下的代码进行潜在危险的操作,比如写入***配置文件、杀掉其他用户的进程、重启***等。用户态是普通的用户进程运行的特权级,大部分用户直接面对的应用程序都是运行在用户态。
内核态:是操作***内核所运行的模式,运行在该模式的代码,可以无限制地对***存储、外部设备进行访问。
用户态协议栈,是指运行于用户态的TCP/IP协议栈。
***协议栈:也称为内核态协议栈,是指运行于内核态的TCP/IP协议栈。
客户端,是一种可以向用户提供语音和/或数据连通性的设备。例如,客户端设备包括具有无线连接功能的手持式设备、车载设备等。目前,客户端设备可以是:手机(mobilephone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备、虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端,或智慧家庭(smart home)中的无线终端等。
下面结合附图详细描述本申请的实施例。
图1示例性示出了本申请实施例提供的数据传输方法的场景示意图。如图1所示,客户端101通过路由器102和互联网103访问服务器104。客户端101与路由器102可以为有线连接,也可以为无线连接,路由器102用于路由客户端101发送的数据包。其中,互联网103可以是局域网、城域网、广域网等,服务器可以是企业级服务器、数据库服务器、云服务器等。客户端101可使用TCP/IP协议进行网络访问,TCP/IP协议结构分为应用层、传输层、网络层、网络接口层,不同结构层使用的协议不同,需对传输的数据进行转换。
目前,网络层数据到传输层数据的转换大多引入用户态协议栈实现。数据转换过程参见图2。客户端要访问的服务器IP地址为1.1.1.1,端口号为80,客户端内***协议栈的端口为53653,TUN设备的IP地址为12.0.0.1,***协议栈发送的用于TCP连接的SYN数据包经TUN设备传输至用户态协议栈,第一次握手完成;用户态协议栈接收SYN数据包后,发送的用于TCP连接的SYN/ACK数据包经TUN设备传输至***协议栈,第二次握手完成;***协议栈响应SYN/ACK数据包,发送的用于TCP连接的ACK数据包经TUN设备传输至用户态协议栈,第三次握手完成,TCP连接建立;TCP连接建立后,***协议栈发送的业务数据包经TUN设备传输至用户态协议栈。其中,***协议栈发送的数据为网络层数据,用户态协议栈发送的数据为传输层数据。用户态协议栈实现了复杂的TCP/IP协议,自身模拟TCP服务端的角色进行TCP协议的三次握手流程。引入用户态协议栈实现网络层数据到传输层数据的转换,存在以下问题:1)用户态协议栈需要实现复杂的TCP/IP协议,增加了项目实现难度;2)用户态协议栈独立于操作***内的***协议栈,操作***针对TCP/IP的设置或优化只能应用到***协议栈,无法应用到用户态协议,因此用户态协议栈无法利用操作***中已有的TCP/IP的特性;3)用户态协议栈容易引入bug,调试成本较高。
基于上述分析,本申请实施例提供一种数据转换方法及装置。在操作***提供应用程序入口(Application Programming Interface,API)的情况下,规避使用用户态协议栈,利用两个***协议栈(为描述方便,分为第一***协议栈和第二***协议栈,第一***协议栈处于网络层,第二***协议栈处于传输层)实现网络层数据到传输层数据的转换。具体的,网络设备传输第一***协议栈和第二***协议栈发送的用于TCP连接的握手数据包,并将握手数据包的地址修改后发送给对应的***协议栈,以建立TCP连接;TCP连接建立后,第一***协议栈通过虚拟网络设备向第二***协议栈传输业务数据包,虚拟网络设备将业务数据包的地址修改后发送给第二***协议栈。该方法利用操作***中自带TCP/IP特性的两个***协议栈实现网络层数据到传输层数据的转换,相对于使用用户态协议栈,实现过程简单,易于优化。
图3示例性示出了本申请实施例提供的一种数据转换方法的流程图。如图所示,该流程可通过软件方式实现,主要包括以下几步:
S301:第一***协议栈向客户端要访问的服务器传输数据时,第一***协议栈和第二***协议栈通过虚拟网络设备传输用于TCP连接的握手数据包,以及虚拟网络设备将收到的第一***协议栈和第二***协议栈发送的用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈。
该步骤中,第一***协议栈作为TCP连接的发起者,第二***协议栈作为TCP连接的接受者,第一***协议栈位于网络层,第二***协议栈位于传输层。预先设置虚拟网络设备的IP地址并配置路由,其中,虚拟网络设备绑定并监听第二***协议栈的端口,即虚拟网络设备的端口与第二***协议栈的端口相同。
在S301中,第一***协议栈和第二***协议栈建立TCP连接的过程包括:第一***协议栈发送用于TCP连接的第一握手数据包,根据配置的路由,第一握手数据包被路由到虚拟网络设备;虚拟网络设备接收第一握手数据包并对第一握手数据包的地址修改后,发送给第二***协议栈,第一次握手完成;第二***协议栈在收到第一握手数据包后,发送用于TCP连接的第二握手数据包,根据配置的路由,第二握手数据包被路由到虚拟网络设备;虚拟网络设备接收第二握手数据包并对第二握手数据包的地址修改后,发送给第一***协议栈,第二次握手完成;第一***协议栈在接收到第二握手数据包后,发送用于TCP连接的第三握手数据包,根据配置的路由,第三握手数据包被路由到虚拟网络设备;虚拟网络设备接收第三握手数据包并对第三握手数据包的地址修改后,发送给第二***协议栈,第三次握手完成。
在S301中,虚拟网络设备对用于TCP连接的第一握手数据包、第二握手数据包、第三握手数据包的地址进行了修改。针对第一握手数据包,虚拟网络设备将第一握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将第一握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号;针对第二握手数据包,虚拟网络设备将第二握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号修改为客户端要访问的服务器的端口号,将第二握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第一***协议栈的端口号;针对第三握手数据包,虚拟网络设备将第三握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将第三握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号。
S302:在TCP连接建立后,第一***协议栈向服务器发送业务数据包,以及虚拟网络设备将收到的第一***协议栈发送的业务数据包的地址修改后发送给第二***协议栈。
该步骤中,根据配置的路由,第一***协议栈发送业务数据包被路由到虚拟网络设备,虚拟网络设备接收第一***协议栈发送的业务数据包并对业务数据包的地址进行了修改。具体的,虚拟网络设备将业务数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将业务数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号。
在本申请的一些实施例中,第一握手数据包为TCP连接过程中的SYN数据包,第二握手数据包为TCP连接过程中的SYN/ACK数据包,第三握手数据包为TCP连接过程中的ACK数据包。
以第一***协议栈的端口号为53653、第二***协议栈的端口号为8888端口为例,设置TUN设备的IP地址为12.0.0.1,要访问的服务器的IP地址为1.1.1.1,端口号为80,在TUN设备本地绑定并监听第二***协议栈的端口;设置路由,比如在Linux***下,设置route add-host 1.1.1.1gw 12.0.0.1,即目的IP地址为1.1.1.1的数据包会被路由到TUN设备。
图4示例性示出了本申请实施例提供的数据转换方法的完整流程图,如图4所示,该流程主要包括以下几步:
S401:第一***协议栈用于TCP连接的SYN数据包。
该步骤中,建立客户端到IP地址为1.1.1.1、端口号为80的服务器的套接字(socket)连接,客户端的操作***发送一个IP数据包(在TCP连接中为SYN数据包),SYN数据包的源地址为TUN设备的IP地址、源端口号为第一***协议栈的端口号、目的地址为1.1.1.1、目的端口号为80,记为源地址12.0.0.1:53653和目的地址1.1.1.1:80。根据路由配置,SYN数据包被路由到TUN设备。
S402:TUN设备接收到SYN数据包后,修改SYN数据包的地址。
该步骤中,将接收到的SYN数据包的源地址修改为1.1.1.1,源端口号不变,将SYN数据包的目的地址修改为12.0.0.1、目的端口修改为8888,因此,修改后的SYN数据包的源地址和目的地址分别为1.1.1.1:53653、12.0.0.1:8888。
S403:TUN设备将修改后的SYN数据包发送给第二***协议栈。
该步骤中,修改后的SYN数据包的目的端口号为第二***协议栈的端口号,根据修改后的SYN数据包的目的端口号将修改后的SYN数据包发送给第二***协议栈,完成第一次握手过程。
S404:第二***协议栈收到SYN数据包后,发送SYN/ACK数据包。
该步骤中,第二***协议栈收到SYN数据包后进行TCP连接握手响应,发送一个IP数据包(在TCP连接中为SYN/ACK数据包),第二***协议栈发送的SYN/ACK数据包的源地址为12.0.0.1,源端口号为8888,目的地址为1.1.1.1,目的端口号为53653。根据路由配置,SYN/ACK数据包被路由到TUN设备。根据配置的路由,SYN/ACK数据包被路由到TUN设备。
S405:TUN设备接收到SYN/ACK数据包后,修改SYN/ACK数据包的地址。
该步骤中,TUN设备监听8888端口,接收到SYN/ACK数据包后,将SYN/ACK数据包的源地址修改为1.1.1.1,源端口号修改为要访问服务器的端口号80,将目的地址修改为12.0.0.1,目的端口号修改为53653。
S406:TUN设备将修改后的SYN/ACK数据包发送给第一***协议栈。
该步骤中,修改后的SYN/ACK数据包的目的端口号为第一***协议栈的端口号53653,根据修改后的SYN/ACK数据包的目的端口号,SYN/ACK数据包被路由到第一***协议栈,第二次握手完成。
S407:第一***协议栈接收到SYN/ACK数据包后,发送ACK数据包。
该步骤中,ACK数据包的源地址为12.0.0.1,源端口号修改为53653,目的地址为1.1.1.1,目的端口号为80,根据路由配置,ACK数据包被路由到TUN设备。
S408:TUN设备接收到ACK数据包后,修改ACK数据包的地址。
该步骤中,TUN设备将ACK数据包的源地址修改为1.1.1.1,源端口号不变,目的地址修改为12.0.0.1,目的端口号修改为8888。
S409:TUN设备将修改后的ACK数据包发送给第二***协议栈。
该步骤中,修改后的ACK数据包的目的端口号为第二***协议栈的端口号,根据修改后的ACK数据包的目的端口号,ACK数据包被路由到第二***协议栈,第三次我手完成,TCP连接建立。
S410:TCP连接建立后,第一***协议栈向服务器发送业务数据包。
该步骤中,业务数据包的源地址为12.0.0.1,源端口号修改为53653,目的地址为1.1.1.1,目的端口号为80,根据路由配置,业务数据包被路由到TUN设备。
S411:TUN设备接收到业务数据包后,修改业务数据包的地址。
该步骤中,TUN设备将业务数据包的源地址修改为1.1.1.1,源端口号不变,目的地址修改为12.0.0.1,目的端口号修改为8888。
S412:TUN设备将修改后的业务数据包发送给第二***协议栈。
该步骤中,业务数据包的目的端口号为第二***协议栈的端口号8888,第二***协议栈接收业务数据包,完成网络层数据到传输层数据的转换。
本申请的上述实施例中,利用两个***协议栈处于网络层的第一***协议和处于传输层的第二***协议栈实现网络层数据到传输层数据的转换,通过TUN设备修改用于TCP连接的三次握手数据包并发送给对应的***协议栈,三次握手完成,TCP连接建立;在TCP连接建立后,网络层的第一***协议栈传输业务数据包,虚拟网络设备将业务数据包的地址修改后发送给第二***协议栈,从而实现网络层数据到传输层数据的转化,该方法规避了使用用户态***协议栈,实现过程较为简单,且充分利用了***自带的TCP/IP特性,易于设置和优化。
基于相同的技术构思,本申请实施例还提供了一种客户端。
参见图5,该客户端包括第一***协议栈501、第二***协议栈502和虚拟网络设备503:
第一***协议栈向该客户端要访问的服务器传输数据时,第一***协议栈501和第二***协议栈502发送用于TCP连接的握手数据包;虚拟网络设备503将接收到的第一***协议栈501和第二***协议栈502发送的用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;
在TCP连接建立后,第一***协议栈501向该客户端要访问的服务器发送业务数据包,该业务数据包被路由到虚拟网络设备503;虚拟网络设备503将收到的第一***协议栈501发送的业务数据包的地址修改后发送给第二***协议栈502。
在一些实施例中,第一***协议栈501,用于发送用于TCP连接的第一握手数据包,所述第一握手数据包被路由到所述虚拟网络设备;在接收到第二握手数据包后,发送用于TCP连接的第三握手数据包,所述第三握手数据包被路由到所述虚拟网络设备;
虚拟网络设备503,用于接收第一握手数据包并对第一握手数据包的地址修改后,发送给第二***协议栈;接收第二握手数据包并对第二握手数据包的地址修改后,发送给第一***协议栈;接收第三握手数据包并对第三握手数据包的地址修改后,发送给第二***协议栈;
第二***协议栈502,用于在收到第一握手数据包后,发送用于TCP连接的第二握手数据包,所述第二握手数据包被路由到所述虚拟网络设备。
在一些实施例中,虚拟网络设备503具体用于:
将第一握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将第一握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号;
将第二握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号修改为客户端要访问的服务器的端口号,将第二握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第一***协议栈的端口号;
将第三握手数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将第三握手数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号。
在一些实施例中,虚拟网络设备503具体用于:
将业务数据包的源地址修改为客户端要访问的服务器的IP地址,源端口号不变,将业务数据包的目的地址修改为虚拟网络设备的IP地址,目的端口号修改为第二***协议栈的端口号。
在一些实施例中,虚拟网络设备的端口与第二***协议栈的端口相同。
在一些实施例中,第一***协议栈位于网络层,第二***协议栈位于传输层。
上述客户端的功能可参见前述实施例中客户端实现数据转换方法的描述,在此不再重复。
基于相同的技术构思,本申请实施例还提供了一种客户端。
图6示例性示出了本申请实施例中的客户端的结构示意图。如图所示,该客户端可包括:处理器601、存储器602、收发机603以及总线接口604。
处理器601负责管理总线架构和通常的处理,存储器602可以存储处理器601在执行操作时所使用的数据。收发机603用于在处理器601的控制下接收和发送数据。
总线架构可以包括任意数量的互联的总线和桥,具体由处理器601代表的一个或多个处理器和存储器602代表的存储器的各种电路链接在一起。总线架构还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器601负责管理总线架构和通常的处理,存储器602可以存储处理器601在执行操作时所使用的数据。
本申请实施例揭示的流程,可以应用于处理器601中,或者由处理器601实现。在实现过程中,信号处理流程的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。处理器601可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成信号处理流程的步骤。
具体地,处理器601,用于读取存储器602中的计算机指令并执行本申请实施例数据转换方法实现的功能。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述实施例中的数据转换方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种数据转换方法,其特征在于,应用于包括第一***协议栈、第二***协议栈和虚拟网络设备的客户端中,所述方法包括:
所述第一***协议栈向所述客户端要访问的服务器传输数据时,所述第一***协议栈和所述第二***协议栈通过所述虚拟网络设备传输用于TCP连接的握手数据包,以及所述虚拟网络设备将收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;
在所述TCP连接建立后,所述第一***协议栈向所述服务器发送业务数据包,所述业务数据包被路由到所述虚拟网络设备,以及所述虚拟网络设备将收到的所述第一***协议栈发送的所述业务数据包的地址修改后发送给所述第二***协议栈;
其中,所述用于TCP连接的握手数据包包括第一握手数据包、第二握手数据包和第三握手数据包,则所述用于TCP连接的握手数据包的地址修改过程包括:
所述虚拟网络设备将所述第一握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第一握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
所述虚拟网络设备将所述第二握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号修改为所述客户端要访问的服务器的端口号,将所述第二握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第一***协议栈的端口号;
所述虚拟网络设备将所述第三握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第三握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
所述业务数据包的地址修改过程包括:
所述虚拟网络设备将所述业务数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述业务数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
2.如权利要求1所述的方法,其特征在于,所述第一***协议栈和所述第二***协议栈通过所述虚拟网络设备传输用于TCP连接的握手数据包,以及所述虚拟网络设备将收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈,包括:
所述第一***协议栈发送用于TCP连接的第一握手数据包,所述第一握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第一握手数据包并对所述第一握手数据包的地址修改后,发送给第二***协议栈;
所述第二***协议栈在收到所述第一握手数据包后,发送用于TCP连接的第二握手数据包,所述第二握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第二握手数据包并对所述第二握手数据包的地址修改后,发送给所述第一***协议栈;
所述第一***协议栈在接收到所述第二握手数据包后,发送用于TCP连接的第三握手数据包,所述第三握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备接收所述第三握手数据包并对所述第三握手数据包的地址修改后,发送给所述第二***协议栈。
3.如权利要求1或2所述的方法,其特征在于,所述虚拟网络设备的端口与所述第二***协议栈的端口相同。
4.如权利要求1或2所述的方法,其特征在于,所述第一***协议栈位于网络层,所述第二***协议栈位于传输层。
5.一种客户端,其特征在于,包括第一***协议栈、第二***协议栈和虚拟网络设备:
所述第一***协议栈向所述客户端要访问的服务器传输数据时,所述第一***协议栈和所述第二***协议栈发送用于TCP连接的握手数据包;所述虚拟网络设备将接收到的所述第一***协议栈和所述第二***协议栈发送的所述用于TCP连接的握手数据包的地址修改后发送给对应的***协议栈;
在所述TCP连接建立后,所述第一***协议栈向所述服务器发送业务数据包,所述业务数据包被路由到所述虚拟网络设备;所述虚拟网络设备将收到的所述第一***协议栈发送的所述业务数据包的地址修改后发送给所述第二***协议栈;
其中,所述用于TCP连接的握手数据包包括第一握手数据包、第二握手数据包和第三握手数据包,则所述用于TCP连接的握手数据包的地址修改过程包括:
所述虚拟网络设备将所述第一握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第一握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
所述虚拟网络设备将所述第二握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号修改为所述客户端要访问的服务器的端口号,将所述第二握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第一***协议栈的端口号;
所述虚拟网络设备将所述第三握手数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述第三握手数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号;
所述业务数据包的地址修改过程包括:
所述虚拟网络设备将所述业务数据包的源地址修改为所述客户端要访问的服务器的IP地址,源端口号不变,将所述业务数据包的目的地址修改为所述虚拟网络设备的IP地址,目的端口号修改为所述第二***协议栈的端口号。
6.如权利要求5所述的客户端,其特征在于,所述第一***协议栈,用于发送用于TCP连接的第一握手数据包,所述第一握手数据包被路由到所述虚拟网络设备;在接收到所述第二握手数据包后,发送用于TCP连接的第三握手数据包,所述第三握手数据包被路由到所述虚拟网络设备;
所述虚拟网络设备,用于接收所述第一握手数据包并对所述第一握手数据包的地址修改后,发送给第二***协议栈;接收所述第二握手数据包并对所述第二握手数据包的地址修改后,发送给所述第一***协议栈;接收所述第三握手数据包并对所述第三握手数据包的地址修改后,发送给所述第二***协议栈;
所述第二***协议栈,用于在收到所述第一握手数据包后,发送用于TCP连接的第二握手数据包,所述第二握手数据包被路由到所述虚拟网络设备。
7.一种客户端,其特征在于,包括:处理器、存储器、收发机;
所述收发机,用于收发数据;
所述存储器,用于存储挤塑机指令;
所述处理器,用于读取所述存储器中的计算机指令,执行如权利要求1-4任一所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如权利要求1-4任一所述的方法。
CN202011614650.7A 2020-12-30 2020-12-30 一种数据转换方法及装置 Active CN112769794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011614650.7A CN112769794B (zh) 2020-12-30 2020-12-30 一种数据转换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011614650.7A CN112769794B (zh) 2020-12-30 2020-12-30 一种数据转换方法及装置

Publications (2)

Publication Number Publication Date
CN112769794A CN112769794A (zh) 2021-05-07
CN112769794B true CN112769794B (zh) 2022-06-21

Family

ID=75696228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011614650.7A Active CN112769794B (zh) 2020-12-30 2020-12-30 一种数据转换方法及装置

Country Status (1)

Country Link
CN (1) CN112769794B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113242261B (zh) * 2021-06-10 2023-04-07 Oppo广东移动通信有限公司 共享数据网络的方法、装置、电子设备及存储介质
CN114448667B (zh) * 2021-12-23 2023-08-08 天翼云科技有限公司 一种数据传输方法、装置及设备
CN114640555B (zh) * 2022-02-24 2023-06-23 联想(北京)有限公司 一种信息处理方法、虚机集群及***
CN115333712B (zh) * 2022-08-09 2023-08-04 北京赛目科技股份有限公司 一种双工通信的api接口管理***、方法及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217493A (zh) * 2008-01-08 2008-07-09 北京大学 一种tcp数据包的传输方法
CN101931584A (zh) * 2009-06-22 2010-12-29 中兴通讯股份有限公司 支持同一***中多种协议栈之间数据转发的方法和***
CN107872431A (zh) * 2016-09-27 2018-04-03 中兴通讯股份有限公司 一种数据收发方法、装置及基站
CN108737413A (zh) * 2018-05-15 2018-11-02 北京奇安信科技有限公司 传输层的数据处理方法、装置及用户态协议栈
CN109614345A (zh) * 2018-12-18 2019-04-12 北京神州绿盟信息安全科技股份有限公司 一种协议层之间通信的内存管理方法及装置
CN111131037A (zh) * 2019-12-27 2020-05-08 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5601029B2 (ja) * 2010-05-27 2014-10-08 ソニー株式会社 通信装置及び通信方法、並びにコンピューター・プログラム
US20140150083A1 (en) * 2012-11-27 2014-05-29 Francis Dinha Virtual private network socket

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217493A (zh) * 2008-01-08 2008-07-09 北京大学 一种tcp数据包的传输方法
CN101931584A (zh) * 2009-06-22 2010-12-29 中兴通讯股份有限公司 支持同一***中多种协议栈之间数据转发的方法和***
CN107872431A (zh) * 2016-09-27 2018-04-03 中兴通讯股份有限公司 一种数据收发方法、装置及基站
CN108737413A (zh) * 2018-05-15 2018-11-02 北京奇安信科技有限公司 传输层的数据处理方法、装置及用户态协议栈
CN109614345A (zh) * 2018-12-18 2019-04-12 北京神州绿盟信息安全科技股份有限公司 一种协议层之间通信的内存管理方法及装置
CN111131037A (zh) * 2019-12-27 2020-05-08 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"P2P Over MANET: A Review and Its Conceptual Framework";Farkhana Muchtar、Pradeep Kumar Singh;《2018 Fifth International Conference on Parallel, Distributed and Grid Computing (PDGC)》;20190627;全文 *
"基于TUN/TAP与UDP打洞技术的虚拟局域网";龙湘君、邵栋、荣国平;《计算机应用与软件》;20110715;第28卷(第07期);全文 *

Also Published As

Publication number Publication date
CN112769794A (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
CN112769794B (zh) 一种数据转换方法及装置
CN108449282B (zh) 一种负载均衡方法及其装置
JP6611921B2 (ja) 端末の相互接続方法、装置、不揮発性コンピュータ記憶媒体及びコンピュータプログラム
CN102904959B (zh) 网络加速方法和网关
CN113301166B (zh) 服务的调用方法及装置、存储介质、电子装置
CN110177128B (zh) 数据传输***及其建立vpn连接的方法、终端、vpn代理
RU2008138577A (ru) Сетевая система
CN113645258A (zh) 数据传输方法、装置、存储介质、处理器及电子设备
WO2021012601A1 (zh) 报文处理方法、装置、设备及可读存储介质
CN114501593A (zh) 网络切片接入方法、装置、***和存储介质
CN110311861B (zh) 一种引导数据流量的方法和装置
CN112702362B (zh) Tcp/ip协议栈的增强方法、装置、电子设备及存储介质
CN110995829A (zh) 实例调用方法、装置及计算机存储介质
CN105245365B (zh) 一种虚拟网络的参数配置方法、设备和***
CN111786989B (zh) 通信处理方法、装置及电子设备
CN112511621B (zh) 数据发送方法及装置、存储介质、电子装置
CN111130820A (zh) 集群管理方法、装置及计算机***
CN106657076B (zh) 一种网络命名空间的tcp服务实现方法及装置
JP5931224B2 (ja) データ・アクセス方法及び装置
CN104570967A (zh) 基于Android***的远程控制方法及***
CN110602143A (zh) Pc端与远程设备实现通讯的方法、***及可读存储介质
CN107733801B (zh) 接收和发送报文的方法及设备
CN112565458B (zh) 平台远程控制方法和装置、存储介质及电子设备
CN102325187A (zh) 一种整合多种功能服务的***及方法
WO2009078549A1 (en) Sca-based system and method of connecting components to each other

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