10.22 tcpdump:监听网络流量
【功能说明】
【语法格式】
使用范例
不加参数运行tcpdump命令监听网络。
[root@lewen ~]# tcpdump #默认清况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
... 使用tcpdump命令时,如果不输入过滤规则,则输出的数据量将会很大。 精简输出信息。 [root@lewen ~]# tcpdump -q
::32.963134 IP lewen.ssh > 10.0.0.1.: tcp
::32.963256 IP lewen.ssh > 10.0.0.1.: tcp
::32.963325 IP 10.0.0.1. > lewen.ssh: tcp
::32.963390 IP lewen.ssh > 10.0.0.1.: tcp
::32.963492 IP lewen.ssh > 10.0.0.1.: tcp
::32.964604 IP lewen.ssh > 10.0.0.1.: tcp [root@lewen ~]# tcpdump -c #使用-c选项指定监听的数据包数量,这样就不需要使用Ctrl+C了。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::50.191752 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::50.192434 IP lewen. > public1.alidns.com.domain: + PTR? 1.0.0.10.in-addr.arpa. ()
::50.245211 IP 10.0.0.1. > lewen.ssh: Flags [.], ack , win , length
::50.257155 IP public1.alidns.com.domain > lewen.: NXDomain // ()
::50.258230 IP lewen. > public1.alidns.com.domain: + PTR? 81.0.0.10.in-addr.arpa. ()
packets captured
packets received by filter
packets dropped by kernel
监听指定网卡收到的数据包
[root@lewen ~]# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::33.924611 IP 10.0.0.1. > lewen.ssh: Flags [.], ack , win , length
::33.924679 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::33.924776 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::33.924834 IP 10.0.0.1. > lewen.ssh: Flags [.], ack , win , length
::33.924901 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::33.929182 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::33.931108 IP 10.0.0.1. > lewen.ssh: Flags [.], ack , win , length
::33.931140 IP lewen.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length ::33.931140:当前时间,精确到微秒。
IP lewen.ssh > 10.0.0.1.:从主机lewen的SSH端口发送数据到10.0.0.1的10662端口,“>”代表数据流向。
Flags[P.]:TCP包中的标志信息,S是SYN标志的缩写,F(FIN)、P(PUSH)、R(RST)、"."(没有标记)。
seq:数据包中的数据的顺序号。
ack:下次期望的顺序号。
win:接收缓存的窗口大小。
length:数据包长度。
监听指定主机的数据包
[root@lewen ~]# tcpdump -n host 10.0.0.1 #<=使用-n选项不进行DNS解析,加快显示地度。监听指定主机的关键字为host,后面直接接主机名或了IP地址即可。本行命令的作用是监听所有10.0.0.1的主机收到的和发出的数据包。 [root@lewen ~]# tcpdump -n src host 10.0.0.1 #<-只监听从10.0.0.1发出的数据包,即源地址为10.0.0.,关键字为src(source,原地址)。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::55.821984 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length
::55.866408 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length
::55.907580 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length
::55.950705 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length
::55.991940 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length
::56.032129 IP 10.0.0.1. > 10.0.0.7.ssh: Flags [.], ack , win , length [root@lewen ~]# tcpdump -n dst host 10.0.0.1 #<==只监听10.0.0.1收到的数据包,即目标地址为10.0.0.,关就字为dst(destination,目的地)。
::13.074240 IP 10.0.0.7.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::13.074331 IP 10.0.0.7.ssh > 10.0.0.1.: Flags [P.], seq :, ack , win , length
监听指定端口的数据包
[root@lewen ~]# tcpdump -nn port #使用-n选项不进行DNS解析,但是其会将一些协议、端口进行转换,比如22端口转为ssh。因此本例使用nn 选项。监听指定端口的关键字是port,后面接上端口号即可 ::26.193100 IP 10.0.0.1. > 10.0.0.7.: Flags [.], ack , win , length
::26.193225 IP 10.0.0.7. > 10.0.0.1.: Flags [P.], seq :, ack , win , length
::26.193535 IP 10.0.0.7. > 10.0.0.1.: Flags [P.], seq :, ack , win , length
监听指定协议的数据包。
[root@lewen ~]# tcpdump -n arp #<--监听ARP数据包,因此表达式直接写arp即可。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::43.219758 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length
::43.511133 ARP, Request who-has 10.0.0.95 tell 10.0.0.210, length
::44.224050 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length
::44.512986 ARP, Request who-has 10.0.0.95 tell 10.0.0.210, length
::45.230012 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length [root@lewen ~]# tcpdump -n icmp #<-监听icmp数据包(想要查着下面的监拉数据,可以使用其他机器ping本机即可)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::31.377258 IP 10.0.0.210 > 10.0.0.2: ICMP 10.0.0.210 udp port unreachable, length
::31.479590 IP 10.0.0.210 > 10.0.0.2: ICMP 10.0.0.210 udp port unreachable, length 常见的协议关键字有ip、arp、icmp、tcp、udp等类型。
多个过滤条件混合使用
前面的几种方法都是使用单个过滤条件过滤数据包,其实过滤条件可以混合使用,因为tcpdump命令支持逻辑运算符and(与)、or(或)、!(非)。 [root@lewen ~]# tcpdump -n ip host 10.0.0.7 and ! 10.0.0.1 #<==获取主机10.0.0.7与所有主机(除了主机10.0.0.1之外)通信的ip数据包。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::42.366445 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::42.366483 IP 10.0.0.7.zabbix-agent > 10.0.0.210.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::42.366628 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::42.366674 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr ], length
::42.366681 IP 10.0.0.7.zabbix-agent > 10.0.0.210.: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::42.371129 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::42.371153 IP 10.0.0.7.zabbix-agent > 10.0.0.210.: Flags [S.], seq , ack , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::42.371313 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [.], ack , win , options [nop,nop,TS val ecr ], length
::42.371397 IP 10.0.0.210. > 10.0.0.7.zabbix-agent: Flags [P.], seq :, ack , win , options [nop,nop,TS val ecr
利用tcpdump抓包详解tcp/ip 连接和断开过程的案例。
- TCP三次握手
- 数据传送
- TCP四次断开
- SYN:(同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
- ACK:(确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收了所有的数据。
- FIN:(结束标志,FINish)用来结束一个TCP回话。但对应端口仍然处于开放状态,准备接收后续数据。
[root@doit ~]# tcpdump tcp dst port or src 104.243.30.169 -i eth0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::59.136119 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.136535 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.137177 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.137818 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.138447 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.139087 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.139729 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.140360 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.140996 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.141636 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.142273 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
::59.142908 IP 104.243.30.169. > 111.40.18.151.: Flags [P.], seq :, ack , win , length
10.22 tcpdump:监听网络流量的更多相关文章
- android动态注册监听网络变化异常
在使用广播接收器监听网络变化的时候,在AndroidManifest.xml中加入<user-permission android:name="android.permission.A ...
- Windows Phone 8 获取与监听网络连接状态(转)
原文地址:http://www.cnblogs.com/sonic1abc/archive/2013/04/02/2995196.html 现在的只能手机对网络的依赖程度都很高,尤其是新闻.微博.音乐 ...
- IOS-网络(监听网络状态)
// // BWNetWorkTool.h // IOS_0131_检测网络状态 // // Created by ma c on 16/1/31. // Copyright © 2016年 博文科技 ...
- 通过BroadCast与service时时监听网络变化
首先需要一个service: 这里我定义了一个NetworkStateService,在这个service中我写了一个BroadcastReceiver用于监听网络状态发生改变的情况并在这个servi ...
- IOS-利用AFNetworking监听网络状态
网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候 显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...
- (原创)用Receiver和SystemService监听网络状态,注册Receiver的两种方式
android中网络编程不可避免地要监听网络状态,wifi或者3G以及以太网,并根据当前状态做出相应决策. 在MyReceiver类中的onReceive方法中获得系统服务 ConnectivityM ...
- Android实时监听网络状态(2)
在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...
- Android开发之使用广播监听网络状态变化
我们经常需要判断网络状态的变化,如有无网络,所以需要监听网络状态的变化,比如网络断开,网络连接给予友好提示.如何监听网络状态的变化呢,最近工作中需要用到这个,于是就用广播机制来实现了网络状态的监听. ...
- Android 监听网络变化
Android 监听网络变化
随机推荐
- 涂抹mysql笔记-搭建mysql高可用体系
mysql的高可用体系<>追求更高稳定性的服务体系 可扩展性:横向扩展(增加节点).纵向扩展(增加节点的硬件配置) 高可用性<>Slave+LVS+Keepalived实现高可 ...
- html5 + vue
偶然与巧合 舞动了蝶翼 谁的心头风起 前赴而后继 万千人追寻 荒漠唯一菩提 似擦肩相遇 或擦肩而去 命运犹如险棋 无数时间线 无数可能性 终于交织向你
- doris 0.9.0版本docker镜像制作与使用
1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1 Dockerfi ...
- cxf+spring+soap简单接口开发
最近学了cxf框架开发webservice,简单搭了个接口,方便后续翻阅,本人才疏学浅,若有不足,请多多谅解! 一.服务端: 1.所用到的jar包: maven的pom.xml配置: <proj ...
- Synchronized方法锁、对象锁、类锁区别
synchronized,这个东西我们一般称之为”同步锁“,他在修饰代码块的时候需要传入一个引用对象作为“锁”的对象. 在修饰方法的时候,默认是当前对象作为锁的对象 在修饰类时,默认是当前类的Clas ...
- 深入学习 Java 序列化
前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化 ...
- Java -- XStreamAlias 处理节点中的属性和值
XStreamAlias 可以把objec和xml相互转换,但是有时候节点带有属性和值就需要特殊处理下: <?xml version="1.0" encoding=" ...
- Echarts报错 Can't read property 'getWidth' of null
统计图报错: 这里的报错与echarts无关,与zrender有关,zrender是echarts依赖的canvas绘图库 你不需要了解zrender,这个问题是你代码出了错 谨记::代码的错
- 剑指offer例题——用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 首先是概念理解,栈和对列存取的区别 栈(stack)是一种后进先出(last in first out, LI ...
- Java语法 [开发环境搭建]
自行百度. https://www.baidu.com 自行必应 https://cn.bing.com