我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux中的tcpdump命令示例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux中的tcpdump命令示例详解

前言

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

说到这个tcpdump命令,就不得不提自己参加的中国移动内蒙古分公司第三代CRM系统的开发与实施。如果没有记错的话,那应该是2016年,自己单独负责整个10086客服系统自助渠道的整体改造工作;在系统压测阶段,调用接口平台时,总是出现超时现象。后来这个问题越来越严重,同时短厅渠道、CBOSS渠道也反馈有这个问题,这时这个问题就引起了大BOSS的注意,然后就是各方专家会诊。在这种大型项目中,专家会诊,都有一个特色,就是专家指挥,小弟干活,而我那个时候,就是那个小弟。

好吧,专家发话了,抓包先。这就开始了我的抓包工作,开始了我对tcpdump的全面理解。

首先需要说的是,这个tcpdump是一个非常功能强大的命令,功能强大,那也就意味着这个命令的使用是非常复杂的,也就是说,我接下来整理的内容也会是非常多的。如果你想去掌握整个tcpdump命令的话,就需要你稍微有点耐心去把整篇文章读完。OK,Let's go!

命令简介

tcpdump是一款强大的网络抓包工具,运行在linux平台上。熟悉tcpdump的使用能够帮助我们分析、调试网络数据。但是要想很好地掌握tcpdump, 就必须对网络报文(TCP/IP协议)有一定的了解。不过对于简单的使用来说,只要有网络基础概念就行了。

作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。在实际工作中,需要以root权限去执行该命令。

tcpdump是一个很复杂的命令,想了解它的方方面面非常不易,也不值得推荐,能够使用它解决日常工作中的问题才是关键,所以,以下的总结我将更侧重于从实际工作出发,整理一些实际工作中经常用到的用法,对于一些冷门用法,我这里VRoKST基本不会涉及,如果日后在工作中用到了,我这里也会更新进来。

命令详解
下面就先对tcpdump一些常用的选项进行总结。

  • -s number:tcpdump默认只会截取前96字节的内容,要想截取所有的报文内容,就需要使用这个选项,其中number是需要截取的报文字节数,如果是0的话,表示截取报文全部内容;
  • -nn:表示不解析域名,直接显示IP,在netstat命令中,也有这个选项;
  • -X:同时使用hex和ascii显示报文内容;
  • -S:显示绝对的序列号(sequence number),而不是相对编号;
  • -i:指定监听的网卡,如果为-i any则表示监听所有的网卡;
  • -v,-vv,-vvv:显示更多的详细信息;
  • -c number:表示截取number个报文,然后结束;
  • -w:将监听到的数据包写入文件中保存,而并不分析和打印出来;
  • -A:只使用ascii打印报文的全部数据,不要和-X选项一起使用。截取HTTP请求的时候可以用sudo tcpdump -nSA port 80

虽然tcpdump命令的选项特别多,但是常用的选项也就上面那几个,我这里将更多的把注意力放在使用实例上,通过使用实例来学习tcpdump这个命令。

过滤器

先进行使用实例详解时,有必要先掌握tcpdump一些基本的使用理论知识,先来说说过滤器。

在服务器上的网络报文是异常的多,很多时候我们只关注和具体问题有关的数据报文,而这些有用的报文只占到很小的一部分,为了不让我们在报文的海洋里迷失自己,我们就非常有必要学习一下tcpdump提供的灵活而且功能强大的过滤器。

过滤器也可以简单地分为三类:type,dir和proto。

type:主要用来区分过滤报文源类型,主要由host主机报文,net网段报文和port指定端口的报文组成;

dir:只过滤报文的源地址和目的地址,主要包括class="lazy" data-src源地址和dst目的地址;

proto:只过滤报文的协议类型,支持tcp,udp和icmp等;使用的时候可以省略proto关键字:

  • tcpdump -i eth1 arp
  • tcpdump -i eth1 ip
  • tcpdump -i eth1 tcp
  • tcpdump -i eth1 udp
  • tcpdump -i eth1 icmp

在我们使用tcpdump命令时是离不开这些过滤器的。

条件组合

在茫茫网络中,想要找到那个你想要的网络包,还是有一定难度的。为了抓住那个我们想要的网络包,在我们抓包命令中,包含越多的限制条件,抓的无关包就会越少,所以在进行抓包时,我们可以使用“与”(and、&&)、“或”(or、||)和“非”(not、!)来将多个条件组合起来。这对我们需要基于某些条件来分析网络包是非常有用的。

使用实例

命令:tcpdump -i eth1

说明:监视指定网络接口的数据包

命令:tcpdump host 210.27.48.3

说明:截获210.27.48.3主机收到的和发出的所有数据包

命令:tcpdump host 210.27.48.4 and (210.27.48.5 or 210.27.48.6)

说明:截获210.27.48.3主机和210.27.48.5或者210.27.48.6主机进行通信的所有数据包

命令:tcpdump net 192.168.1.0/24

说明:截获192.168.1.0/24整个网络的数据包

命令:tcpdump -i eth0 class="lazy" data-src host 210.27.48.3

说明:监视eth0网卡上源地址是210.27.48.3的所有网络包

命令:tcpdump -i eth0 dst host 210.27.48.3

说明:监视eth0网卡上目的地址是210.27.48.3的所有网络包

