CN113067810B - 网络抓包方法、装置、设备和介质 - Google Patents

网络抓包方法、装置、设备和介质 Download PDF

Info

Publication number
CN113067810B
CN113067810B CN202110283492.XA CN202110283492A CN113067810B CN 113067810 B CN113067810 B CN 113067810B CN 202110283492 A CN202110283492 A CN 202110283492A CN 113067810 B CN113067810 B CN 113067810B
Authority
CN
China
Prior art keywords
data packet
network
socket information
target
socket
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
CN202110283492.XA
Other languages
English (en)
Other versions
CN113067810A (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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110283492.XA priority Critical patent/CN113067810B/zh
Publication of CN113067810A publication Critical patent/CN113067810A/zh
Application granted granted Critical
Publication of CN113067810B publication Critical patent/CN113067810B/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种网络抓包方法、装置、设备和介质。该方法包括:获取针对网卡抓取的网络数据包;定时获取与指定进程相关的套接字信息;根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。上述技术方案实现了在不了解指定进程特征的前提下针对指定进程进行有效地网络抓包。

Description

网络抓包方法、装置、设备和介质
技术领域
本发明实施例涉及网络技术领域,尤其涉及一种网络抓包方法、装置、设备和介质。
背景技术
网络抓包已成为网络协议分析调试、网络安全检测的重要方式。网络抓包工具可以抓取到主机网络上传输的数据包,将数据包持久化存储下来或进行实时展示分析。常见的数据包分析器、入侵检测***、流量录制回放***都依赖于可靠的网络抓包工具,但当前网络抓包工具无法直接针对进程进行抓包,这是目前网络抓包工具在进程数据包分析上的一大瓶颈。
目前,针对主机网卡进行抓包时,可以在抓包前设置一些网络层的过滤规则,例如IP地址(Internet Protocol,网际互联协议)地址或端口过滤。若提前知道指定进程的监听端口,以及对外请求的远端IP地址和端口,则可以通过设置对应的IP地址和端口过滤规则来尝试捕获指定进程的部分数据包。
若未知指定进程的监听端口以及对外请求的远端IP地址和端口,则无法通过设置网络层过滤规则来捕获指定进程的部分数据包;若指定进程在运行过程中变更了监听端口或对外请求的远端IP地址和端口,则抓包前设置的网络层过滤规则失效,无法捕获到有效的网络数据包;若主机上存在其他进程与指定进程请求了相同的远端IP地址和端口,则在进程outbound(出站)数据包的抓取上会同时捕获到其他进程的数据包。因此,在不了解指定进程特征的前提下,如何针对指定进程进行有效地网络抓包是亟待解决的问题。
发明内容
本发明实施例提供一种网络抓包方法、装置、设备和介质,以在不了解指定进程特征的前提下针对指定进程进行有效地网络抓包。
第一方面,本发明实施例提供了一种网络抓包方法,包括:
获取针对网卡抓取的网络数据包;
定时获取与指定进程相关的套接字信息;
根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
第二方面,本发明实施例还提供了一种网络抓包装置,包括:
网卡数据包获取模块,用于获取针对网卡抓取的网络数据包;
套接字信息定时获取模块,用于定时获取与指定进程相关的套接字信息;
网络数据包过滤模块,用于根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任意实施例所述的网络抓包方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任意实施例所述的网络抓包方法。
在本发明实施例提供的技术方案中,在针对指定进程进行网络抓包时,定时获取与指定进程相关的套接字信息,根据所述套接字信息对针对网络抓取的网络数据包进行过滤,即可得到属于所述指定进程的网络数据包。其中,无需预先知道指定进程的监听端口以及对外请求的远端IP地址和端口,同时,用于对网络数据包进行过滤的套接字信息是与指定进程相关的且是定时获取的,不会过滤出属于其他进程的网络数据包,也能避免指定进程在运行过程中变更监听端口或对外请求的远端IP地址和端口而导致网络抓包无效,以此实现了在不了解指定进程特征的前提下针对指定进程进行有效地网络抓包。
附图说明
图1是本发明实施例一提供的一种网络抓包方法的流程图;
图2是本发明实施例二提供的一种网络抓包方法的流程图;
图3是本发明实施例三提供的一种网络抓包方法的流程图;
图4是本发明实施例四提供的一种网络抓包装置的模块结构示意图;
图5是本发明实施例五提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种网络抓包方法的流程图,本实施例可适用于针对指定进程进行网络抓包的情况,该方法可以由本发明任意实施例提供的网络抓包装置来执行,该装置可由硬件和/或软件组成,并一般可集成在计算机设备中。
如图1所示,本实施例提供的网络抓包方法包括以下步骤:
S110、获取针对网卡抓取的网络数据包。
抓包,指的是将网络传输发送和接收的数据包进行拦截、记录等操作。
使用预设的抓包工具针对整个主机网卡进行抓包,得到的数据包即为针对网卡抓取的网络数据包。在针对整个主机网络进行抓包之后,可以将抓取到的网络数据包暂存在内存的缓冲区中。
可选的,使用Tcpdump、Wireshark等抓包工具针对整个主机网卡进行抓包。
在本实施例一种可选的实施方式中,可以通过pcap(过程特性分析软件包)抓取主机网卡上的TCP(Transmission Control Protocol,传输控制协议)数据包,并暂存在内存缓冲区。
其中,计算机网络领域中,pcap是用于捕获网络流量的应用程序编程接口。不同的操作***有不同的程序库实现pcap,例如类UNIX***的libpcap,Windows***的WinPcap。
S120、定时获取与指定进程相关的套接字信息。
进程,是指计算机中已运行的程序,一台主机上可同时运行多个进程。而指定进程,是指需要进行网络数据包抓取的一个进程。
套接字(Socket),是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口。在本实施例中,套接字可以指的是TCP socket。
可选的,基于套接字的inode编号获取与指定进程相关的套接字信息。
虽然操作***维护套接字时没有直接关联进程,但可以将套接字的inode编号作为中介,建立套接字与进程之间的关联关系。其中,inode是指在许多“类Unix文件***”中的一种数据结构,用于描述文件***对象(包括文件、目录、设备文件、socket、管道等)。inode编号是文件***用来唯一标识inode的一个数值。
获取与指定进程相关的socket inode编号列表,将与该socket inode编号列表相关的套接字信息作为与指定进程相关的套接字信息。
作为一种可选的实施方式,获取与指定进程相关的套接字信息,可以具体为:通过进程文件***procfs基于套接字的inode编号获取与指定进程相关的套接字信息。
procfs,是类UNIX***内的一种特殊的文件***,可以充当操作***内核中内部数据结构的接口。通过procfs可以获取到操作***的有关信息,还可以在运行时更改某些内核参数。
在本实施方式中,可以通过procfs获取与指定进程相关的TCP socket信息,作为对网络数据包进行过滤的条件。具体的,通过procfs首先从目录/proc/进程ID/fd获取到指定进程相关的socket inode编号列表,然后获取与socket inode编号列表相关的TCPsocket信息作为与指定进程相关的TCP socket信息。
进一步的,作为一种可选的实施方式,通过进程文件***procfs基于套接字的inode编号获取与指定进程相关的套接字信息,可以具体为:
在procfs的基础上结合Netlink基于套接字的inode编号获取与指定进程相关的套接字信息。
为了提高获取与指定进程相关的套接字信息的效率,可以结合procfs和Netlink来获取与指定进程相关的TCP socket信息。
Netlink,是Linux提供的用于内核与用户态进程之间的通信方式,它被设计用于内核与用户态进程之间传输网络相关信息。
在本实施方式中,可以首先通过procfs从目录/proc/进程ID/fd获取到指定进程相关的socket inode编号列表,然后通过Netlink获取与socket inode编号列表相关的TCPsocket信息。
获取指定进程相关的TCP socket信息需要定期执行,以便在指定进程变更了监听端口,或者变更了对外请求的远端IP和端口时能及时更新指定进程相关的TCP socket信息。
作为一种可选的实施方式,定时获取与指定进程相关的套接字信息的执行时间间隔小于报文最长存活时长(Maximum Segment Lifetime,MSL)的2倍。
MSL,指TCP报文在网络上的最长存在时间,超过这个时间报文将被丢弃。其中,MSL的时长按具体UNIX实现而定,一般在30秒~2分钟。
由于TCP socket在客户端断开后,会进入时长2*MSL的TIME_WAIT阶段,所以当定时获取与指定进程相关的套接字信息的执行时间间隔在2*MSL之间内时,能够确保网络数据包不会丢失。
S130、根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
定时获取的指定进程相关的套接字信息作为对针对主机网卡抓取的网络数据包进行过滤筛选的条件。
若网络数据包的特征符合指定进程相关的TCP socket提供的信息,则可以确定该网络数据包属于指定进程的网络数据包。其中,网络数据包的特征主要指的是网络数据包的IP信息和端口信息。针对网卡抓取的每个网络数据包,解析出IP信息和端口信息,并按预设规则与指定进程相关的TCP socket提供的信息进行对比,若对比结果一致,则确定网络数据包属于指定进程。
属于指定进程的网络数据包可以分为inbound(入站)数据包和outbound(出站)数据包。其中,inbound数据包是指进程作为服务端,与客户端进行通信时的数据包;outbound数据包是指进程作为客户端,与远端的服务进行通信时的数据包。
可选的,根据LISTEN状态的TCP socket来筛选指定进程的inbound数据包(包括请求数据包和响应数据包),根据ESTABLISHED状态、FIN_WAIT1状态、FIN_WAIT2状态、TIME_WAIT状态的TCP socket来筛选指定进程的outbound数据包(包括请求数据包和响应数据包)。
由此,可以将属于指定进程的网络数据包筛选出来,保存到本地文件中或者传输到远端存储以便于后续分析,例如将数据包进行流量回放或者是将数据包实时展示分析,以便测试人员调试网络问题等等,以此也就实现了针对指定进程进行抓包操作。
在本发明实施例提供的技术方案中,在针对指定进程进行网络抓包时,定时获取与指定进程相关的套接字信息,根据所述套接字信息对针对网络抓取的网络数据包进行过滤,即可得到属于所述指定进程的网络数据包。其中,无需预先知道指定进程的监听端口以及对外请求的远端IP地址和端口,同时,用于对网络数据包进行过滤的套接字信息是与指定进程相关的且是定时获取的,不会过滤出属于其他进程的网络数据包,也能避免指定进程在运行过程中变更监听端口或对外请求的远端IP地址和端口而导致网络抓包无效,以此实现了在不了解指定进程特征的前提下针对指定进程进行有效地网络抓包。
实施例二
图2是本发明实施例二提供的一种网络抓包方法的流程图。本实施例在以上述实施例为基础进行具体化,其中,根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,可以具体为:
筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标套接字信息;
根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
如图2所示,本实施例提供的网络抓包方法包括以下步骤:
S210、获取针对网卡抓取的网络数据包。
S220、定时获取与指定进程相关的TCP socket信息。
S230、筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标TCP socket信息。
在定时获取到与指定进程相关的TCP socket信息之后,对这些TCP socket信息进行筛选,筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的套接字信息作为用于对抓取到的网络数据包进行过滤的目标TCP socket信息。
S240、根据所述目标TCP socket信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
在目标TCP socket信息中,LISTEN状态的TCP socket信息用来过滤出inbound的请求/响应包,其他非LISTEN状态的TCP socket信息用来过滤出outbound的请求/响应包。其中,所述非LISTEN状态包括:ESTABLISHED状态、FIN_WAIT1状态、FIN_WAIT2状态和TIME_WAIT状态。
作为一种可选的实施方式,根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,包括:
如果所述网络数据包中的目标数据包的源端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包;
如果所述目标数据包的目的端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包。
作为另一种可选的实施方式,根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,包括:
如果所述网络数据包中的目标数据包的源端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;
如果所述目标数据包的目的端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包。
其中,上述提到的目标数据包指的是针对主机网卡抓取到的网络数据包中的任意一个网络数据包,具体可以是指抓取到的任意一个TCP数据包。
对于抓取到的每个TCP数据包,解析出其IP信息和端口信息,具体包括源IP地址、源端口、目的IP地址、目的端口,进而可以根据TCP数据包的源IP地址、源端口或者目标IP地址、目标端口,以及处于LISTEN状态的TCP socket目的端口和主机IP地址,判断TCP数据包是否属于指定进程的inbound数据包,可以根据TCP数据包的源IP地址、源端口或者目标IP地址、目标端口,以及处于非LISTEN状态的TCP socket的源端口和主机IP地址,判断TCP数据包是否属于指定进程的outbound数据包。
其中,若TCP数据包的源端口与处于LISTEN状态的TCP socket的目的端口相同,且TCP数据包的源IP地址与主机IP地址相同,则确定TCP数据包属于所述指定进程的inbound数据包;若TCP数据包的目的端口与处于LISTEN状态的TCP socket的目的端口相同,且TCP数据包的目的IP地址与主机IP地址相同,则确定TCP数据包的属于所述指定进程的inbound数据包。
若TCP数据包的源端口与处于非LISTEN状态的TCP socket的源端口相同,且TCP数据包的源IP地址与主机IP地址相同,则确定TCP数据包的属于所述指定进程的outbound数据包;若TCP数据包的目的端口与处于非LISTEN状态的TCP socket的源端口相同,且TCP数据包的目的IP地址与主机IP地址相同,则确定TCP数据包属于所述指定进程的outbound数据包。
针对既不属于所述指定进程的outbound数据包,又不属于所述指定进程的inbound数据包的TCP数据包,可以直接丢弃。
本实施例未尽详细解释之处请参见前述实施例,在此不再赘述。
在上述技术方案中,筛选指定进程的outbound数据包是通过处于非LISTEN状态的TCP socket的源端口来判断的,而不是依据传统通过目标IP地址和目的端口来判断筛选,指定进程的inbound数据包是通过处于LISTEN状态的TCP socket的目的端口来判断的。由于不同的进程不会同时占用相同的TCP socket源端口,以此可以解决误捕获其他进程outbound数据包的问题;由于不同的进程不会同时占用相同的TCP socket目的端口,以此也可以解决误捕获其他进程inbound数据包的问题。
实施例三
图3是本发明实施例三提供的一种网络抓包方法的流程图。本实施例在以上述实施例为基础提供了一种具体的实施方式。
如图3所示,本实施例提供的网络抓包方法包括以下步骤:
S310、通过pcap抓取主机网卡上的TCP数据包,并暂存在内存缓冲区。
S320、以小于2*MSL的时间间隔通过procfs和Netlink定时获取与指定进程相关的TCP socket信息。
其中,可以首先通过procfs从目录/proc/进程ID/fd获取到指定进程相关的socket inode编号列表,然后通过Netlink获取与socket inode编号列表相关的TCPsocket信息。
S330、在TCP socket信息中筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标TCP socket信息。
S340、针对内存缓冲区中的每个TCP数据包,解析其源IP地址、源端口、目的IP地址、和目的端口。
S350、判断源端口或目的端口是否与处于LISTEN状态的TCP socket的目的端口相同,若是,则执行S360,若否,则执行S390。
S360、判断源IP地址或目的IP地址是否与主机IP地址相同,若是,执行S370,若否,则执行S380。
S370、确定TCP数据包属于指定进程,并过滤出来。
其中,若TCP数据包的源端口与处于LISTEN状态的TCP socket的目的端口相同,且TCP数据包的源IP地址与主机IP地址相同,则确定TCP数据包属于所述指定进程的inbound数据包;若TCP数据包的目的端口与处于LISTEN状态的TCP socket的目的端口相同,且TCP数据包的目的IP地址与主机IP地址相同,则确定TCP数据包的属于所述指定进程的inbound数据包。
若TCP数据包的源端口与处于非LISTEN状态的TCP socket的源端口相同,且TCP数据包的源IP地址与主机IP地址相同,则确定TCP数据包的属于所述指定进程的outbound数据包;若TCP数据包的目的端口与处于非LISTEN状态的TCP socket的源端口相同,且TCP数据包的目的IP地址与主机IP地址相同,则确定TCP数据包属于所述指定进程的outbound数据包。
进一步的,可以将属于指定进程的TCP数据包筛选出来,保存到本地文件中或者传输到远端存储以便于后续分析,例如将数据包进行流量回放或者是将数据包实时展示分析,以便测试人员调试网络问题等等,以此也就实现了针对指定进程进行抓包操作。
S380、确定TCP数据包不属于指定进程,丢弃。
S390、判断源端口或目的端口是否与处于非LISTEN状态的TCP socket的源端口相同,若是,则执行S360,若否,则执行S380。
本实施例未尽详细解释之处请参见前述实施例,在此不再赘述。
在上述技术方案中,通过结合procfs和Netlink获取指定进程的TCP socket信息作为数据包过滤条件,可筛选出属于指定进程的TCP数据包,不需要预先了解指定进程的特征;与指定进程相关的TCP socket信息会在2*MSL内定期更新,能保证进程抓包过程中不丢失数据包;在对TCP数据包进行过滤时,筛选指定进程的outbound数据包是通过处于非LISTEN状态的TCP socket的源端口来判断的,而不是依据传统通过目标IP地址和目的端口来判断筛选,指定进程的inbound数据包是通过处于LISTEN状态的TCP socket的目的端口来判断的,由于不同的进程不会同时占用相同的TCP socket源端口,不同的进程不会同时占用相同的TCP socket目的端口,故可以解决误捕获其他进程outbound数据包以及inbound数据包的问题。
通过本本实施例提供的网络抓包方法,抓取指定进程相关的数据包简单省力,可以直接运用于线上进程流量录制回放、进程数据包实时分析等场景。
实施例四
图4是本发明实施例四提供的一种网络抓包装置的模块结构示意图,本实施例可适用于针对指定进程进行网络抓包的情况,该装置可以采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图4所示,该装置包括:网卡数据包获取模块410、套接字信息定时获取模块420和网络数据包过滤模块430。其中,
网卡数据包获取模块410,用于获取针对网卡抓取的网络数据包;
套接字信息定时获取模块420,用于定时获取与指定进程相关的套接字信息;
网络数据包过滤模块430,用于根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
在本发明实施例提供的技术方案中,在针对指定进程进行网络抓包时,定时获取与指定进程相关的套接字信息,根据所述套接字信息对针对网络抓取的网络数据包进行过滤,即可得到属于所述指定进程的网络数据包。其中,无需预先知道指定进程的监听端口以及对外请求的远端IP地址和端口,同时,用于对网络数据包进行过滤的套接字信息是与指定进程相关的且是定时获取的,不会过滤出属于其他进程的网络数据包,也能避免指定进程在运行过程中变更监听端口或对外请求的远端IP地址和端口而导致网络抓包无效,以此实现了在不了解指定进程特征的前提下针对指定进程进行有效地网络抓包。
可选的,套接字信息定时获取模块420,具体用于基于套接字的inode编号获取与指定进程相关的套接字信息。
可选的,套接字信息定时获取模块420,具体用于通过进程文件***procfs基于套接字的inode编号获取与指定进程相关的套接字信息。
进一步的,套接字信息定时获取模块420,具体用于在procfs的基础上结合Netlink基于套接字的inode编号获取与指定进程相关的套接字信息。
可选的,网络数据包过滤模块430,包括:套接字信息筛选单元和网络数据包过滤单元,其中,
套接字信息筛选单元,用于筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标套接字信息;
网络数据包过滤单元,用于根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
进一步的,网络数据包过滤单元,具体用于如果所述网络数据包中的目标数据包的源端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包;如果所述目标数据包的目的端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包。
进一步的,网络数据包过滤单元,具体用于如果所述网络数据包中的目标数据包的源端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;如果所述目标数据包的目的端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;
其中,所述非LISTEN状态包括:ESTABLISHED状态、FIN_WAIT1状态、FIN_WAIT2状态和TIME_WAIT状态。
可选的,套接字信息定时获取模块420定时获取与指定进程相关的套接字信息的执行时间间隔小于报文最长存活时长的2倍。
本发明实施例所提供的网络抓包装置可执行本发明任意实施例所提供的网络抓包方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5是本发明实施例五提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括处理器50、存储器51、输入装置52和输出装置53;计算机设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;计算机设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的网络抓包方法对应的程序指令/模块(例如,图4中网络抓包装置中的网卡数据包获取模块410、套接字信息定时获取模块420和网络数据包过滤模块430)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的网络抓包方法。
存储器51可主要包括存储程序区和存储数据表区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据表区可存储根据计算机设备的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置52可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种网络抓包方法,该方法包括:
获取针对网卡抓取的网络数据包;
定时获取与指定进程相关的套接字信息;
根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包。
当然,本发明实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的网络抓包方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
值得注意的是,上述网络抓包装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (8)

1.一种网络抓包方法,其特征在于,包括:
获取针对网卡抓取的网络数据包,包括:针对整个主机网卡进行抓包,将抓取到的网络数据包暂存在内存的缓冲区中;
定时获取与指定进程相关的套接字信息,包括:基于套接字的inode编号获取与指定进程相关的套接字信息;
根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包;
所述根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,包括:
筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标套接字信息;
根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包;
所述根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,包括:
如果所述网络数据包中的目标数据包的源端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;
如果所述目标数据包的目的端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;
其中,所述非LISTEN状态包括:ESTABLISHED状态、FIN_WAIT1状态、FIN_WAIT2状态和TIME_WAIT状态。
2.根据权利要求1所述的方法,其特征在于,基于套接字的inode编号获取与指定进程相关的套接字信息,包括:
通过进程文件***procfs基于套接字的inode编号获取与指定进程相关的套接字信息。
3.根据权利要求2所述的方法,其特征在于,通过进程文件***procfs基于套接字的inode编号获取与指定进程相关的套接字信息,包括:
在procfs的基础上结合Netlink基于套接字的inode编号获取与指定进程相关的套接字信息。
4.根据权利要求1所述的方法,其特征在于,根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包,包括:
如果所述网络数据包中的目标数据包的源端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包;
如果所述目标数据包的目的端口与处于LISTEN状态的目标套接字信息的目的端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的入站数据包。
5.根据权利要求1所述的方法,其特征在于,定时获取与指定进程相关的套接字信息的执行时间间隔小于报文最长存活时长的2倍。
6.一种网络抓包装置,其特征在于,包括:
网卡数据包获取模块,用于获取针对网卡抓取的网络数据包,包括:针对整个主机网卡进行抓包,将抓取到的网络数据包暂存在内存的缓冲区中;
套接字信息定时获取模块,用于定时获取与指定进程相关的套接字信息,包括:基于套接字的inode编号获取与指定进程相关的套接字信息;
网络数据包过滤模块,用于根据所述套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包;
所述网络数据包过滤模块,包括:套接字信息筛选单元和网络数据包过滤单元,其中,
所述套接字信息筛选单元,用于筛选出状态为LISTEN、ESTABLISHED、FIN_WAIT1、FIN_WAIT2以及TIME_WAIT的目标套接字信息;
所述网络数据包过滤单元,用于根据所述目标套接字信息对所述网络数据包进行过滤,得到属于所述指定进程的网络数据包;
所述网络数据包过滤单元,具体用于如果所述网络数据包中的目标数据包的源端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的源IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;如果所述目标数据包的目的端口与处于非LISTEN状态的目标套接字信息的源端口相同,且所述目标数据包的目的IP地址与主机IP地址相同,则确定所述目标数据包属于所述指定进程的出站数据包;
其中,所述非LISTEN状态包括:ESTABLISHED状态、FIN_WAIT1状态、FIN_WAIT2状态和TIME_WAIT状态。
7.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN202110283492.XA 2021-03-16 2021-03-16 网络抓包方法、装置、设备和介质 Active CN113067810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110283492.XA CN113067810B (zh) 2021-03-16 2021-03-16 网络抓包方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110283492.XA CN113067810B (zh) 2021-03-16 2021-03-16 网络抓包方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113067810A CN113067810A (zh) 2021-07-02
CN113067810B true CN113067810B (zh) 2023-05-26

Family

ID=76560754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110283492.XA Active CN113067810B (zh) 2021-03-16 2021-03-16 网络抓包方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113067810B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660279B (zh) * 2021-08-19 2022-12-13 平安科技(深圳)有限公司 网络主机的安全防护方法、装置、设备及存储介质
CN113746925B (zh) * 2021-09-06 2023-06-09 北京天融信网络安全技术有限公司 一种文件传输行为审计方法、装置、电子设备及存储介质
CN115174214A (zh) * 2022-07-05 2022-10-11 中孚安全技术有限公司 一种操作***应用层全局网络抓包方法及***

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217493A (zh) * 2008-01-08 2008-07-09 北京大学 一种tcp数据包的传输方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9137270B2 (en) * 2012-12-03 2015-09-15 International Business Machines Corporation Binding multiple addresses to a socket in a network system
CN103560973A (zh) * 2013-10-14 2014-02-05 深圳市同洲电子股份有限公司 一种数据包过滤的方法及装置
CN106789242B (zh) * 2016-12-22 2019-12-31 广东华仝九方科技有限公司 一种基于手机客户端软件动态特征库的识别应用智能分析方法
CN107608852B (zh) * 2017-09-01 2019-11-26 清华大学 一种进程监控方法及装置
CN108881328B (zh) * 2018-09-29 2021-02-23 北京东土军悦科技有限公司 数据包过滤方法、装置、网关设备及存储介质
CN109660535A (zh) * 2018-12-17 2019-04-19 郑州云海信息技术有限公司 Linux***中数据的处理方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217493A (zh) * 2008-01-08 2008-07-09 北京大学 一种tcp数据包的传输方法

Also Published As

Publication number Publication date
CN113067810A (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
CN113067810B (zh) 网络抓包方法、装置、设备和介质
US10021033B2 (en) Context driven policy based packet capture
WO2020135575A1 (zh) 一种获取网络拓扑的***、方法和服务器
JP6599538B2 (ja) ネットワークトラフィックにおけるアプリケーション情報を識別するための方法および装置
US9485155B2 (en) Traffic analysis of data flows
CN113794605B (zh) 一种基于eBPF的内核丢包检测方法、***和装置
JP2018531527A6 (ja) ネットワークトラフィックにおけるアプリケーション情報を識別するための方法および装置
US8898265B2 (en) Determining data flows in a network
CN108683553B (zh) 故障注入的方法和装置
CN109960634B (zh) 一种应用程序监控方法、装置及***
CN110855493B (zh) 用于混合环境的应用拓扑图绘制装置
CN108989151B (zh) 用于网络或应用性能管理的流量采集方法
CN110198251B (zh) 一种获得客户端地址的方法及装置
CN112929376A (zh) 一种流量数据的处理方法、装置、计算机设备和存储介质
JP3581345B2 (ja) パケット転送装置およびパケット転送方法
CN111953810B (zh) 识别代理互联网协议地址的方法、装置及存储介质
JP6764313B2 (ja) 即時トラフィック収集・分析システム及び方法
US11595419B2 (en) Communication monitoring system, communication monitoring apparatus, and communication monitoring method
JP3892322B2 (ja) 不正アクセス経路解析システム及び不正アクセス経路解析方法
CN112612670B (zh) 一种会话信息统计方法、装置、交换设备及存储介质
CN113660134A (zh) 端口探测方法、装置、电子装置和存储介质
CN111611134A (zh) 一种时间监控方法、装置、应用端及存储介质
CN110620682A (zh) 资源信息的获取方法及装置、存储介质、终端
CN110708208B (zh) 监控数据的采集方法及装置、存储介质、终端
CN112073258B (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