tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到。它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包

程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整。

参数介绍

tcpdump命令的参数很多,详见如下

这里只介绍一些常用的参数

​-c count

count表示数量。抓取数据包的数量达到count后结束命令,如果不使用-c 参数,会不停的抓取数据包,直到手动停止

-C file_size

抓取数据包保存到文件时,通过该命令指定文件的大小。文件达到指定大小后,会创建一个在原文件名称后面加上序号的新文件,如:dump.txt,dump.txt1。file_size的单位是b

-D

列出服务器所有网卡。tcpdump默认监听的是编号最小的那个网卡,一般是eth0。在进行抓包时可以通过 -i 参数指定监听的网卡,any表示监听所有网卡

-iinterface

指定监听的网卡名称,any表示监听所有的网卡

-n

输出结果中,不把ip转换成主机名(默认显示的是主机名)

-q

快速输出,只输出简要的数据包信息

-r file

从文件中获取数据包,不再从网络获取数据包

-t

不输出时间戳

-w file

将抓取的数据包保存到文件,-r 参数可以从文件中读取数据包

-W filecount

指定文件的数量,当文件滚动到指定数量后会从第一个文件开始覆盖

除了以上参数,还有一些关键字可以用来进行条件过滤,常用关键字如下

-host

过滤主机,如 tcpdump host 192.168.1.110 只抓取经过这个ip的数据包

-src

用来过滤请求来源方的参数,如:tcpdump src host 192.168.1.110 只抓取从这个ip过来的数据包

-dst

用来过滤请求接收方的参数,如:tcpdump dst host 192.168.1.110 只抓取发送到这个ip的数据包

-port

过滤端口,如:tcpdump port 8080 只抓取经过8080端口的数据包

-net

过滤网络,如:tcpdump net 192.168 只抓取经过这个网段的数据包

-and、not、or

条件过滤,和字面意思一样。如:tcpdump net 192.168 and port 8080 抓取经过192.168网段并经过8080端口的数据包

数据包分析

抓取的数据包格式如下

20:17:43.496528

时间戳,时:分:秒.微秒

IP

网际网络协议的名称

180.101.49.12.http > iZbp14w0b2rs7i1400bjjmZ.42468180.101.49.12.http

请求发送方的ip和端口 > 请求接收方的ip和端口。端口有时会显示为某个网络协议,如http、ssh、mysql等

Flags [R]

flag标识和状态,可选的状态有: [S.] [.] [P.] [F.][R]

seq、ack、fin

表示tcp协议的3次握手和4次挥手的过程。seq表示请求的序列号,ack是回答的序列号,fin表示完成。这里显示的序列号是相对值,-S参数可以显示绝对值

win

表示当前窗口的可用大小

length

表示报文体的长度,从长度可以简单分析是否正确接收了请求

通过以上结果只能做简单的分析,可以使用-w参数把数据包写入文件,文件中记录的数据包比命令行要详细的多。借助分析工具可以对文件进一步分析,这里推荐使用Wireshark,这个工具是开源的,开箱即用使用简单,这里不做详细介绍了

常用的命令组合

抓取8080端口的数据包

tcpdump -i any port 8080

抓取从192.168.1.110发送到192.168.1.111的数据包

tcpdump -i any src host 192.168.1.110 and dst host 192.168.1.111

抓取192.168网段除了192.168.1.110的请求的数据包

tcpdump -i any src net 192.168 and 'src host not 192.168.1.110'

抓取8080端口的数据包并写入dump.log文件中

tcpdump -i any port 8080 -w dump.log

注意事项

1.tcpdump需要用管理员权限运行,可以用sudo命令或者root用户

2.抓取的数据包通过length字段只能做一些简单的判断,想要详细分析,需要借助数据包分析工具,如:Wireshark

