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 监听网络变化
随机推荐
- 常用HDFS操作命令
前一段时间频繁使用HDFS,又收集到了一些命令,在这儿分享出来,大数据的框架及设计原理方面的理论文章暂时还没有时间总结,后面有时间逐渐整理发出来. 注:在使用命令时,可以使用 hadoop fs,如果 ...
- git 退回到前面某一版本的具体操作方式
- 用GDB调试程序(六)
七.设置显示选项 GDB中关于显示的选项比较多,这里我只例举大多数常用的选项. set print address set print address on 打开地址输出,当程 ...
- 支持flash in Chrome 2017
在设置页面: chrome://settings/content 修改Flash插件的使用方式为:Allow sites to run Flash 来源: https://helpx.adobe.co ...
- background-size的应用情景:当给出的背景图片大于实际网页需要布局的图片大小时
网页需求是:50*50 如果只设置 width:50px;height:50px;background-image("images/XXX.png"); 效果如下: 添加设置:b ...
- wireshark抓本地回环包
问题描述: 在网络程序开发的过程中,我们往往会把本机既作为客户端又作为服务器端来调试代码,使得本机自己和自己通信.但是wireshark此时是无法抓取到数据包的,需要通过简单的设置才可以 方法一:Wi ...
- 微信小程序版本管理
备忘录:<需要修改完善> 打开小程序开发者工具,点击版本管理,点击设置 , 通用更改码云的名字和邮箱 网络认证选择用户名和密码 把密码输入了,点击远程 添加 输入码云的https地址 和仓 ...
- 调整iframe滚动条失效
1:<iframe scrolling="auto" frameborder="0" src="' + add + '" style= ...
- setDaemon 守护线程
setDaemon(True): 将线程声明为守护线程,必须在start() 方法调用之前设置, 如果不设置为守护线程程序会被无限挂起.这个方法基本和join是相反的. 当我们 在程序运行中,执行一个 ...
- __module__ 和 __class__
__module__ 查看当前方法来之于那个文件 __class__ 查看当前方法来之于那个类