CN114531499B - 一种基于quic协议的端口共用方法、系统及服务器 - Google Patents
一种基于quic协议的端口共用方法、系统及服务器 Download PDFInfo
- Publication number
- CN114531499B CN114531499B CN202011233105.3A CN202011233105A CN114531499B CN 114531499 B CN114531499 B CN 114531499B CN 202011233105 A CN202011233105 A CN 202011233105A CN 114531499 B CN114531499 B CN 114531499B
- Authority
- CN
- China
- Prior art keywords
- connection request
- data
- protocol
- target
- rtmp
- 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
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000012544 monitoring process Methods 0.000 claims abstract description 18
- 238000001514 detection method Methods 0.000 claims description 47
- 230000006870 function Effects 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 239000000243 solution Substances 0.000 description 6
- 238000002347 injection Methods 0.000 description 5
- 239000007924 injection Substances 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于QUIC协议的端口共用方法、系统及服务器,其中,所述方法包括:针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理。本申请提供的技术方案,能够避免数据异常的发生。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种基于QUIC协议的端口共用方法、系统及服务器。
背景技术
当前的nginx架构主要可以提供http服务。另外,基于nginx的开源rtmp模块可以提供rtmp服务。在某些应用场景下,http和rtmp可能会共用同一个端口。例如,基于QUIC(Quick UDP Internet Connection,快速UDP网络连接)协议的http和rtmp服务可以共用443端口,这样,nginx架构就需要同时提供http服务和rtmp服务。
多个协议在共同监听同一个端口时,如果该端口接收到连接请求,该连接请求可能会被随机地交由http或者rtmp处理。然而,如果http服务的连接请求被rtmp处理,或者rtmp服务的连接请求被http处理,将会导致数据异常。因此,目前亟需一种多个协议共用同一个端口的有效解决方法,以避免数据异常的发生。
发明内容
本申请的目的在于提供一种基于QUIC协议的端口共用方法、系统及服务器,能够避免数据异常的发生。
为实现上述目的,本申请一方面提供一种基于QUIC协议的端口共用方法,所述方法包括:针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理。
为实现上述目的,本申请另一方面还提供一种基于QUIC协议的端口共用系统,所述系统包括:端口监听单元,用于针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;协议检测单元,用于在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;数据处理单元,用于在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理。
为实现上述目的,本申请另一方面还提供一种服务器,所述服务器中部署有nginx系统,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的基于QUIC协议的端口共用方法。
由上可见,本申请一个或者多个实施方式提供的技术方案,针对HTTP与RTMP共用的目标端口,可以统一由HTTP对目标端口进行监听。在监听到目标端口处进入连接请求时,可以检测该连接请求对应的目标协议。其中,不同的协议可以由不同的模块进行处理。在目标协议处理连接请求时,可以根据检测协议时的预设方式,相匹配地进行数据读取,读取后的数据便可以经过目标协议的配置信息进行处理。可见,连接请求可以由HTTP统一地进行监听,并且通过相匹配的预设方式和数据读取方式,可以完成对连接请求的协议检测和数据读取过程,使得目标协议的连接请求可以被对应的目标模块进行处理,避免了数据异常的情况。
附图说明
为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中基于QUIC协议的端口共用方法步骤图;
图2是本发明实施方式中rtmp模块执行协议检测函数的流程图;
图3本发明实施方式中基于QUIC协议的端口共用系统的功能模块示意图;
图4是本发明实施方式中服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。
本申请提供一种基于QUIC协议的端口共用方法,请参阅图1,该方法可以包括以下多个步骤。
S1:针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听。
在实际应用中,由于在共用同一个目标端口时,rtmp的证书等内容通常是在http中处理的,因此为了解决基于QUIC协议的http与rtmp共用同一443端口导致数据异常的情况,可以统一地由http对443端口进行监听,而rtmp则不对443端口进行监听。这样,443端口接收到的连接请求,最开始可以由http监听到,后续可以再对连接请求实际支持的协议进行识别,并交由对应的协议进行处理。
S3:在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块。
在本实施方式中,连接请求可以从端口监听事件处理函数进入,由于是采用http对端口进行监听,因此连接请求是从ngx_http_init_connection函数进入的。在连接请求进入该函数后,可以先将上层的读事件句柄由原来的ngx_http_wait_request_handler设置为预先设置的协议检测函数,该协议检测函数可以用于检测连接请求对应的协议。在实际应用中,该协议检测函数例如可以是ngx_core_protocol_detect_handler。这样,当443端口接收到连接请求,并由http通过端口监听事件处理函数监听到后,便可以交由协议检测函数来检测该连接请求对应的目标协议。当然,由于QUIC协议是属于UDP协议,因此通常需要在完成QUIC协议的握手过程之后,才会进行协议检测。
在实际应用中,在nginx架构中可以新增协议检测模块,该协议检测模块可以采用nginx的core模块来实现,在该协议检测模块中,可以提供钩子注入接口和钩子链执行接口。其中,钩子注入接口可以由不同的协议调用,当该钩子注入接口被调用时,不同的协议可以将各自新增的协议检测函数通过该钩子注入接口挂入钩子(hook)。在实际应用中,对于除了http以外的其它协议,都可以新增各自的协议检测函数,然后通过调用钩子注入接口,可以将各自的协议检测函数挂入钩子。例如,rtmp模块可以通过ngx_array_push方式将对应的协议检测函数的句柄压入钩子链表里,从而完成协议检测函数的添加过程。
在本实施方式中,在完成了协议检测函数的添加过程后,钩子链执行接口在被调用时,可以遍历挂入钩子的各个协议检测函数,并依次执行这些协议检测函数,从而对连接请求实际对应的目标协议进行检测。
具体地,首先可以调用上述的钩子链执行接口,并通过该钩子链执行接口依次执行预先设置的协议检测函数。其中,若当前的协议检测函数检测到所述连接请求对应的目标协议,则可以返回检测完成的指示符NGX_DONE,表示已经识别出连接请求对应的目标协议。而如果当前的协议检测函数未检测到所述连接请求对应的目标协议,则可以返回检测待续的指示符NGX_DECLINED,表示连接请求无法通过当前的协议检测函数识别出目标协议,此时可以通过下一个协议检测函数检测所述连接请求对应的目标协议。如果所述多个协议检测函数均执行完毕,并且依然未检测到所述连接请求对应的目标协议,此时可以返回检测结束的指示符NGX_OK,后续,可以由http来处理该连接请求。此外,在进行协议检测的过程中,如果出现异常,可以返回检测失败的指示符NGX_ERROR,从而结束本次的协议检测过程。
在实际应用中,协议检测的过程可以针对连接请求中的指定字节而言,而无需对整个连接请求的数据进行检测。具体地,对于http和rtmp的连接请求而言,如果连接请求的首字节为0x03,则表示该连接请求为rtmp协议,否则就是http协议。因此,只需要对连接请求的首字节进行分析即可。
在本实施方式中,获取连接请求首字节数据的预设方式也可以不同。具体地,该预设方式可以是QUIC协议封装的MSG_PEEK方式,该方式可以探测连接请求的指定字节的数据,但是并不进行实际的数据读取操作。也就是说,这种方式并不会将协议栈中的首字节的数据读取出来,而仅仅是探测首字节数据的内容。另一种预设方式便可以是利用QUIC协议提供的数据接收接口recv读取所述连接请求的指定字节的数据。这种方式是将协议栈中连接请求的首字节数据读取出来,从而会导致协议栈中连接请求的数据不完整。
无论采用上述的何种预设方式,都可以获知连接请求中指定字节的数据内容,通过对该指定字节的数据内容进行判断,从而可以确定连接请求对应的目标协议。
在本实施方式中,针对http和rtmp而言,都具备各自的数据处理模块。在判断出连接请求对应的目标协议之后,便可以将连接请求发送至目标协议对应的目标模块处进行处理。
S5:在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理。
在本实施方式中,根据预设方式的不同,协议栈中留存的连接请求的数据也可能不同。具体地,如果是采用QUIC封装的MSG_PEEK方式对首字节数据进行探测,那么协议栈中的连接请求的数据是完整的。此时,目标模块可以直接调用QUIC协议提供的数据接收接口recv,读取连接请求的数据。而如果采用的是通过数据接收接口recv读取首字节的数据,那么可以继续调用该数据接收接口recv读取所述连接请求的剩余数据。为了保证数据的完整性,可以将读取的指定字节的数据和剩余数据进行拼接,从而形成连接请求的完整数据。
在一个实施方式中,在利用QUIC协议提供的数据接收接口读取连接请求的指定字节的数据之后,可以将所述指定字节的数据写入连接结构的缓冲区域buffer中。这样,不管是在http还是rtmp的目标模块中处理所述连接请求时,都需要检测所述缓冲区域中是否存在数据,若存在,则将所述缓冲区域中的数据与所述连接请求的剩余数据进行拼接,从而得到完整的数据。
在本实施方式中,如果连接请求的首字节是0x03,则表示是rtmp协议,此时可以进入rtmp模块进行初始化等操作。如果不是,则表示是http协议,此时可以将读事件句柄重置,并通过重置后的读事件句柄读取所述连接请求的数据。具体地,可以将读事件句柄重新设置为ngx_http_wait_request_handler,然后调用ngx_http_wait_request_handler读取连接请求的数据。
在本实施方式中,针对rtmp模块,需要保存rtmp模块的配置信息。具体地,在模块初始化的时候可以将rtmp的配置信息保存在监听结构里,当探测到连接请求是rtmp协议时,再从监听结构里取出rtmp模块的配置信息,从而根据配置信息对连接请求进行处理。
在一个具体应用场景中,可以在nginx的ngx_listening_t结构体中新增一个指定字段opaque,该指定字段可以用于保存协议的监听结构。在实际应用中,目标端口接收到的连接请求,最开始可以由http监听到,后续可以再对连接请求实际支持的协议进行识别,并交由对应的协议进行处理。
针对http和rtmp共用的目标端口,可以将rtmp的监听结构写入http的指定字段opaque中,并且可以将监听该目标端口的rtmp的监听结构设置为忽略状态(请注意,这里是将原始的rtmp的监听结构设置为忽略状态,并非是将写入opaque字段的监听结构设置为忽略状态)。具体地,可以将rtmp监听结构中ignore参数的参数值设置为1,表征该rtmp监听结构不对目标端口进行监听。
在本实施方式中,将rtmp的监听结构写入http的opaque字段,并将rtmp的监听结构设置为忽略状态后,为了避免在遍历监听链表时依然统计rtmp的监听结构,可以对cycle→listening→elts的过程进行修改。具体地,在一个实施方式中,可以添加规则,规定不统计ignore的值为1的监听结构。这样,在遍历监听链表时,针对目标端口而言,由于rtmp的监听结构中ignore的值为1,因此仅统计http的监听结构,而不统计rtmp的监听结构,从而避免在统计结果中目标端口同时有两个或者两个以上的协议进行监听。此外,在另一个实施方式中,还可以对事件(event)模块中的初始化函数进行修改。具体地,对于event模块中的初始化函数ngx_event_process_init在遍历监听链表时,可以加入判定条件,该判定条件可以是:如果当前的监听结构中ignore的参数值为1,那么就不统计该监听结构。这样,通过上述的方式,在遍历监听链表时,可以不统计处于忽略状态的监听结构,以使得后续的event模块不对处于忽略状态的监听结构进行轮询(epoll)操作。
请参阅图2,在本实施方式中,在利用rtmp协议检测函数检测所述连接请求对应的目标协议时,首先可以判断http的指定字段是否为空,如果该指定字段为空,则表示rtmp的监听结构并没有写入该指定字段中,进而表明当前的端口不存在rtmp和http共用的情况,此时,可以直接判定所述连接请求对应的目标协议不是rtmp,返回检测待续的指示符NGX_DECLINED,从而可以继续利用下一个协议检测函数检测所述连接请求对应的目标协议。如果该指定字段非空,则表示当前的端口存在多协议共用的情况,此时可以进一步判断该连接请求实际对应的是哪一个协议。
请参阅图3,本申请还提供一种基于QUIC协议的端口共用系统,所述系统包括:
端口监听单元,用于针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;
协议检测单元,用于在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;
数据处理单元,用于在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理。
请参阅图4,本申请还提供一种服务器,所述服务器中部署有nginx系统,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的基于QUIC协议的端口共用方法。
在本申请中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。所述存储器又可以包括:利用电能方式存储信息的装置,如RAM或ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器或U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器或石墨烯存储器等等。
在本申请中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
由上可见,本申请一个或者多个实施方式提供的技术方案,针对HTTP与RTMP共用的目标端口,可以统一由HTTP对目标端口进行监听。在监听到目标端口处进入连接请求时,可以检测该连接请求对应的目标协议。其中,不同的协议可以由不同的模块进行处理。在目标协议处理连接请求时,可以根据检测协议时的预设方式,相匹配地进行数据读取,读取后的数据便可以经过目标协议的配置信息进行处理。可见,连接请求可以由HTTP统一地进行监听,并且通过相匹配的预设方式和数据读取方式,可以完成对连接请求的协议检测和数据读取过程,使得目标协议的连接请求可以被对应的目标模块进行处理,避免了数据异常的情况。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对系统和服务器的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于QUIC协议的端口共用方法,其特征在于,所述方法包括:
针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;
在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;
在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理;
其中,读取所述连接请求的数据包括:
若所述预设方式为探测所述连接请求的指定字节的数据,但是并不进行实际的数据读取操作的方式,则调用QUIC协议提供的数据接收接口,读取所述连接请求的数据;
若所述预设方式为利用QUIC协议提供的数据接收接口读取所述连接请求的指定字节的数据的方式,则继续调用所述数据接收接口读取所述连接请求的剩余数据,并将读取的所述指定字节的数据和所述剩余数据进行拼接,以形成所述连接请求的完整数据。
2.根据权利要求1所述的方法,其特征在于,在所述目标端口接收到连接请求之后,所述方法还包括:
将读事件句柄设置为协议检测函数,以通过所述协议检测函数检测所述连接请求对应的目标协议。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述目标协议为HTTP时,将所述读事件句柄重置,并通过重置后的读事件句柄读取所述连接请求的数据。
4.根据权利要求1所述的方法,其特征在于,在利用QUIC协议提供的数据接收接口读取所述连接请求的指定字节的数据之后,所述方法还包括:
将所述指定字节的数据写入连接结构的缓冲区域中,以使得在所述目标模块中处理所述连接请求时,检测所述缓冲区域中是否存在数据,若存在,将所述缓冲区域中的数据与所述连接请求的剩余数据进行拼接。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在http的监听结构中新增用于保存监听结构的指定字段;
若所述目标协议为rtmp,从所述指定字段中读取所述rtmp的监听结构,以获取rtmp的配置信息,并通过所述rtmp的配置信息处理所述连接请求。
6.根据权利要求5所述的方法,其特征在于,在将rtmp的监听结构写入http的所述指定字段中之后,所述方法还包括:
将所述rtmp的监听结构设置为忽略状态,以使得rtmp不监听所述目标端口。
7.根据权利要求5所述的方法,其特征在于,检测所述连接请求对应的目标协议包括:
在利用rtmp协议检测函数检测所述连接请求对应的目标协议时,判断所述指定字段是否为空,若所述指定字段为空,判定所述连接请求对应的目标协议不是rtmp,并继续利用下一个协议检测函数检测所述连接请求对应的目标协议。
8.根据权利要求1所述的方法,其特征在于,检测所述连接请求对应的目标协议包括:
依次执行预先设置的多个协议检测函数,以对所述连接请求的部分数据进行检测;
若当前的协议检测函数检测到所述连接请求对应的目标协议,返回检测完成的指示符;
若当前的协议检测函数未检测到所述连接请求对应的目标协议,返回检测待续的指示符,以通过下一个协议检测函数检测所述连接请求对应的目标协议;
若所述多个协议检测函数均执行完毕,并且未检测到所述连接请求对应的目标协议,返回检测结束的指示符。
9.一种基于QUIC协议的端口共用系统,其特征在于,所述系统包括:
端口监听单元,用于针对HTTP与RTMP共用的目标端口,利用HTTP对所述目标端口进行监听;
协议检测单元,用于在所述目标端口接收到连接请求时,按照预设方式检测所述连接请求对应的目标协议,并将所述连接请求发送至所述目标协议对应的目标模块;
数据处理单元,用于在所述目标模块中,按照与所述预设方式相匹配的数据读取方式,读取所述连接请求的数据,并基于所述目标协议的配置信息对读取的所述数据进行处理,其中,读取所述连接请求的数据包括:
若所述预设方式为探测所述连接请求的指定字节的数据,但是并不进行实际的数据读取操作的方式,则调用QUIC协议提供的数据接收接口,读取所述连接请求的数据;
若所述预设方式为利用QUIC协议提供的数据接收接口读取所述连接请求的指定字节的数据的方式,则继续调用所述数据接收接口读取所述连接请求的剩余数据,并将读取的所述指定字节的数据和所述剩余数据进行拼接,以形成所述连接请求的完整数据。
10.一种服务器,其特征在于,所述服务器中部署有nginx系统,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1至8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011233105.3A CN114531499B (zh) | 2020-11-06 | 2020-11-06 | 一种基于quic协议的端口共用方法、系统及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011233105.3A CN114531499B (zh) | 2020-11-06 | 2020-11-06 | 一种基于quic协议的端口共用方法、系统及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114531499A CN114531499A (zh) | 2022-05-24 |
CN114531499B true CN114531499B (zh) | 2024-03-26 |
Family
ID=81618438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011233105.3A Active CN114531499B (zh) | 2020-11-06 | 2020-11-06 | 一种基于quic协议的端口共用方法、系统及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114531499B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116156020A (zh) * | 2022-12-05 | 2023-05-23 | 网宿科技股份有限公司 | 数据处理方法、设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581761A (zh) * | 2003-08-14 | 2005-02-16 | 国际商业机器公司 | 用于网络传输丢失容限的客户端应用控制的方法和系统 |
WO2013185514A1 (zh) * | 2012-06-13 | 2013-12-19 | 天脉聚源(北京)传媒科技有限公司 | 一种播放流媒体的系统和方法 |
CN107222561A (zh) * | 2017-07-03 | 2017-09-29 | 杭州泰酷科技有限公司 | 一种传输层反向代理方法 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
CN109889911A (zh) * | 2019-03-26 | 2019-06-14 | 南京海比信息技术有限公司 | 流媒体反向代理服务实现一个端口承载多个流协议的方法 |
WO2019243890A2 (en) * | 2018-06-19 | 2019-12-26 | Idea Meets Market Beteiligungsgesellschaft Mbh | Multi-port data transmission via udp |
US10778812B1 (en) * | 2019-05-09 | 2020-09-15 | Alibaba Group Holding Limited | Data encapsulation conversion and transmission |
CN111722995A (zh) * | 2019-03-18 | 2020-09-29 | 杭州晨熹多媒体科技有限公司 | 一种数据处理方法及装置 |
WO2020215823A1 (zh) * | 2019-04-25 | 2020-10-29 | 创新先进技术有限公司 | 一种数据处理方法、设备、介质以及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036109B2 (en) * | 2009-01-29 | 2011-10-11 | Oracle International Corporation | Network communication handling |
US10038752B2 (en) * | 2015-12-07 | 2018-07-31 | Dell Products L.P. | Method and system for execution of client-initiated operations on file handles in a distributed server system |
CN105827537B (zh) * | 2016-06-01 | 2018-12-07 | 四川大学 | 一种基于quic协议的拥塞改进方法 |
US10924775B2 (en) * | 2018-06-26 | 2021-02-16 | Qualcomm Incorporated | Uplink and downlink methods for efficient operation of live uplink streaming services |
US11748278B2 (en) * | 2019-06-20 | 2023-09-05 | Intel Corporation | Multi-protocol support for transactions |
-
2020
- 2020-11-06 CN CN202011233105.3A patent/CN114531499B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581761A (zh) * | 2003-08-14 | 2005-02-16 | 国际商业机器公司 | 用于网络传输丢失容限的客户端应用控制的方法和系统 |
WO2013185514A1 (zh) * | 2012-06-13 | 2013-12-19 | 天脉聚源(北京)传媒科技有限公司 | 一种播放流媒体的系统和方法 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
CN107222561A (zh) * | 2017-07-03 | 2017-09-29 | 杭州泰酷科技有限公司 | 一种传输层反向代理方法 |
WO2019243890A2 (en) * | 2018-06-19 | 2019-12-26 | Idea Meets Market Beteiligungsgesellschaft Mbh | Multi-port data transmission via udp |
CN111722995A (zh) * | 2019-03-18 | 2020-09-29 | 杭州晨熹多媒体科技有限公司 | 一种数据处理方法及装置 |
CN109889911A (zh) * | 2019-03-26 | 2019-06-14 | 南京海比信息技术有限公司 | 流媒体反向代理服务实现一个端口承载多个流协议的方法 |
CN110139165A (zh) * | 2019-03-26 | 2019-08-16 | 南京海比信息技术有限公司 | 流媒体反向代理服务实现一个端口承载多个流协议的方法 |
WO2020215823A1 (zh) * | 2019-04-25 | 2020-10-29 | 创新先进技术有限公司 | 一种数据处理方法、设备、介质以及装置 |
US10778812B1 (en) * | 2019-05-09 | 2020-09-15 | Alibaba Group Holding Limited | Data encapsulation conversion and transmission |
Also Published As
Publication number | Publication date |
---|---|
CN114531499A (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108038039B (zh) | 记录日志的方法及微服务系统 | |
US20140215489A1 (en) | Interface specific and parallel ipmi message handling at baseboard management controller | |
CN114095588B (zh) | 一种多协议端口的共用方法、系统及服务器 | |
WO2016127600A1 (zh) | 异常处理方法及装置 | |
CN109873737B (zh) | 一种测试方法及装置 | |
CN108121633B (zh) | 异常捕获方法及装置 | |
CN114531499B (zh) | 一种基于quic协议的端口共用方法、系统及服务器 | |
CN111478792B (zh) | 一种割接信息处理方法、系统及装置 | |
US11930292B2 (en) | Device state monitoring method and apparatus | |
CN112422361A (zh) | 一种交换机测试方法、设备及介质 | |
CN110099074B (zh) | 一种物联网设备的异常检测方法、系统及电子设备 | |
CN112818307A (zh) | 用户操作处理方法、系统、设备及计算机可读存储介质 | |
EP3979660B1 (en) | Multi-protocol port sharing method and system, and server | |
JP2011145824A (ja) | 情報処理装置、障害解析方法及び障害解析プログラム | |
JP2017068691A (ja) | 診断プログラム、診断方法および診断装置 | |
CN115623464A (zh) | 一种电能表蓝牙模块的故障处理方法、装置及电能表 | |
US7992047B2 (en) | Context sensitive detection of failing I/O devices | |
JP6584737B1 (ja) | 脅威特定装置、脅威特定方法及び脅威特定プログラム | |
JP6819610B2 (ja) | 診断装置、診断方法、及び、診断プログラム | |
JP6863290B2 (ja) | 診断装置、診断方法、及び、診断プログラム | |
CN113271235B (zh) | 网络流量的模糊测试方法、装置、存储介质及处理器 | |
CN116225818A (zh) | 数据库的仲裁服务监控方法、装置、监控设备和存储介质 | |
US20190012292A1 (en) | Control device | |
CN116150744A (zh) | 远程控制程序的检测方法及装置 | |
WO2021167598A1 (en) | Temporary probing agents for collecting data in a computing environment |
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 |