本技术涉及通信,尤其涉及一种操作系统类型确定方法、装置、电子设备及存储介质。
背景技术:
1、目前,移动网络中使用android、ios和windows三种操作系统的终端占绝大多数,现有技术中对终端操作系统类型的判断主要是通过检测终端在http请求中携带的user-agent字段的方式。
2、但是,网络中很多app在http请求中填写的user-agent字段不准确,很容易被伪造,导致操作系统类型被误判的概率较大。另外随着网络流量中加密业务的大幅增加,加密流量无法通过检测user-agent字段来识别操作系统类型。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供了一种操作系统类型确定方法、装置、电子设备及存储介质。
2、第一方面,本技术提供了一种操作系统类型确定方法,包括:
3、根据来自于终端的上行tcp syn报文建立多个tcp流表;
4、根据各所述tcp流表中的首个上行tcp syn报文携带tcp时间戳值的情况,确定所述终端的操作系统类型。
5、可选地,根据各所述tcp流表中的首个上行tcp syn报文携带tcp时间戳值的情况,确定所述终端的操作系统类型,包括:
6、若各所述tcp流表中的首个所述上行tcp syn报文未携带tcp时间戳值,确定所述操作系统类型为第一操作系统类型。
7、可选地,根据各所述tcp流表中的首个上行tcp syn报文携带tcp时间戳值的情况,确定所述终端的操作系统类型,包括:
8、若各所述tcp流表中的首个所述上行tcp syn报文携带tcp时间戳值,根据接收时刻位于预设时间段内的首个上行tcp syn报文携带的tcp时间戳值,确定tcp时间戳值的递增速率;
9、根据所述递增速率确定所述终端的操作系统类型。
10、可选地,根据接收时刻位于预设时间段内的首个上行tcp syn报文携带的tcp时间戳值,确定tcp时间戳值的递增速率,包括:
11、按照接收时刻的先后顺序,针对每个所述tcp时间戳值,确定所述tcp时间戳值是否位于对应的第一tcp时间戳区间内,所述第一tcp时间戳区间是根据前一个tcp时间戳值确定的;
12、若所述tcp时间戳值位于对应的第一tcp时间戳区间内,根据所述tcp时间戳值更新所述第一tcp时间戳区间,得到第二tcp时间戳区间;
13、若所述tcp时间戳值位于对应的第一tcp时间戳区间外,创建第三tcp时间戳区间;
14、确定所述第二tcp时间戳区间内累计的tcp时间戳值的第一数量及所述第三tcp时间戳区间内累计tcp时间戳值的第二数量;
15、根据所述第一数量和所述第二数量中大于或等于预设数量阈值的目标数量,以及,所述预设时间段确定所述递增速率。
16、可选地,根据所述第一数量和所述第二数量中大于或等于预设数量阈值的目标数量,以及,所述预设时间段确定所述递增速率,包括:
17、确定所述预设时间段对应的统计时长;
18、将所述统计时长与所述目标数量的比值确定为所述递增速率。
19、可选地,根据所述递增速率确定所述终端的操作系统类型,包括:
20、若所述递增速率大于预设阈值,确定所述操作系统类型为第二操作系统类型;
21、若所述递增速率小于或等于预设阈值,确定所述操作系统类型为第三操作系统类型。
22、可选地,根据来自于终端的上行tcp syn报文建立多个tcp流表,包括:
23、接收来自于终端的上行tcp syn报文,检测所述上行tcp syn报文的流标识信息;
24、若未查找到与所述流标识信息对应的流上下文,建立以所述流标识信息为索引的tcp流表;
25、若查找到与所述流标识信息对应的流上下文,跳过所述流上下文,返回执行接收来自于终端的上行tcp syn报文的步骤。
26、第二方面,本技术提供了一种操作系统类型确定装置,包括:
27、建立模块,用于根据来自于终端的上行tcp syn报文建立多个tcp流表;
28、确定模块,用于根据各所述tcp流表中的首个上行tcp syn报文携带tcp时间戳值的情况,确定所述终端的操作系统类型。
29、可选地,所述确定模块包括:
30、第一确定单元,用于若各所述tcp流表中的首个所述上行tcp syn报文未携带tcp时间戳值,确定所述操作系统类型为第一操作系统类型。
31、可选地,所述确定模块包括:
32、第二确定单元,用于若各所述tcp流表中的首个所述上行tcp syn报文携带tcp时间戳值,根据接收时刻位于预设时间段内的首个上行tcp syn报文携带的tcp时间戳值,确定tcp时间戳值的递增速率;
33、第三确定单元,用于根据所述递增速率确定所述终端的操作系统类型。
34、可选地,所述第二确定单元包括:
35、第一确定子单元,用于按照接收时刻的先后顺序,针对每个所述tcp时间戳值,确定所述tcp时间戳值是否位于对应的第一tcp时间戳区间内,所述第一tcp时间戳区间是根据前一个tcp时间戳值确定的;
36、更新子单元,用于若所述tcp时间戳值位于对应的第一tcp时间戳区间内,根据所述tcp时间戳值更新所述第一tcp时间戳区间,得到第二tcp时间戳区间;
37、创建子单元,用于若所述tcp时间戳值位于对应的第一tcp时间戳区间外,创建第三tcp时间戳区间;
38、第二确定子单元,用于确定所述第二tcp时间戳区间内累计的tcp时间戳值的第一数量及所述第三tcp时间戳区间内累计tcp时间戳值的第二数量;
39、第三确定子单元,用于根据所述第一数量和所述第二数量中大于或等于预设数量阈值的目标数量,以及,所述预设时间段确定所述递增速率。
40、可选地,所述第三确定子单元还用于:
41、确定所述预设时间段对应的统计时长;
42、将所述统计时长与所述目标数量的比值确定为所述递增速率。
43、可选地,所述第三确定单元包括:
44、第四确定子单元,用于若所述递增速率大于预设阈值,确定所述操作系统类型为第二操作系统类型;
45、第五确定子单元,用于若所述递增速率小于或等于预设阈值,确定所述操作系统类型为第三操作系统类型。
46、可选地,所述建立模块包括:
47、接收单元,用于接收来自于终端的上行tcp syn报文,检测所述上行tcp syn报文的流标识信息;
48、建立单元,用于若未查找到与所述流标识信息对应的流上下文,建立以所述流标识信息为索引的tcp流表;
49、返回执行单元,用于若查找到与所述流标识信息对应的流上下文,跳过所述流上下文,返回执行接收来自于终端的上行tcp syn报文的步骤。
50、第三方面,本技术提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
51、存储器,用于存放计算机程序;
52、处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的操作系统类型确定方法。
53、第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有操作系统类型确定的程序,所述操作系统类型确定的程序被处理器执行时实现第一方面任一所述的操作系统类型确定的步骤。
54、本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
55、本技术实施例无需对上行流量逐包检测,也不需要检测应用层特征,只需要解析终端设备发送的每条流的首个上行tcp syn报文,根据首个上行tcp syn报文携带tcp时间戳值的情况,即可实现自动确定终端的操作系统类型,进而便于运营商能够对不同终端类型的用户采取不同的策略控制,提高用户的上网体验,避免了因流量加密无法检测user-agent的问题,而且,上行tcp syn报文携带的tcp时间戳值不容易被伪造,所以本技术确定的操作系统类型更加准确。