CN110493081B - 游戏客户端的网络流量确定方法、装置、设备及存储介质 - Google Patents

游戏客户端的网络流量确定方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110493081B
CN110493081B CN201910766889.7A CN201910766889A CN110493081B CN 110493081 B CN110493081 B CN 110493081B CN 201910766889 A CN201910766889 A CN 201910766889A CN 110493081 B CN110493081 B CN 110493081B
Authority
CN
China
Prior art keywords
data
data packet
sequence number
packet
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910766889.7A
Other languages
English (en)
Other versions
CN110493081A (zh
Inventor
郭徐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201910766889.7A priority Critical patent/CN110493081B/zh
Publication of CN110493081A publication Critical patent/CN110493081A/zh
Application granted granted Critical
Publication of CN110493081B publication Critical patent/CN110493081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供一种游戏客户端的网络流量确定方法、装置、设备及存储介质,包括:捕获传输的网络数据包;在网络数据包中确定出包括传输数据的目标数据包;对目标数据包中的传输数据进行解析,确定网络流量信息。本公开提供的方法、装置、设备及存储介质,能够在用户终端与服务器之间传送的网络数据包中,确定出带有传输数据的目标数据包,并对目标数据包中的传输数据进行解析,能够确定出用户终端与服务器之间产生的网络流量信息,使得开发人员可以根据用户终端与服务器之间产生的网络流量信息对程序进行优化。并且,本公开提供的方法、装置、设备及存储介质采用的方案与待监控程序之间的进程完全隔离,不会影响应用程序的性能。

Description

游戏客户端的网络流量确定方法、装置、设备及存储介质
技术领域
本公开涉及网络流量确定技术,尤其涉及一种游戏客户端的网络流量确定方法、装置、设备及存储介质。
背景技术
目前,应用程序所消耗的网络流量,是应用程序优化很重要的一部分,尤其对于游戏应用来说,减少网络流量消耗,能够减少服务器带宽的使用量,从而减少运营成本。还能够减少用户终端的数据处理量,提高客户端的运行速度。
现有技术中,采用在应用程序中打桩的方式检测网络流量。具体是在应用程序中加入用于检测流量的代码,当程序执行到该代码时,能够检测网络流量。
但是,这种方式会影响应用程序的性能,因此,不适于在实际外放的程序版本中应用,只能在内测时应用,这就导致现有技术中无法准确的统计用户实际使用应用程序时所产生的网络流量。
发明内容
本公开提供一种游戏客户端的网络流量确定方法、装置、设备及存储介质,以解决现有技术中统计网络流量的方式,会影响应用程序的性能的问题。
本公开的第一个方面是提供一种游戏客户端的网络流量确定方法,包括:
捕获传输的网络数据包;
在所述网络数据包中确定出包括传输数据的目标数据包;
对所述目标数据包中的所述传输数据进行解析,确定网络流量信息。
本公开的另一个方面是提供一种游戏客户端的网络流量确定装置,包括:
捕获模块,用于捕获传输的网络数据包;
确定模块,用于在所述网络数据包中确定出包括传输数据的目标数据包;
解析模块,用于对所述目标数据包中的所述传输数据进行解析,确定网络流量信息。
本公开的又一个方面是提供一种游戏客户端的网络流量确定设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的网络流量确定方法。
本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的游戏客户端的网络流量确定方法。
本公开提供的游戏客户端的网络流量确定方法、装置、设备及存储介质的技术效果是:
本公开提供的游戏客户端的网络流量确定方法、装置、设备及存储介质,包括:捕获传输的网络数据包;在网络数据包中确定出包括传输数据的目标数据包;对目标数据包中的传输数据进行解析,确定网络流量信息。本公开提供的方法、装置、设备及存储介质,能够在用户终端与服务器之间传送的网络数据包中,确定出带有传输数据的目标数据包,并对目标数据包中的传输数据进行解析,能够确定出用户终端与服务器之间产生的网络流量信息,使得开发人员可以根据用户终端与服务器之间产生的网络流量信息对程序进行优化。并且,本公开提供的方法、装置、设备及存储介质采用的方案与待监控程序之间的进程完全隔离,不会影响应用程序的性能。
附图说明
图1为本发明一示例性实施例示出的游戏客户端的网络流量确定方法的流程图;
图2为本发明另一示例性实施例示出的游戏客户端的网络流量确定方法的流程图;
图2A为本发明一示例性实施例示出的游戏客户端的网络数据包的结构示意图;
图2B为本发明一示例性实施例示出的IP数据包头部的结构示意图;
图2C为本发明一示例性实施例示出的TCP头部的结构示意图;
图3为本发明一示例性实施例示出的游戏客户端的网络流量确定装置的结构图;
图4为本发明另一示例性实施例示出的游戏客户端的网络流量确定装置的结构图;
图5为本发明一示例性实施例示出的游戏客户端的网络流量确定设备的结构图。
具体实施方式
目前,可以在应用程序中插入一段逻辑代码,用于统计网络数据的客户端流量。每次逻辑层从服务端读取数据或者逻辑层向服务端发起数据的时候,都执行这段逻辑代码,从而实现流量统计。
但是,这种插桩的方式,会影响应用程序的性能,不适于将这种方式应用在外放版本中。
本发明实施例提供的方案中,不需要在应用程序中插入额外代码的情况,能够确定出网络流量信息,从而在不影响应用程序进程的情况下,进行流量统计。
图1为本发明一示例性实施例示出的游戏客户端的网络流量确定方法的流程图。
如图1所示,本实施例提供的游戏客户端的网络流量确定方法包括:
步骤101,捕获传输的网络数据包。
其中,本实施例提供的方法由一具备计算功能的电子设备执行。
该电子设备例如可以是用户终端,该用户终端中安装有待监控程序。同时,用户终端中还设置有本实施例提供的方法,用于监控用户终端中安装的应用程序的网络流量情况。用户终端还可以针对网络数据包进行处理,并将确定的网络流量信息反馈给服务器。具体可以在电子设备中设置一用于统计流量的工具,该工具可以用来实现本实施例提供的方法,例如,该工具可以独立于游戏客户端,并运行在游戏客户端所在的系统上。可以由测试人员开启该工具,以使设置有该工具的电子设备能够执行本实施例提供的方法。
具体的,例如在用户终端中安装有一游戏客户端,可以采用本实施例提供的方法监控这一游戏客户端传输的网络数据。
进一步的,可以在电子设备中设置一捕获组件,用于捕获待监控应用程序与服务器之间交互所产生的网络数据包。该捕获组件可以关联待监控应用程序以及该程序的后台服务器,当监控到该应用程序接收到服务器发送的下行数据包,或该应用程序向服务器发送的上行数据包之后,捕获组件可以获取该网络数据包。
实际应用时,可以在电子设备内设置WinPcap SDK,用于捕获用户终端与服务器之间的传输的网络数据包。WinPcap SDK可以捕获端口之间的传输的网络数据包,可以将其中一端设置为待监控程序的服务器端接口,另一端为设置有用户终端的接口,从而可以通过这一SDK获取网络数据包。
步骤102,在网络数据包中确定出包括传输数据的目标数据包。
其中,在优化应用程序时,可以优化应用程序传输的网络数据包,从而降低用户终端以及服务器的数据处理量。但是,在应用程序与服务器交互过程中,有一些网络数据是必须的,不能通过优化程序减少这些网络数据。例如,交互过程中的握手数据,网络数据中的验证信息等。
具体的,电子设备可以在捕获的网络数据包中确定出包括传输数据的目标数据包,即包括具体业务数据的数据包,例如电子设备为用户终端时,用户在用户终端中操作产生的数据,用户终端根据这一操作生成并向服务器反馈的数据包。
进一步的,可以在网络数据包中识别出握手数据包,具体可以识别一数据包是否为TCP数据包,并识别该数据包中的SYN值为1时,可以认为该数据包是握手数据包。具体还可以识别出网络数据包是用户终端向服务器发送的上行握手数据包,以及服务器向用户终端反馈的下行握手数据包。
实际应用时,用户终端与服务器交互时,需要先握手,握手成功后再发送包括传输数据的目标数据包。因此,可以在网络数据包中识别出握手数据包,并获取握手数据包的序列号,即该序列号可以认为是此次交互的初始包序列号。可以在初始序列号基础上,获取后续的目标数据包。
例如,可以先根据预设字段确定网络数据包是否为TCP数据包,并识别其中的SYN字段是否为1,若均是,则认为这一数据包是握手数据包。还可以获取握手数据包中的sn值,作为初始序列号,sn+1即为下一个数据包的序列号。
步骤103,对目标数据包进行解析,确定网络流量信息。
其中,目标数据包是包括具体传输数据的数据包,传输数据是由应用程序中的逻辑产生的,因此,可以对目标数据包进行解析,从而确定出由程序中的逻辑产生的网络流行信息。
具体的,可以对目标数据包进行解析,从而确定出上行网络流量信息,下行网络流量信息,还可以包括不同方法对应的网络流量信息。
进一步的,监控到用户终端与服务器握手完毕后,监控上行数据以及下行数据,从而统计出上行流量信息和下行流量信息,例如,单位时间内传输的上行流量和下行流量。
实际应用时,还可以对目标数据包中的数据进行protobuf解析,从而确定protobuf method信息。
其中,用户终端与服务器交互时,有可能将一个完整的数据拆分成多个数据包进行发送。例如,一个数据可能占用空间较大,则可以将其拆分成3个子数据,并通过三个网络数据包进行发送。这种情况下,还可以根据捕获的网络数据包获取完整的数据,再对这一数据进行protobuf解析。例如,可以根据数据包中表示数据长度的字段,确定完整数据的长度L,再通过目标数据包的序列号对数据包进行排序,从而在其中获取长度为L的数据,也就是完整的网络数据。
具体的,通过protobuf解析,可以获取产生上述完整数据所对应的程序中的方法,因此,还能够根据网络数据包,确定各个方法产生的网络流量。
进一步的,通过确定网络流量信息,可以统计出应用程序产生的流量情况,具体可以是上行流量情况、下行流量情况,还可以包括程序中一个方法产生的流量情况。开发人员可以根据确定的这些信息对应用程序进行优化,例如,当一个方法产生的网络流量较大时,可以优化该方法或该方法的关联方法。
实际应用时,还可以将统计的网络流量信息进行汇总,显示在用户终端中,从而使用户能够看到待监控软件对应的实时流量。
本实施例提供的方法用于确定游戏客户端的网络流量信息,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。
本实施例提供的游戏客户端的网络流量确定方法,包括:捕获传输的网络数据包;在网络数据包中确定出包括传输数据的目标数据包;对目标数据包中的传输数据进行解析,确定网络流量信息。本实施例提供的方法,能够在用户终端与服务器之间传送的网络数据包中,确定出带有传输数据的目标数据包,并对目标数据包中的传输数据进行解析,能够确定出用户终端与服务器之间产生的网络流量信息,使得开发人员可以根据用户终端与服务器之间产生的网络流量信息对程序进行优化。并且,本实施例提供的方法采用的方案与待监控程序之间的进程完全隔离,不会影响应用程序的性能。
图2为本发明另一示例性实施例示出的游戏客户端的网络流量确定方法的流程图。
如图2所示,本实施例提供的网络流量确定方法,包括:
步骤201,通过WinPcap SDK捕获传输的网络数据包。
其中,可以在用户终端中设置WinPcap SDK,WinPcap SDK能够捕获用户终端与服务器之间交互产生的网络数据包。WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库。可以通过网络获取这一SDK。
具体的,可以在用户安装待监控应用程序时,同时安装该SDK,以使该SDK能够获取用户终端与该待监控应用程序的后台服务器通信产生的网络数据包。
步骤202,获取网络数据包中的第一预设字段,并根据预设字段在网络数据包中确定出包括传输数据的目标数据包。
进一步的,可以监控用户终端的上行数据和下行数据,并获取其中包括传输数据的目标数据包。
实际应用时,可以获取网络数据包中的预设字段,并根据预设字段确定一网络数据包是否为目标数据包。
具体可以获取网络数据包中的Protocol字段,并根据Protocol字段确定其是否为PCT数据包,若是,则进一步的获取网络数据包中的ACK和/或PSH字段,根据ACK和/或PSH确定该PCT数据包中是否包括传输数据。
因此,本实施例提供的方法中的第一预设字段可以包括:Protocol字段,还可以包括ACK和/或PSH字段。
图2A为本发明一示例性实施例示出的网络数据包的结构示意图。
具体的,若通过WinPcap SDK库捕获一TCP数据包,则网络数据包的格式如图2A所示,数据的最前头是链路层的头部数据,然后是IP数据包的头部,其次是TCP数据包的头部,最后是具体的传输内容。
进一步的,链路层头部的长度是14个字节,可以根据链路层头部的长度,确定IP数据包头部的位置,进而获取IP数据包头部中包括的信息。
图2B为本发明一示例性实施例示出的IP数据包头部的结构示意图。
如图2B所示,IP数据包头部包括:
Protocol字段:当Protocol字段的值是6时,该IP数据包为传输控制(TCP)数据包;由于用户终端与服务器之间采用TCP协议通信,因此,若Protocol字段的值不是6,则可以丢弃相应的数据包。
HLEN字段:获取IP数据包头长度,从而计算TCP头部在网络数据包的位置。
Total Length字段:获取网络数据包的总长度,在某些情况下,Total Length会为0,因为使用了TSO(Tcp Segmentation of Offload),可以通过Winpack SDK获取整个报文长度。
Source IP Address/Destination IP Address字段:解析这两个字段,如果Source IP Address为当前机器IP,表明当前数据包为上行数据包;否则为下行数据包。
进一步的,本实施例提供的方法需要捕获TCP类型的数据包,因此,可以根据网络数据包中IP数据包头部的Protocol字段,确定数据包是否是TCP数据包,若不是,则可以丢弃相应的数据包。
实际应用时,若确定是TCP类型的数据包,还可以根据IP数据包头部中的HLEN字段确定TCP头部在网络数据包的位置,进而读取TCP头部包括的信息。
图2C为本发明一示例性实施例示出的TCP头部的结构示意图。
TCP数据包头部需要处理的字段如下:
sequence number字段:解析sequence number字段(后续简称sn),从而根据sn将离散的网络数据包进行拼接;
SYN字段:解析SYN字段,用于获取当前连接的第一个sn数值;
ACK/PSH字段:解析ACK/PSH字段,设置这两个字段的数据包会携带通信的相关数据。
步骤203,根据目标数据包的第一序列号,将目标数据包中的传输数据以及第一序列号存储在缓冲队列中。
其中,若是目标数据包,则可以从目标数据包中的传输数据,并将其存储在缓冲队列中。
具体的,还可以从TCP数据包头部提取序列号sn,属于同一目标数据包的sn与传输数据具有对应关系,因此,可以根据序列号sn对传输数据进行排序。具体可以按照sn从小到大的顺序,对传输数据进行排序。
步骤204,在网络数据包中确定握手数据包,并提取握手数据包中包括的第二序列号。
实际应用时,用户终端与服务器之间通常需要通过三次握手来建立TCP连接,连接建立后才能进行正常的数据传输。因此,可以在网络数据包中确定握手数据包,再根据握手数据包确定与其对应的传输数据。
本步骤与步骤202-203的执行时序可以不做限制,可以先确定握手数据包,也可以先确定目标数据包或向缓冲队列中存储传输数据。
其中,可以根据网络数据包中的第二预设字段确定目标类型数据包,并根据目标类型数据包中的SYN值识别出握手数据包。可以根据网络数据包中IP数据包头部的Protocol字段,确定数据包是否是TCP数据包,若不是,则可以丢弃相应的数据包。
实际应用时,若确定是TCP类型的数据包,还可以目标类型数据包中的SYN值识别出握手数据包。具体若SYN为1,则确定该数据包时握手数据包。
用户终端与服务器之间通过握手建立通信连接的过程为:
第一次握手:用户终端发送SYN包至服务器,并进入SYN_SENT状态,等待服务器确认;用户终端发送的SYN包中,SYN被设置为1,还包括一随机序列号sn(seq number)。服务器接收到这个包后识别出SYN为1,从而获知用户终端要求建立连接。
第二次握手:服务器收到用户终端发送的SYN包,SYN包中包括ack number、SYN其中,ack number等于用户终端发送的SYN包中sn+1,SYN=1。此时服务器进入SYN_RCVD状态。
第三次握手:用户终端接收到服务器发送的SYN后,检查包中的ack number是否正确,可以计算用户终端的sn+1与ack number是否一致,若是,则用户终端进入ESTABLISHED状态。用户终端还向服务器再发送ack number(接收服务器发送的数据包中的sn+1),服务器收到后确认sn值,则进入ESTABLISHED状态。
当用户终端和服务器都进入ESTABLISHED状态后,用户终端和服务器之间就可以开始双向传递数据了。
SYN字段能够标识用户终端或服务器要求建立连接,因此,可以读取标类型数据包中的SYN值,从而识别出握手数据包。具体将SYN值等于1的网络数据包确定为握手数据包。
其中,若一网络数据包是TCP数据包,且SYN值为1,则可以认定该网络数据包是握手数据包,还可以获取握手数据包中包括的序列号,具体是指上述sn值。
具体的,在一种实施方式中,可以先将目标数据包中的传输数据以及第一序列号存储在缓存队列中;可以根据握手数据包中的第二序列号确定期望序列号,并在缓存队列中获取与期望序列号对应的传输数据;再将期望序列号、传输数据存储在缓冲队列中。例如,当前的期望序列号是451,则可以在缓存队列中将序列号451及其对应的传输数据存储到缓冲队列中,等待被解析。
可以在第二序列号的基础上增加1,作为当前的期望序列号,在将该期望序列号对应的数据存储到缓冲队列中之后,还可以根据当前的期望序列号进行更新,得到新的期望序列号,例如,可以用当前的期望序列号与该序列号对应的数据长度,更新该期望序列号。
步骤205,在缓冲队列中,根据握手数据包的第二序列号获取与握手数据包对应的待解析数据。
具体的,在缓冲队列中存储有序列号与传输数据的对应关系,可以根据握手数据包的序列号,在缓冲队列中获取待解析数据。从而对待解析数据进行解析。
进一步的,若需要传输的数据较大,则可以将其拆分为多个数据包进行传输。例如,将一个待解析数据拆分为三个子数据包,并分别通过三个网络数据包进行传输。
实际应用时,可以根据握手数据包的第二序列号,确定接下来包括传输数据的目标数据包。例如,若握手数据包的第二序列号是sn,则接下来的目标数据包序列号为是sn+1。
其中,可以根据握手数据包的第二序列号确定第二期望序列号,例如,在握手数据包sn的基础上加1,得到第二期望序列号。
具体的,可以判断缓冲队列中首个传输数据的序列号是否与期望序列号一致,若是,则获取该传输数据,将其作为待解析数据。
再根据待解析数据对应的序列号确定新的期望序列号,并继续执行判断缓存队列中首个传输数据的序列号是否与期望序列号一致的步骤。新的期望序列号可以根据待解析数据的长度及其序列号共同确定,例如,sn+1是第一个待解析数据的序列号,则sn+1+L是新的期望序列号。L是第一个待解析数据的长度。
通过这样的方式能够按照数据的生成顺序获取的待解析数据,用户终端和服务器在对这些数据进行处理时,也是按序进行处理,因此,获取的待解析数据符合用户终端和服务器处理数据时的顺序。
进一步的,若缓存队列中首个传输数据的序列号与期望序列号不一致,则继续在缓存队列中存储传输数据及其对应的序列号。则可以认为还没有捕获握手数据之后传输的首个目标数据包,可以继续等待,直到缓存队列中首个传输数据的序列号与期望序列号一致为止。
其中,在实际应用时,用户终端与服务器握手成功后,才会传输包括传输数据的目标数据包,因此,用户终端会先检测到握手数据包,并获取相应的序列号,再根据捕获的网络数据包向缓存队列中存储数据,并根据握手数据包的序列号从队列中读取待解析数据。
实际应用时,还可以获取目标数据包中包括的数据长度TL,当获取了TL的解析数据后,就对这部分数据进行解析。
步骤206,根据目标数据包确定数据长度,并在待解析数据中获取目标数据包中与数据长度相应的目标数据。
其中,在IP数据包头部的Total Length字段中存储该数据包对应的数据总长度,可以根据这一字段确定数据长度TL。
具体的,可以在解析数据中获取TL长度的目标数据。例如,在步骤205中,已经根据序列号sn的值,按照顺序读取了长度为N的待解析数据,则可以判断获取的待解析数据的长度N是否大于或等于数据长度,若是,则在待解析数据中获取数据长度TL的目标数据。
进一步的,若待解析数据的长度N小于所述数据长度TL,则可以认为还没有获到完整的传输数据,此时,可以继续根据步骤205获取待解析数据。
例如,根据握手数据包确定一序列号为5,则可以确定一期望序列号为6,并判断缓存队列中序列号最小的传输数据序列号是否为6,若是,则获取该数据,并且,根据该数据长度确定新的期望序列,例如新的期望序列为256,则继续在缓存队列中获取新的数据。此处获取的数据即为待解析数据。
其中,还可以根据待解析数据对应的目标数据包中的Total Length字段,确定完整数据长度TL,若当前获取的带解析数据长度大于或等于TL,则可以获取待解析数据中的前TL个字节,也就是一个完整的数据,并对其进行解析。
基于本步骤,能够获取到完整的目标数据,从而可以对完整的目标数据进行解析。
步骤207,对目标数据进行解析,确定网络流量信息。
具体的,本实施例提供的方法可以对完整的目标数据进行解析,具体可以进行protobuf解析。protobuf是一种语言无关、平台无关、可扩展的序列化结构数据的方法,可用在通信协议中。本实施例提供的方法中,可以基于这种协议对目标数据进行解析,获取目标数据对应的protobuf method信息。
进一步的,发送数据端可以根据protobuf协议生成字节,接收端可以根据protobuf协议恢复字节对应的数据内容。可以根据protobuf协议,对目标数据中的字节进行恢复,从而得到原始数据内容。
实际应用时,通过protobuf解析,还能够确定出目标数据对应的protobuf方法信息。具体是指生成目标数据所对应的方法。若一方法生成的目标数据较大,则可以优化相应的方法。
实际应用时,还可以针对上行数据、下行数据包分别执行本实施例提供的方法。具体可以捕获上行数据包,并将上行数据包中的数据和对应的序列号存储在缓存队列中。还可以监控上行数据包从而确定握手数据包,再根据握手数据包从缓存队列中获取解析数据,并在解析数据中获取一个个的完整的目标数据。下行数据包的处理过程与上行数据包类似。
本实施例提供的方法,能够根据握手数据包的序列号逐一获取待解析数据,从而使得待解析数据能够与设备处理数据时的顺序一致。并且,还能够在待解析数据中获取单个完整的目标数据,从而对目标数据进行解析,确定出网络流量信息。并且,本实施例提供的方法可以通过WinPcap SDK捕获传输的网络数据包,即捕获数据包的进程与待监控程序分离,捕获过程不会影响应用程序的性能。同时,本实施例提供的方法后续对网络数据包进行处理的进程也与应用程序的进程分离,使得处理过程也不会影响应用程序的性能。
图3为本发明一示例性实施例示出的游戏客户端的网络流量确定装置的结构图。
如图3所示,本实施例提供的游戏客户端的网络流量确定装置,包括:
捕获模块31,用于捕获传输的网络数据包;
确定模块32,用于在所述网络数据包中确定出包括传输数据的目标数据包;
解析模块33,用于对所述目标数据包中的所述传输数据进行解析,确定网络流量信息。
本实施例提供的游戏客户端的网络流量确定装置,包括:捕获模块,用于捕获传输的网络数据包;确定模块,用于在网络数据包中确定出包括传输数据的目标数据包;解析模块,用于对目标数据包中的传输数据进行解析,确定网络流量信息。本实施例提供的装置,能够在用户终端与服务器之间传送的网络数据包中,确定出带有传输数据的目标数据包,并对目标数据包中的传输数据进行解析,能够确定出用户终端与服务器之间产生的网络流量信息,使得开发人员可以根据用户终端与服务器之间产生的网络流量信息对程序进行优化。并且,本实施例提供的装置与待监控程序之间的进程完全隔离,不会影响应用程序的性能。
本实施例提供的游戏客户端的网络流量确定装置的具体原理和实现方式均与图1所示的实施例类似,此处不再赘述。
图4为本发明另一示例性实施例示出的游戏客户端的网络流量确定装置的结构图。
如图4所示,在上述实施例的基础上,本实施例提供的游戏客户端的网络流量确定装置,可选的,所述确定模块32,包括:
获取单元321,用于获取所述网络数据包中的第一预设字段;
第一确定单元322,用于根据所述第一预设字段在所述网络数据包中确定出包括所述传输数据的所述目标数据包。
所述装置还包括存储模块34,用于在确定模块32在所述网络数据包中确定出包括传输数据的目标数据包之后:
根据所述目标数据包的第一序列号,将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓冲队列中。
可选的,所述确定模块32,还用于:
在所述网络数据包中确定握手数据包,并提取所述握手数据包中包括的第二序列号;
所述解析模块33,包括:
解析单元331,用于在所述缓冲队列中,根据所述握手数据包的所述第二序列号获取与所述握手数据包对应的待解析数据,并对所述待解析数据进行解析。
可选的,所述存储模块34具体用于:
将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓存队列中;
根据所述第二序列号确定第一期望序列号,并在所述缓存队列中获取与所述第一期望序列号对应的所述传输数据;
将所述第一期望序列号、所述传输数据存储在所述缓冲队列中。
可选的,所述确定模块32具体用于:
根据所述网络数据包中的第二预设字段确定目标类型数据包,并根据所述目标类型数据包中的SYN值识别出所述握手数据包。
可选的,所述解析单元331具体用于:
根据所述握手数据包的所述第二序列号确定第二期望序列号;
判断所述缓冲队列中首个传输数据的序列号是否与所述第二期望序列号一致,若是,则将所述传输数据确定为所述待解析数据;
根据所述待解析数据对应的序列号确定第二期望序列号,并继续执行判断所述缓冲存队列中首个传输数据的序列号是否与所述第二期望序列号一致的步骤。
可选的,所述解析单元331具体用于:
若缓冲队列中首个传输数据的序列号与所述第二期望序列号不一致,则继续在所述缓冲队列中存储所述传输数据及其对应的序列号。
可选的,所述解析单元331具体用于:
根据所述目标数据包确定数据长度,并在所述待解析数据中获取所述目标数据包中与所述数据长度相应的目标数据;
对所述目标数据进行解析,确定所述网络流量信息。
可选的,所述解析单元331具体用于:
判断获取的所述待解析数据的长度是否大于或等于所述数据长度,若是,则在所述待解析数据中获取所述数据长度的所述目标数据。
可选的,所述解析单元331具体用于:
若所述待解析数据的长度小于所述数据长度,则继续获取所述待解析数据。
可选的,所述解析单元331具体用于:
对所述目标数据进行protobuf解析,获取所述目标数据对应的protobuf方法信息。
可选的,所述捕获模块31具体用于:
通过WinPcap SDK捕获传输的所述网络数据包。
本实施例提供的游戏客户端的网络流量确定装置的具体原理和实现方式均与图2所示的实施例类似,此处不再赘述。
图5为本发明一示例性实施例示出的游戏客户端的网络流量确定设备的结构图。
如图5所示,本实施例提供的游戏客户端的网络流量确定设备包括:
存储器51;
处理器52;以及
计算机程序;
其中,所述计算机程序存储在所述存储器51中,并配置为由所述处理器62执行以实现如上所述的任一种游戏客户端的网络流量确定方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如上所述的任一种游戏客户端的网络流量确定方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (13)

1.一种游戏客户端的网络流量确定方法,其特征在于,包括:
捕获传输的网络数据包;
在所述网络数据包中确定出包括传输数据的目标数据包;
根据所述目标数据包的第一序列号,将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓冲队列中;
在所述网络数据包中确定握手数据包,并提取所述握手数据包中包括的第二序列号;
在所述缓冲队列中,根据所述握手数据包的所述第二序列号获取与所述握手数据包对应的待解析数据;根据所述目标数据包确定数据长度,并在所述待解析数据中获取所述目标数据包中与所述数据长度相应的目标数据;对所述目标数据进行解析,确定网络流量信息。
2.根据权利要求1所述的方法,其特征在于,所述在所述网络数据包中确定出包括传输数据的目标数据包,包括:
获取所述网络数据包中的第一预设字段,并根据所述第一预设字段在所述网络数据包中确定出包括所述传输数据的所述目标数据包。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓冲队列中,包括:
将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓存队列中;
根据所述第二序列号确定第一期望序列号,并在所述缓存队列中获取与所述第一期望序列号对应的所述传输数据;
将所述第一期望序列号、所述传输数据存储在所述缓冲队列中。
4.根据权利要求1所述的方法,其特征在于,所述在所述网络数据包中确定握手数据包,包括:
根据所述网络数据包中的第二预设字段确定目标类型数据包,并根据所述目标类型数据包中的SYN值识别出所述握手数据包。
5.根据权利要求1所述的方法,其特征在于,所述在所述缓冲队列中,获取与所述握手数据包对应的待解析数据,包括:
根据所述握手数据包的所述第二序列号确定第二期望序列号;
判断所述缓冲队列中首个传输数据的序列号是否与所述第二期望序列号一致,若是,则将所述传输数据确定为所述待解析数据;
根据所述待解析数据对应的序列号确定第二期望序列号,并继续执行判断所述缓冲队列中首个传输数据的序列号是否与所述第二期望序列号一致的步骤。
6.根据权利要求5所述的方法,其特征在于,若缓冲队列中首个传输数据的序列号与所述第二期望序列号不一致,则继续在所述缓冲队列中存储所述传输数据及其对应的序列号。
7.根据权利要求1所述的方法,其特征在于,所述在所述待解析数据中获取所述目标数据包中与所述数据长度相应的目标数据,包括:
判断获取的所述待解析数据的长度是否大于或等于所述数据长度,若是,则在所述待解析数据中获取所述数据长度的所述目标数据。
8.根据权利要求7所述的方法,其特征在于,若所述待解析数据的长度小于所述数据长度,则继续获取所述待解析数据。
9.根据权利要求1所述的方法,其特征在于,所述对所述目标数据进行解析,确定所述网络流量信息,包括:
对所述目标数据进行protobuf解析,获取所述目标数据对应的protobuf方法信息。
10.根据权利要求1所述的方法,其特征在于,所述捕获传输的网络数据包包括:
通过WinPcap SDK捕获传输的所述网络数据包。
11.一种游戏客户端的网络流量确定装置,其特征在于,包括:
捕获模块,用于捕获传输的网络数据包;
确定模块,用于在所述网络数据包中确定出包括传输数据的目标数据包;
存储模块,用于根据所述目标数据包的第一序列号,将所述目标数据包中的所述传输数据以及所述第一序列号存储在缓冲队列中;
所述确定模块,还用于:
在所述网络数据包中确定握手数据包,并提取所述握手数据包中包括的第二序列号;
解析模块,包括解析单元;
所述解析单元用于在所述缓冲队列中,根据所述握手数据包的所述第二序列号获取与所述握手数据包对应的待解析数据;根据所述目标数据包确定数据长度,并在所述待解析数据中获取所述目标数据包中与所述数据长度相应的目标数据;对所述目标数据进行解析,确定网络流量信息。
12.一种游戏客户端的网络流量确定设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如权利要求1-10任一种所述的方法。
13.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如权利要求1-10任一种所述的方法。
CN201910766889.7A 2019-08-20 2019-08-20 游戏客户端的网络流量确定方法、装置、设备及存储介质 Active CN110493081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910766889.7A CN110493081B (zh) 2019-08-20 2019-08-20 游戏客户端的网络流量确定方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910766889.7A CN110493081B (zh) 2019-08-20 2019-08-20 游戏客户端的网络流量确定方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110493081A CN110493081A (zh) 2019-11-22
CN110493081B true CN110493081B (zh) 2021-04-20

Family

ID=68552197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910766889.7A Active CN110493081B (zh) 2019-08-20 2019-08-20 游戏客户端的网络流量确定方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110493081B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112190926B (zh) * 2020-10-15 2021-08-20 段绍森 网络游戏场景下的数据流量处理方法及网游服务器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547290A (zh) * 2016-06-27 2018-01-05 腾讯科技(深圳)有限公司 流量检测方法和装置
CN108696450A (zh) * 2018-07-05 2018-10-23 深圳华信系统技术有限公司 一种网络tcp流量处理方法及其装置
CN109847342A (zh) * 2019-03-19 2019-06-07 Oppo广东移动通信有限公司 网络检测方法及相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296228B (zh) * 2008-06-19 2010-10-06 上海交通大学 基于流量分析的ssl vpn协议检测方法
US9106536B2 (en) * 2013-04-15 2015-08-11 International Business Machines Corporation Identification and classification of web traffic inside encrypted network tunnels
CN104657747A (zh) * 2015-01-30 2015-05-27 南京邮电大学 一种基于统计特征的网络游戏流分类方法
TWI641251B (zh) * 2016-11-18 2018-11-11 財團法人工業技術研究院 網路流量監控方法與系統

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547290A (zh) * 2016-06-27 2018-01-05 腾讯科技(深圳)有限公司 流量检测方法和装置
CN108696450A (zh) * 2018-07-05 2018-10-23 深圳华信系统技术有限公司 一种网络tcp流量处理方法及其装置
CN109847342A (zh) * 2019-03-19 2019-06-07 Oppo广东移动通信有限公司 网络检测方法及相关装置

Also Published As

Publication number Publication date
CN110493081A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
US9906630B2 (en) Processing data packets in performance enhancing proxy (PEP) environment
CN112714047B (zh) 基于工控协议流量的测试方法、装置、设备及存储介质
CN111628967B (zh) 日志数据的传输方法、装置、计算机设备和存储介质
JP5024394B2 (ja) システム可視化プログラム、方法及び装置
CN113794605A (zh) 一种基于eBPF的内核丢包检测方法、系统和装置
KR20150007411A (ko) 데이터 전송 방법 및 장치, 데이터 수신 방법 및 장치 및 기록 매체
US8505098B2 (en) Method for recording, recovering, and replaying real traffic
CN111628900A (zh) 基于网络协议的模糊测试方法、装置和计算机可读介质
CN110493081B (zh) 游戏客户端的网络流量确定方法、装置、设备及存储介质
CN114553730A (zh) 一种应用识别方法、装置、电子设备及存储介质
JP5014199B2 (ja) 通信記録装置、通信データ処理方法および通信データ処理プログラム
CN108076070B (zh) 一种fasp协议阻断方法、装置及分析系统
CN107733903B (zh) 一种基于udp的数据传输确认方法和基站
CN113422760B (zh) 数据传输方法、装置、电子装置和存储介质
CN115967575A (zh) Http请求夹带检测方法、装置、电子设备及存储介质
CN113645225B (zh) 一种网络安全设备探测方法、装置、设备及可读存储介质
US10257093B2 (en) Information processing device, method, and medium
CN114363059A (zh) 一种攻击识别方法、装置及相关设备
US20040170129A1 (en) Automatic detecting method for protocol nonconformity and automatic detecting apparatus for protocol nonconformity
US10623338B2 (en) Information processing device, information processing method and non-transitory computer-readable storage medium
CN111814161A (zh) 一种数据传输方法及系统
CN113285904A (zh) 基于rdp的磁盘映射文件信息的解析方法
KR20200093455A (ko) 역공학을 통한 네트워크 프로토콜 상태 추론 방법 및 시스템
Hall et al. Non-intrusive estimation of web server delays
CN109842465A (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