Tcpdump工具介绍

TCPdump,全称dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。

tcpdump可以支持的功能:

1、在Linux平台将网络中传输的数据包全部捕获过来进行分析
2、支持网络层、传输层协议等协议捕获过滤
3、数据发送和接收的主机、网卡和端口等各种过滤捕获数据规则
4、提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息
5、结合wireshark工具分析捕获的报文

要灵活使用tcpdump工具必须要有两个必备的知识基础:

第一、Linux操作系统:

因为这是一款基于Linux系统下命令行的抓包工具,所以需要对Linux的基本操作和常用命令有一定的基础;

第二、网络知识:

因为tcpdump是将网络中传送的数据包完整的截获下来然后进行分析,所以想要分析捕获到的报文,需要了解OSI七层网络模型,以及常用网络协议等。

第一个命令

    tcpdump

默认输入tcpdump,回车之后监视第一个网络接口上流过的数据包,一般是eth0:

14:38:29.141600 IP Slave01.ssh > 14.204.63.85.23113: Flags [P.], seq 108:144, ack 1, win 501, length 36
14:38:29.141629 IP Slave01.ssh > 14.204.63.85.23113: Flags [P.], seq 144:252, ack 1, win 501, length 108
14:38:29.141650 IP Slave01.ssh > 14.204.63.85.23113: Flags [P.], seq 252:288, ack 1, win 501, length 36
14:38:29.142083 IP Slave01.58843 > 100.100.2.138.domain: 46327+ PTR? 85.63.204.14.in-addr.arpa. (43)
14:38:29.142302 IP 100.100.2.138.domain > Slave01.58843: 46327 ServFail 0/0/0 (43)

从上面的输出来看,可以总结出:
第一列:时分秒毫秒14:38:29.142302第二列:网络协议IP
第三列:发送方的ip地址+端口号,其中100.100.2.138是ip,而domain是端口号/Slave01是主机,ssh是协议22端口;
第四列:箭头>,表示数据流向
第五列:接收方的ip地址+端口号,其中14.204.63.85是ip,而23113是端口号
第六列:数据包内容,包括Flags标识符,seq 号,ack号,win窗口,数据长度length
其中[P.]表示PUSH标志位
为1,更多标识符大家需要了解TCP协议的标志位。

TCP协议

TCP (Transmission Control Protocol)传输控制协议,顾名思义,就是要对数据的传输进行一定的控制.


SYN:连接请求或者接受连接请求—1 表示打开
FIN:连接结束,断开链接 ----1 表示断开连接
RST:重置链接 —1
ACK:确认标记位 —1 标记为一表示是确认包
PSH:催促标志位,将接受缓冲区内数据向上交付给应用程序,而不是等待缓冲区满后再交付。
URG:紧急标志位,将紧急数据排在普通数据的前面; —1 标记为一表示报文为紧急报文 提前处理
序号:每个数据包都对应着一个序列号
确认号:每发送一个数据包都需要收到对应的确认包,确认号=序号+1
窗口:滑动窗口

  • [S]:SYN(开始连接)
    [P]:PSH(推送数据)
    [F]:FIN(结束连接)
    [R]:RST(重置连接)
    []:没有Flag (意思是除上面四种类型外的其他情况,有可能是ACK也有可能是URG)

目的端口:目的的端口
序号和确认号:都是保证报文没有丢失
窗口:可靠性,报文发送效率

源端口:每个协议都会建立一个源端口 例如:
http 80 — tcp 80; https --SSL协议–TCP 443;UDp --DNS 53端口

TCPdump抓包工具常规过滤规则

基于ip地址进行过滤 host

tcpdump host ip地址

案例1:截获特定主机-220.181.38.148的主机收到的和发出的所有的数据包tcpdump host 220.181.38.148

解释: host 220.181.38.148,指明220.181.38.148是一台主机,如果你非常明确关心的是哪个主机的收发报文,那么就可以直接过滤这个主机的数据包。host 后面加主机的IP地址,就可以只抓取这个主机的所有数据包,其他主机的数据包就会被过滤掉。

案例2:获取目的地址是220.181.38.148的报文tcpdump dst 220.181.38.148

解释: dst指的是目的地址;这个是确定传输方向的关键字,src源;dst目的

基于网段进行过滤 net

案例3:截获特定网段-192.168.10.0/24的主机收到的和发出的所有的数据包tcpdump net 192.168.10.0/24

解释: net 192.168.10.0/24,指明192.168.10.0/24网段,可以直接过滤这个网段的数据包网段同样可以再细分为源网段和目标网段
$tcpdump src net 192.168
$tcpdump dst net 192.168

