聊一聊网络协议分析技术!网络数据包捕获技术Libpcap
在实际应用中,实现网络数据包捕获的技术代表是Libpcap。Libpcap是一个专业的跨平台的网络数据包捕获开发包。使用Libpcap可以很轻松地实现网络数据包的捕获功能。我们开始协议分析之前,要了解捕获数据包、过滤数据包、具体协议分析等。
网络协议技术分析
网络的核心是网络协议,网络协议分析技术在网络安全领域也是一项很重要的技术。那什么是网络协议技术分析!
我们通过Wireshark抓一个数据包来看看。

上面截图有很多协议,但是我们可以看出,网络协议分析是指对网络上的数据进行相应的协议分析。网络上的协议是多种多样的,截图的信息中包含了TCP、DNS、QUIC、TLS等。每种协议产生的数据是不相同的。
但是,一个网络数据归根结底是基于协议产生的,也就是说任意一个网络数据都使用了一定协议。究竟是什么协议?那我们就要对数据包进行协议分析,看数据包的整个协议内容,可以借助(Wireshark)来分析。
现在流行的协议是TCP/IP协议栈。它里面最核心的协议有Ethernet、ppp协议、ARP/RARP协议、IP协议、UDP、TCP协议、ICMP协议等等。当然还有很多应用协议,例如:HTTP、TLS、QUIC、DNS、FTP、IMAP、POP3协议等等。
新的协议层出不穷,各种各样的网络系统使用各种各样协议,我们只能使用到的时候在学习。
捕获数据包
对网络数据包的协议分析,第一步就是要捕获网络上的数据包,可以使用专业捕获数据开发包Libpcap。我们先来认识Libpcap的简单使用。
#include
#include
#include
#include
#include
#include
#include int main(int argc, char **argv)
{char *dev = NULL;char *net = NULL;char *mask = NULL;int ret = 0;char errbuf[PCAP_ERRBUF_SIZE] = {0};bpf_u_int32 netp = 0; bpf_u_int32 maskp = 0; struct in_addr addr;/* 获取本机的网络接口 */dev = pcap_lookupdev(errbuf);if(dev == NULL){printf("%s\n",errbuf);exit(1);}printf("DEV: %s\n",dev);/* 获取网络地址和网络掩码*/ret = pcap_lookupnet(dev,&netp,&maskp,errbuf);if(ret == -1){printf("%s\n",errbuf);exit(1);}addr.s_addr = netp;net = inet_ntoa(addr);if(net == NULL){perror("inet_ntoa");exit(1);}printf("NET: %s\n",net);addr.s_addr = maskp;mask = inet_ntoa(addr);if(mask == NULL){perror("inet_ntoa");exit(1);}printf("MASK: %s\n",mask);return 0;
}
编译运行:

上面的例子中libpcap用CPP编写的简单测试以提取接口,网络和掩码。
后面有时间我会对Libpcap做详细的讨论。
过滤数据包
我们在分析网络上的数据信息时,由于(Wireshark)抓包产生大量的协议,我们不可能对每个数据进行协议分析,并且在实际应用中有时只想分析某种具体协议,其他协议都不要考虑。这样,就需要捕获到的数据包进行过滤。
过滤的方式有两种,一种是在内核层就过滤掉,另一种是在应用层过滤。第一种的效率要高一些,因为从内核层到应用层之间的转换是很费力的,对性能有影响。
如果我们使用开发包Libpcap,它里面提供BPF过滤机制,它是在内核层实现过滤的。效率很高,而且BPF过滤机制进行了优化处理,效率明显改善。
使用Libpcap不仅实现了数据包的捕获功能,也可以实现数据包的过滤功能。
协议分析
捕获到的特定的网络数据包之后,就可以分析网络协议了,根据TCP/IP协议层次的概念,对网络数据包的协议分析是从链路层开始的。

首先分析数据包的链路层协议,如以太网协议等。其次根据链路层协议的分析网络协议,判断网络层的协议是什么。如IP协议等。

然后再根据网络层协议分析的结果分析传输层协议,如TCP协议,UDP协议等。

最后根据传输层协议分析应用层协议,如QUIC协议、FTP协议等等。

这样一层层地分析下去,就可以把整个数据包的协议都分析出来。
总结
使用网络协议分析技术可以设计专门的网络协议分析系统。很多著名的网络安全系统都是基于Libpcap而开发的,著名的网络数据包捕获和分析工具tcpdump。对于Libpcap,下一篇在讲解。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
