CN117615009A - 一种报文的代理转发方法、装置及设备 - Google Patents

一种报文的代理转发方法、装置及设备 Download PDF

Info

Publication number
CN117615009A
CN117615009A CN202311551270.7A CN202311551270A CN117615009A CN 117615009 A CN117615009 A CN 117615009A CN 202311551270 A CN202311551270 A CN 202311551270A CN 117615009 A CN117615009 A CN 117615009A
Authority
CN
China
Prior art keywords
address
identifier
tcp link
message
ping
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.)
Pending
Application number
CN202311551270.7A
Other languages
English (en)
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.)
Tianyi Safety Technology Co Ltd
Original Assignee
Tianyi Safety 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 Tianyi Safety Technology Co Ltd filed Critical Tianyi Safety Technology Co Ltd
Priority to CN202311551270.7A priority Critical patent/CN117615009A/zh
Publication of CN117615009A publication Critical patent/CN117615009A/zh
Pending legal-status Critical Current

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
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • 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/22Parsing or analysis of headers

Landscapes

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

Abstract

本申请涉及计算机通信技术领域,尤其涉及一种报文的代理转发方法、装置及设备,用于解决传统代理协议不支持ICMP报文转发问题,该方法为:基于解析从协议栈获取到的ping请求数据包,得到的源端IP地址、目的端IP地址、关联进程的进程标识和ICMP回显请求报文,以及各个ping请求标识与TCP链路标识之间的关联关系,确定ping请求数据包对应的TCP链路,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;将目的端IP地址和ICMP回显请求报文封装后的请求报文,通过该TCP链路发送给代理服务器;这样,通过新的代理协议,实现ping请求数据包的代理转发。

Description

