tcpdump详解(转)
tcpdump是Linux下强大的抓包工具,不仅可以分析数据包流向,还可以对数据包内容进行监听。通过分析数据包流向,可以了解一条连接是如何建立双向连接的。
tcpdump允许用户(一般是root)拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。
1 用法及常用参数一览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
tcpdump [ - AennqX] [ - i 接口] [ - w 存储文件名] [ - c 次数] [ - r 文件] [所要抓取的数据包格式] 常用选项与参数: - A # 数据包的内容以ASCII显示,通常用来抓取WWW的网页数据包 - e # 使用数据链路层(osi第2层)的MAC数据包数据来显示 - nn # 直接以IP及port显示,而不用主机名与服务名显示 - q # 列出较为简短的数据包信息,每一行内容比较精简 - X # 列出十六进制(hex)以及ASCII数据包内容,对于监听数据包内容很有用 - i # 后接要监听的网络接口,如eth0/eth1/lo/ppp0等 - w # 后接文件名,将监听的数据包数据存储到文件中 - r # 后接文件名,从文件中读出数据,这个文件必须存在,且是由-w所产生的 - c # 监听的数据包数,如果没有这个参数,tcpdump会一直监听,直到按Ctrl+C为止 'host 127.0.0.1' # 针对单台主机抓包 'net 192.168' # 针对某个网络抓包 'src host 127.0.0.1' 'dst net 192.168' # 同时加上源(src)和目标限制(dst) 'tcp port 21' # 针对通信协议(tcp/udp/arp/ether)、端口检测 还可以利用 and 与 or 进行数据包的整合显示 |
2 常用命令示例
(1) 查看某块网卡的80端口数据包流向

[@bjzw_11_210 logs]# tcpdump -i eth1 port 80 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
13:47:06.904009 IP 10.149.35.123.52723 > 10.146.11.210.80: S 2680202536:2680202536(0) win 14600 <mss 1460>
13:47:06.904155 IP 10.146.11.210.80 > 10.149.35.123.52723: S 1981317955:1981317955(0) ack 2680202537 win 5840 <mss 1460>
13:47:06.905537 IP 10.149.35.123.52723 > 10.146.11.210.80: . ack 1 win 14600
13:47:06.905573 IP 10.149.35.123.52723 > 10.146.11.210.80: P 1:1045(1044) ack 1 win 14600
13:47:06.905579 IP 10.146.11.210.80 > 10.149.35.123.52723: . ack 1045 win 8352
13:47:06.908920 IP 10.146.11.210.80 > 10.149.35.123.52723: P 1:268(267) ack 1045 win 8352
13:47:06.908943 IP 10.146.11.210.80 > 10.149.35.123.52723: F 268:268(0) ack 1045 win 8352
......
13:47:09.275055 IP 10.148.40.118.64051 > 10.146.11.210.80: S 2641310142:2641310142(0) win 14600 <mss 1460,nop,wscale 8>
13:47:09.275080 IP 10.146.11.210.80 > 10.148.40.118.64051: S 1613833543:1613833543(0) ack 2641310143 win 5840 <mss 1460>
13:47:09.277054 IP 10.148.40.118.64051 > 10.146.11.210.80: . ack 1 win 14600
13:47:09.277094 IP 10.148.40.118.64051 > 10.146.11.210.80: P 1:894(893) ack 1 win 14600
13:47:09.277102 IP 10.146.11.210.80 > 10.148.40.118.64051: . ack 894 win 7144 530 packets captured <== 捕获的数据包数量
530 packets received by filter <== 通过过滤所得的总数据包数量
0 packets dropped by kernel <== 被内核所丢弃的数据包
[@bjzw_11_210 logs]#