命令:tcpdump tcp port 23 and host 210.27.48.3

说明:获取主机210.27.48.3上端口为23的应用发出和接收的所有TCP协议包

命令:tcpdump udp port 123

说明:获取本机123端口发出和接收的所有UDP协议包

命令:tcpdump class="lazy" data-src host 10.126.1.222 and dst net 10.126.1.0/24

说明:截获源主地址为10.126.1.222,目的地址是10.126.1.0/24整个网络

命令:tcpdump -i eth0 -s0 -G 60 -Z root -w %Y_%m%d_%H%M_%S.pcap

说明:抓取报文后按照指定时间间隔保存;-G选项后面接时间,单位为秒;上述命令就是每隔60秒生存一个文件

命令:tcpdump -i eth0 -s0 -C 1 -Z root -w eth0Packet.pcap

说明:抓取报文后按照指定报文大小保存;-C选项后接文件大小,单位为MB;上述命令就是每抓包文件达到1MB时就使用一个新的文件保存新抓的报文

上面说到tcpdump抓包后生成对应的文件,那这个文件如何进行分析呢?是的,有这么样一个叫做“Wireshark”的软件VRoKST,可以非常完美的和tcpdump进行结合,提供可视化的分析界面;有兴趣的话可以去学习一下,后续如果有时间,我也整理一个“Wireshark”入门系列。

总结

拖的时间比较长,终于整理完毕!当然了,tcpdump这么复杂的一个命令,我这里并没有进行非常全面的整理,但是我这里整理的内容绝对不会影响你在工作中使用tcpdump这个命令。还是那个“二八定律”,复杂的命令,常用的功能也就占用20%,其余80%都是比较偏僻生冷的功能,或者说工作中很少会用到的功能。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux中的tcpdump命令示例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux中的tcpdump命令示例详解

前言用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络
2022-06-04

Linux tcpdump命令详解大全

简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网
2022-06-04

Linux下tcpdump命令解析及使用详解

简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络
2022-06-03

Linux中的tcpdump命令如何使用

这篇“Linux中的tcpdump命令如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux中的tcpdump命令
2023-06-27

Linux中mysqldump命令实例详解

mysqldump是mysql数据库中备份工具,用于将MYSQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中。 语法: mysqldump (选项) 选项: --add-drop-table :在每个创建数据表语句前添加删
2022-06-04

在Linux中使用tcpdump命令捕获与分析数据包详解

前言 tcpdump 是一个有名的命令行数据包分析工具。我们可以使用 tcpdump 命令捕获实时 TCP/IP 数据包,这些数据包也可以保存到文件中。之后这些捕获的数据包可以通过 tcpdump 命令进行分析。tcpdump 命令在网络层
2022-06-04

Linux中的host命令应用实例详解

Linux中的host命令应用举例 一 命令语法功能:查出某个主机名的IPhost hostname [server][server]:使用不是由/etc/resolv.conf文件定义的DNS服务器IP来查询某台主机的IP。 二 应用举例
2022-06-04

Linux基础命令last 命令实例详解

linux last命令用于显示系统开机以来获是从每月初登入者的讯息。使用权限:所有使用者。 last 显示以前登录过的用户信息,last指令会搜索/var/log/wtmp文件(或者是经过-f选项指定的文件),然后列出
2022-06-04

linux less命令实例详解

less 文件名查看文件less 文件名 | grep -n 查找内容根据内容过滤显示,并显示行号less +行号g 文件名查看文件,并定位到某行d 向下翻页u向上翻页g跳到首行G跳到底部 查找内容向上查找/ 查找内容 向下查找n下一个N上
2022-06-03

Linux 中常用的Rpm命令实例详解

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装
2022-06-04

Linux中命令行的示例分析

这篇文章将为大家详细讲解有关Linux中命令行的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、命令行真的好吗程序员的使命维基百科的解释:命令行界面(英语:command-line interf
2023-06-06

详解Linux中的awk命令

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本:
2022-06-04

Linux链接命令的实例详解

Linux链接命令的实例详解 一 语法ln -s [源文件] [目标文件] 命令英文含义:link 功能描述:生成链接文件 选项:-s 创建软链接 二 硬链接特征原文件和硬链接文件删除其中任何一个都没问题。三 硬链接实战[root@loca
2022-06-04

详解在Linux下9个有用的touch命令示例

touch 命令用于创建空文件,也可以更改 Unix 和 linux 系统上现有文件时间戳。这里所说的更改时间戳意味着更新文件和目录的访问以及修改时间。 让我们来看看 touch 命令的语法和选项: 语法:# touch {选项} {文件}
2022-06-04

详解Linux中的wget命令

wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方
2022-06-04

linux中tcpdump抓取HTTP包的示例分析

这篇文章将为大家详细讲解有关linux中tcpdump抓取HTTP包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。tcpdumptcpdump是linux系统自带的抓包工具,主要通过命令行的方式
2023-06-10

linux lsof命令详解及实例

linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (
2022-06-04

linux命令的示例分析

这篇文章主要为大家展示了“linux命令的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux命令的示例分析”这篇文章吧。概述:用户使用shell跟内核交互,Linux中有很多命令,
2023-06-12

linux中top命令详解

简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令
2022-06-04

编程热搜

目录