基于端口进行过滤port

案例3:获取特定端口-比如http的包,使用如下命令:tcpdump tcp port 80

解释: port 80指明端口80,只会抓取这个80端口的数据包;加上具体某个协议的某个端口,就可以更加精确的捕获对应的业务的数据报文了。如上,就会只抓取TCP协议的80端口的数据报
也就是http 协议的数据报文。
tcpdump src port 80 / tcpdump dst port 80
如果你想要同时指定两个端口你可以这样写: tcpdump port 80 or port 22 、 tcpdump port 80 or 22;
如果你的想抓取的不再是一两个端口,而是一个范围,一个一个指定就非常麻烦了,此时你可以这样指定一个端口段。tcpdump portrange 8000-8080
tcpdump src portrange 8000-8080tcpdump dst portrange 8000-8080
对于一些常见协议的默认端口,我们还可以直接使用协议名,而不用具体的端口号:比如http == 80, https == 443等tcpdump tcp port http

基于协议进行过滤: protocal

案例4:获取ICMP协议的报文tcpdump icmp
解释:标明要抓取的协议报文,一般常用的比如ip, ip6, arp, icmp,tcp,udp等
注意: http,dns, https,ssh等这些应用层的协议,不能直接这样写,需要写成:tcpdump port http
或者tcpdump port 53 (DNS)

Tcpdump的常用参数

查看所有参数

tcpdump -h

1、-i #指定监听网络接口tcpdump -i eth0
默认监听在第一块网卡上,监听所有经过此网卡通过的数据包;但是我们可能关心的数据并不是eth0的接口,这时就需要指定端口进行数据包的捕获。
在tcpdump 后面加一个-i的参数,后面跟具体需要捕获的接口名称,就可以抓取经过这个具体接口的所有数据包。tcpdump -i any 监听所有的网卡接口、用来查看是否有网络流量
2、-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕tcpdump -i eth0 -w tt
报文打印在shell里会太多且不方便查看,我们可以保存成文件;然后通过xftp导出到本地,可以详细查看。扩展:导出的文件可以设置为cap或者pcap的格式,可以直接用wireshark工具打开;
可以用wireshark工具分析报文具体信息!
3、-r #从文件中读取数据,读取后,我们照样可以使用上述的过滤器语法进行过滤分析。
tcpdump -r tt.pcap
4、-n:不把ip转化成域名,直接显示ip,避免执行DNS lookups的过程,速度会快很多
-nn:不把协议和端口号转化成名字,速度也会快很多。
-N:不打印出host的域名部分,比如,如果设置了此选现,tcpdump将会打印’nic’而不是’nic.ddn.mil’.
5、-t:在每行的输出中不输出时间
-tt:在每行的输出中会输出时间戳
-ttt:输出每两行打印的时间间隔(以毫秒为单位)
-tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
6、-v:产生详细的输出.比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
-w:产生比-v更详细的输出.比如NFS回应包中的附加域将会被打印,SMB数据包也会被完全解码。
-vwv:产生比-vv更详细的输出。比如telent时所使用的SB,SE选项将会被打印,如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来

7、-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump,停止抓包tcpdump -c 20 -w tt.pcap
解释:抓满20个报文之后,就停止tcpdump抓包。
8、-C #与-w FILE选项配合使用。该选项使得tcpdump在把原始数据包直接保存到文件中之前,检查此文件大小是否超过file-size。如果超过了,将关闭此文件,另创一个文件继续保存原始数据包。新创建的文件名与-w选项指定的文件名一致,但文件名后多了一个数字,该数字会从1开始随着新创建文件的增多而增加。file-size的单位是百万字节(这里指1,000,000个字节,并非1,048,576个字节)
tcpdump -C 1 -W 3 -w abc 指定一个单位后(1MB)就换文件,最多写3个文件,名字是abc0 , abc1, abc2
7.-Q:选择是入方向还是出方向的数据包,可选项有: in, out, inout,也可以使用
–direction=[direction]
– tcpdump -Qin
– tcpdump -Qout
– tcpdump -Qinout
-q:简洁地打印输出。即打印很少的协议相关信息,从而输出行都比较简短.
-D:显示所有可用网络接口的列表
-L:列出网络接口的已知数据链路。

8、-s
#指定每个包捕获的长度、单位是byte,而不是默认的262144bytes;如果超过了设定的大小限制,包就会被阶段,而在打印行出现[proto]这种标识,这个proto就是被截断的报文的协议名字。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好(-s0使用默认长度262144)。