linux过滤端口抓包_linux抓包命令tcpdump相关推荐

  1. linux检测端口是否开放的3种命令

    linux检测端口是否开放的3种命令: 默认都是没装的,需额外apt-get或yum安装 1.telnet: # telnet 10.0.0.2 22 2.nmap: # nmap 10.0.0.2 ...

  2. linux过滤端口抓包_Linux抓包工具tcpdump使用总结,WireShark的过滤用法

    tcpdump与WireShark是Linux下的两个常用,功能强大的抓包工具,下面列出这两个工具的简单用法. tcpdump用法 tcpdump用法: sudo tcpdump -i ens33 s ...

  3. linux常用yum 安装基本包_linux - yum常用命令

    yum 包管理器 yum 是红帽系列发行版本的包管理器. 常用的命令 安装软件 例如安装nginx yum -y install nginx -y 表示直接安装不询问 重新安装 yum reinsta ...

  4. linux全端口开放策略_Linux的影子策略,Shadwen发布日期以及更多开放游戏新闻

    linux全端口开放策略 您好,开放游戏迷! 在本周的版本中,我们将了解Linux的Shadow Tactics,Shadwen的发布日期以及Linux的新游戏. 2016年4月30日至5月6日开放游 ...

  5. linux怎么做路由跟踪_Linux 路由追踪命令:traceroute

    Linux 通过 traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走 ...

  6. linux过滤端口抓包_TCP 协议三次握手抓包分析amp;查看状态

    关注爱因诗贤每天进步一点点导读 前面文章介绍了 TCP 报文头部的格式,TCP 协议是一个面向连接的协议,所以在使用 TCP 协议之前需要先建立连接,而建立连接就需要先 握手,在握手的时候就会有 TC ...

  7. linux mysql 端口 查看进程_Linux如何查看端口状态

    netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的 ...

  8. linux 查看端口占用总数_Linux查看某个端口的连接数

    一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80"| wc -l 2)统计htt ...

  9. linux QT 结束当前进程_Linux常用使用命令梳理

    一.指定运行级别 运行级别 0:关机 1:单用户 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留状态 5:图形界面 6:重启系统 常用的运行级别是3和5,要想修改运行级别,可 ...

  10. linux怎么做路由跟踪_linux使用traceroute命令追踪路由

    Linux有一个基础的路由追踪软件:traceroute.# CentOS系统: yum update && yum install traceroute -y # Debian/Ub ...

最新文章

  1. kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常
  2. 基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)
  3. mfc程序转化为qt_工控编程,Qt 学习之路
  4. 《软件需求模式》阅读笔记一
  5. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
  6. 3.strcpy使用注意(3)
  7. Mac OS X中MySQL 的配置文件(my.cnf)的位置
  8. 机器学习资源-Harvard Ph.D Sam维护
  9. CSS文本超出2行就隐藏并且显示省略号
  10. shell-sort
  11. rg1 蓝光危害rg0_LED(护眼)台灯|蓝光那些事
  12. datatable 创建列赋值_Datatable 添加新列并赋值
  13. 在实际项目中使用LiteDB NoSQL数据库
  14. Django 数据导入和导出
  15. python selenium span内容读取_【程仁智推荐】Selenium自动化测试入门
  16. mysql数据加百分号_使用MySQL SELECT语句时,在每个值的末尾添加一个百分号(%)...
  17. poj1979 深度优先搜索 挑战程式设计竞赛
  18. pl/sql 测试函数_如何在SQL单元测试中使用伪函数?
  19. 当科学家遇上流氓,被喧哗炒作的量子通信技术又将何时落地?
  20. 华为交换机一次性进入多个接口_华为交换机交换机常用配置(认证、批量操作)...

热门文章

  1. 最新PP点点通V2008简体中文版免费下载
  2. 【进大厂必学】3W字180张图学习Linux基础总结
  3. 【元胞自动机】基于matlab元胞自动机模拟SEIR传播模型【含Matlab源码 2156期】
  4. 鸿蒙3.0系统下载,鸿蒙os3.0系统官网版-华为鸿蒙os3.0下载官网手机版-66街机网
  5. 12306 登录验证数据下载(未标定)
  6. 三星s9 android p内测,三星开启国行Galaxy S9/S9+安卓9.0内测,限额一万名!
  7. dependency-check-maven安全漏洞扫描工具介绍
  8. mongo分组查询,统计 Group.grouping(),Group.first(),Accumulator(“$sum“, new Integer(1) 含义解释
  9. 【Keras中文文档】Layer Convolutional网址
  10. 三维重建开源项目汇总