一种报文的代理转发方法、装置及设备
技术领域
本申请涉及计算机通信技术领域,尤其涉及一种报文的代理转发方法、装置及设备。
背景技术
因特网包探索器(packet internet groper,ping)是一种用于测试网络连接性能的程序。ping是工作在传输控制协议/网际协议(transmission control protocol/internet protocol,TCP/IP)网络体系结构中应用层的一个服务命令。实施中,源端设备可以执行ping命令,向目的端设备发送ping请求(包括网际控制报文协议(internet controlmessage protocol,ICMP)回显(echo)请求报文),以测试目的端设备是否可达,以及了解目的端设备的有关状态。
然而,传统代理协议如基于传输层的代理技术中,一般只能支持转发TCP和用户数据报协议(User Datagram Protocol,UDP)类型的报文,不支持转发ICMP类型的报文。那么,源端设备在遇到ping请求(包括ICMP回显请求报文)数据包时,无法将ping请求数据包进行代理转发,进而无法准确测试代理转发报文的网络连接情况。
发明内容
本申请实施例提供一种报文的代理转发方法、装置及设备,提供一种新的代理协议,实现客户端的ping请求数据包的代理转发,以准确测试代理转发报文的网络连接情况。
本申请实施例提供的具体技术方案如下:
第一方面,本申请实施例提供一种报文的代理转发方法,应用于客户端,包括:
对从协议栈获取到的ping请求数据包进行解析,得到所述ping请求数据包对应的源端网际协议IP地址、目的端IP地址、关联进程的进程标识和网际控制报文协议ICMP回显请求报文;
基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
将所述目的端IP地址和所述ICMP回显请求报文进行封装,并通过所述TCP链路将封装后的请求报文发送给所述代理服务器,以使所述代理服务器将所述ICMP回显请求报文转发给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述对从协议栈获取到的ping请求数据包进行解析之前,还包括:
响应于用户的输入操作,生成所述ICMP回显请求报文,并将所述ICMP回显请求报文发送给所述协议栈;
通过所述协议栈对所述ICMP回显请求报文进行协议封装,得到所述ping请求数据包,并将所述ping请求数据包发送给所述客户端。
在一种可能的实现方式中,所述基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,包括:
从所述各个ping请求标识与TCP链路标识之间的关联关系中,查询与由所述源端IP地址、所述目的端IP地址和所述进程标识组成的第一ping请求标识存在关联的TCP链路标识;
若查询到,则将查询到的TCP链路标识对应的TCP链路,确定为所述TCP链路;
若未查询到,则向所述代理服务器发送TCP链路创建请求,在接收到所述代理服务器返回的TCP链路创建成功回执后,将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路。
在一种可能的实现方式中,所述将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路之后,还包括:
将所述第一ping请求标识和所述TCP链路的TCP链路标识进行关联,并将得到的关联关系进行保存。
在一种可能的实现方式中,所述通过所述TCP链路将封装后的请求报文发送给所述代理服务器之后,还包括:
若接收到所述代理服务器通过目标TCP链路返回的应答报文,则基于所述目标TCP链路的TCP链路标识,从所述各个ping请求标识与TCP链路标识之间的关联关系中,确定出第二ping请求标识,其中,所述应答报文中的ICMP回显应答报文是所述目的端基于接收到的ICMP回显请求报文生成,并返回给所述代理服务器的;
将所述第二ping请求标识包括的源端IP地址作为所述应答报文的目的端IP地址,以及,将所述第二ping请求标识包括的目的端IP地址作为所述应答报文的源端IP地址;并将所述应答报文和所述应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包;
将所述ping应答数据包发送给所述协议栈,以通过所述协议栈将所述ping应答数据包返回给所述第二ping请求标识包括的进程标识所对应的进程。
第二方面,本申请实施例提供一种报文的代理转发方法,应用于代理服务器,包括:
接收客户端通过传输控制协议TCP链路发送的请求报文;
对所述请求报文进行解析,得到目的端网际协议IP地址和网际控制报文协议ICMP回显请求报文;
将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端之后,还包括:
在接收到所述目的端返回的所述ICMP回显请求报文对应的ICMP回显应答报文后,将所述ICMP回显应答报文进行封装,并通过所述TCP链路,将封装后的应答报文返回给所述客户端。
第三方面,本申请实施例提供一种报文的代理转发装置,应用于客户端,包括:
解析模块,用于对从协议栈获取到的ping请求数据包进行解析,得到所述ping请求数据包对应的源端网际协议IP地址、目的端IP地址、关联进程的进程标识和网际控制报文协议ICMP回显请求报文;
TCP链路确定模块,用于基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
发送模块,用于将所述目的端IP地址和所述ICMP回显请求报文进行封装,并通过所述TCP链路将封装后的请求报文发送给所述代理服务器,以使所述代理服务器将所述ICMP回显请求报文转发给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述对从协议栈获取到的ping请求数据包进行解析之前,所述解析模块还用于:
响应于用户的输入操作,生成所述ICMP回显请求报文,并将所述ICMP回显请求报文发送给所述协议栈;
通过所述协议栈对所述ICMP回显请求报文进行协议封装,得到所述ping请求数据包,并将所述ping请求数据包发送给所述客户端。
在一种可能的实现方式中,所述TCP链路确定模块具体用于:
从所述各个ping请求标识与TCP链路标识之间的关联关系中,查询与由所述源端IP地址、所述目的端IP地址和所述进程标识组成的第一ping请求标识存在关联的TCP链路标识;
若查询到,则将查询到的TCP链路标识对应的TCP链路,确定为所述TCP链路;
若未查询到,则向所述代理服务器发送TCP链路创建请求,在接收到所述代理服务器返回的TCP链路创建成功回执后,将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路。
在一种可能的实现方式中,所述将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路之后,所述TCP链路确定模块还用于:
将所述第一ping请求标识和所述TCP链路的TCP链路标识进行关联,并将得到的关联关系进行保存。
在一种可能的实现方式中,所述通过所述TCP链路将封装后的请求报文发送给所述代理服务器之后,所述发送模块还用于:
若接收到所述代理服务器通过目标TCP链路返回的应答报文,则基于所述目标TCP链路的TCP链路标识,从所述各个ping请求标识与TCP链路标识之间的关联关系中,确定出第二ping请求标识,其中,所述应答报文中的ICMP回显应答报文是所述目的端基于接收到的ICMP回显请求报文生成,并返回给所述代理服务器的;
将所述第二ping请求标识包括的源端IP地址作为所述应答报文的目的端IP地址,以及,将所述第二ping请求标识包括的目的端IP地址作为所述应答报文的源端IP地址;并将所述应答报文和所述应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包;
将所述ping应答数据包发送给所述协议栈,以通过所述协议栈将所述ping应答数据包返回给所述第二ping请求标识包括的进程标识所对应的进程。
第四方面,本申请实施例提供一种报文的代理转发装置,应用于代理服务器,包括:
接收模块,用于接收客户端通过传输控制协议TCP链路发送的请求报文;
解析模块,用于对所述请求报文进行解析,得到目的端网际协议IP地址和网际控制报文协议ICMP回显请求报文;
转发模块,用于将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端之后,所述转发模块还用于:
在接收到所述目的端返回的所述ICMP回显请求报文对应的ICMP回显应答报文后,将所述ICMP回显应答报文进行封装,并通过所述TCP链路,将封装后的应答报文返回给所述客户端。
第五方面,本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机程序或指令;
处理器,用于执行所述存储器中的计算机程序或指令,使得如上述第一方面或第二方面中任一所述的方法被执行。
第六方面,本申请实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行如上述第一方面或第二方面中任一所述的方法。
第七方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如上述第一方面或第二方面中任一所述的方法。
本申请实施例中,对从协议栈获取到的ping请求数据包进行解析,得到ping请求数据包对应的源端IP地址、目的端IP地址、关联进程的进程标识和ICMP回显请求报文;然后,基于源端IP地址、目的端IP地址和进程标识,以及各个ping请求标识与TCP链路标识之间的关联关系,确定ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;将目的端IP地址和ICMP回显请求报文封装后的请求报文,通过该TCP链路发送给代理服务器,以使代理服务器将ICMP回显请求报文转发给目的端IP地址对应的目的端;这样,构建了一种新的代理协议,使得客户端的ping请求可以通过TCP链路传输给代理服务器,由代理服务器向目的端发送ICMP回显请求报文,实现客户端的ping请求数据包的代理转发;同时,将源端IP地址、目的端IP地址、进程标识(即Identifier)作为唯一标识,让每一个进程发起的ping请求流入一个TCP链路,客户端仅需维护源端IP地址、目的端IP地址和Identifier与TCP链路的TCP链路标识之间的关联关系即可,方便转发管理。
附图说明
图1为本申请实施例中一种可选的报文的代理转发方法的应用场景示意图;
图2为本申请实施例中一种报文的代理转发方法的流程示意图;
图3为本申请实施例中一种ICMP回显请求报文的数据格式示意图;
图4为本申请实施例中一种TCP链路的确定方法的流程示意图;
图5为本申请实施例中一种代理服务器接收到请求报文后的具体处理流程示意图;
图6为本申请实施例中一种客户端接收到应答报文后的具体处理流程示意图;
图7为本申请实施例中一种客户端、代理服务器和目标服务器之间的逻辑架构示意图;
图8为本申请实施例中一种客户端、代理服务器和目标服务器之间的交互流程示意图一;
图9为本申请实施例中一种客户端、代理服务器和目标服务器之间的交互流程示意图二;
图10为本申请实施例中一种客户端、代理服务器和目标服务器之间的交互流程示意图三;
图11为本申请实施例中一种客户端、代理服务器和目标服务器之间的交互流程示意图四;
图12为本申请实施例中一种报文的代理转发装置的逻辑架构示意图;
图13为本申请实施例中一种报文的代理转发装置的逻辑架构示意图;
图14为本申请实施例中电子设备的实体架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请实施例中的部分用语进行解释说明。
(1)本申请实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
(2)本申请实施例中术语“ping”为一种用于测试网络连接性能的程序。ping是工作在TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的端主机发送ICMPEcho请求报文,测试目的端是否可达,以及了解目的端的有关状态。相关技术下,源端主机在执行ping命令时,会按照预设周期生成ICMP回显请求报文,并将该ICMP回显请求报文传输给协议栈,以通过协议栈发送给ICMP回显请求报文。本申请后续实施例中,仅以从协议栈中获取一个ICMP回显请求报文对应的ping请求数据包为例,对本申请实施例中的一种报文的代理转发方法的具体流程进行描述。
(3)本申请实施例中术语“ICMP”为Internet Control Message Protocol的简称,其中文全称为网际控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息并不传输用户数据,但是对于用户数据的传递起着重要的作用。
(4)本申请实施例中术语“代理服务器”为四层代理服务器,如socks5等。本申请实施例中术语“客户端”是指发送代理协议请求到代理服务器的终端。
本申请实施例中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够在除了这里图示或描述的那些以外的顺序实施。
相关技术中,传统代理协议如基于传输层的代理技术中,一般只能支持转发TCP协议和用户数据报协议(UDP,User Datagram Protocol)类型的报文,不支持转发ICMP协议类型的报文。
那么,源端设备在遇到ping请求数据包(包括ICMP回显请求报文)时,通常有如下三种处理方案:
第一种处理方案:源端设备直接本地返回ping应答(包括ICMP回显应答报文)或本地延时返回ping应答。源端设备的这一处理方案,会造成源端设备认为代理转发报文的网络连接性能稳定、延时低的假象;
第二种处理方案:源端设备直接忽略此ping请求。源端设备的这一处理方案,会使得ping请求不可用;
第三种处理方案:源端设备将ping请求直接发给原网关设备,通过原网关设备将该ping请求进行路由,即不通过代理服务器转发该ping请求,这会使得基于ping请求和ping应答,分析得到的测试结果不能准确地反映出通过代理服务器传输ping请求的真实情况。
有鉴于此,为了解决传统代理协议不支持ICMP报文转发的问题,本申请实施例提供一种报文的代理转发方法,应用于客户端,该方法包括:对从协议栈获取到的ping请求数据包进行解析,得到ping请求数据包对应的源端IP地址、目的端IP地址、关联进程的进程标识和ICMP回显请求报文;然后,基于源端IP地址、目的端IP地址和进程标识,以及各个ping请求标识与TCP链路标识之间的关联关系,确定ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;将目的端IP地址和ICMP回显请求报文进行封装,并通过该TCP链路将封装后的请求报文发送给代理服务器,以使代理服务器将ICMP回显请求报文转发给目的端IP地址对应的目的端。
这样,采用本申请实施例中的一种报文的代理转发方法,构建了一种新的代理协议,使得客户端的ping请求可以通过TCP链路传输给代理服务器,使代理服务器向目的端发送ICMP回显请求报文,实现了客户端的ping请求数据包的代理转发;同时,将源端IP地址、目的端IP地址、进程标识(即Identifier)作为唯一标识,让每一个进程发起的ping请求流入一个TCP链路,使客户端仅需维护源端IP地址、目的端IP地址和Identifier与TCP链路的TCP链路标识之间的关联关系即可,方便转发管理。
下面结合附图对本申请优选的实施方式做出进一步详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请实施例及实施例中的特征可以相互组合。
图1为本申请实施例中的一种可选的报文的代理转发方法的应用场景示意图。参阅图1所示,该应用场景示意图中包括客户端10、代理服务器20和目的端30;其中,客户端10包括输入单元,如,键盘、手写板、触摸屏等,通过该输入单元获得用户的输入操作,创建进程,并通过该进程响应于用户的输入操作,向目的端30发起ping请求。
具体实施中,客户端10的该进程按照预设周期(如,1秒等),生成ICMP回显请求报文,并将ICMP回显请求报文发送给本地协议栈,通过协议栈对ICMP报文进行协议封装,得到ping请求数据包;直至通过输入单元获取用户的停止操作为止。
本申请实施例中,在客户端10中部署一种报文的代理转发方法的程序,以使客户端10从协议栈收到ping请求数据包后,可以运行本申请实施例中的一种报文的代理转发方法的流程(具体流程详见后续内容),以使该ping请求可以通过代理服务器20转发给目的端30,以及收到通过代理服务器20返回的目的端30的ping应答,以便于准确测试代理转发报文的网络连接情况。
具体实施中,客户端10,用于对从协议栈获取到的ping请求数据包进行解析,得到源端IP地址、目的端IP地址、关联进程的进程标识(即前述进程的进程号,相关技术下,ICMP回显请求报文中的标识符通常用于标识该进程)和ICMP回显请求报文;然后,基于源端IP地址、目的端IP地址和进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定ping请求数据包对应的TCP链路,将目的端IP地址和ICMP回显请求报文进行封装后的请求报文,通过TCP链路发送给代理服务器20,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
代理服务器20,用于接收客户端10通过TCP链路发送的请求报文;对请求报文进行解析,得到目的端IP地址和ICMP回显请求报文;然后,将ICMP回显请求报文发送给目的端IP地址对应的目的端30;
目的端30,用于接收代理服务器20发送的ICMP回显请求报文,并基于该ICMP回显请求报文,生成ICMP回显应答报文,并将ICMP回显应答报文返回给代理服务器20;
代理服务器20,还用于在接收到目的端30返回的ICMP回显应答报文后,将ICMP回显应答报文进行封装,并通过该TCP链路,将封装后的应答报文返回给客户端10;
客户端10,还用于在接收到代理服务器20通过TCP链路返回的应答报文后,基于该TCP链路的TCP链路标识,从各个ping请求标识与TCP链路标识之间的关联关系中,确定出目标ping请求标识;然后,将目标ping请求标识包括的源端IP地址作为应答报文的目的端IP地址,以及,将目标ping请求标识包括的目的端IP地址作为应答报文的源端IP地址;并将应答报文和应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包;以及,将ping应答数据包通过协议栈返回该进程标识对应的进程。
本申请实施例中,客户端10和代理服务器20、代理服务器20和目的端30之间通过互联网连接。可以理解的是,客户端10和代理服务器20、代理服务器20和目的端30之间均可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
应当说明的是,图1是对本申请实施例中一种可选的报文的代理转发方法的应用场景进行示例介绍,实际本申请实施例中的方法可以适用的应用场景并不限于此。
下面结合附图对本申请优选的实施方式做出进一步详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请实施例及实施例中的特征可以相互组合。
参阅图2所示,本申请实施例中的一种报文的代理转发方法,该方法的具体流程如下:
步骤200:对从协议栈获取到的ping请求数据包进行解析,得到ping请求数据包对应的源端IP地址、目的端IP地址、关联进程的进程标识和ICMP回显请求报文。
本申请实施例中,用户通过客户端的输入单元接收用户的输入操作,客户端中的进程响应于该用户的输入操作,生成ICMP回显请求报文,并将ICMP回显请求报文发送给协议栈;通过协议栈对ICMP回显请求报文进行协议封装,得到前述ping请求数据包,并将ping请求数据包发送给客户端。
那么,在执行步骤200时,客户端从协议栈收到ping请求数据包,对该ping请求数据包进行解析,得到ping请求数据包对应的源端IP地址、目的端IP地址和ICMP回显请求报文,其中,ICMP回显请求报文的数据格式如图3所示。参阅图3所示,ICMP回显请求报文包括首部、数据部分,首部包括类型、代码、校验和标识符和序号,当类型为8时为请求报文,当类型为0时为应答报文。
在得到ICMP回显请求报文之后,对ICMP回显请求报文进行解析,获取该ICMP回显请求报文的标识符,即关联进程的进程标识。
步骤210:基于源端IP地址、目的端IP地址和进程标识,以及各个ping请求标识与TCP链路标识之间的关联关系,确定ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识。
本申请实施例中,通过执行步骤200得到ping请求数据包对应的源端IP地址、目的端IP地址,以及关联进程的进程标识,然后,在执行步骤210时,参阅图4所示,具体执行如下步骤:
步骤2101:从各个ping请求标识与TCP链路标识之间的关联关系中,查询与由源端IP地址、目的端IP地址和进程标识组成的第一ping请求标识存在关联的TCP链路标识。
本申请实施例中,将源端IP地址、目的端IP地址和进程标识作为唯一标识,为关联ping请求数据包对应的进程建立TCP链路,当各个关联关系中存在与第一ping请求标识存在关联的TCP链路时,说明该ping请求数据包是已触发、未停止的ping请求的一个ping请求数据包,执行步骤2102;当各个关联关系中不存在与第一ping请求标识存在关联的TCP链路,说明该ping请求数据包是新触发的ping请求的首个ping请求数据包,执行步骤2103。
步骤2102:若查询到,则将查询到的TCP链路标识对应的TCP链路,确定为该ping请求数据包对应的TCP链路。
本申请实施例中,在执行步骤2101后,若从各个ping请求标识与TCP链路标识之间的关联关系中,查询到与第一ping请求标识存在关联的TCP链路标识,则说明该ping请求数据包是已触发、未停止的ping请求的一个ping请求数据包,则执行步骤2102,沿用已创建的TCP链路进行报文的代理转发,将查询到的TCP链路标识对应的TCP链路作为该ping请求数据包对应的TCP链路。
步骤2103:若未查询到,则向代理服务器发送TCP链路创建请求,在接收到代理服务器返回的TCP链路创建成功回执后,将TCP链路创建成功回执对应的TCP链路,作为ping请求数据包对应的TCP链路。
本申请实施例中,在执行步骤2101后,若从各个ping请求标识与TCP链路标识之间的关联关系中,未查询到与第一ping请求标识存在关联的TCP链路标识,则说明该ping请求数据包是新触发的ping请求的首个ping请求数据包,则执行步骤2103,向代理服务器发送TCP链路创建请求,以在客户端和代理服务器之间建立TCP连接,并将接收到的TCP链路创建成功回执对应的TCP链路,作为该ping请求数据包对应的TCP链路。
然后,在执行步骤2103中的将TCP链路创建成功回执对应的TCP链路,作为该ping请求数据包对应的TCP链路之后,还将该第一ping请求标识和该TCP链路的TCP链路标识进行关联,并将得到的关联关系进行保存。
这样,由于对每一个进程发起ping请求来说,源端IP地址、目的端IP地址、标识符(Identifier)(即进程标识)是固定的,因此,将源端IP地址、目的端IP地址和进程标识作为唯一标识,后续维护源端IP地址、目的端IP地址和Identifier与TCP链路的关联关系,让每一个进程发起的ping请求流入一个TCP链路,也方便转发管理。
步骤220:将目的端IP地址和ICMP回显请求报文进行封装,并通过TCP链路将封装后的请求报文发送给代理服务器,以使代理服务器将ICMP回显请求报文转发给目的端IP地址对应的目的端。
本申请实施例中,在执行步骤220时,首先,将目的端IP地址和ICMP回显请求报文进行封装,然后,将该封装后的请求报文,通过TCP链路传输给代理服务器,代理服务器在接收到该请求报文后,参阅图5所示,具体执行如下步骤:
步骤500:接收客户端通过TCP链路发送的请求报文。
步骤510:对请求报文进行解析,得到目的端IP地址和ICMP回显请求报文。
步骤520:将ICMP回显请求报文发送给目的端IP地址对应的目的端。
本申请实施例中,代理服务器启动后,监听TCP端口,执行步骤500~步骤520,接收客户端通过TCP链路发送的请求报文,对请求报文进行解析,得到ICMP回显请求报文和目的端IP地址,然后,基于该目的端IP地址和ICMP回显请求报文,向目的端IP地址对应的目的端发起ping请求,将该ICMP回显请求报文发送给目的端。
相应的,目的端在接收到代理服务器发送的ICMP回显请求报文后,对ICMP回显请求报文进行解析,并基于该ICMP回显请求报文生成对应的ICMP回显应答报文,以及将该ICMP回显应答报文返回给代理服务器。
代理服务器在接收到该目的端返回的ICMP回显请求报文对应的ICMP回显应答报文后,将ICMP回显应答报文进行封装,即在ICMP回显应答报文的基础上,添加TCP协议内容,得到应答报文,然后,通过TCP链路将该应答报文返回给客户端。
承接客户端的流程,客户端在执行步骤220之后,参阅图6所示,还具体执行如下步骤:
步骤230:若接收到代理服务器通过目标TCP链路返回的应答报文,则基于目标TCP链路的TCP链路标识,从各个ping请求标识与TCP链路标识之间的关联关系中,确定出第二ping请求标识,其中,应答报文中的ICMP回显应答报文是目的端基于接收到的ICMP回显请求报文生成,并返回给代理服务器的。
本申请实施例中,在执行步骤230时,从各个ping请求标识与TCP链路标识之间的关联关系中,查询与接收到应答报文的TCP链路的TCP链路标识存在关联的ping请求标识,并将该查询到的ping请求标识,确定为接收到的应答报文对应的ping请求标识,记为第二ping请求标识。
在一些可能的实施例中,若步骤230中接收到的应答报文是通过前述TCP链路接收到的,那么,通过执行步骤230,查询到的ping请求标识为前述第一ping请求标识。
步骤240:将第二ping请求标识包括的源端IP地址作为应答报文的目的端IP地址,以及,将第二ping请求标识包括的目的端IP地址作为应答报文的源端IP地址。
本申请实施例中,由于接收到的应答报文是需返回对应的进程的,因此,在应答报文的源端和目的端IP地址需对调,即执行步骤240。
步骤250:将应答报文和应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包。
步骤260:将ping应答数据包发送给协议栈,以通过协议栈将ping应答数据包返回该第二ping请求标识包括的进程标识所对应的进程。
本申请实施例中,在执行步骤260时,将ping应答数据包发送给协议栈,然后,通过协议栈将该ping应答数据包返回给第二ping请求标识包括的进程标识所对应的进程。
这样,客户端可以通过执行上述步骤230~步骤260,将通过任一已创建的TCP链路接收到应答报文返回给对应的进程,在此不再赘述。
上述流程,以一个ping请求数据包为例,对本申请实施例中的一种报文的代理转发方法进行了详细描述,通过将源端IP地址、目的端IP地址和进程标识作为唯一标识,为每一个发起ping请求的进程创建一个TCP链路用于转发数据,实现了ICMP报文的代理转发;同时,客户端维护源端IP地址、目的端IP地址和进程标识(Identifier)与TCP链路的关联关系,让每一个进程发起的ping请求流入一个TCP链路,也方便对代理转发的管理。
进一步地,客户端的进程标识对应的进程,在收到发出的ping请求数据包对应的ping应答数据包之后,通过对发出的每个ping请求数据包和接收到的每个ping应答数据包进行分析,可以准确测试到代理转发报文的网络连接情况。
下面采用具体的举例对上述实施例作出进一步详细说明。
举例:参阅图7所示,假设客户端本地(源端)IP地址:3.3.3.3,代理服务器IP地址:2.2.2.2,目标服务器IP地址:1.1.1.1;进程A:进程标识(Identifier)55,向目标服务器(1.1.1.1)发起Ping请求;进程B:进程标识(Identifier)77,也向目标服务器(1.1.1.1)发起Ping请求。
图8为本申请实施例中客户端、代理服务器和目标服务器之间的具体交互流程示意图一。参阅图8所示,针对进程A的ping请求,客户端、代理服务器和目标服务器之间的交互流程如下:
步骤701:客户端的进程A响应于用户的输入操作,向目标服务器发起ping请求。
步骤702:客户端的进程A向协议栈发送ICMP回显请求报文1。
本申请实施例中,进程A基于源端IP地址、目标服务器IP地址,生成ICMP回显请求报文1,然后,将ICMP回显请求报文1发送给协议栈,其中,该ICMP回显请求报文1中的类型为8,进程标识(Identifier)为55,序号为1。
步骤703:协议栈对ICMP回显请求报文1进行协议封装,得到第一ping请求数据包。
本申请实施例中,得到的第一ping请求数据包的源端IP地址为3.3.3.3,目的端IP地址为1.1.1.1。
步骤704:客户端对从协议栈收到第一ping请求数据包进行解析,得到源端IP地址、目的端IP地址、进程A的进程标识和ICMP回显请求报文1。
在一些可行的实施例中,若客户端对从协议栈收到的数据包进行解析,得到的ICMP报文的类型不是8,则丢弃该数据包,以实现对从协议栈收到的数据包的过滤。
步骤705:从各个ping请求标识与TCP链路标识之间的关联关系中,查询与由源端IP地址、目的端IP地址和进程A的进程标识组成的第一ping请求标识存在关联的TCP链路标识。
由于该第一ping请求数据包中的ICMP回显请求报文1的序号为1,表明该第一ping请求数据包是发起ping请求后的首个ping请求数据包,则在执行步骤705后,确定从各个关联关系中未查询到与该第一ping请求标识存在关联的TCP链路标识,执行后续步骤706。
步骤706:客户端向代理服务器发送TCP链路创建请求。
步骤707:代理服务器基于TCP链路创建请求,在客户端和代理服务器之间建立TCP链路(记为TCP链路1)。
步骤708:代理服务器向客户端发送TCP链路创建成功回执。
步骤709:客户端将目的端IP地址和ICMP回显请求报文1进行封装,得到封装后的第一请求报文。
其中,本申请实施例不对步骤708~步骤709的执行先后进行限定。
步骤710:客户端将第一请求报文,通过TCP链路1对应的TCP链路发送给代理服务器。
本申请实施例中,客户端在收到代理服务器返回的TCP链路创建成功回执后,将TCP链路创建成功回执对应的TCP链路,作为传输该第一ping请求数据包的TCP链路,记为TCP链路1(即TCP链路标识);并执行步骤710。
然后,客户端将该第一ping请求标识和该TCP链路1进行关联,并保存得到的关联关系:第一ping请求标识与TCP链路1之间的关联关系,其中,第一ping请求标识包括源端IP地址3.3.3.3,目的端IP地址1.1.1.1,进程标识(Identifier)55。
本申请实施例中,仅将目的端IP地址和ICMP回显请求报文1(其为IP协议的负载部分数据,不包含IP协议头部)通过TCP链路传输给代理服务器,与相关技术相比,本申请实施例中的代理转发不依赖传统代理协议,如socks5协议或其他代理协议,而是采用TCP作为底层传输协议,为创新的代理协议。
步骤711:代理服务器对第一请求报文进行解析,得到ICMP回显请求报文1。
步骤712:代理服务器将ICMP回显请求报文1发送给目的端IP地址对应的目标服务器。
步骤713:目标服务器基于接收到的ICMP回显请求报文1,生成ICMP回显应答报文1。
步骤714:目标服务器将该ICMP回显应答报文1返回代理服务器。
步骤715:代理服务器将接收到的ICMP回显应答报文1进行封装,得到第一应答报文。
步骤716:代理服务器将第一应答报文,通过TCP链路1对应的TCP链路返回给客户端。
这样,客户端便把第一请求报文通过客户端和代理服务器之间的TCP链路传输给代理服务器,从而代理服务器将该第一请求报文发送至目标服务器,以实现ICMP类型的报文的代理转发。
图9为本申请实施例中客户端、代理服务器和目标服务器之间的具体交互流程示意图二。参阅图9所示,客户端接收到代理服务器返回的第一应答报文后的具体处理流程如下:
步骤717:客户端在接收到第一请求报文后,基于TCP链路1,从各个ping请求标识与TCP链路标识之间的关联关系中,确定出第一ping请求标识。
本申请实施例中,通过执行步骤717,根据TCP链路1可以获取与TCP链路1对应的ping请求标识:源端IP地址:3.3.3.3,目的端IP地址:1.1.1.1,进程标识(Identifier):55,即第一ping请求标识。
步骤718:客户端将第一ping请求标识包括的源端IP地址作为第一应答报文的目的端IP地址,以及,将第一ping请求标识包括的目的端IP地址作为第一应答报文的源端IP地址;并将第一应答报文和第一应答报文的源端IP地址及目的端IP地址进行封装,得到第一ping应答数据包。
本申请实施例中,在执行步骤718时,客户端构造携带IP数据包,即携带ICMP回显应答报文的第一ping应答数据包,其中,该第一ping应答数据包的目的端IP地址为3.3.3.3,源端IP地址为1.1.1.1。
步骤719:客户端将第一ping应答数据包发送给协议栈。
步骤720:协议栈将第一ping应答数据包返回给进程A。
图10为本申请实施例中客户端、代理服务器和目标服务器之间的具体交互流程示意图三。参阅图10所示,针对进程A的ping请求,客户端、代理服务器和目标服务器之间的交互流程如下:
步骤721:客户端的进程A向协议栈发送ICMP回显请求报文n。
本申请实施例中,ICMP回显请求报文n仍是进程A基于源端IP地址、目标服务器IP地址生成并发送给协议栈的,该ICMP回显请求报文n中的类型为8,进程标识(Identifier)为55,序号为n,n为大于1的正整数。
步骤722:协议栈对ICMP回显请求报文n进行协议封装,得到第二ping请求数据包。
本申请实施例中,得到的第二ping请求数据包的源端IP地址为3.3.3.3,目的端IP地址为1.1.1.1。
步骤723:客户端对从协议栈收到第二ping请求数据包进行解析,得到源端IP地址、目的端IP地址、进程A的进程标识和ICMP回显请求报文n。
步骤724:从各个ping请求标识与TCP链路标识之间的关联关系中,查询与由源端IP地址、目的端IP地址和进程A的进程标识组成的第一ping请求标识存在关联的TCP链路标识。
由于该第一ping请求数据包中的ICMP回显请求报文n的序号为n,表明该第二ping请求数据包是发起ping请求后的非首个ping请求数据包,则在执行步骤724后,确定从各个关联关系中查询到与该第一ping请求标识存在关联的TCP链路标识(即TCP链路1),说明已存在与该进程A关联的TCP链路,则执行后续步骤725-步骤726,直接通过该TCP链路1转发ICMP回显请求报文n即可。
步骤725:客户端将目的端IP地址和ICMP回显请求报文n进行封装,得到封装后的第二请求报文。
步骤726:客户端将第二请求报文,通过TCP链路1对应的TCP链路发送给代理服务器。
步骤727:代理服务器对第二请求报文进行解析,得到ICMP回显请求报文n。
步骤728:代理服务器将ICMP回显请求报文n发送给目的端IP地址对应的目标服务器。
步骤729:目标服务器基于接收到的ICMP回显请求报文n,生成ICMP回显应答报文n。
步骤730:目标服务器将该ICMP回显应答报文n返回代理服务器。
步骤731:代理服务器将接收到的ICMP回显应答报文n进行封装,得到第二应答报文。
步骤732:代理服务器将第二应答报文,通过TCP链路1返回给客户端。
针对每一个进程发起ping请求的请求数据包来说,源端IP地址、目的端IP地址、进程标识(Identifier)都是固定的,为每一个发起ping请求的进程创建一个TCP链路,让每一个进程发起的ping请求流入一个TCP链路,这样,客户端仅需维护源端IP地址、目的端IP地址和Identifier与TCP链路的TCP链路标识之间的关联关系即可,便于客户端对代理转发的管理。
本申请实施例中,后续客户端针对第二应答报文的处理方式与图9示出的处理方式相同,在此不再赘述。
图11为本申请实施例中客户端、代理服务器和目标服务器之间的具体交互流程示意图四。参阅图11所示,针对进程B的ping请求,客户端、代理服务器和目标服务器之间的交互流程如下:
步骤801:客户端的进程B响应于用户的输入操作,向目标服务器发起ping请求。
步骤802:客户端的进程B向协议栈发送ICMP回显请求报文。
本申请实施例中,进程B基于源端IP地址、目标服务器IP地址,生成ICMP回显请求报文,然后,将ICMP回显请求报文1发送给协议栈,其中,该ICMP回显请求报文中的类型为8,进程标识(Identifier)为77,序号为1。
步骤803:协议栈对ICMP回显请求报文进行协议封装,得到第三ping请求数据包。
本申请实施例中,得到的第三ping请求数据包的源端IP地址为3.3.3.3,目的端IP地址为1.1.1.1。
步骤804:客户端对从协议栈收到第三ping请求数据包进行解析,得到源端IP地址、目的端IP地址、进程B的进程标识和ICMP回显请求报文。
步骤805:从各个ping请求标识与TCP链路标识之间的关联关系中,查询与由源端IP地址、目的端IP地址和进程B的进程标识组成的第二ping请求标识存在关联的TCP链路标识。
由于该第三ping请求数据包中的ICMP回显请求报文的序号为1,表明该三ping请求数据包是进程B发起ping请求后的首个ping请求数据包,则在执行步骤805后,确定从各个关联关系中未查询到与该第二ping请求标识存在关联的TCP链路标识,执行后续步骤806。
步骤806:客户端向代理服务器发送TCP链路创建请求。
步骤807:代理服务器基于TCP链路创建请求,在客户端和代理服务器之间建立TCP链路(记为TCP链路2)。
步骤808:代理服务器向客户端发送TCP链路创建成功回执。
步骤809:客户端将目的端IP地址和ICMP回显请求报文进行封装,得到封装后的第三请求报文。
步骤810:客户端将第三请求报文,通过该TCP链路发送给代理服务器。
本申请实施例中,客户端在收到代理服务器返回的TCP链路创建成功回执后,将TCP链路创建成功回执对应的TCP链路,作为传输第三ping请求数据包的TCP链路,记为TCP链路2(即TCP链路标识);并执行步骤810。
然后,客户端将该第二ping请求标识和该TCP链路2进行关联,并保存得到的关联关系:第二ping请求标识与TCP链路2之间的关联关系,其中,第二ping请求标识包括源端IP地址3.3.3.3,目的端IP地址1.1.1.1,进程标识(Identifier)77。
本申请实施例中,仅将目的端IP地址和ICMP回显请求报文(其为IP协议的负载部分数据,不包含IP协议头部)通过TCP链路传输给代理服务器,与相关技术相比,本申请实施例中的代理转发不依赖传统代理协议,如socks5协议或其他代理协议,而是采用TCP作为底层传输协议,为创新的代理协议。
步骤811:代理服务器对第三请求报文进行解析,得到ICMP回显请求报文。
步骤812:代理服务器将ICMP回显请求报文发送给目的端IP地址对应的目标服务器。
步骤813:目标服务器基于接收到的ICMP回显请求报文,生成ICMP回显应答报文。
步骤814:目标服务器将该ICMP回显应答报文返回代理服务器。
步骤815:代理服务器将接收到的ICMP回显应答报文进行封装,得到第三应答报文。
步骤816:代理服务器将第三应答报文,通过TCP链路2对应的TCP链路返回给客户端。
这样,客户端便把第一请求报文通过客户端和代理服务器之间的TCP链路传输给代理服务器,从而代理服务器将该第一请求报文发送至目标服务器,以实现ICMP类型的报文的代理转发。
本申请实施例中,后续客户端针对第三应答报文的处理方式仍与图9示出的处理方式相同,在此也不再赘述。
相应的,针对客户端从协议栈收到的进程B关联的其他ping请求数据包,也仍采用与图10示出的处理方式相同的方式处理,在此也不再赘述。
基于同一发明构思,参阅图12所示,本申请实施例中提供一种报文的代理转发装置,应用于客户端,包括:
解析模块1210,用于对从协议栈获取到的ping请求数据包进行解析,得到所述ping请求数据包对应的源端网际协议IP地址、目的端IP地址、关联进程的进程标识和网际控制报文协议ICMP回显请求报文;
TCP链路确定模块1220,用于基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
发送模块1230,用于将所述目的端IP地址和所述ICMP回显请求报文进行封装,并通过所述TCP链路将封装后的请求报文发送给所述代理服务器,以使所述代理服务器将所述ICMP回显请求报文转发给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述对从协议栈获取到的ping请求数据包进行解析之前,所述解析模块1210还用于:
响应于用户的输入操作,生成所述ICMP回显请求报文,并将所述ICMP回显请求报文发送给所述协议栈;
通过所述协议栈对所述ICMP回显请求报文进行协议封装,得到所述ping请求数据包,并将所述ping请求数据包发送给所述客户端。
在一种可能的实现方式中,所述TCP链路确定模块1220具体用于:
从所述各个ping请求标识与TCP链路标识之间的关联关系中,查询与由所述源端IP地址、所述目的端IP地址和所述进程标识组成的第一ping请求标识存在关联的TCP链路标识;
若查询到,则将查询到的TCP链路标识对应的TCP链路,确定为所述TCP链路;
若未查询到,则向所述代理服务器发送TCP链路创建请求,在接收到所述代理服务器返回的TCP链路创建成功回执后,将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路。
在一种可能的实现方式中,所述将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路之后,所述TCP链路确定模块1220还用于:
将所述第一ping请求标识和所述TCP链路的TCP链路标识进行关联,并将得到的关联关系进行保存。
在一种可能的实现方式中,所述通过所述TCP链路将封装后的请求报文发送给所述代理服务器之后,所述发送模块1230还用于:
若接收到所述代理服务器通过目标TCP链路返回的应答报文,则基于所述目标TCP链路的TCP链路标识,从所述各个ping请求标识与TCP链路标识之间的关联关系中,确定出第二ping请求标识,其中,所述应答报文中的ICMP回显应答报文是所述目的端基于接收到的ICMP回显请求报文生成,并返回给所述代理服务器的;
将所述第二ping请求标识包括的源端IP地址作为所述应答报文的目的端IP地址,以及,将所述第二ping请求标识包括的目的端IP地址作为所述应答报文的源端IP地址;并将所述应答报文和所述应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包;
将所述ping应答数据包发送给所述协议栈,以通过所述协议栈将所述ping应答数据包返回给所述第二ping请求标识包括的进程标识所对应的进程。
基于同一发明构思,参阅图13所示,本申请实施例中提供一种报文的代理转发装置,应用于代理服务器,包括:
接收模块1310,用于接收客户端通过传输控制协议TCP链路发送的请求报文;
解析模块1320,用于对所述请求报文进行解析,得到目的端网际协议IP地址和网际控制报文协议ICMP回显请求报文;
转发模块1330,用于将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端。
在一种可能的实现方式中,所述将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端之后,所述转发模块1330还用于:
在接收到所述目的端返回的所述ICMP回显请求报文对应的ICMP回显应答报文后,将所述ICMP回显应答报文进行封装,并通过所述TCP链路,将封装后的应答报文返回给所述客户端。
参阅图14所示,本申请实施例中提供一种电子设备,该电子设备可以实现前述报文的代理转发方法的功能,参考图14,该电子设备包括:
至少一个处理器141,以及与至少一个处理器141连接的存储器142,本申请实施例中不限定处理器141与存储器142之间的具体连接介质,图14中是以处理器141和存储器142之间通过总线140连接为例。总线140在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线140可以分为地址总线、数据总线、控制总线等,为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器141也可以称为控制器,对于名称不做限制。
示例性的,在本申请实施例中,该电子设备为客户端时,该电子设备可以是个人计算机、移动终端、手机、平板电脑、笔记本电脑、智能掌上设备,个人电脑(PersonalComputer,PC),智能屏,车载设备、各类可穿戴设备,个人数字助理(Personal DigitalAssistant,PDA)、电子书阅读器等设备。
另一示例性的,在本申请实施例中,该电子设备为代理服务器时,该电子设备可以是独立的物理服务器,多个的物理服务器构成的服务器集群或者分布式系统,提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等的基础云计算服务的云服务器。
在本申请实施例中,存储器142存储有可被至少一个处理器141执行的指令,至少一个处理器141通过执行存储器142存储的指令,可以执行前文论述报文的代理转发方法。处理器141可以实现报文的代理转发装置的功能。
在一种可能的设计中,处理器141可包括一个或多个处理单元,处理器141可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器141中。在一些实施例中,处理器141和存储器142可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器141可以是通用处理器,例如,中央处理器(Central Processing Unit,CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的报文的代理转发方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器142作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器142可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等。存储器142是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器142还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器141进行设计编程,可以将前述实施例中介绍的报文的代理转发方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述实施例的报文的代理转发方法的步骤。如何对处理器141进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行如上述各个实施例中的任意一种方法。
在一些可能的实施方式中,本申请提供的报文的代理转发方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该装置执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种报文的代理转发方法,其特征在于,应用于客户端,包括:
对从协议栈获取到的ping请求数据包进行解析,得到所述ping请求数据包对应的源端网际协议IP地址、目的端IP地址、关联进程的进程标识和网际控制报文协议ICMP回显请求报文;
基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
将所述目的端IP地址和所述ICMP回显请求报文进行封装,并通过所述TCP链路将封装后的请求报文发送给所述代理服务器,以使所述代理服务器将所述ICMP回显请求报文转发给所述目的端IP地址对应的目的端。
2.如权利要求1所述的方法,其特征在于,所述对从协议栈获取到的ping请求数据包进行解析之前,还包括:
响应于用户的输入操作,生成所述ICMP回显请求报文,并将所述ICMP回显请求报文发送给所述协议栈;
通过所述协议栈对所述ICMP回显请求报文进行协议封装,得到所述ping请求数据包,并将所述ping请求数据包发送给所述客户端。
3.如权利要求1所述的方法,其特征在于,所述基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,包括:
从所述各个ping请求标识与TCP链路标识之间的关联关系中,查询与由所述源端IP地址、所述目的端IP地址和所述进程标识组成的第一ping请求标识存在关联的TCP链路标识;
若查询到,则将查询到的TCP链路标识对应的TCP链路,确定为所述TCP链路;
若未查询到,则向所述代理服务器发送TCP链路创建请求,在接收到所述代理服务器返回的TCP链路创建成功回执后,将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路。
4.如权利要求3所述的方法,其特征在于,所述将所述TCP链路创建成功回执对应的TCP链路,作为所述TCP链路之后,还包括:
将所述第一ping请求标识和所述TCP链路的TCP链路标识进行关联,并将得到的关联关系进行保存。
5.如权利要求1-4任一项所述的方法,其特征在于,所述通过所述TCP链路将封装后的请求报文发送给所述代理服务器之后,还包括:
若接收到所述代理服务器通过目标TCP链路返回的应答报文,则基于所述目标TCP链路的TCP链路标识,从所述各个ping请求标识与TCP链路标识之间的关联关系中,确定出第二ping请求标识,其中,所述应答报文中的ICMP回显应答报文是所述目的端基于接收到的ICMP回显请求报文生成,并返回给所述代理服务器的;
将所述第二ping请求标识包括的源端IP地址作为所述应答报文的目的端IP地址,以及,将所述第二ping请求标识包括的目的端IP地址作为所述应答报文的源端IP地址;并将所述应答报文和所述应答报文的源端IP地址及目的端IP地址进行封装,得到ping应答数据包;
将所述ping应答数据包发送给所述协议栈,以通过所述协议栈将所述ping应答数据包返回给所述第二ping请求标识包括的进程标识所对应的进程。
6.一种报文的代理转发方法,其特征在于,应用于代理服务器,包括:
接收客户端通过传输控制协议TCP链路发送的请求报文;
对所述请求报文进行解析,得到目的端网际协议IP地址和网际控制报文协议ICMP回显请求报文;
将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端。
7.如权利要求6所述的方法,其特征在于,所述将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端之后,还包括:
在接收到所述目的端返回的所述ICMP回显请求报文对应的ICMP回显应答报文后,将所述ICMP回显应答报文进行封装,并通过所述TCP链路,将封装后的应答报文返回给所述客户端。
8.一种报文的代理转发装置,其特征在于,应用于客户端,包括:
解析模块,用于对从协议栈获取到的ping请求数据包进行解析,得到所述ping请求数据包对应的源端网际协议IP地址、目的端IP地址、关联进程的进程标识和网际控制报文协议ICMP回显请求报文;
TCP链路确定模块,用于基于所述源端IP地址、所述目的端IP地址和所述进程标识,以及各个ping请求标识与传输控制协议TCP链路标识之间的关联关系,确定所述ping请求数据包对应的TCP链路,其中,任一关联关系中的ping请求标识包括关联ping请求数据包的源端IP地址、目的端IP地址和进程标识;
发送模块,用于将所述目的端IP地址和所述ICMP回显请求报文进行封装,并通过所述TCP链路将封装后的请求报文发送给所述代理服务器,以使所述代理服务器将所述ICMP回显请求报文转发给所述目的端IP地址对应的目的端。
9.一种报文的代理转发装置,其特征在于,应用于代理服务器,包括:
接收模块,用于接收客户端通过传输控制协议TCP链路发送的请求报文;
解析模块,用于对所述请求报文进行解析,得到目的端网际协议IP地址和网际控制报文协议ICMP回显请求报文;
转发模块,用于将所述ICMP回显请求报文发送给所述目的端IP地址对应的目的端。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序或指令;
处理器,用于执行所述存储器中的计算机程序或指令,使得如权利要求1-7中任一所述的方法被执行。
CN202311551270.7A 2023-11-21 2023-11-21 一种报文的代理转发方法、装置及设备 Pending CN117615009A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311551270.7A CN117615009A (zh) 2023-11-21 2023-11-21 一种报文的代理转发方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311551270.7A CN117615009A (zh) 2023-11-21 2023-11-21 一种报文的代理转发方法、装置及设备

Publications (1)

Publication Number Publication Date
CN117615009A true CN117615009A (zh) 2024-02-27

Family

ID=89948869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311551270.7A Pending CN117615009A (zh) 2023-11-21 2023-11-21 一种报文的代理转发方法、装置及设备

Country Status (1)

Country Link
CN (1) CN117615009A (zh)

Similar Documents

Publication Publication Date Title
US9397901B2 (en) Methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device that emulates multiple application servers
CN105791315B (zh) 一种udp协议加速方法和系统
US9015822B2 (en) Automatic invocation of DTN bundle protocol
EP3338396A1 (en) Device and method for establishing connection in load-balancing system
KR101938623B1 (ko) 오픈 플로우 통신 방법, 시스템, 제어기 및 서비스 게이트웨이
CN108848025B (zh) 数据处理方法、智能网关、物联网系统
CN111786867B (zh) 一种数据传输方法及服务器
CN110247926B (zh) 一种交互方法和系统
CN110691139B (zh) 一种数据传输方法、装置、设备及存储介质
CN107547505B (zh) 一种报文处理方法及装置
CN112866206A (zh) 一种单向数据传输方法及装置
CN111464879B (zh) 一种数据通信的方法及装置
EP3097662A1 (en) Methods, systems and computer readable media for testing network devices using simulated application traffic
CN117615009A (zh) 一种报文的代理转发方法、装置及设备
CN110581792A (zh) 一种报文传输方法及装置
CN112667359B (zh) 数据透传方法、电子设备及存储介质
CN113839894B (zh) 报文处理方法及系统
CN112039801B (zh) 设置ip信息的方法、系统和代理服务器
CN115801629B (zh) 双向转发侦测方法、装置、电子设备及可读存储介质
CN112202795A (zh) 一种数据处理方法、网关设备及介质
WO2016197995A1 (zh) 一种无状态网络协议中实现有状态操作的方法及装置
CN116996602B (zh) 数据包的处理方法及装置、存储介质、电子设备
CN115190077B (zh) 控制方法、装置及计算设备
CN116566763A (zh) 网络系统、通信方法、网络节点和存储介质
CN117336262A (zh) 一种单向报文传输方法、装置、存储介质及设备

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