CN114070877B - 基于用户数据报协议的数据传输方法、服务端及客户端 - Google Patents
基于用户数据报协议的数据传输方法、服务端及客户端 Download PDFInfo
- Publication number
- CN114070877B CN114070877B CN202111370117.5A CN202111370117A CN114070877B CN 114070877 B CN114070877 B CN 114070877B CN 202111370117 A CN202111370117 A CN 202111370117A CN 114070877 B CN114070877 B CN 114070877B
- Authority
- CN
- China
- Prior art keywords
- datagram
- client
- server
- connection
- connection establishment
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1825—Adaptation of specific ARQ protocol parameters according to transmission conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
基于用户数据报协议的数据传输方法、服务端及客户端,服务端接收客户端发送的第一建立连接数据报,客户端在发送第一建立连接数据报时连接状态标记为连接建立中;服务端记录客户端的IP地址和UDP端口信息并将连接状态标记为连接建立中;服务端对接收的第一建立连接数据报进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,服务端继续等待客户端发送第二建立连接数据报;当客户端接收到心跳数据报时将客户端的连接状态标记为已连接;当服务端和客户端双方建立连接后,服务端接收客户端发送的ARQ数据报或非ARQ数据报。本发明基于用户数据报协议实现了虚拟连接和自动重传机制,传输可靠,传输延迟低,灵活性强。
Description
技术领域
本发明涉及互联网场景下的基于用户数据报协议的数据传输方法、服务端及客户端,属于数据传输技术领域。
背景技术
目前,在互联网场景中,经常使用TCP(传输控制协议)作为基础协议来进行出局传输,因为在互联网环境下,网络质量不稳定,传输链路长,有可能会导致传输错误的出现,如:数据错误、数据顺序错误等。
TCP协议本身带有拥塞控制、自动重传、数据到达确认等功能,保证了数据的准确到达,但这些功能牺牲一些传输的灵活性以及增加了数据的传输延迟。但随着网络的日益普及和各种应用场景的增加,许多应用场景在需求更低的传输延迟的同时,也要求数据到达的完整性。为了解决这个问题,现行技术有如下两个方案:
第一、使用新的传输层协议,在传输层之上直接进行应用数据的传输,如SCTP:SCTP是一种新的传输层协议。又同时将TCP和UDP的一些优点结合。是一种提供了可靠、高效、有序的数据传输协议。相比之下TCP是面向字节的,而SCTP是针对成帧的消息。
新的传输层协议虽然从技术上来讲是最佳的解决方案,但现代网络环境中存在大量的NAT网络,现有路由器不更新固件,将无法支持新的传输层协议。
第二、使用UDP(用户数据报协议),在应用层实现拥塞控制、自动重传机制。UDP是一种更加轻便,但不可靠的传输协议,它的数据完整性、准确性需要用户自己实现。如:KCP、QUIC等。
KCP的协议中不包含加密部分,所以在应用TLS协议时,可能仍需要进行TLS的握手过程,这一过程会增加延迟。并且QUIC和KCP都只是一个协议,并不是一个完整的服务器框架。
发明内容
为此,本发明提供一种基于用户数据报协议的数据传输方法、服务端及客户端,保证传输可靠性的同时,降低传输延迟,提高灵活性。
为了实现上述目的,本发明第一方面提供一种基于用户数据报协议的数据传输方法,应用于服务端,包括以下步骤:
服务端接收客户端发送的第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
所述服务端在接收第一建立连接数据报时记录所述客户端的IP地址和UDP端口信息,所述服务端将服务端的连接状态标记为连接建立中;
所述服务端对接收的第一建立连接数据报进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述服务端继续等待所述客户端发送第二建立连接数据报;
所述服务端向所述客户端发送心跳数据报,当所述客户端接收到心跳数据报时将所述客户端的连接状态标记为已连接;
当所述服务端和所述客户端双方建立连接后,所述服务端接收所述客户端发送的ARQ数据报或非ARQ数据报。
作为第一方面基于用户数据报协议的数据传输方法的优选方案,当所述服务端接收所述客户端发送的ARQ数据报时,所述ARQ数据报中封装有所述客户端按照所属网络的MTU进行分割的用户数据;所述客户端将按照所属网络的MTU进行分割的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号。
作为第一方面基于用户数据报协议的数据传输方法的优选方案,所述服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录。
作为第一方面基于用户数据报协议的数据传输方法的优选方案,所述服务端向所述客户端发送的心跳数据报中添加正确接收的UDP数据报的编号信息;
所述服务端正确接收的UDP数据报的缓存在所述客户端中删除;
所述服务端接收所述客户端在网络流量环境满足预设条件下重发的检查错误的UDP数据报。
本发明的第二方面提供一种基于用户数据报协议的数据传输方法,应用于客户端,包括以下步骤:
客户端向服务端发送第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
所述客户端的IP地址和UDP端口信息在所述服务端接收第一建立连接数据报时记录于所述服务端,所述服务端将服务端的连接状态标记为连接建立中;
第一建立连接数据报在所述服务端进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述客户端继续向所述服务端发送第二建立连接数据报;
所述客户端接收所述服务端发送的心跳数据报,当所述客户端接收到心跳数据报时,将所述客户端的连接状态标记为已连接;
当所述客户端和所述服务端双方建立连接后,所述客户端向所述服务端发送ARQ数据报或非ARQ数据报。
作为第二方面基于用户数据报协议的数据传输方法的优选方案,当所述客户端向所述服务端发送ARQ数据报时,所述客户端将用户数据按照所属网络的MTU进行分割;所述客户端将按照所属网络的MTU分割后的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号。
作为第二方面基于用户数据报协议的数据传输方法的优选方案,所述服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录。
作为第二方面基于用户数据报协议的数据传输方法的优选方案,所述客户端接收所述服务端发送的心跳数据报,心跳数据报中添加有所述服务端正确接收的UDP数据报的编号信息;
所述客户端接收所述服务端发送的心跳数据报时,读取被所述服务端正确接收的UDP数据报的编号信息,所述客户端将被所述服务端正确接收的UDP数据报进行标记;
所述客户端按照预设的时间检查UDP数据报被所述服务端正确接收的信息,所述客户端对未被所述服务端正确接收的UDP数据报在网络流量环境满足预设条件下进行重发;
所述客户端对被所述服务端正确接收的UDP数据报缓存进行删除。
本发明第三方面提供一种服务端,采用第一方面或其任意可能实现方式的基于用户数据报协议的数据传输方法,包括:
连接响应模块,用于接收客户端发送的第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
记录标记模块,用于所述服务端在接收第一建立连接数据报时记录所述客户端的IP地址和UDP端口信息,所述服务端将服务端的连接状态标记为连接建立中;
解析校验模块,用于对接收的第一建立连接数据报进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述服务端继续等待所述客户端发送第二建立连接数据报;
心跳数据报发送模块,用于向所述客户端发送心跳数据报,当所述客户端接收到心跳数据报时将所述客户端的连接状态标记为已连接;
数据接收模块,用于当所述服务端和所述客户端双方建立连接后,接收所述客户端发送的ARQ数据报或非ARQ数据报。
本发明第四方面提供一种客户端,采用第二方面或其任意可能实现方式的基于用户数据报协议的数据传输方法,包括:
连接请求模块,用于向服务端发送第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
信息获取模块,用于所述客户端的IP地址和UDP端口信息在所述服务端接收第一建立连接数据报时记录于所述服务端,所述服务端将服务端的连接状态标记为连接建立中;
连接重发模块,用于第一建立连接数据报在所述服务端进行解析校验,若数据不正确时,继续向所述服务端发送第二建立连接数据报;若数据正确,所述服务端将连接状态标记为已连接;
心跳数据报接收模块,用于接收所述服务端发送的心跳数据报,当所述客户端接收到心跳数据报时,将所述客户端的连接状态标记为已连接;
数据发送模块,用于当所述客户端和所述服务端双方建立连接后,向所述服务端发送ARQ数据报或非ARQ数据报。
本发明具有如下优点:服务端接收客户端发送的第一建立连接数据报,客户端在发送第一建立连接数据报时将客户端的连接状态标记为连接建立中;服务端在接收第一建立连接数据报时记录客户端的IP地址和UDP端口信息,服务端将服务端的连接状态标记为连接建立中;服务端对接收的第一建立连接数据报进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,服务端继续等待客户端发送第二建立连接数据报;服务端向客户端发送心跳数据报,当客户端接收到心跳数据报时将客户端的连接状态标记为已连接;当服务端和客户端双方建立连接后,服务端接收客户端发送的ARQ数据报或非ARQ数据报。本发明基于用户数据报协议实现了虚拟连接和自动重传机制,在保证传输可靠性的同时,降低了传输延迟,并且根据需求,用户可自行选择可靠数据传输和不可靠数据传输两种形式,提高了灵活性。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
图1为本发明实施例1中提供的基于用户数据报协议的数据传输方法流程示意图;
图2为本发明实施例2中提供的基于用户数据报协议的数据传输方法流程示意图;
图3为本发明实施例3中提供的服务端示意图;
图4为本发明实施例4中提供的客户端示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下实施例中的英文缩写含义如下:
IP:互联网协议地址;
UDP:用户数据报协议;
ARQ:自动重传请求;
MTU:最大传输单位。
需要说明的是,以下实施例中涉及的第一建立连接数据报和第二建立连接数据报是指两个不同的建立连接数据报,当对接收的第一建立连接数据报检查数据不正确时,客户端发送一个新的建立连接数据报,也就是所谓的第二建立连接数据报。以下实施例中涉及的数据报的解析和校验本身属于现有技术。
实施例1
参见图1,本发明实施例1提供一种基于用户数据报协议的数据传输方法,应用于服务端,包括以下步骤:
S11、服务端接收客户端发送的第一建立连接数据报,客户端在发送第一建立连接数据报时将客户端的连接状态标记为连接建立中;
S12、服务端在接收第一建立连接数据报时记录客户端的IP地址和UDP端口信息,服务端将服务端的连接状态标记为连接建立中;
S13、服务端对接收的第一建立连接数据报进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,服务端继续等待客户端发送第二建立连接数据报;
S14、服务端向客户端发送心跳数据报,当客户端接收到心跳数据报时将客户端的连接状态标记为已连接;
S15、当服务端和客户端双方建立连接后,服务端接收客户端发送的ARQ数据报或非ARQ数据报。
具体的,本实施例中的客户端指服务的请求者,服务端指服务的提供者。使用本发明进行双工通信时,需要先建立一个连接。建立连接的过程中,客户端向服务端发送一个建立连接数据报,并将连接状态标记为建立中。服务端收到任一客户端发来的第一个建立连接数据报时,首先记录该客户端的IP地址,UDP端口信息,并将该连接标记为建立中状态。服务端解析收到的第一建立连接数据报,检查无误后,将该连接状态标记为已连接。若数据不正确则继续等待新的第二连接建立数据报。当服务端将连接状态标记为已连接后,服务端开始发送心跳数据报。客户端收到来自服务端的心跳数据报,其中包含接收到数据报的确认信息,客户端将连接中的状态变为已连接。服务端和客户端连接建立完成,双方可以正常向对方发送请求,进行业务功能的调用。当客户端与服务端成功建立连接之后,客户端与服务端之间可以选择性发送ARQ(自动重传请求)或非ARQ数据报。
本实施例中,当服务端接收客户端发送的ARQ数据报时,ARQ数据报中封装有客户端按照所属网络的MTU进行分割的用户数据;客户端将按照所属网络的MTU进行分割的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号。服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录。服务端向客户端发送的心跳数据报中添加正确接收的UDP数据报的编号信息;服务端正确接收的UDP数据报的缓存在客户端中删除;服务端接收客户端在网络流量环境满足预设条件下重发的检查错误的UDP数据报。
具体的,当客户端与服务端成功建立连接之后,客户端向服务端发送ARQ数据的过程如下:
客户端将用户数据按照所属网络的MTU进行分割,封装于ARQ数据报中,并添加ARQ信息,打包成一个或多个UDP数据报,将这些数据报缓存并按顺序编号。客户端将ARQ数据报发送至服务端。服务端根据校验和检查收到的UDP数据报是否正确,对正确的UDP数据报的编号进行记录。服务端在其他发向该客户端的数据报(如定时进行的心跳数据报)中,添加已正确接受的UDP数据报的编号信息。客户端接受到来自服务端的心跳数据报时,读取其中的UDP数据确认信息,将已被服务端接收的UDP数据报进行标记。客户端会定时检查数据报的接受信息。客户端将在检查时发现未被服务端接收的UDP数据报进行重发。客户端将在检查时发现已被服务端接受的数据报缓存删除。
具体的,为避免网络拥塞的发生,是否重发还跟流量控制有关。通过带有流量控制的自动重发,当网络环境较差时,自动控制重发数据占用的流量。
本实施例中,若客户端向服务端发送非ARQ数据报,则不需要添加任何附加信息,直接将数据报标记为非ARQ数据报发送出去,该数据报不进行缓存,因此即使对方未收到也不会进行重发。当客户端不再需要与服务端进行通信时,可发送断开连接数据报进行断开连接。
具体的,MTU即最大传输单位,定义了可以在网络连接中作为单个实体传输的数据报的最大大小,MTU的大小决定了可以通过网络以字节为单位传输的数据量。较大的MTU会使在单个连接期间进行更多的数据传输,因此减少了开销。较小的MTU可以更快地传输,从而减少了网络中的延迟。因此,根据需要调整MTU的大小以同时满足低开销、快传输的要求。
综上所述,本发明服务端接收客户端发送的第一建立连接数据报,客户端在发送第一建立连接数据报时将客户端的连接状态标记为连接建立中;服务端在接收第一建立连接数据报时记录客户端的IP地址和UDP端口信息,服务端将服务端的连接状态标记为连接建立中;服务端对接收的第一建立连接数据报进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,服务端继续等待客户端发送第二建立连接数据报;服务端向客户端发送心跳数据报,当客户端接收到心跳数据报时将客户端的连接状态标记为已连接;当服务端和客户端双方建立连接后,服务端接收客户端发送的ARQ数据报或非ARQ数据报。本发明基于用户数据报协议实现了虚拟连接和自动重传机制,在保证传输可靠性的同时,降低了传输延迟,并且根据需求,用户可自行选择可靠数据传输和不可靠数据传输两种形式,提高了灵活性。
实施例2
参见图2,本发明实施例2还提供一种基于用户数据报协议的数据传输方法,应用于客户端,包括以下步骤:
S21、客户端向服务端发送第一建立连接数据报,客户端在发送第一建立连接数据报时将客户端的连接状态标记为连接建立中;
S22、客户端的IP地址和UDP端口信息在服务端接收第一建立连接数据报时记录于服务端,服务端将服务端的连接状态标记为连接建立中;
S23、第一建立连接数据报在服务端进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,客户端继续向服务端发送第二建立连接数据报;
S24、客户端接收服务端发送的心跳数据报,当客户端接收到心跳数据报时,将客户端的连接状态标记为已连接;
S25、当客户端和服务端双方建立连接后,客户端向服务端发送ARQ数据报或非ARQ数据报。
具体的,本实施例中的客户端指服务的请求者,服务端指服务的提供者。使用本发明进行双工通信时,需要先建立一个连接。建立连接的过程中,客户端向服务端发送一个建立连接数据报,并将连接状态标记为建立中。服务端收到任一客户端发来的第一个建立连接数据报时,首先记录该客户端的IP地址,UDP端口信息,并将该连接标记为建立中状态。服务端解析收到的第一建立连接数据报,检查无误后,将该连接状态标记为已连接。若数据不正确则继续等待新的第二连接建立数据报。当服务端将连接状态标记为已连接后,服务端开始发送心跳数据报。客户端收到来自服务端的心跳数据报,其中包含接收到数据报的确认信息,客户端将连接中的状态变为已连接。服务端和客户端连接建立完成,双方可以正常向对方发送请求,进行业务功能的调用。当客户端与服务端成功建立连接之后,客户端与服务端之间可以选择性发送ARQ(自动重传请求)或非ARQ数据报。
本实施例中,当客户端向服务端发送ARQ数据报时,客户端将用户数据按照所属网络的MTU进行分割;客户端将按照所属网络的MTU分割后的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号。服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录。客户端接收服务端发送的心跳数据报,心跳数据报中添加有服务端正确接收的UDP数据报的编号信息;客户端接收服务端发送的心跳数据报时,读取被服务端正确接收的UDP数据报的编号信息,客户端将被服务端正确接收的UDP数据报进行标记;客户端按照预设的时间检查UDP数据报被服务端正确接收的信息,客户端对未被服务端正确接收的UDP数据报在网络流量环境满足预设条件下进行重发;客户端对被服务端正确接收的UDP数据报缓存进行删除。
具体的,当客户端与服务端成功建立连接之后,客户端向服务端发送ARQ数据的过程如下:
客户端将用户数据按照所属网络的MTU进行分割,封装于ARQ数据报中,并添加ARQ信息,打包成一个或多个UDP数据报,将这些数据报缓存并按顺序编号。客户端将ARQ数据报发送至服务端。服务端根据校验和检查收到的UDP数据报是否正确,对正确的UDP数据报的编号进行记录。服务端在其他发向该客户端的数据报(如定时进行的心跳数据报)中,添加已正确接受的UDP数据报的编号信息。客户端接受到来自服务端的心跳数据报时,读取其中的UDP数据确认信息,将已被服务端接收的UDP数据报进行标记。客户端会定时检查数据报的接受信息。客户端将在检查时发现未被服务端接收的UDP数据报进行重发。客户端将在检查时发现已被服务端接受的数据报缓存删除。
具体的,为避免网络拥塞的发生,是否重发还跟流量控制有关。通过带有流量控制的自动重发,当网络环境较差时,自动控制重发数据占用的流量。
本实施例中,若客户端向服务端发送非ARQ数据报,则不需要添加任何附加信息,直接将数据报标记为非ARQ数据报发送出去,该数据报不进行缓存,因此即使对方未收到也不会进行重发。当客户端不再需要与服务端进行通信时,可发送断开连接数据报进行断开连接。
具体的,MTU即最大传输单位,定义了可以在网络连接中作为单个实体传输的数据报的最大大小,MTU的大小决定了可以通过网络以字节为单位传输的数据量。较大的MTU会使在单个连接期间进行更多的数据传输,因此减少了开销。较小的MTU可以更快地传输,从而减少了网络中的延迟。因此,根据需要调整MTU的大小以同时满足低开销、快传输的要求。
综上所述,本发明客户端向服务端发送第一建立连接数据报,客户端在发送第一建立连接数据报时将客户端的连接状态标记为连接建立中;客户端的IP地址和UDP端口信息在服务端接收第一建立连接数据报时记录于服务端,服务端将服务端的连接状态标记为连接建立中;第一建立连接数据报在服务端进行解析校验,若数据正确,服务端将连接状态标记为已连接,若数据不正确,客户端继续向服务端发送第二建立连接数据报;客户端接收服务端发送的心跳数据报,当客户端接收到心跳数据报时,将客户端的连接状态标记为已连接;当客户端和服务端双方建立连接后,客户端向服务端发送ARQ数据报或非ARQ数据报。本发明基于用户数据报协议实现了虚拟连接和自动重传机制,在保证传输可靠性的同时,降低了传输延迟,并且根据需求,用户可自行选择可靠数据传输和不可靠数据传输两种形式,提高了灵活性。
实施例3
参见图3,本发明实施例3提供一种服务端,采用实施例1或其任意可能实现方式的基于用户数据报协议的数据传输方法,包括:
连接响应模块11,用于接收客户端发送的第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
记录标记模块12,用于所述服务端在接收第一建立连接数据报时记录所述客户端的IP地址和UDP端口信息,所述服务端将服务端的连接状态标记为连接建立中;
解析校验模块13,用于对接收的第一建立连接数据报进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述服务端继续等待所述客户端发送第二建立连接数据报;
心跳数据报发送模块14,用于向所述客户端发送心跳数据报,当所述客户端接收到心跳数据报时将所述客户端的连接状态标记为已连接;
数据接收模块15,用于当所述服务端和所述客户端双方建立连接后,接收所述客户端发送的ARQ数据报或非ARQ数据报。
使用本发明进行双工通信时,需要先建立一个连接。建立连接的过程中,客户端向服务端发送一个建立连接数据报,并将连接状态标记为建立中。服务端收到任一客户端发来的第一个建立连接数据报时,首先记录该客户端的IP地址,UDP端口信息,并将该连接标记为建立中状态。服务端解析收到的第一建立连接数据报,检查无误后,将该连接状态标记为已连接。若数据不正确则继续等待新的第二连接建立数据报。当服务端将连接状态标记为已连接后,服务端开始发送心跳数据报。客户端收到来自服务端的心跳数据报,其中包含接收到数据报的确认信息,客户端将连接中的状态变为已连接。服务端和客户端连接建立完成,双方可以正常向对方发送请求,进行业务功能的调用。当客户端与服务端成功建立连接之后,客户端与服务端之间可以选择性发送ARQ(自动重传请求)或非ARQ数据报。
当客户端与服务端成功建立连接之后,客户端向服务端发送ARQ数据的过程如下:
客户端将用户数据按照所属网络的MTU进行分割,封装于ARQ数据报中,并添加ARQ信息,打包成一个或多个UDP数据报,将这些数据报缓存并按顺序编号。客户端将ARQ数据报发送至服务端。服务端根据校验和检查收到的UDP数据报是否正确,对正确的UDP数据报的编号进行记录。服务端在其他发向该客户端的数据报(如定时进行的心跳数据报)中,添加已正确接受的UDP数据报的编号信息。客户端接受到来自服务端的心跳数据报时,读取其中的UDP数据确认信息,将已被服务端接收的UDP数据报进行标记。客户端会定时检查数据报的接受信息。客户端将在检查时发现未被服务端接收的UDP数据报进行重发。客户端将在检查时发现已被服务端接受的数据报缓存删除。
若客户端向服务端发送非ARQ数据报,则不需要添加任何附加信息,直接将数据报标记为非ARQ数据报发送出去,该数据报不进行缓存,因此即使对方未收到也不会进行重发。当客户端不再需要与服务端进行通信时,可发送断开连接数据报进行断开连接。
实施例4
参见图4,本发明实施例4提供一种客户端,采用实施例2或其任意可能实现方式的基于用户数据报协议的数据传输方法,包括:
连接请求模块21,用于向服务端发送第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
信息获取模块22,用于所述客户端的IP地址和UDP端口信息在所述服务端接收第一建立连接数据报时记录于所述服务端,所述服务端将服务端的连接状态标记为连接建立中;
连接重发模块23,用于第一建立连接数据报在所述服务端进行解析校验,若数据不正确时,继续向所述服务端发送第二建立连接数据报;若数据正确,所述服务端将连接状态标记为已连接;
心跳数据报接收模块24,用于接收所述服务端发送的心跳数据报,当所述客户端接收到心跳数据报时,将所述客户端的连接状态标记为已连接;
数据发送模块25,用于当所述客户端和所述服务端双方建立连接后,向所述服务端发送ARQ数据报或非ARQ数据报。
使用本发明进行双工通信时,需要先建立一个连接。建立连接的过程中,客户端向服务端发送一个建立连接数据报,并将连接状态标记为建立中。服务端收到任一客户端发来的第一个建立连接数据报时,首先记录该客户端的IP地址,UDP端口信息,并将该连接标记为建立中状态。服务端解析收到的第一建立连接数据报,检查无误后,将该连接状态标记为已连接。若数据不正确则继续等待新的第二连接建立数据报。当服务端将连接状态标记为已连接后,服务端开始发送心跳数据报。客户端收到来自服务端的心跳数据报,其中包含接收到数据报的确认信息,客户端将连接中的状态变为已连接。服务端和客户端连接建立完成,双方可以正常向对方发送请求,进行业务功能的调用。当客户端与服务端成功建立连接之后,客户端与服务端之间可以选择性发送ARQ(自动重传请求)或非ARQ数据报。
当客户端与服务端成功建立连接之后,客户端向服务端发送ARQ数据的过程如下:
客户端将用户数据按照所属网络的MTU进行分割,封装于ARQ数据报中,并添加ARQ信息,打包成一个或多个UDP数据报,将这些数据报缓存并按顺序编号。客户端将ARQ数据报发送至服务端。服务端根据校验和检查收到的UDP数据报是否正确,对正确的UDP数据报的编号进行记录。服务端在其他发向该客户端的数据报(如定时进行的心跳数据报)中,添加已正确接受的UDP数据报的编号信息。客户端接受到来自服务端的心跳数据报时,读取其中的UDP数据确认信息,将已被服务端接收的UDP数据报进行标记。客户端会定时检查数据报的接受信息。客户端将在检查时发现未被服务端接收的UDP数据报进行重发。客户端将在检查时发现已被服务端接受的数据报缓存删除。
若客户端向服务端发送非ARQ数据报,则不需要添加任何附加信息,直接将数据报标记为非ARQ数据报发送出去,该数据报不进行缓存,因此即使对方未收到也不会进行重发。当客户端不再需要与服务端进行通信时,可发送断开连接数据报进行断开连接。
实施例5
本发明实施例5提供一种非暂态计算机可读存储介质,所述计算机可读存储介质中存储有基于用户数据报协议的数据传输方法的程序代码,所述程序代码包括用于执行实施例1、实施例2或其任意可能实现方式的基于用户数据报协议的数据传输方法的指令。
计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(SolidState Disk、SSD))等。
实施例6
本发明实施例6提供一种电子设备,包括:存储器和处理器;
所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行实施例1、实施例2或其任意可能实现方式的基于用户数据报协议的数据传输方法。
具体的,处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (4)
1.基于用户数据报协议的数据传输方法,应用于服务端,其特征在于,包括以下步骤:
服务端接收客户端发送的第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
所述服务端在接收第一建立连接数据报时记录所述客户端的IP地址和UDP端口信息,所述服务端将服务端的连接状态标记为连接建立中;
所述服务端对接收的第一建立连接数据报进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述服务端继续等待所述客户端发送第二建立连接数据报;
所述服务端向所述客户端发送心跳数据报,当所述客户端接收到心跳数据报时将所述客户端的连接状态标记为已连接;
当所述服务端和所述客户端双方建立连接后,所述服务端接收所述客户端发送的ARQ数据报或非ARQ数据报;
当所述服务端接收所述客户端发送的ARQ数据报时,所述ARQ数据报中封装有所述客户端按照所属网络的MTU进行分割的用户数据;所述客户端将按照所属网络的MTU进行分割的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号;
所述服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录;
所述服务端向所述客户端发送的心跳数据报中添加正确接收的UDP数据报的编号信息;
所述服务端正确接收的UDP数据报的缓存在所述客户端中删除;
所述服务端接收所述客户端在网络流量环境满足预设条件下重发的检查错误的UDP数据报。
2.基于用户数据报协议的数据传输方法,应用于客户端,其特征在于,包括以下步骤:
客户端向服务端发送第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
所述客户端的IP地址和UDP端口信息在所述服务端接收第一建立连接数据报时记录于所述服务端,所述服务端将服务端的连接状态标记为连接建立中;
第一建立连接数据报在所述服务端进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述客户端继续向所述服务端发送第二建立连接数据报;
所述客户端接收所述服务端发送的心跳数据报,当所述客户端接收到心跳数据报时,将所述客户端的连接状态标记为已连接;
当所述客户端和所述服务端双方建立连接后,所述客户端向所述服务端发送ARQ数据报或非ARQ数据报;
当所述客户端向所述服务端发送ARQ数据报时,所述客户端将用户数据按照所属网络的MTU进行分割;所述客户端将按照所属网络的MTU分割后的用户数据打包为至少一个UDP数据报,并对UDP数据报进行缓存及按顺序编号;
所述服务端对接收的UDP数据报进行校验,并检查数据UDP数据报是否正确;对检查正确的UDP数据报的编号进行记录;
所述客户端接收所述服务端发送的心跳数据报,心跳数据报中添加有所述服务端正确接收的UDP数据报的编号信息;
所述客户端接收所述服务端发送的心跳数据报时,读取被所述服务端正确接收的UDP数据报的编号信息,所述客户端将被所述服务端正确接收的UDP数据报进行标记;
所述客户端按照预设的时间检查UDP数据报被所述服务端正确接收的信息,所述客户端对未被所述服务端正确接收的UDP数据报在网络流量环境满足预设条件下进行重发;
所述客户端对被所述服务端正确接收的UDP数据报缓存进行删除。
3.一种服务端,采用权利要求1的基于用户数据报协议的数据传输方法,其特征在于,包括:
连接响应模块,用于接收客户端发送的第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
记录标记模块,用于所述服务端在接收第一建立连接数据报时记录所述客户端的IP地址和UDP端口信息,所述服务端将服务端的连接状态标记为连接建立中;
解析校验模块,用于对接收的第一建立连接数据报进行解析校验,若数据正确,所述服务端将连接状态标记为已连接,若数据不正确,所述服务端继续等待所述客户端发送第二建立连接数据报;
心跳数据报发送模块,用于向所述客户端发送心跳数据报,当所述客户端接收到心跳数据报时将所述客户端的连接状态标记为已连接;
数据接收模块,用于当所述服务端和所述客户端双方建立连接后,接收所述客户端发送的ARQ数据报或非ARQ数据报。
4.一种客户端,采用权利要求2的基于用户数据报协议的数据传输方法,其特征在于,包括:
连接请求模块,用于向服务端发送第一建立连接数据报,所述客户端在发送第一建立连接数据报时将所述客户端的连接状态标记为连接建立中;
信息获取模块,用于所述客户端的IP地址和UDP端口信息在所述服务端接收第一建立连接数据报时记录于所述服务端,所述服务端将服务端的连接状态标记为连接建立中;
连接重发模块,用于第一建立连接数据报在所述服务端进行解析校验,若数据不正确时,继续向所述服务端发送第二建立连接数据报;若数据正确,所述服务端将连接状态标记为已连接;
心跳数据报接收模块,用于接收所述服务端发送的心跳数据报,当所述客户端接收到心跳数据报时,将所述客户端的连接状态标记为已连接;
数据发送模块,用于当所述客户端和所述服务端双方建立连接后,向所述服务端发送ARQ数据报或非ARQ数据报。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111370117.5A CN114070877B (zh) | 2021-11-18 | 2021-11-18 | 基于用户数据报协议的数据传输方法、服务端及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111370117.5A CN114070877B (zh) | 2021-11-18 | 2021-11-18 | 基于用户数据报协议的数据传输方法、服务端及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114070877A CN114070877A (zh) | 2022-02-18 |
CN114070877B true CN114070877B (zh) | 2023-10-20 |
Family
ID=80277891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111370117.5A Active CN114070877B (zh) | 2021-11-18 | 2021-11-18 | 基于用户数据报协议的数据传输方法、服务端及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114070877B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854286A (zh) * | 2009-04-01 | 2010-10-06 | 北京大学 | 基于用户数据报协议的数据流发送、接收方法及装置 |
CN103281287A (zh) * | 2012-10-24 | 2013-09-04 | 南车株洲电力机车研究所有限公司 | 基于udp协议的风力发电机组通信方法及系统 |
CN107979449A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种数据传输方法及装置 |
CN111654505A (zh) * | 2020-06-15 | 2020-09-11 | 深圳市景阳科技股份有限公司 | Udp数据包可靠传输方法、系统、计算机设备及存储介质 |
CN112751652A (zh) * | 2020-12-29 | 2021-05-04 | 珠海金山网络游戏科技有限公司 | 一种基于udp协议的数据传输方法及装置 |
CN112838966A (zh) * | 2021-04-22 | 2021-05-25 | 北京拓课网络科技有限公司 | 一种udp链路监控方法、系统及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7492764B2 (en) * | 2004-10-12 | 2009-02-17 | Innomedia Pte Ltd | System for management of equipment deployed behind firewalls |
US9537899B2 (en) * | 2012-02-29 | 2017-01-03 | Microsoft Technology Licensing, Llc | Dynamic selection of security protocol |
-
2021
- 2021-11-18 CN CN202111370117.5A patent/CN114070877B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854286A (zh) * | 2009-04-01 | 2010-10-06 | 北京大学 | 基于用户数据报协议的数据流发送、接收方法及装置 |
CN103281287A (zh) * | 2012-10-24 | 2013-09-04 | 南车株洲电力机车研究所有限公司 | 基于udp协议的风力发电机组通信方法及系统 |
CN107979449A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种数据传输方法及装置 |
CN111654505A (zh) * | 2020-06-15 | 2020-09-11 | 深圳市景阳科技股份有限公司 | Udp数据包可靠传输方法、系统、计算机设备及存储介质 |
CN112751652A (zh) * | 2020-12-29 | 2021-05-04 | 珠海金山网络游戏科技有限公司 | 一种基于udp协议的数据传输方法及装置 |
CN112838966A (zh) * | 2021-04-22 | 2021-05-25 | 北京拓课网络科技有限公司 | 一种udp链路监控方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114070877A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5523350B2 (ja) | Tcpフロー制御のための方法及び装置 | |
US9276993B2 (en) | Apparatus and method for in-line insertion and removal of markers | |
WO2019144836A1 (zh) | 数据传输方法、装置和系统 | |
CN111786748B (zh) | 数据重传方法和系统、网卡、装置、服务器和存储介质 | |
US7782905B2 (en) | Apparatus and method for stateless CRC calculation | |
US20070208820A1 (en) | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations | |
KR20190095487A (ko) | 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 | |
US7770088B2 (en) | Techniques to transmit network protocol units | |
US8301799B2 (en) | Method and apparatus for managing transmission of TCP data segments | |
US20030088679A1 (en) | Proxy reply method and apparatus | |
US20160359950A1 (en) | Systems and methods for improved trivial file transfer protocol | |
US20070130364A1 (en) | Techniques to determine an integrity validation value | |
CN102299777A (zh) | 数据重传方法及装置 | |
CN114070877B (zh) | 基于用户数据报协议的数据传输方法、服务端及客户端 | |
CN114422425B (zh) | 多链路聚合的数据传输方法、系统、装置及存储介质 | |
US9219670B2 (en) | Link-aware throughput acceleration profiles | |
CN113645291B (zh) | 数据通信方法及装置、电子设备和存储介质 | |
WO2022259452A1 (ja) | 中間装置、通信方法、およびプログラム | |
JP2011249922A (ja) | ネットワーク装置、tcpパケット受信装置及び方法 | |
TWI846381B (zh) | 電腦裝置以及應用於電腦裝置的傳輸控制協定封包處理方法 | |
CN115580587B (zh) | 报文信息处理方法、装置、计算机设备和存储介质 | |
TWI839155B (zh) | 電腦裝置以及應用於電腦裝置的傳輸控制協定封包處理方法 | |
CN118381839A (zh) | 计算机装置及其传输控制协议报文处理方法 | |
CN117692109A (zh) | 远程直接内存访问的数据重传方法及相关设备 | |
TW202431824A (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 |