CN115834296A - 一种数据传输方法、装置、电子设备和存储介质 - Google Patents
一种数据传输方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115834296A CN115834296A CN202310120987.XA CN202310120987A CN115834296A CN 115834296 A CN115834296 A CN 115834296A CN 202310120987 A CN202310120987 A CN 202310120987A CN 115834296 A CN115834296 A CN 115834296A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- current
- data packet
- address
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据传输方法、装置、电子设备和存储介质,该方法包括:监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包,并判断预设数据链路层是否接收到向当前主机发送的MAC帧数据;若存在第一IP数据包或MAC帧数据,将第一IP数据包或与MAC帧数据对应的第二IP数据包缓存到预设处理队列,第二IP数据包是对MAC帧数据解包后获取的;若预设处理队列中的首个数据是第二IP数据包,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包;将第三IP数据包发送到当前主机,从而基于任意数据链路层实现在TCP‑IP协议下进行可靠的数据传输,提高了数据传输的灵活性。
Description
技术领域
本申请涉及通信技术领域,更具体地,涉及一种数据传输方法、装置、电子设备和存储介质。
背景技术
在计算机网络层通信的物理介质中,通常有光纤、双绞线、同轴电缆、无线、微波、激光等方式。这些方式都能提供不同容量的通信信道,在物理层面,不同的介质需要有不同的收发装置,且需要遵循的一定的传输规则。发送端和接收端必须定义一套数据传输控制的规则,即为数据链路层协议。数据链路层协议是多变的,但是TCP-IP协议是稳定的,这是网络分层的优势,所以针对多变的数据链路层,如何实现一个TCP-IP是一个常常需要面对的问题。
然而,数据链路层上层的TCP-IP协议是互联网四层网络模型中最复杂的两层协议。实现一个TCP-IP协议需要花费的代价很高,TCP-IP协议族里面包含了许多特性,要实现这些特性将会是一个巨大的挑战。现有的TCP-IP协议在各种常见的操作系统中都提供了支持,但是作为操作系统的一项标准功能,其实现细节、考虑的场景和实现方法都是很复杂的,基本上在短时间内是无法掌握的,即便是在开放源代码的Linux系统中。
现有技术中,基本是基于以太网的数据链路层协议实现在TCP-IP协议下进行数据传输,而对于基于非以太网(如串口、并口等)的数据链路层,难以实现在TCP-IP协议下进行数据传输。
因此,如何基于任意数据链路层实现在TCP-IP协议下进行可靠的数据传输,是目前有待解决的技术问题。
发明内容
本申请实施例提供一种数据传输方法、装置、电子设备和存储介质,用以基于任意数据链路层实现在TCP-IP协议下进行可靠的数据传输。
第一方面,提供一种数据传输方法,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,所述方法包括:监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;将所述第三IP数据包发送到所述当前主机。
第二方面,提供一种数据传输装置,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,所述装置包括:监听模块,用于监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;缓存模块,用于若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;修改模块,用于若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;发送模块,用于将所述第三IP数据包发送到所述当前主机。
第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行第一方面所述的数据传输方法。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的数据传输方法。
通过应用以上技术方案,在包括至少两个主机的系统中,各主机分别位于两个不同的局域网中,各局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各主机对应的两个虚拟主机,监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包,并判断预设数据链路层是否接收到向当前主机发送的MAC帧数据,其中,当前主机经网络接口连接与当前主机对应的当前虚拟机;若存在第一IP数据包或MAC帧数据,将第一IP数据包或与MAC帧数据对应的第二IP数据包缓存到预设处理队列,第二IP数据包是对MAC帧数据解包后获取的;若预设处理队列中的首个数据是第二IP数据包,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包;将第三IP数据包发送到当前主机,从而基于任意数据链路层实现在TCP-IP协议下进行可靠的数据传输,提高了数据传输的灵活性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种数据传输方法的流程示意图;
图2示出了本发明实施例中与数据传输方法对应的网络传输结构的原理示意图;
图3示出了本发明另一实施例提出的一种数据传输方法的原理示意图;
图4示出了本发明又一实施例提出的一种数据传输方法的原理示意图;
图5示出了本发明实施例中与服务端对应的预设收发配置文件的示意图;
图6示出了本发明实施例中与客户端对应的预设收发配置文件的示意图;
图7示出了本发明实施例提出的一种数据传输装置的结构示意图;
图8示出了本发明实施例提出的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求部分指出。
应当理解的是,本申请并不局限于下面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
需要注意的是,下述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
本申请实施例提供一种数据传输方法,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,如图1所示,该方法包括以下步骤:
步骤S101,监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机。
本实施例中,在两个主机之间进行数据传输,例如,一个主机为服务端,另一个主机为客户端,主机包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机、自助服务终端和可穿戴式电子设备等。两个主机分别位于两个不同的局域网中,两个局域网之间基于自定义的预设数据链路层进行通信,该预设数据链路层是用户自定义的数据链路层,该预设数据链路层可基于包括串口、并口、无线网络、声波、机械波中的任一种数据传输方式建立。还预先设置了与各主机对应的两个虚拟主机,虚拟主机是基于主机的资源进行设置的,具体的设置过程对于本领域技术人员是显而易见的,在此不再赘述。
该数据传输方法的执行主体可以是当前主机,也可以是可与当前主机进行以太网通信的其他主机。当前主机经网络接口连接与当前主机对应的当前虚拟机,网络接口为当前主机的网卡的接口,当前主机的网卡可以是实体网卡,也可以是虚拟网卡。当前主机需要发出数据时,基于该网络接口将IP数据包发送到当前虚拟机,通过对该网络接口进行监听,可确定在网络接口是否存在由当前主机发出的第一IP数据包。同时,判断预设数据链路层是否接收到向当前主机发送的MAC帧数据,该MAC帧数据是从另一个局域网的其他主机发送到预设数据链路层的。可选的,第一IP数据包是当前主机发出的请求数据或回复数据,MAC帧数据是远端主机向当前主机发出的回复数据或请求数据。
步骤S102,若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的。
本实施例中,为了避免码率高的时候丢失数据,预先建立预设处理队列对数据进行缓存,若存在第一IP数据包,将第一IP数据包缓存到预设处理队列等待后续处理;若存在MAC帧数据,则先将MAC帧数据进行解包,得到第二IP数据包,然后将第二IP数据包缓存到预设处理队列等待后续处理。
步骤S103,若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包。
基于以太网的数据链路层是采用ARP(Address Resolution Protocol,地址解析协议)进行数据传输的,ARP在局域网中的工作原理类似于FM广播(调频广播),主要用来获取其他设备的MAC地址。如果设备A(假设IP地址为IPA)想要发送数据到设备B(假设IP地址为IPB),那么设备A会通过ARP在局域网内广播,内容类似于:谁的IP地址是IPB,请回答我。这时候设备B收到后,就会返回给设备A,设备A便知道了设备B的MAC地址,从而可以继续后续通信。本实施例中,由于预设数据链路层是自定义的,在预设数据链路层不是基于以太网时,ARP无法工作,进而无法将第二IP数据包直接发送到当前主机,因此,需要对第二IP数据包进行修改,以欺骗系统,具体的,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包。
在本申请一些实施例中,在得到第三IP数据包之后,所述方法还包括:
若所述当前主机是服务端,判断所述第三IP数据包中的第一目的端口是否与所述当前主机提供的服务端口一致;
若不一致,将所述第一目的端口修改为所述服务端口。
本实施例中,若当前主机是服务端,服务端会提供相应的服务端口进行服务。在得到第三IP数据包之后,若第三IP数据包中的第一目的端口与当前主机提供的服务端口不一致,需要将第一目的端口修改为所述服务端口,从而保证可靠的将第三IP数据包发送到作为服务端的当前主机。
举例来说,若当前主机提供的服务端口是8080,如果第三IP数据包中的第一目的端口不是8080,需要将第一目标端口修改为8080。
在本申请一些实施例中,所述数据头包括原始源IP地址、原始目的IP地址和原始校验和,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,具体为:
将所述原始源IP地址修改为所述虚拟IP地址;
将所述原始目的IP地址修改为所述当前IP地址;
将所述原始校验和修改为与所述当前IP地址和所述虚拟IP地址对应的校验和。
本实施例中,分别对数据头中的原始源IP地址、原始目的IP地址和原始校验和进行修改,具体的,将原始源IP地址修改为虚拟IP地址,将原始目的IP地址修改为当前IP地址,并将原始校验和修改为与当前IP地址和虚拟IP地址对应的校验和,从而实现系统欺骗,使当前主机认为修改后得到的第三IP数据包是从当前虚拟主机发出的,从而实现准确的对第二IP数据包的数据头进行修改,进而保证了数据传输的可靠性。
步骤S104,将所述第三IP数据包发送到所述当前主机。
本实施例中,由于第三IP数据包的数据头是修改后的数据头,可将第三IP数据包发送到当前主机,使当前主机接收到第三IP数据包中的数据。
在本申请一些实施例中,将所述第三IP数据包发送到所述当前主机,具体为:
基于原始套接字将所述第三IP数据包发送到所述当前主机。
本实施例中,可通过调用socket()函数创建原始套接字,在linux或windows系统下均可实现创建原始套接字。基于原始套接字将第三IP数据包发送到当前主机,实现模拟从当前虚拟主机将第三IP数据包发送到当前主机,从而保证当前主机更加可靠的接收数据。
需要说明的是,以上实施例的方案仅为本申请所提出的一种具体实现方案,其他将第三IP数据包发送到当前主机的方式均属于本申请的保护范围。
在本申请一些实施例中,所述方法还包括:
若所述首个数据是所述第一IP数据包,基于与所述预设数据链路层对应的数据链路层协议对所述第一IP数据包进行打包,并发送到所述预设数据链路层进行转发。
本实施例中,预设数据链路层对应数据链路层协议,若首个数据为第一IP数据包,通过数据链路层协议对第一IP数据包进行打包,形成相应的MAC帧数据,并发送到预设数据链路层进行转发,从而基于任意数据链路层实现在TCP-IP协议下使当前主机可靠的发出数据。
在本申请一些实施例中,在将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列之后,所述方法还包括:
根据预设收发配置文件对所述首个数据的配置项进行分析,并根据分析结果判断所述首个数据的数据传输方向;
若所述数据传输方向为接收方向,确定所述首个数据为所述第二IP数据包;
若所述数据传输方向为发出方向,确定所述首个数据为所述第一IP数据包;
其中,所述配置项包括源IP地址、目的IP地址、源端口和目的端口。
本实施例中,预先设置预设收发配置文件,预设收发配置文件定义了需要监听的网络接口的设备信息、数据链路层协议、收发IP地址信息和收发端口信息,通过预设收发配置文件可以确定数据传输方向。
从预设处理队列中获取需要最先处理的首个数据,根据预设收发配置文件对首个数据进行分析,以查找与首个数据的配置项匹配的配置信息,然后根据分析结果判断首个数据的数据传输方向,该配置项包括源IP地址、目的IP地址、源端口和目的端口,若数据传输方向为接收方向,确定首个数据为待接收的第二IP数据包;若数据传输方向为发出方向,确定首个数据是待发出的第一IP数据包,从而保证准确高效的确定数据传输方向。
在本申请具体的应用场景中,预设收发配置文件包括device、svr、port、fake、cli和role,其中,device表示需要监听的网络接口的设备信息,svr表示服务端的IP地址,port表示服务端开放的端口,fake表示所述虚拟主机的信息,cli表示客户端的IP地址,role表示所述当前主机是服务端还是客户端。如图5所示为与服务端对应的预设收发配置文件的示意图,如图6所示为与客户端对应的预设收发配置文件的示意图。
在本申请一些实施例中,所述当前虚拟机设置有虚拟MAC地址,所述虚拟MAC地址在所述当前主机所在局域网内是唯一的,且只与所述虚拟IP地址对应。
本实施例中,当前虚拟机设置有虚拟MAC地址,该虚拟MAC地址在当前主机所在局域网内是唯一的,且并没有其他IP地址使用该虚拟MAC地址,即该虚拟MAC地址只与虚拟IP地址对应,由于当前虚拟主机配置了虚拟MAC地址,从而保证修改后的第三IP数据可以可靠的发送到当前主机,提高了数据传输的可靠性。
在本申请一些实施例中,在监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据之前,所述方法还包括:
建立与所述当前主机的以太网通信连接。
本实施例中,通过预先建立与当前主机的以太网通信连接,从而可保证可靠的进行网络接口的监听和与当前主机进行数据传输。其中,以太网通信连接的具体建立过程对于本领域技术人员是显而易见的,在此不再赘述。
在本申请一些实施例中,基于第一线程进行监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包;基于第二线程进行基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;基于第三线程进行根据预设收发配置文件对所述首个数据的配置项进行分析;基于第四线程进行基于与所述预设数据链路层对应的数据链路层协议对所述第一IP数据包进行打包,并发送到所述预设数据链路层进行转发。
本实施例中,分别基于独立的线程进行监听、数据分析、数据修改和数据打包发出,实现最大化避免性能不够造成的数据丢失或者速度下降问题,并且可同时对多个网络接口进行监听,并为每个监听设置一个独立监听线程,每个独立监听线程对应一个进行数据缓存的预设处理队列,以实现更加高效和可靠的进行数据传输。
通过应用以上技术方案,在包括至少两个主机的系统中,各主机分别位于两个不同的局域网中,各局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各主机对应的两个虚拟主机,监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包,并判断预设数据链路层是否接收到向当前主机发送的MAC帧数据,其中,当前主机经网络接口连接与当前主机对应的当前虚拟机;若存在第一IP数据包或MAC帧数据,将第一IP数据包或与MAC帧数据对应的第二IP数据包缓存到预设处理队列,第二IP数据包是对MAC帧数据解包后获取的;若预设处理队列中的首个数据是第二IP数据包,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包;将第三IP数据包发送到当前主机,从而基于任意数据链路层实现在TCP-IP协议下进行可靠的数据传输,并提高了数据传输的灵活性。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
本申请实施例提供一种数据传输方法,应用于包括至少两个主机的系统中,各主机分别位于两个不同的局域网中,各局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各主机对应的两个虚拟主机。
该方法对应的网络传输结构如图2所示,该网络传输结构包括由应用层、传输层、网络层和预设数据链路层组成的四层结构,预设数据链路层在最下层。若现在主机A的应用A需要把数据发到主机B的应用B,则:从应用层开始,应用A产生原始数据,将该原始数据逐层向下打包,最上面三层数据是标准的网络协议,经过最上面三层可以得到IP数据包,将IP数据包作为负载加载到预设数据链路层的MAC帧数据中,然后把MAC帧数据通过物理链路传送到主机B。主机B在物理链路接收到主机A的MAC帧数据,其中,物理链路和预设数据链路层都可以由用户自定义,主机B把收到的MAC帧数据逐层解包,最后数据到达应用B。类似的,主机B的应用B也可以通过一样的方式发送数据到主机A的应用A,实现TCP-IP的全双工通信。
以下结合图3对本实施例中的数据传输方法进行说明。
如图3所示,局域网A和局域网B是两个不同的局域网,局域网A和局域网B通过自定义的预设数据链路层进行唯一通信,预设数据链路层可基于包括串口、并口、无线网络、声波、机械波中的任一种数据传输方式建立。预先在主机A上设置MAC监听和处理程序MA,在主机B上设置MAC监听和处理程序MB,其中,MA也可设置在除主机A外的其他主机上,只要保证MA可与主机A进行以太网通信,MB也可设置在除主机B外的其他主机上,只要保证MB可与主机B进行以太网通信。MB在主机B的192.168.128.2网段设置了一个虚拟ARP,该虚拟ARP中的虚拟IP地址是虚拟主机B1的IP地址,为192.168.128.4,虚拟ARP信息中还包括虚拟主机B1的MAC地址,并且对主机B的网络接口设置了数据监听。MA在主机A的192.168.128.1网段设置了一个虚拟ARP,该虚拟ARP中的虚拟IP地址是虚拟主机A1的IP地址,为192.168.128.3,虚拟ARP中还包括虚拟主机A1的MAC地址,并且对主机A的网络接口设置了数据监听。若主机A是服务端,主机B是客户端,该数据传输方法包括以下步骤:
步骤1,主机A作为服务端,开启一个服务serverA,端口为8080(主机IP地址+端口可以确定一个服务)。
步骤2,主机B作为客户端向虚拟主机B1的8080端口发送数据。
步骤3,MB由于设置了监听,所以MB可以获取到B->B1的IP数据包IPB->B1。由于虚拟主机B1是MB设置的一个虚假的、实际不存在的主机,所以虚拟主机B1不会回复主机B的消息,主机B不会被虚拟主机B1的回复打断,造成通信异常。
步骤4,MB获取到IPB->B1,然后放入预设处理队列中排队,在预设处理队列中的首个数据是IPB->B1时,对IPB->B1按照预设数据链路层对应的数据链路层协议进行打包和转发,把IPB->B1当成数据传送出去。
步骤5,MA收到来自MB的预设数据链路层的数据,通过数据链路层协议进行解包,可以获得IPB->B1。
步骤6,MA收到IPB->B1后,需要进行系统欺骗。MA修改收到的IPB->B1的源IP地址和目的IP地址,以及校验和等,伪造成IPA1->A。同时如果主机B发数据到虚拟主机B1的端口不是8080,还需要在MA处理IPA1->A的TCP头部数据,进行端口的伪造,伪造成服务serverA的端口8080。
步骤7,MA现在有了IPA1->A,然后通过原始套接字发送IPA1->A到主机A进行欺骗,模拟从虚拟主机A1发送IPA1->A到主机A。
步骤8,主机A上的serverA收到IPA1->A,可以拿到B发过来的数据,进行相应处理后,serverA将要进行回复。
步骤9,主机A收到的IP报文是IPA1->A,所以会回复的报文为IPA->A1,由于虚拟主机A1是MA设置的一个虚假的、实际不存在的主机,所以虚拟主机A1不会回复主机A的消息,主机A不会被虚拟主机A1的回复打断,造成通信异常。
步骤10,MA监听到IPA->A1后,对IPA->A1按照数据链路层协议打包和转发,发送给MB。
步骤11,MB收到IPA->A1后,进行判断,可由IPA->A1的源IP地址和目的IP地址特征得知是回复报文。然后MB对IPA->A1进行修改,修改方法类似步骤6,修改后得到IPB1->B后,通过原始套接字技术发送IPB1->B到主机B,再次进行系统欺骗。
步骤12,主机B收到数据IPB1->B后,可以得到来自serverA的数据。如果要继续回复,流程回到步骤2即可,完成闭环。
本申请实施例还提出了一种数据传输方法,应用于包括至少两个主机的系统中,各主机分别位于两个不同的局域网中,各局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各主机对应的两个虚拟主机,以下结合图4对该数据传输方法进行说明,图4中的虚线箭头表示数据传输方向为发出方向,实线箭头表示数据传输方向为接收方向,虚线框中的数据处理过程采用独立线程,该数据传输方法包括以下步骤:
步骤1,监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包,并判断预设数据链路层是否接收到向当前主机发送的MAC帧数据,该MAC帧数据是远端主机的回复数据;
步骤2,若存在第一IP数据包或MAC帧数据,将第一IP数据包或与MAC帧数据对应的第二IP数据包缓存到预设处理队列,第二IP数据包是对MAC帧数据解包后获取的。
步骤3,基于数据分析线程进行根据预设收发配置文件对首个数据的配置项进行分析,并根据分析结果判断首个数据的数据传输方向;
步骤4,若数据传输方向为接收方向,确定首个数据为第二IP数据包;若数据传输方向为发出方向,确定首个数据为第一IP数据包。
步骤5,若预设处理队列中的首个数据是第一IP数据包,基于数据打包转发线程进行基于数据链路层协议对第一IP数据包进行打包,并发送到预设数据链路层进行转发,经物理链路到达远端主机。
步骤6,若预设处理队列中的首个数据是第二IP数据包,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包,基于原始套接字将第三IP数据包发送到当前主机,并维持TCP-IP协议层链路,避免TCP-IP断开。
其中,预设收发配置文件定义了需要监听的网络接口的设备信息、数据链路层协议、收发IP地址信息和收发端口信息,通过预设收发配置文件可以确定数据传输方向。
另外,图4中接收双方处于一个对等的关系,采用本数据传输方法可实现双向的收发。与图4中各虚线框对应的数据处理过程均采用独立的线程进行,实现最大化避免性能不够造成的数据丢失或者速度下降问题。
通过应用以上技术方案,与现有技术相比,具有以下技术效果:
一、本方案可以基于任意数据链路层实现TCP-IP双工通信。
二、本方案通过设置虚拟主机,避免了系统对数据的干扰,从而避免了链路的异常报文,并可以欺骗系统达到对数据的认可,从而打通全链路。
三、本方案在实施上可以实现多平台支持,无需特别定制,实施难度低,验证方式简单,满足快速开发的要求。
四、本方案除自定义的预设数据链路层必须提供收发硬件以外,不需要额外的特殊硬件资源,成本低,开销小。
五、本方案可扩展性强,可同时处理多个网络接口,包括虚拟的网络接口,可以处理多条链路数据,满足弹性扩展的需求。
六、本方案利用系统的协议栈进行处理,可保证TCP-IP的完整实现,不会存在没考虑到的情况而造成失败。
七、本方案使用常规的MAC监听,原始套接字发送、缓存、多线程等技术,不涉及额外复杂的技术,对使用者友好。
八、本方案对数据链路层的类型和物理层的类型不做限制,可以在任何满足通信要求的介质中实现。
本申请实施例还提出了一种数据传输装置,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,如图7所示,所述装置包括:
监听模块701,用于监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;
缓存模块702,用于若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;
修改模块703,用于若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;
发送模块704,用于将所述第三IP数据包发送到所述当前主机。
在具体的应用场景中,所述装置还包括发出模块,用于:
若所述首个数据是所述第一IP数据包,基于与所述预设数据链路层对应的数据链路层协议对所述第一IP数据包进行打包,并发送到所述预设数据链路层进行转发。
在具体的应用场景中,所述装置还包括分析模块,用于:
根据预设收发配置文件对所述首个数据的配置项进行分析,并根据分析结果判断所述首个数据的数据传输方向;
若所述数据传输方向为接收方向,确定所述首个数据为所述第二IP数据包;
若所述数据传输方向为发出方向,确定所述首个数据为所述第一IP数据包;
其中,所述配置项包括源IP地址、目的IP地址、源端口和目的端口。
在具体的应用场景中,所述修改模块,还用于:
若所述当前主机是服务端,判断所述第三IP数据包中的第一目的端口是否与所述当前主机提供的服务端口一致;
若不一致,将所述第一目的端口修改为所述服务端口。
在具体的应用场景中,所述数据头包括原始源IP地址、原始目的IP地址和原始校验和,修改模块703,具体用于:
将所述原始源IP地址修改为所述虚拟IP地址;
将所述原始目的IP地址修改为所述当前IP地址;
将所述原始校验和修改为与所述当前IP地址和所述虚拟IP地址对应的校验和。
在具体的应用场景中,发送模块704,具体用于:
基于原始套接字将所述第三IP数据包发送到所述当前主机。
在具体的应用场景中,所述当前虚拟机设置有虚拟MAC地址,所述虚拟MAC地址在所述当前主机所在局域网内是唯一的,且只与所述虚拟IP地址对应。
通过应用以上技术方案,数据传输装置应用于包括至少两个主机的系统中,各主机分别位于两个不同的局域网中,各局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各主机对应的两个虚拟主机,该装置包括:监听模块,用于监听当前主机的网络接口是否存在由当前主机发出的第一IP数据包,并判断预设数据链路层是否接收到向当前主机发送的MAC帧数据,其中,当前主机经网络接口连接与当前主机对应的当前虚拟机;缓存模块,用于若存在第一IP数据包或MAC帧数据,将第一IP数据包或与MAC帧数据对应的第二IP数据包缓存到预设处理队列,第二IP数据包是对MAC帧数据解包后获取的;修改模块,用于若预设处理队列中的首个数据是第二IP数据包,基于当前主机的当前IP地址和当前虚拟主机的虚拟IP地址修改第二IP数据包的数据头,得到第三IP数据包;发送模块,用于将第三IP数据包发送到当前主机,从而基于任意数据链路层实现在TCP-IP协议下进行可靠的数据传输,提高了数据传输的灵活性。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存储处理器的可执行指令;
处理器801,被配置为经由执行所述可执行指令来执行:
监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;
若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;
若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;
将所述第三IP数据包发送到所述当前主机。
上述通信总线可以是PCI (Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA (Extended IndustryStandard Architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括RAM (Random Access Memory,随机存取存储器),也可以包括非易失性存储器,例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括CPU (Central ProcessingUnit,中央处理器)、NP (Network Processor,网络处理器)等;还可以是DSP (Digital SignalProcessing,数字信号处理器)、ASIC (Application SpecificIntegrated Circuit,专用集成电路)、FPGA (Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据传输方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上所述的数据传输方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种数据传输方法,其特征在于,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,所述方法包括:
监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;
若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;
若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;
将所述第三IP数据包发送到所述当前主机。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述首个数据是所述第一IP数据包,基于与所述预设数据链路层对应的数据链路层协议对所述第一IP数据包进行打包,并发送到所述预设数据链路层进行转发。
3.如权利要求1所述的方法,其特征在于,在将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列之后,所述方法还包括:
根据预设收发配置文件对所述首个数据的配置项进行分析,并根据分析结果判断所述首个数据的数据传输方向;
若所述数据传输方向为接收方向,确定所述首个数据为所述第二IP数据包;
若所述数据传输方向为发出方向,确定所述首个数据为所述第一IP数据包;
其中,所述配置项包括源IP地址、目的IP地址、源端口和目的端口。
4.如权利要求1所述的方法,其特征在于,在得到第三IP数据包之后,所述方法还包括:
若所述当前主机是服务端,判断所述第三IP数据包中的第一目的端口是否与所述当前主机提供的服务端口一致;
若不一致,将所述第一目的端口修改为所述服务端口。
5.如权利要求1所述的方法,其特征在于,所述数据头包括原始源IP地址、原始目的IP地址和原始校验和,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,具体为:
将所述原始源IP地址修改为所述虚拟IP地址;
将所述原始目的IP地址修改为所述当前IP地址;
将所述原始校验和修改为与所述当前IP地址和所述虚拟IP地址对应的校验和。
6.如权利要求1所述的方法,其特征在于,将所述第三IP数据包发送到所述当前主机,具体为:
基于原始套接字将所述第三IP数据包发送到所述当前主机。
7.如权利要求1所述的方法,其特征在于,所述当前虚拟机设置有虚拟MAC地址,所述虚拟MAC地址在所述当前主机所在局域网内是唯一的,且只与所述虚拟IP地址对应。
8.一种数据传输装置,其特征在于,应用于包括至少两个主机的系统中,各所述主机分别位于两个不同的局域网中,各所述局域网之间基于自定义的预设数据链路层进行通信,预先设置分别与各所述主机对应的两个虚拟主机,所述装置包括:
监听模块,用于监听当前主机的网络接口是否存在由所述当前主机发出的第一IP数据包,并判断所述预设数据链路层是否接收到向所述当前主机发送的MAC帧数据,其中,所述当前主机经所述网络接口连接与所述当前主机对应的当前虚拟机;
缓存模块,用于若存在所述第一IP数据包或所述MAC帧数据,将所述第一IP数据包或与所述MAC帧数据对应的第二IP数据包缓存到预设处理队列,所述第二IP数据包是对所述MAC帧数据解包后获取的;
修改模块,用于若所述预设处理队列中的首个数据是所述第二IP数据包,基于所述当前主机的当前IP地址和所述当前虚拟主机的虚拟IP地址修改所述第二IP数据包的数据头,得到第三IP数据包;
发送模块,用于将所述第三IP数据包发送到所述当前主机。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求 1~7中任意一项所述的数据传输方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~7中任意一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310120987.XA CN115834296B (zh) | 2023-02-16 | 2023-02-16 | 一种数据传输方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310120987.XA CN115834296B (zh) | 2023-02-16 | 2023-02-16 | 一种数据传输方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115834296A true CN115834296A (zh) | 2023-03-21 |
CN115834296B CN115834296B (zh) | 2023-04-18 |
Family
ID=85521581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310120987.XA Active CN115834296B (zh) | 2023-02-16 | 2023-02-16 | 一种数据传输方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115834296B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015192583A1 (zh) * | 2014-06-16 | 2015-12-23 | 中兴通讯股份有限公司 | 一种互联网协议ip地址分配方法、装置、服务器和终端 |
CN107278359A (zh) * | 2016-11-09 | 2017-10-20 | 华为技术有限公司 | 云计算系统中报文处理的方法、主机和系统 |
CN112398817A (zh) * | 2018-01-23 | 2021-02-23 | 华为技术有限公司 | 数据发送的方法及设备 |
CN115118699A (zh) * | 2022-06-21 | 2022-09-27 | 国仪量子(合肥)技术有限公司 | 数据传输方法、装置、系统、上位机和存储介质 |
CN115460651A (zh) * | 2021-06-08 | 2022-12-09 | 展讯通信(上海)有限公司 | 数据传输方法及装置、可读存储介质、终端 |
-
2023
- 2023-02-16 CN CN202310120987.XA patent/CN115834296B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015192583A1 (zh) * | 2014-06-16 | 2015-12-23 | 中兴通讯股份有限公司 | 一种互联网协议ip地址分配方法、装置、服务器和终端 |
CN105208137A (zh) * | 2014-06-16 | 2015-12-30 | 中兴通讯股份有限公司 | 一种互联网协议ip地址分配方法、装置、服务器和终端 |
CN107278359A (zh) * | 2016-11-09 | 2017-10-20 | 华为技术有限公司 | 云计算系统中报文处理的方法、主机和系统 |
CN112398817A (zh) * | 2018-01-23 | 2021-02-23 | 华为技术有限公司 | 数据发送的方法及设备 |
CN115460651A (zh) * | 2021-06-08 | 2022-12-09 | 展讯通信(上海)有限公司 | 数据传输方法及装置、可读存储介质、终端 |
CN115118699A (zh) * | 2022-06-21 | 2022-09-27 | 国仪量子(合肥)技术有限公司 | 数据传输方法、装置、系统、上位机和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115834296B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11750589B2 (en) | System and method for secure application communication between networked processors | |
US10419968B2 (en) | Dynamic selection of TCP congestion control for improved performances | |
CN104243210A (zh) | 远程访问路由器管理页面的方法和系统 | |
US20070136471A1 (en) | Systems and methods for negotiating and enforcing access to network resources | |
CN102197400A (zh) | 用于直接访问网络的网络位置确定 | |
US11438296B1 (en) | System and method for managing notifications from published applications | |
CN112751812A (zh) | 应用协议自适配的方法和装置 | |
CN112383472A (zh) | 网络传输方法、装置、存储介质及电子设备 | |
CN106716975A (zh) | 传输链路的续传方法、装置和系统 | |
US20070136301A1 (en) | Systems and methods for enforcing protocol in a network using natural language messaging | |
CN108512889B (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN115834296B (zh) | 一种数据传输方法、装置、电子设备和存储介质 | |
CN108337306A (zh) | 设备寻找方法、装置、系统、终端及存储介质 | |
WO2020113936A1 (zh) | 一种双向转发检测bfd参数协商方法、装置及芯片 | |
US7363383B2 (en) | Running a communication protocol state machine through a packet classifier | |
CN114710544B (zh) | 一种通道建立方法及装置 | |
CN114025010B (zh) | 建立连接的方法和网络设备 | |
US20150229513A1 (en) | Systems and methods for efficient remote security panel configuration and management | |
US20070136472A1 (en) | Systems and methods for requesting protocol in a network using natural language messaging | |
CN114928459A (zh) | 用于私有通讯架构的连接方法与电脑可读取媒体 | |
US20080025232A1 (en) | Method and system for network connection | |
CN115361443B (zh) | 一种报文处理方法及系统 | |
CN114629889B (zh) | 远程控制链接的建立方法、装置、设备及介质 | |
CN114208132B (zh) | 硬件设备载入 | |
CN110278271B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |