本申请涉及计算机领域,尤其涉及一种确定流量信息归属的方法和装置。
背景技术:
:用户可以通过电子设备上安装的应用(application,app)访问不同的互联网协议(internetprotocol,ip)地址实现网络通信,如向ip地址发送数据或者从ip地址接收数据。电子设备发送或接收的数据可以称为流量,这些数据对应的ip地址等信息可以称为流量信息。流量与费用密切相关,为了节省费用,用户需要了解流量信息的具体内容。例如,用户除了需要知晓流量对应的app之外,还需要知晓一个app访问不同的域名所消耗的流量,以便于针对性地采取节流措施节省费用。一种获取流量信息的具体内容的方法是在运营商的通用分组无线服务(generalpacketradioservice,gprs)支持节点的gn口部署采集系统,获取“域名-ip地址-流量”表,然后再根据“ip地址-app”数据库确定流量归属,即,确定流量对应的app和域名。由于上述方法需要对运营商的设备进行改动,方案复杂,成本较大,如何以较小的成本确定流量归属是当前需要解决的问题。技术实现要素:本申请提供了一种确定流量信息归属的方法和装置,能够减小确定流量归属的复杂度和成本。第一方面,提供了一种确定流量信息归属的方法,包括:获取流经网卡的第一数据包;从所述第一数据包中获取第一流量信息,所述第一流量信息包括第一地址;确定所述第一ip地址对应的第一域名;根据所述第一域名生成所述第一流量信息的归属信息。由于归属信息包含了第一流量信息对应的域名,用户可以基于该归属信息确定不同网站的流量消耗情况,相比于现有技术中获取流量信息对应的域名的方法,上述方法无需对运营商的设备进行改动,减小了确定流量归属的复杂度和成本。第二方面,提供了一种确定流量信息归属的装置,用于执行上述第一方面的方法。具体地,该装置包括用于执行第一方面的方法的功能模块。第三方面,提供了一种终端设备,包括处理器和存储器。该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行上述第一方面中的方法。第四方面,提供了一种芯片,用于执行上述第一方面中的方法。该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的设备用于执行上述第一方面中的方法。第五方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行上述第一方面中的方法。第六方面,提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行上述第一方面中的方法。附图说明图1是一种适用于本申请的流量查询系统;图2是本申请提供的一种确定流量信息归属的方法的示意图;图3是本申请提供的一种缓冲帧的示意图;图4是本申请提供的一种确定流量信息归属的装置的示意图。具体实施方式下面,将结合附图对本申请提供的技术方案进行详细描述。图1是一种适用于本申请的流量查询系统。该系统包括抓取模块110、解析模块120、第一查询模块130、第二查询模块140、流量报告生成模块150和流量监测模块160。抓取模块110用于获取流经网卡的数据包。解析模块120用于从抓取模块110获取的数据包中解析出流量信息。第一查询模块130用于查询流量信息对应的app。可选地,第一查询模块130包括子模块131和子模块132,子模块131可以查询端口号对应的用户标识(useridentifier,uid),子模块132可以查询uid对应的app。第二查询模块140用于查询流量信息对应的域名。流量报告生成模块150用于根据上述两个查询模块输出的结果生成流量信息的归属信息,该归属信息例如是流量信息对应的域名和app名称,以便于用户针对性地采取节流措施节省费用。可选地,上述系统还包括流量监测模块160,用于监测流量的使用情况,以便于在流量异常时发出预警信息。上述系统中各个模块是基于功能进行划分的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以将各个功能划分为不同的模块,也可以将两个或两个以上的功能集成在一个模块中。上述各个模块既可以采用硬件的形式实现,也可以采用软件的形式实现。下面,将结合图1所示的系统详细介绍本申请提供的确定流量信息归属的方法。如图2所示,方法200包括:s210,获取流经网卡的第一数据包。上述网卡可以是实体网卡,也可以是虚拟网卡。第一数据包指的是流经网卡的任意一个数据包,其中,流经网卡的数据包指的是:向电子设备外部发送的数据包,和/或,从电子设备外部接收到的数据包。由于这些数据包是产生流量费用的数据包,因此,获取流经网卡的数据包能够精确计费。上述步骤可以由抓取模块110执行。抓取模块110可以通过原始套接字sock_raw抓取流经网卡的数据包,例如,通过使用api:socket(pf_packet,sock_raw,htons(eth_p_all))可以监听到网卡上的所有数据帧,通过recvfrom函数接收数据帧,如果网卡有数据变化,就会接收到原始数据缓存以及长度。抓取模块110也可以通过内核的netfliter注册一个hook,在进行sock和数据匹配时获得数据帧的长度、内容和uid。获取第一数据包后,系统可以执行下列步骤。s220,从所述第一数据包中获取第一流量信息,所述第一流量信息包括第一ip地址。s220可以由解析模块120执行。例如,第一数据包为传输控制协议(transmissioncontrolprotocol,tcp)/ip数据包,解析模块120可以根据tcp/ip协议从第一数据包的帧头中解析出源ip地址、源端口号、目的ip地址和目的端口号,这些内容均可称为第一流量信息。下面举一个从第一数据包中获取源ip地址、源端口号、目的ip地址和目的端口号的例子。图3示出了第一数据包的一种可能的帧缓冲(buffer),该帧缓冲可以分为3部分。第一部分中的数据代表链路层头部,根据以太网链路层头部定义,前12字节代表介质访问控制(mediaaccesscontrol,mac)地址,第13个字节和第14个字节代表类型,因此可获得目的mac地址(1c:1b:0d:c3:df:47)、源mac地址(40:6c:8f:b8:9f:83)和类型(0x0800)。第二部分的数据代表ip层头部,根据ip层头部的定义,可以获得源ip(172.16.16.35)和目的ip(172.16.16.36)。第三部分的数据代表tcp层头部,根据tcp层头部的定义,可以获得源端口号(24800)和目的端口号(50314)。可选地,解析模块120还可以从网卡获取本地ip地址。若本地ip地址与源ip地址相同,说明第一数据包是上行数据包,此时可以确定主ip地址(即,第一ip地址)为目的ip地址,并且,确定主端口号(即,第一端口号)为源端口号;若本地ip地址与目的ip地址相同,说明第一数据包是下行数据包,此时可以确定主ip地址为源ip地址,并且,确定主端口号为目的端口号。解析模块120可以生成如表1所示的结果。表1主端口号主ip地址方向长度24800172.16.16.35下行6657910203.208.50.56上行6642798180.101.212.33上行1506基于上述方案,可以获取包含方向信息的第一流量信息,进一步细化流量的使用情况,以便于用户针对性地采取节流措施节省费用。获取第一流量信息后,系统可以执行下列步骤。s230,确定所述第一ip地址对应的第一域名;s230可以由第二查询模块140执行。例如,在android系统中,第二查询模块140可以在主端口号为53(53为dns使用的端口号)的情况下,查询主ip地址对应域名,可以生成如表2所示的结果。表2域名ip地址www.baidu.com180.101.212.33www.hao123.com203.208.50.56当第一ip地址为180.101.212.33时,第一流量信息包括“上行,1506”,根据表1和表2,可以确定第一流量信息的归属信息包括“www.baidu.com”,从而可以执行下列步骤。s240,根据所述第一域名生成所述第一流量信息的归属信息。s240可以由流量报告生成模块150执行,生成第一流量信息的归属信息后展示给用户。由于归属信息包含了第一流量信息对应的域名,用户可以基于该归属信息确定不同网站的流量消耗情况,相比于现有技术中获取流量信息对应的域名的方法,方法200无需对运营商的设备进行改动,减小了确定流量归属的复杂度和成本。上述归属信息除了包括第一域名之外,还可以包括第一流量信息所属的第一app的标识,即,第一app标识。可选地,可以通过第一端口号确定第一app标识。例如,第一查询模块130中的子模块131可以根据下列四个文件确定端口号与uid的对应关系:proc/net/tcp、/proc/net/tcp6、/proc/net/udp、/proc/net/udp6;该对应关系如表3所示。表3端口号uid57910100554279810012以第一端口号为42798为例,第一查询模块130从解析模块120获取第一端口号之后,子模块131从表3中确定第一端口号对应的uid为10012,即,第一uid。随后,子模块131将第一uid发送至子模块132。子模块132预先获取uid与app标识的对应关系,例如,子模块132遍历/proc/目录下面的进程信息目录,读取/proc/xxx/cmdline获得uid(通过stat方法获得)与app标识的对应关系,该对应关系如表4所示。表4uidapp标识10055com.xxx.xxx10012com.yyy.yyy子模块132获取第一uid后,在表4中查询第一uid对应的第一app标识,最终确定第一app标识为com.yyy.yyy。流量报告生成模块150可以从子模块132获取第一数据包对应的第一app标识、方向和长度等信息,结合从第二查询模块140获取的第一域名,最终生成第一流量信息的归属信息。汇总不同时段内第一app对应的流量归属信息,可以得到第一app访问不同域名所消耗的流量的详情,如第一app在一天内访问不同域名消耗的总流量和访问不同域名消耗的上下行流量。可选地,确定第一app在一段时间内消耗的流量之后,还可以根据历史流量使用情况确定该端时间内消耗的流量是否超出正常使用范围。例如,流量监测模块160可以基于方法200确定第一应用在15天(即,15个单位时间)内消耗的总流量,随后,将该总流量除以15确定1天(即,1个单位时间)内消耗的流量x;若第16天(即,目标单位时间)内消耗的流量大于50x(即,流量告警阈值),说明第16天内消耗的流量可能存在异常,流量监测模块160可以生成流量告警信息,提示用户可能的异常情况,流量监测模块160还可以向云端发送流量告警信息和详细的流量报告,以便于工程师分析是否存在异常情况;若第16天(即,目标单位时间)内消耗的流量小于或等于50x,说明第16天内消耗的流量不存在异常,流量监测模块160可以确定不生成流量告警信息。上述50可以是用户设置的倍数,用户也可以自行设置其它的流量告警阈值,此外,单位时间的具体长度以及历史流量的统计时间也可以由用户设置。上文详细介绍了本申请提供的确定流量信息归属的方法的示例。可以理解的是,确定流量信息归属的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文所公开的实施例中描述的单元及算法步骤,本申请的技术方案能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。图4示出了本申请提供的一种确定流量信息归属的装置的结构示意图。图4中的虚线表示该单元或该模块为可选的。装置400可用于实现上述方法实施例中描述的方法。装置400可以是终端设备或芯片。装置400包括一个或多个处理器401,该一个或多个处理器401可控制装置400实现上文所述的方法实施例中的方法。处理器401可以是通用处理器或者专用处理器。例如,处理器401可以是中央处理器(centralprocessingunit,cpu)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件,例如,分立门、晶体管逻辑器件或分立硬件组件。装置400还可以包括通信单元405,用于实现数据的输入和/或输出。例如,装置400可以是芯片,通信单元405可以是该芯片的输入和/或输出电路,或者,通信单元405可以是该芯片的通信接口,该芯片可以作为终端设备或其它电子设备的组成部分。又例如,装置400可以是终端设备,通信单元405可以是该终端设备的收发器,或者,通信单元405可以是该终端设备的收发电路。装置400可以包括一个或多个存储器402,其上存有程序404,程序404可被处理器401运行,生成指令403,使得处理器401根据指令403执行上述方法实施例中描述的方法。可选地,存储器402中还可以存储有数据(如上述表格)。可选地,处理器401还可以读取存储器402中存储的数据,该数据可以与程序404存储在相同的存储地址,该数据也可以与程序404存储在不同的存储地址。处理器401和存储器402可以单独设置,也可以集成在一起,例如,集成终端设备的系统级芯片(systemonchip,soc)上。本申请还提供了一种计算机程序产品,该计算机程序产品被处理器401执行时实现本申请中任一方法实施例所述的方法。该计算机程序产品可以存储在存储器402中,例如是程序404,程序404经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器401执行的可执行目标文件。本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。该计算机可读存储介质例如是存储器402。存储器402可以是易失性存储器或非易失性存储器,或者,存储器402可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。在本申请所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。另外,本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页1 2 3 
技术特征:1.一种确定流量信息归属的方法,其特征在于,包括:
获取流经网卡的第一数据包;
从所述第一数据包中获取第一流量信息,所述第一流量信息包括第一互联网协议ip地址;
确定所述第一ip地址对应的第一域名;
根据所述第一域名生成所述第一流量信息的归属信息。
2.根据权利要求1所述的方法,其特征在于,所述第一流量信息还包括第一端口号,所述方法还包括:
确定所述第一端口号对应的第一应用标识;
根据所述第一应用标识生成所述第一流量信息的归属信息。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一端口号对应的第一应用标识,包括:
根据所述第一端口号确定第一用户标识uid;
根据所述第一uid确定所述第一应用标识。
4.根据权利要求2或3所述的方法,其特征在于,所述第一数据包包括源ip地址、源端口号、目的ip地址和目的端口号,
当所述源ip地址与本地ip地址相同时,所述第一ip地址为所述目的ip地址,并且,所述第一端口号为所述源端口号;或者,
当所述目的ip地址与本地ip地址相同时,所述第一ip地址为所述源ip地址,并且,所述第一端口号为所述目的端口号。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述第一应用标识对应的应用为第一应用,所述方法还包括:
确定一个单位时段内的流量告警阈值;
确定所述第一应用在目标单位时段内消耗的流量,所述目标单位时段位于所述n个单位时段之后;
当所述目标单位时段内消耗的流量大于所述流量告警阈值时,生成流量告警信息;或者,
当所述目标单位时段内消耗的流量小于或等于所述流量告警阈值时,确定不生成流量告警信息。
6.根据权利要求5所述的方法,其特征在于,所述确定一个单位时段内的流量告警阈值,包括:
根据所述第一应用在n个单位时段内消耗的总流量确定所述第一应用在一个单位时段内消耗的流量,n为大于1的正整数;
根据所述一个单位时段内消耗的流量确定所述流量告警阈值。
7.一种确定流量信息归属的装置,其特征在于,包括通信单元和处理单元,
所述通信单元用于:获取流经网卡的第一数据包;
所述处理单元用于:从所述第一数据包中获取第一流量信息,所述第一流量信息包括第一互联网协议ip地址;确定所述第一ip地址对应的第一域名;根据所述第一域名生成所述第一流量信息的归属信息。
8.根据权利要求7所述的装置,其特征在于,所述第一流量信息还包括第一端口号,所述处理单元还用于:
确定所述第一端口号对应的第一应用标识;
根据所述第一应用标识生成所述第一流量信息的归属信息。
9.根据权利要求8所述的装置,其特征在于,所述处理单元具体用于:
根据所述第一端口号确定第一用户标识uid;
根据所述第一uid确定所述第一应用标识。
10.根据权利要求8或9所述的装置,其特征在于,所述第一数据包包括源ip地址、源端口号、目的ip地址和目的端口号,
当所述源ip地址与本地ip地址相同时,所述第一ip地址为所述目的ip地址,并且,所述第一端口号为所述源端口号;或者,
当所述目的ip地址与本地ip地址相同时,所述第一ip地址为所述源ip地址,并且,所述第一端口号为所述目的端口号。
11.根据权利要求8至10中任一项所述的装置,其特征在于,所述第一应用标识对应的应用为第一应用,所述处理单元还用于:
确定一个单位时段内的流量告警阈值;
确定所述第一应用在目标单位时段内消耗的流量,所述目标单位时段位于所述n个单位时段之后;
当所述目标单位时段内消耗的流量大于所述流量告警阈值时,生成流量告警信息;或者,
当所述目标单位时段内消耗的流量小于或等于所述流量告警阈值时,确定不生成流量告警信息。
12.根据权利要求11所述的装置,其特征在于,所述处理单元具体用于:
根据所述第一应用在n个单位时段内消耗的总流量确定所述第一应用在一个单位时段内消耗的流量,n为大于1的正整数;
根据所述一个单位时段内消耗的流量确定所述流量告警阈值。
13.一种终端设备,其特征在于,包括:处理器和存储器,该存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,执行如权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行:如权利要求1至6中任一项所述的方法。
技术总结本申请提供了一种确定流量信息归属的方法,包括:获取流经网卡的第一数据包;从所述第一数据包中获取第一流量信息,所述第一流量信息包括第一地址;确定所述第一IP地址对应的第一域名;根据所述第一域名生成所述第一流量信息的归属信息。由于归属信息包含了第一流量信息对应的域名,用户可以基于该归属信息确定不同网站的流量消耗情况,相比于现有技术中获取流量信息对应的域名的方法,上述方法无需对运营商的设备进行改动,减小了确定流量归属的复杂度和成本。
技术研发人员:张泽远;康小锋;李阳;向荣
受保护的技术使用者:上海商米科技集团股份有限公司
技术研发日:2020.03.15
技术公布日:2020.06.05