tcpdump源码分析(1)——介绍

简介:

本系列会分析网络诊断工具tcpdump。使得大家(其实主要是针对自己本人)对tcpdump抓包原理和机制有深入认识,并掌握如何对其进行功能扩展。同时能起到细化linux网络协议栈知识点的功效。

            第一篇从整体上来进行介绍,以及源码出处。

         Tcpdump由美国的Lawrence Berkeley National Laboratory开发。使用了libpcap,独立于系统的接口。

Tcpdump可以将网络中传送的数据包的头截获下来提供分析。支持针对网络层、协议、主机、网络或端口的过滤,使分析者过滤不需要的包,不过需要具备root权限。网卡要处在混杂模式下,当网卡进入、退出混杂模式的时候,系统会有信息提示,防止有不法之徒偷偷的进行抓包而无人知晓。

[11038930.759654] device eth0 entered promiscuous mode

[11038932.335690] device eth0 left promiscuous mode

通过tcpdump工具我们可以进一步了解网络到底是如何运行,故障出现在何处,哪种协议产生的包占主要地位,网络瓶颈位于何处等等。

所以说,该工具是系统管理员和网络管理员必须掌握的,无论怎么精通它都不为过。

1.1.1.1  关于参数

因为在网络中存在大量的数据包,而且这些数据包属于不同的协议,而不同协议数据包的格式也不同。因此对捕获的数据必须要进行解码,将包中的信息进行剖析,着对于协议分析来讲非常重要。

            因为tcpdump是开源软件,虽其功能强大,但是在解码分析这块很多还是16进制,不利用分析,可以通过-w参数将监控文件保存下来,给wireshark显示。

1.1.1.2  源码位置

tcpdump的源码并没有在内核中,因为其并不是内核的实现,所以也没必要放在内核中。

我们可以在系统中查看到源码版本:

# tcpdump  --version

tcpdump version 4.7.4

libpcap version 1.7.4

OpenSSL 1.0.2g  1 Mar 2016

            然后可以在官网http://www.tcpdump.org/中,下载源码。当前最新的就是4.9.2版本。

            其github组在https://github.com/the-tcpdump-group/中,相关的项目均在里面。

1.1.1.3  编译

源码包下载解压后,可以直接编译。包中自带configure文件,执行./configure后就可以进行make编译了。编译之前是需要编译libpcap的。

            下篇我们开始抓包的原理分析。

目录
相关文章
|
1月前
|
运维 网络协议 安全
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
44 0
|
3月前
|
网络协议 Linux
Linux命令(120)之tcpdump
Linux命令(120)之tcpdump
37 0
|
5月前
|
Linux
linux下用tcpdump抓包
linux下用tcpdump抓包
|
4月前
|
数据采集 机器学习/深度学习 网络协议
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
74 0
|
机器学习/深度学习 网络协议 Linux
Linux网络管理之tcpdump命令 – 监听网络流量
tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。
640 0
Linux网络管理之tcpdump命令 – 监听网络流量
|
机器学习/深度学习 运维 网络协议
Linux tcpdump,我的个人使用实例
Linux tcpdump,我的个人使用实例
193 0
|
Linux
Linux tcpdump命令详解(三)
Linux tcpdump命令详解(三)
270 0