Linux - Tcpdump工具相关推荐

  1. linux --- TCPdump 工具

    一.TCPdump TCPdump[dump the traffic on a network],根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的&qu ...

  2. linux下使用tcpdump工具分析UDP报文

    1.背景 在调试UDP协议时,总是会遇到需要查看UDP报文的内容情况,或许是为了验证自己写的序列化组包是否正确,或者接受到的报文是否合法,亦或是为了查看自己发送或者接收的报文频率是否合格.无论出于什么 ...

  3. linux常用工具命令

    linux常用工具命令 @(LINUX)[linux] linux常用工具命令 一dmidecode 1硬件平台 2内存 3cpu 二1sar 三iostat 1iostat -xk 1 四vmsta ...

  4. linux传输tcp命令,Linux tcpdump命令帮助和示例

    Tcpdump是用于网络数据包分析的基本命令行实用工具.它显示网络上的TCP/IP和其他传输的网络数据包,tcpdump 适用于大多数的类Unix系统操作系统(如Linux,BSD等).类Unix系统 ...

  5. tcpdump工具编译记录

    本文主要记录tcpdump,一个linux平台的抓包工具在arm平台上的编译方法,不涉及其使用. 下载tcpdump工具,地址:http://www.tcpdump.org/ 需要下载2个压缩包: l ...

  6. Linux截图工具import使用说明

    1 import 001.jpg 然后可以使用鼠标选择的范围 2 sleep 5; import 001.jpg 等待5秒钟后,截取鼠标选择的范围 3 import -frame 001.jpg 截取 ...

  7. [linux]tcpdump抓包

    目录 tcpdump命令 实例 1.监控指定网络接口的数据包 2.截获主机node1 发送的所有数据 3.监视所有发送到主机node1 的数据包 4.监视指定主机和端口的数据包 5.指定间隔保存 6. ...

  8. linux 开发工具集合

    转自:http://blog.csdn.net/vidanet/article/details/6732744 软件集成开发环境(代码编辑.浏览.编译.调试) Emacs            htt ...

  9. 【网络编程】Linux tcpdump命令详解---编辑中

    目录 即看即用 详细说明 简介 输出信息含义 链路层头 TCP 数据包 UDP 数据包 SMB/CIFS 解码 AFS 请求和回应 KIP AppleTalk协议 IP 数据包破碎 时间戳 反向过滤 ...

最新文章

  1. 探访2019世界人工智能大会:AI应让人类生活得更幸福
  2. 3.1 关于半鞅的随机积分(Ren)
  3. Java两种方式简单实现:爬取网页并且保存
  4. 我的Go+语言初体验——【四、版本更新环境变量配置】
  5. 只需12 个步骤,就能在AWS中创建自定义VPC,用过都惊了!
  6. 怎么关闭默认使用腾讯视频播放视频文件
  7. textview 背景变形_今日推荐:温州洞头-背景墙框石塑线条
  8. 权威媒体、专家对新书的推荐
  9. I00021 有负数项的数列之和
  10. 管理感悟:进步,体现在自己行为的改变
  11. JavaWeb开发Listener学习
  12. java做求立方体,Java工具集-数学(立方体操作工具类)
  13. 为什么爬虫需要代理IP?
  14. 2021年塔式起重机司机考试报名及塔式起重机司机免费试题
  15. 3DGIS城市规划信息管理系统
  16. [Ubuntu] 解决Win10+Ubuntu双系统时间不一致问题
  17. 配置postfix邮件监控
  18. 给UI/UX设计师推荐5个国外网站
  19. Freebie:专业业务信息图表模板
  20. 小学生计算机的起源与发展ppt,计算机的起源与发展历程ppt课件.ppt

热门文章

  1. 从软件开发到开淘宝店铺
  2. JavaScript -- 时光流逝(一):数据类型,变量,类型转换,函数
  3. 1 canvas 画二维码
  4. 2010年上半年5月份系统分析师上午试题答案(分析与解答)之四(第3次修订 修订时间:2010年6月1日14:41)
  5. AIF (SAP Application Interface Framework)
  6. java启动谷歌浏览器
  7. 朋友圈看不起?!热文随便看不花钱!
  8. jquery 扑捉回车键事件
  9. 用python做数字油画或者从一幅画学习风格,去画另一幅画
  10. 已知两个完全平方三位数abc 和xyz,其中a、 b、 c、 x、 y、 z 未必是不同的,而ax、 by、 cz 是三个完全平方数。求abc 和 xyz。