分析其中标红哪行的含义(如果第一次看肯定看晕):
13:47:09.277094 捕获该数据包的时间,单位为“时:分:秒”;
IP 通信协议是IP;
10.148.40.118.64051 传送段的ip和端口分别是10.148.40.118和64051;
> 数据包的传输方向(流向);
10.146.11.210.80 接收端的ip和端口分别是10.146.11.210和80;
P 1:894(893) 该数据包带有PUSH传输标志,且传输的是整体数据的1~894 bytes;
ack 1 ack相关的资料;
win 14600 窗口大小为14600字节。
(2) 本机执行tcpdump -i lo -nn
摘出一行:
04:16:47.369125 IP 127.0.0.1.42878 > 127.0.0.1.22: Flags [S]【表明是syn建立连接包(即三次握手的第一次握手)】, seq 765824415【seq 序号】, win 43690 【窗口大小】,
options【TCP首部可选字段】[mss 65495【表示mss是发送端(客户端)通告的最大报文段长度,发送端将不接收超过这个长度的TCP报文段(这个值和MTU有一定关系)】,sackOK【发送端支持并同意使用SACK选项】,TS val 9866687 ecr 0,
nop,wscale 7【nop是一个空操作选项, wscale指出发送端使用的窗口扩大因子为7】], length 0
(3)监听eth0网卡,且通信协议为port22,目标数据来源为192.168.0.100的数据包的命令
tcpdump -i eth0 -nn 'port 22 and src host 192.168.0.100'
(4).监视指定主机的数据包,例如所有进入或离开longshuai的数据包
tcpdump host longshuai
(5).打印helios<-->hot或helios<-->ace之间通信的数据包
tcpdump host helios and \( hot or ace \)
(6).监视指定主机和端口的数据包
tcpdump tcp port 22 and host hostname
(7).对本机的udp 123端口进行监视(123为ntp的服务端口)
tcpdump udp port 123
示例:解析包数据
[root@server2 ~]# tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:15:54.788812 IP (tos 0x0, ttl 64, id 19303, offset 0, flags [DF], proto TCP (6), length 40)
192.168.100.1.5788 > 192.168.100.62.22: tcp 0
0x0000: 000c 2908 9234 0050 56c0 0008 0800 4500 ..)..4.PV.....E.
0x0010: 0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8 .(Kg@.@.....d...
0x0020: 643e 169c 0016 2426 5fd6 1fec 2b62 5010 d>....$&_...+bP.
0x0030: 0803 7844 0000 0000 0000 0000 ..xD........
12:15:54.842641 IP (tos 0x0, ttl 64, id 19304, offset 0, flags [DF], proto TCP (6), length 40)
192.168.100.1.5788 > 192.168.100.62.22: tcp 0
0x0000: 000c 2908 9234 0050 56c0 0008 0800 4500 ..)..4.PV.....E.
0x0010: 0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8 .(Kh@.@.....d...
0x0020: 643e 169c 0016 2426 5fd6 1fec 2d62 5010 d>....$&_...-bP.
0x0030: 0801 7646 0000 0000 0000 0000 ..vF........
2 packets captured
2 packets received by filter
0 packets dropped by kernel
tcpdump详解(转)的更多相关文章
- 【Network】TCPDUMP 详解
参考资料: https://www.baidu.com/s?ie=UTF-8&wd=tcpdump%20%E6%8C%87%E5%AE%9Aip tcpdump非常实用的抓包实例: http ...
- tcpdump 详解
目录 简介 安装 参数详解 案例 监听指定主机的数据包 监视指定主机和端口的数据包 监视指定网络的数据包 监视指定协议的数据包 使用tcpdump抓取HTTP包 简介 用简单的话来定义tcpdump, ...
- Linux tcpdump 详解
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- tcpdump详解
tcpdump -i eth1 'host 121.14.84.221 and greater 76' -Ap -v -s10000 抓取 eth1 和 121.14.84.221 上的所有长度大于7 ...
- linux下抓包工具tcpdump详解
本文转自:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the ...
- 服务器抓包命令:tcpdump详解
官网地址:http://www.tcpdump.org/tcpdump_man.html 简介: tcpdump,就是:dump the traffic on a network,根据使用者的定义对网 ...
- 调试利器之tcpdump详解
简介你执行 man tcpdump 命令,你会看到文档中对tcpdump的说明是“dump traffic on a network”.可见,tcpdump是一个根据使用者的定义对网络上的数据包进行截 ...
- [转] Linux抓包工具tcpdump详解
http://www.ha97.com/4550.html PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使 ...
- Linux抓包工具tcpdump详解
tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...
- TCPDUMP详解(续)
TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组内容的工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具. tcp ...
随机推荐
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
- 【水】怎么在 HZOI 上水到更高的分
前言 这些东西在联赛并用不了 预编译优化 40行优化 #define _CRT_SECURE_NO_WARNINGS #pragma GCC optimize(2) #pragma GCC optim ...
- 最近集训的图论(思路+实现)题目汇总(内容包含tarjan、分层图、拓扑、差分、奇怪的最短路):
(集训模拟赛2)抢掠计划(tarjan强) 题目:给你n个点,m条边的图,每个点有点权,有一些点是"酒吧"点,终点只能在"酒吧",起点给定,路可以重复经过,但点 ...
- python web自动化上传文件工具
工具下载地址:链接:https://pan.baidu.com/s/1cHdNHW 密码:56bp说明:1.WinSpy-1.0.2.7z解压即可.2.pywin32的exe程序,根据自己安装的pyt ...
- C++学习---顺序表的构建及操作
#include<iostream> #include<fstream> using namespace std; #define MAXLEN 100 //定义顺序表 str ...
- 逆向so文件调试工具ida基础知识点
1.界面介绍 https://www.freebuf.com/column/157939.html 2.IDA常用快捷键 切换文本视图与图表视图 空格键 返回上一个操作地址 ESC 搜索地址和符号 G ...
- 手撸ORM浅谈ORM框架之Update篇
快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...
- Win32编程之控制线程
0x01. 如何让线程停下来 让自己停下来: Sleep() 函数 当程序执行到某段代码的时候可以使用sleep() 函数进行暂停 使用sleep()函数挂起的时候会自动恢复过来的 让别人停下来: S ...
- Redis---01简述目录结构与redis.conf文件
一.Redis目录结构 (当前Redis是在CentOS 7 1708 64位环境下,Redis版本为3.2.5) 进入默认的Redis安装目录/usr/local/bin,可以看见这些下图目录结构 ...
- Java数据结构-02单链表(一)
一.链式存储: ①简述:线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的.存储单元由两部分组成,数据源和指针,数据源放数据,指针指向下个 ...