tcpdump man
- 格式:pdf
- 大小:185.46 KB
- 文档页数:7
tcpdump抓包分析详解[root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 档案] [所欲撷取的数据内容]参数:-nn:直接以IP 及port number 显示,而非主机名与服务名称-i :后面接要『监听』的网络接口,例如eth0, lo, ppp0 等等的界面;-w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名-c :监听的封包数,如果没有这个参数,tcpdump 会持续不断的监听,直到使用者输入[ctrl]-c 为止。
-A :封包的内容以ASCII 显示,通常用来捉取WWW 的网页封包资料。
-e :使用资料连接层(OSI 第二层) 的MAC 封包数据来显示;-q :仅列出较为简短的封包信息,每一行的内容比较精简-X :可以列出十六进制(hex) 以及ASCII 的封包内容,对于监听封包内容很有用-r :从后面接的档案将封包数据读出来。
那个『档案』是已经存在的档案,并且这个『档案』是由-w 所制作出来的。
所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是IP 来源进行封包撷取,那就可以简化输出的结果,并取得最有用的信息。
常见的表示方法有:'host foo', '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 来进行封包数据的整合显示呢!范例一:以IP 与port number 捉下eth0 这个网络卡上的封包,持续 3 秒[root@linux ~]# tcpdump -i eth0 -nntcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 964801:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648<==按下[ctrl]-c 之后结束6680 packets captured <==捉下来的封包数量14250 packets received by filter <==由过滤所得的总封包数量7512 packets dropped by kernel <==被核心所丢弃的封包如果你是第一次看tcpdump 的man page 时,肯定一个头两个大,因为tcpdump 几乎都是分析封包的表头数据,用户如果没有简易的网络封包基础,要看懂粉难吶!所以,至少您得要回到网络基础里面去将TCP 封包的表头数据理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个字段,我们以范例一当中那个特殊字体行来说明一下:01:33:40.41:这个是此封包被撷取的时间,『时:分:秒』的单位;IP:透过的通讯协议是IP ;192.168.1.100.22 > :传送端是192.168.1.100 这个IP,而传送的port number 为22,您必须要了解的是,那个大于(>) 的符号指的是封包的传输方向喔!192.168.1.11.1190:接收端的IP 是192.168.1.11,且该主机开启port 1190 来接收;P 116:232(116):这个封包带有PUSH 的数据传输标志,且传输的数据为整体数据的116~232 byte,所以这个封包带有116 bytes 的数据量;ack 1 win 9648:ACK与Window size 的相关资料。
tcpdump使用方法tcpdump是一种网络封包分析工具,使用命令行界面进行操作。
它可以监听网络接口传输的数据包,并将其显示在终端上。
tcpdump是一个功能强大的工具,可以用于网络排错、协议分析、安全审计等多种用途。
下面将详细介绍tcpdump的使用方法。
1. 安装tcpdump```sudo apt-get install tcpdump```2. 使用tcpdump命令```sudo tcpdump [options] [expression]```其中,options是一些可选项,expression是过滤器表达式。
3.监听所有网络接口使用tcpdump监听所有网络接口的数据包,可以使用以下命令:```sudo tcpdump```这将显示所有接口传输的数据包。
4.监听指定网络接口使用tcpdump监听指定网络接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```这将监听名为eth0的网络接口的数据包。
5.保存数据包到文件使用tcpdump将捕获到的数据包保存到文件,可以使用以下命令:```sudo tcpdump -w output.pcap```这将将数据包保存到名为output.pcap的文件中。
6.读取保存的数据包文件使用tcpdump读取保存的数据包文件,可以使用以下命令:```sudo tcpdump -r input.pcap```这将读取名为input.pcap的文件中的数据包。
7.过滤数据包使用tcpdump可以根据特定的条件对数据包进行过滤,只显示满足条件的数据包。
以下是一些常用的过滤器表达式示例:-过滤源IP地址:```sudo tcpdump src 192.168.1.1```-过滤目标IP地址:```sudo tcpdump dst 192.168.1.1```-过滤源和目标IP地址:```sudo tcpdump host 192.168.1.1```-过滤指定端口:```sudo tcpdump port 80```-过滤指定协议:```sudo tcpdump icmp```8.显示数据包详细信息使用tcpdump可以显示每个数据包的详细信息。
tcpdump 筛选语法`tcpdump` 是一个常用的网络抓包工具,用于捕获和查看网络上的数据包。
它的筛选语法允许用户根据各种条件来过滤数据包。
以下是一些常用的 `tcpdump` 筛选语法:1. 基本筛选:`host <IP地址>`: 捕获到指定IP地址的数据包。
`net <IP地址/子网掩码>`: 捕获指定网络范围内的数据包。
`port <端口号>`: 捕获到指定端口的数据包。
`protocol <协议类型>`: 捕获指定协议类型的数据包,如TCP、UDP等。
2. 更复杂的筛选:`src <源IP地址>`: 捕获源IP地址为指定IP的数据包。
`dst <目的IP地址>`: 捕获目的IP地址为指定IP的数据包。
`<协议类型> and <协议类型>`: 结合多个协议类型进行筛选。
`not <条件>`: 排除满足指定条件的数据包。
3. 其他:`icmp[icmptype] <ICMP类型>`: 捕获特定类型的ICMP数据包。
`tcp[tcpflags] <TCP标志位>`: 捕获具有特定TCP标志位的数据包。
`<时间范围>`: 使用时间范围进行筛选,如 `-tttt` 显示时间戳。
4. 表达式:可以使用逻辑运算符如`and`, `or`, 和 `not` 来组合多个条件。
5. 过滤特定协议:例如,要捕获所有HTTP请求和响应,你可以使用:```csstcpdump port 80 and tcp[tcpflags] & (tcp-syntcp-ack) != 0```6. 过滤特定MAC地址:使用`ether`关键字:```csstcpdump ether host <MAC地址>```7. 过滤特定IP地址或子网:使用`ip`关键字:```csstcpdump ip host <IP地址> or ip net <子网掩码>```8. 过滤特定端口:除了使用`port`关键字,还可以使用服务名称:```csstcpdump ftp or http or telnet or dns```9. 基于时间的筛选:使用`-tttt`选项可以显示时间戳,然后结合时间范围进行筛选:```csstcpdump -tttt "time > '开始时间' and time < '结束时间'"```10. 基于大小筛选:例如,要筛选大于100字节的数据包:```csstcpdump greater 100```11. 其他高级选项:查看`man tcpdump`以获取更多详细信息和高级功能。
tcpdump 命令参数
tcpdump是一个非常重要的网络抓包工具,在网络故障排除、网络安全检测、网络协议开发等领域都有广泛应用。
tcpdump 命令参数决定了抓包的具体情况,下面介绍一些常用 tcpdump 命令参数的含义:
1. -i 参数:指定抓包的网络接口,如 -i eth0 表示抓取 eth0 网卡的数据包。
2. -n 参数:禁止将 IP 地址和端口号转换成名称,直接显示数字形式,能够加快抓包速度。
3. -s 参数:指定抓包时最大的数据包长度,如 -s 128 表示只抓取前 128 个字节的数据包。
4. -w 参数:将抓取到的数据包保存到文件中,如 -w capture.pcap 表示将抓取数据包保存到 capture.pcap 文件中。
5. -A 参数:以 ASCII 码形式显示数据包的内容,能够查看数据包的具体内容。
6. -v 参数:显示抓包的详细信息,包括每个数据包的时间戳、协议类型、源 IP 地址和目的 IP 地址等。
7. host 参数:指定抓取某个主机的数据包,如 host
192.168.1.1 表示只抓取与该主机相关的数据包。
8. port 参数:指定抓取某个端口的数据包,如 port 80 表示只抓取与 HTTP 协议相关的数据包。
9. tcp、udp 参数:指定抓取某个协议类型的数据包,如 tcp 表
示只抓取 TCP 协议相关的数据包。
10. -c 参数:指定抓取的数据包数量,如 -c 100 表示只抓取前 100 个数据包。
以上是常用的 tcpdump 命令参数,通过灵活使用这些参数能够让 tcpdump 更好地满足各种抓包需求。
tcpdump 命令参数TCPDump是一款非常有用的网络工具,可以通过捕获网络流量来分析网络包。
它能够抓取进入或离开网络接口的数据包,并将其显示在控制台上。
该工具可以在多种操作系统上运行,例如Linux、Unix 和MacOS。
在使用这个工具时,需要掌握TCPDump命令参数,这样才能更好地理解工具的使用方法。
下面是TCPDump命令参数的详细介绍:1. -i这个参数用于指定使用的网络接口。
例如,如果要监听eth0接口上的流量,可以使用以下命令: tcpdump -i eth0。
如果不指定这个参数,TCPDump将默认使用系统上的第一个网络接口。
2. -n该参数会将DNS反解析关闭。
在数据包分析过程中,将会显示IP 地址而不是主机名。
3. -c使用该参数后,TCPDump将在抓取指定数目的包后停止。
例如,如果您想抓取前10个包,可以使用以下命令: tcpdump -c 10。
4. -q该参数将输出信息显示在一行中,而不是多行。
这将减少输出的数量和复杂度。
5. -A该参数可以让TCPDump以ASCII格式打印数据包的内容。
这对于跟踪邮件、HTTP请求和其他应用程序有用。
6. -X该参数可以让TCPDump以十六进制格式打印数据包的内容。
这对于跟踪二进制协议非常有用。
7. -s该参数用于指定要捕获的数据包的大小。
对于大量的网络流量,可以使用较小的捕获包大小,以减少输出的数量和复杂度。
例如,如果将捕获包限制为100字节,可以使用以下命令: tcpdump -s 100。
8. -w该参数将输出数据包到一个文件中,而不是输出到控制台。
这个文件可以在其他地方进行分析。
例如,如果您想在文件中保存捕获的流量,可以使用以下命令:tcpdump -w packets.pcap。
以上就是TCPDump命令参数的介绍,通过学习这些参数,我们可以更好地使用TCPDump这个工具,帮助我们分析网络流量,排查网络问题。
tcpdump命令详解⼀、tcpdump简介tcpdump命令是基于unix系统的命令⾏的数据报嗅探⼯具,可以抓取流动在⽹卡上的数据包。
它的原理⼤概如下:linux抓包是通过注册⼀种虚拟的底层⽹络协议来完成对⽹络报⽂(准确的是⽹络设备)消息的处理权。
当⽹卡接收到⼀个⽹络报⽂之后,它会遍历系统中所有已经注册的⽹络协议,如以太⽹协议、x25协议处理模块来尝试进⾏报⽂的解析处理。
当抓包模块把⾃⼰伪装成⼀个⽹络协议的时候,系统在收到报⽂的时候就会给这个伪协议⼀次机会,让它对⽹卡收到的保温进⾏⼀次处理,此时该模块就会趁机对报⽂进⾏窥探,也就是啊这个报⽂完完整整的复制⼀份,假装是⾃⼰接收的报⽂,汇报给抓包模块。
⼆、语法1、查看本地⽹卡状态[root@cnetos daocoder]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgdocker0 1500 40409 0 0 0 20376 0 0 0 BMUens5f0 1500 22999894941 0 0 0 25581016784 0 0 0 BMRUlo 65536 850291094 0 0 0 850291094 0 0 0 LRUIface:存在的⽹卡。
MTU:最⼤传输单元。
RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发⽣错误、流式、碰撞的总数。
TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发⽣错误、流式、碰撞的总数。
2、tcpdump帮助命令[root@centos daocoder]# tcpdump --helptcpdump version 4.9.0libpcap version 1.5.3OpenSSL 1.0.1e-fips 11 Feb 2013Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ][ --immediate-mode ] [ -T type ] [ --version ] [ -V file ][ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ][ -Z user ] [ expression ](1)、类型的关键字host:指明⼀台主机。
技术背景Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。
Linux平台中提供了强大的网络数据采集分析工具TCPDump,TCPDump可以在网卡混杂模式下将网络中传送的数据包信息完全截获下来并提供简要分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来实现条件截获。
作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具。
用户数据包协议UDP(User Datagram Protocol),它是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
是一个简单的面向数据报的传输层协议,UDP 协议基本上是IP 协议与上层协议的接口。
实验目的了解网络数据包分析工具TCPDump使用,熟悉UDP数据包结构。
实验平台客户端:Windows2000/XP/2003服务端:Red Hat Enterprise Linux Server 5.0实验工具Putty(putty.exe)实验要点学习TCPDump工具使用学习UDP数据包结构使用TCPDump分析UDP数据包实验步骤指导实验拓扑拓扑图–主机实验流程概述实验准备实验概要:熟悉了解相关的实验工具,掌握Putty工具的使用。
1、下载实验中使用的工具:Putty(putty.exe)※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※【知识重点】putty.exe 是一个小巧实用的远程登录客户端,支持多种协议,本实验中使用了SSH协议。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※学习TCPDump工具使用实验概要:了解TCPDump工具参数,能够使用常用参数捕捉特定数据包,并记录下来。
1.运行putty工具,输入实验分配的IP地址,使用SSH登陆到服务器命令行界面中。
tcpdump常用抓包命令一、什么是tcpdumptcpdump是一款用于抓取网络数据包的功能强大的命令行工具。
它可以通过监听网络接口,捕获和分析传输过程中的数据包,对网络问题进行排查和故障分析。
二、安装tcpdump在大多数Linux发行版中,tcpdump已经默认安装。
如果您的系统没有预装tcpdump,可以通过以下命令进行安装:sudo apt-get install tcpdump # Debian/Ubuntusudo yum install tcpdump # CentOS/RHEL三、tcpdump的基本用法1. 抓取数据包使用tcpdump进行抓包非常简单,只需要在命令行中输入tcpdump命令即可开始捕获所有的数据包。
tcpdump2. 指定网络接口如果有多个网络接口可以选择,可以使用-i参数指定要监听的网络接口。
例如,要监听eth0接口的数据包,可以使用以下命令:tcpdump -i eth03. 保存捕获的数据包默认情况下,tcpdump会将捕获的数据包输出到标准输出。
如果需要将数据包保存到文件中,可以使用-w参数指定文件名。
例如,将数据包保存到capture.pcap文件中:tcpdump -w capture.pcap4. 显示捕获的数据包内容通过默认设置,tcpdump只会以十六进制格式显示捕获的数据包。
如果想要查看更多的信息,可以使用-A参数以ASCII格式显示数据包内容。
例如:tcpdump -A5. 显示源和目标IP地址如果只需要查看数据包的源和目标IP地址,而不关心其他详细内容,可以使用-n 参数。
例如:tcpdump -n四、高级用法1. 指定抓包数量默认情况下,tcpdump会一直抓包直到用户终止程序。
如果只需要抓取固定数量的数据包,可以使用-c参数指定要抓取的包数量。
例如,只抓取10个数据包:tcpdump -c 102. 使用过滤器tcpdump可以使用过滤器来指定要抓取的数据包的条件。
使用tcpdump命令捕获和分析网络数据包在网络中,数据包是网络通信的基本单位。
了解和分析网络数据包的内容和结构,对于网络管理员和安全专家来说是非常重要的。
tcpdump是一款功能强大的网络数据包分析工具,它能够捕获网络数据包并提供详细的分析信息。
本文将介绍如何使用tcpdump命令捕获和分析网络数据包。
一、安装tcpdump在开始使用tcpdump之前,首先需要在你的计算机上安装tcpdump。
tcpdump在大多数Linux和UNIX系统中都是默认安装的,可以使用以下命令来检查是否已经安装了tcpdump:```tcpdump -v```如果已经安装,则会显示tcpdump的版本信息;如果未安装,则需要使用以下命令来安装tcpdump:```sudo apt-get install tcpdump```二、捕获网络数据包使用tcpdump捕获网络数据包非常简单,只需在终端中输入以下命令:```sudo tcpdump```该命令将会开始捕获所有经过计算机网络接口的数据包。
然而,这样会产生大量的输出信息,不便于分析。
为了提高分析效率,可以使用一些选项来限制捕获的数据包范围。
1. 指定网络接口如果你有多个网络接口,可以使用-i选项指定要捕获的网络接口。
例如,要捕获eth0接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```2. 指定捕获数量使用-c选项可以指定要捕获的数据包数量。
例如,要只捕获10个数据包,可以使用以下命令:```sudo tcpdump -c 10```3. 指定捕获过滤器可以使用过滤器来指定要捕获的数据包类型。
例如,要只捕获HTTP协议的数据包,可以使用以下命令:```sudo tcpdump port 80```以上命令将只捕获目标端口为80的数据包。
三、分析网络数据包捕获到网络数据包后,可以使用tcpdump提供的一些选项来进行数据包分析。
tcpdump抓包命令使⽤教程⽬录tcpdump 是Linux系统下的⼀个强⼤的命令,可以将⽹络中传送的数据包完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
⼀、tcpdump 命令格式介绍⾸先我们对Linux系统下tcpdump命令格式进⾏⼀个介绍说明,在下⾯的使⽤教程中讲到tcpdump命令⽰例时,您就可以参考tcpdump命令参数说明进⾏学习。
1.1 语法tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ expression ]1.2 命令⾏参数介绍-A 以ASCII格式打印出所有分组,并将链路层的头最⼩化。
-c 在收到指定的数量的分组后,tcpdump就会停⽌。
-C 在将⼀个原始分组写⼊⽂件之前,检查⽂件当前的⼤⼩是否超过了参数file_size中指定的⼤⼩。
如果超过了指定⼤⼩,则关闭当前⽂件,然后在打开⼀个新的⽂件。
参数 file_size的单位是兆字节(是1,000,000字节,⽽不是1,048,576字节)。
-d 将匹配信息包的代码以⼈们能够理解的汇编格式给出。
tcpdump 命令使⽤tcpdump 命令使⽤tcpdump命令参数解析1.option 可选参数:能够控制tcpdump 命令,⽐如是否解析域名,将结果输出到⽂件,或者从⽂件读包数据,以及打印格式等。
2.protocol 协议过滤:能够根据不同的协议进⾏过滤,常⽤的已经上⾯了。
3.direction ⽅向过滤:能够根据数据的流向来进⾏过滤,也就是src 和dst ,也可以是两者。
4. type 类型过滤:能够根据不同的类型进⾏过滤。
tcpdump 输出结构这是直接不使⽤参数得到的其中⼀条输出1. 第⼀列:代表时间,分别是时分秒毫秒 22:21:43.500014。
2. 第⼆列:代表⽹络协议 IP 。
3. 第三列:代表发送的⽅的地址(IP+port ),其中10.21.11.47是IP ,⽽http 是端⼝,在tcpdump 中http 就代表80端⼝,所以也就是10.21.11.47.80,后⾯可以使⽤-nn 参数来关闭转换。
4. 第四列:代表数据流向,可以看出是10.21.11.47.http 发送数据到11.0.85.18.51352。
5. 第五列:代表接收⽅的地址,格式同第三列,可以看出这次商品是51352。
6. 第六列:代表分隔,冒号。
7. 第七列:代表数据包的相关内容。
包括Flags 标识符,seq 号,ack 号,win 窗⼝⼤⼩,数据长度length ,通信协议HTTP 等。
Flag 标识符[S]:代表SYN ,同步标记,⼀般是在建⽴连接时使⽤,也就是TCP 三次握⼿时使⽤。
[.]:代表没有Flags ,但是除了SYN 包外所有的数据包都有ACK ,所以这个标记也可以代表ACK 。
[P]:代表PUSH ,推送数据,发送⽅通过使⽤PUSH 位来通知接收⽅将所有收到的数据⽴即提交给服务器进程,⽽不需要等待额外数据(将缓存填满)⽽让数据在缓存中停留!这⾥所说的数据包括与此PUSH 包⼀起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。
tcpdump 使用方法TCPDump是在Uni某和Linu某系统中用于抓取网络数据包的命令行工具。
它能够监听指定的网络接口,捕获网络流量并对数据包进行分析。
下面将详细介绍TCPDump的使用方法。
1.安装和权限:TCPDump是一款系统级工具,需要root权限才能运行。
因此,你需要以root用户身份安装和运行TCPDump。
在大多数Linu某发行版中,你可以使用以下命令安装:```sudo apt install tcpdump```如果你尚未获得root权限,可以使用sudo命令。
2.基本语法:TCPDump的基本语法如下:``````- options为可选参数,用于指定各种选项和过滤条件。
- e某pression为可选的过滤条件,用于指定捕获的数据包的特征。
3.监听网络接口:使用TCPDump抓取网络数据包前,你需要先选择要监听的网络接口。
通过以下命令可以列出所有可用的网络接口:``````然后,使用以下命令监听指定的网络接口:``````这里的<interface>为网络接口的名称,例如eth0或wlan0。
4.捕获网络流量:使用TCPDump抓取网络数据包非常简单。
只需运行以下命令即可将所有数据包输出到终端:``````这将捕获指定网络接口上的所有数据包,并以逐个数据包的形式输出到终端。
5.符合过滤条件的数据包:TCPDump支持多种过滤条件,以便只捕获符合特定条件的数据包。
例如,你可以使用以下命令仅捕获源或目标IP地址为192.168.1.100的数据包:```这将只输出符合过滤条件的数据包。
6.保存数据包到文件:TCPDump可以将捕获的数据包保存到文件中,以便以后分析。
使用以下命令可以将数据包保存到指定的文件中:``````这将将捕获的数据包写入指定文件中。
7.读取保存的数据包文件:可以使用TCPDump读取保存的数据包文件并分析其中的数据包。
使用以下命令从文件中读取数据包:``````这将逐个输出文件中的数据包。
tcpdump常用抓包命令TCPDump是一个基于命令行的抓包工具,它可以帮助网络管理员和安全专家捕获和分析数据包。
在网络故障排除、网络性能分析和网络安全检测等方面都有着广泛的应用。
本文将介绍TCPDump的常用抓包命令。
一、基本使用1.抓取指定网卡的数据包tcpdump -i eth0-i选项后面跟要抓取数据包的网卡名称,这里以eth0为例。
2.保存抓取到的数据包tcpdump -i eth0 -w capture.pcap-w选项后面跟要保存数据包的文件名,这里以capture.pcap为例。
3.读取已保存的数据包文件tcpdump -r capture.pcap-r选项后面跟要读取的数据包文件名,这里以capture.pcap为例。
二、过滤器使用1.根据IP地址过滤数据包tcpdump host 192.168.1.1host选项后面跟要过滤的IP地址,这里以192.168.1.1为例。
2.根据端口号过滤数据包tcpdump port 80port选项后面跟要过滤的端口号,这里以80为例。
3.根据协议类型过滤数据包tcpdump icmpicmp表示Internet控制报文协议。
4.组合使用多个条件进行过滤tcpdump host 192.168.1.1 and port 80and表示“与”的关系,即同时满足两个条件。
tcpdump host 192.168.1.1 or port 80or表示“或”的关系,即满足其中一个条件即可。
5.使用逻辑运算符进行复杂过滤tcpdump 'src net 192.168.1 and (dst net 10 or dst net 172)'这里使用了括号和逻辑运算符进行复杂的过滤,筛选出源IP地址为192.168.1开头,目的IP地址为10或172开头的数据包。
三、高级使用1.抓取指定数量的数据包tcpdump -c 100-c选项后面跟要抓取的数据包数量,这里以100为例。
tcpdump 返回参数摘要:1.tcpdump 简介2.tcpdump 的返回参数3.返回参数的使用方法4.示例正文:1.tcpdump 简介tcpdump 是一个用于网络数据包捕获和分析的强大工具,它允许用户在操作系统层面上截取、分析和监控网络数据包。
通过使用tcpdump,用户可以深入了解网络流量、排查网络问题和进行网络安全审计等。
2.tcpdump 的返回参数在使用tcpdump 进行网络数据包捕获时,它会返回一些参数,这些参数可以用来控制数据包的捕获、分析和显示。
以下是一些常用的tcpdump 返回参数:- -i:指定数据包捕获的接口- -n:禁用DNS 解析,以数字形式显示IP 地址和端口号- -v:显示详细信息,包括数据包的头部和内容- -c:指定数据包捕获的次数- -w:将捕获的数据包保存到文件中- -q:静默模式,不显示捕获到的数据包内容3.返回参数的使用方法以下是一个使用这些返回参数的示例:```tcpdump -i eth0 -n -v -c 10 -w packed_packets.pcap```这个命令表示:在eth0 接口上捕获10 个数据包,不进行DNS 解析,显示详细信息,并将捕获到的数据包保存到packed_packets.pcap 文件中。
4.示例假设我们想要查看本地主机与远程主机之间的网络数据包,可以使用如下命令:```tcpdump -i eth0 -n -v -c 10```这个命令表示:在eth0 接口上捕获10 个数据包,不进行DNS 解析,显示详细信息。
执行该命令后,用户可以查看到网络数据包的详细内容,从而了解数据包传输的过程和状态。
1. TCPDump介绍TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
我们用尽量简单的话来定义tcpdump,就是:dump the traffice on anetwork.,根据使用者的定义对网络上的数据包进行截获的包分析工具。
作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东西之一。
tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
2. TcpDump的使用普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
# tcpdumptcpdump: listening on fxp011:58:47.873028 bios-ns >bios-ns: udp 5011:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/Clen=430000 0000 0080 0000 1007 cf08 0900 00000e80 0000 902b 4695 0980 8701 0014 0002000f 0000 902b 4695 0008 0011:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97ffff 0060 0004 ffff ffff ffff ffff ffff0452 ffff ffff 0000 e85b 6d85 4008 00020640 4d41 5354 4552 5f57 4542 0000 00000000 00tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
抓包神器tcpdump使⽤介绍(转)tcpdump 命令使⽤简介简单介绍tcpdump 是⼀款强⼤的⽹络抓包⼯具,运⾏在 linux 平台上。
熟悉 tcpdump 的使⽤能够帮助你分析、调试⽹络数据。
要想使⽤很好地掌握 tcpdump,必须对⽹络报⽂(TCP/IP协议)有⼀定的了解。
不过对于简单的使⽤来说,只要有⽹络基础概念就⾏了。
tcpdump 是⼀个很复杂的命令,想了解它的⽅⽅⾯⾯⾮常不易,也不值得推荐,能够使⽤它解决⽇常⼯作中的问题才是关键。
选项tcpdump 的选项也很多,要想知道所有选项的话,请参考man tcpdump,下⾯只记录 tcpdump 最常⽤的选项。
需要注意的是,tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报⽂内容,可以使⽤-s number,number就是你要截取的报⽂字节数,如果是 0 的话,表⽰截取报⽂全部内容。
-n表⽰不要解析域名,直接显⽰ ip。
-nn不要解析域名和端⼝-X同时⽤ hex 和 ascii 显⽰报⽂的内容。
-XX同-X,但同时显⽰以太⽹头部。
-S显⽰绝对的序列号(sequence number),⽽不是相对编号。
-i any监听所有的⽹卡-v, -vv, -vvv:显⽰更多的详细信息-c number: 截取 number 个报⽂,然后结束-A:只使⽤ ascii 打印报⽂的全部数据,不要和-X⼀起使⽤。
截取 http 请求的时候可以⽤sudo tcpdump -nSA port 80!简单使⽤1. tcpdump -nS监听所有端⼝,直接显⽰ ip 地址。
2. tcpdump -nnvvS显⽰更详细的数据报⽂,包括 tos, ttl, checksum 等。
3. tcpdump -nnvvXS显⽰数据报的全部数据信息,⽤ hex 和 ascii 两列对⽐输出。
下⾯是抓取 ping 命令的请求和返回的两个报⽂,可以看到全部的数据。
Tcpdump是一款在Linux和UNIX系统中的数据包捕获工具,可以对网络数据进行实时分析和嗅探,提供对网络流量的详细解析。
以下是一些tcpdump的高级用法:
1. 过滤器:tcpdump支持使用过滤器来过滤要捕获的数据包。
可以使用不同的参数和语法来指定过滤条件,例如:
-i:指定要监听的网络接口。
-s:指定要截断的数据包大小。
host:指定要监听的主机名或IP地址。
port:指定要监听的端口号。
2. 统计:可以使用tcpdump来统计网络流量和数据包的数量。
可以使用“-c”参数来指定要捕获的数据包数量,也可以使用“-G”参数来指定捕获数据包的时间间隔。
3. 保存数据:可以使用“-w”参数将捕获的数据包保存到文件中,以便后续分析。
可以使用“-r”参数来读取保存的数据包文件,并对其进行分析。
4. 解析数据包:tcpdump可以解析各种网络协议的数据包,例如TCP、UDP、ICMP等。
可以使用“-A”参数来将数据包内容以ASCII码形式呈现。
5. 显示时间戳:可以使用“-tttt”参数显示数据包的时间戳。
6. 逆向DNS查询:可以使用“-n”参数来关闭tcpdump的DNS查询功能,同时使用“-nn”参数可以关闭逆向DNS查询。
7. 切换到root用户:tcpdump需要root权限才能正常运行。
可以使用“sudo”命令或者切换到root用户来运行tcpdump。
这些是tcpdump的一些高级用法,您可以尝试使用这些参数和语法来捕获和分析网络数据包。
但请注意,在使用tcpdump时应遵守相关的法律法规,并避免非法监听他人的网络流量。
Tcpdump的⽤法介绍和解决问题范例Tcpdump的⽤法介绍和解决问题范例⽬录1.概述 (2)2.命令格式 (2)2.1.常⽤的选项和对应参数 (3)2.2.表达式 (4)3.使⽤⽅法执⾏结果范例 (5)3.1.Tcpdump -D显⽰对应的系统的⽹⼝,⽤于-i后⾯指定⽹络接⼝⽤ (5)3.2.tcpdump -i eth0 -n -c 8 icmp;指定eth0,关闭反查dns,抓8包 (6)3.3.不使⽤-n时,会反查源ip和⽬标ip对应的url地址73.4.-nn取消反向dns的过程,并⽤数字显⽰ip端⼝之类83.5.-tt;-ttt;-tttt的⽤法 (10)3.6.-e ⽤来显⽰源,⽬标ip的mac地址 (11)3.7.-w写⽂件,参数是路径和⽂件名,不写路径默认是系统默认路径 (11)3.8.复杂的过滤条件表达式范例 (13)4.Tcpdump执⾏时的常见错误提⽰ (14)5.抓取解决问题实例 (17)1.概述Tcpdump是linux环境下抓包⼯具,可以对对应⽹络接⼝流量进⾏过滤抓取,可以打印输出到屏幕,也可以保存到指定⽂件。
指定的⽂件可以⽤wireshark来打开查看。
可以快速查看符合⽹络接⼝符合某⼀条件的抓包,⽅便我们确定⽹络问题。
2.命令格式可以在linux系统环境下输⼊man tcpdump回车来查看它的帮助说明。
如下图:其命令格式是:tcpdump 选项和对应参数表达式⽤ctrl+c来终⽌抓取,有的系统⽤ctrl+z,有的环境中ctrl+z不⽣成⽂件,必须⽤ctrl+c;2.1.常⽤的选项和对应参数-D 是显⽰所有的接⼝⽤的选项和参数;-i 端⼝号是指定抓取⽹卡的名称或者数字编号;-n来关闭dns反向解析功能,-nn是关闭反向查询功能并以数字格式显⽰ip地址端⼝号,和url地址;-c⽤于指定抓取包的包数;-C⽤于指定抓取保存⽂件的⼤⼩;-e⽤于显⽰对应的源,⽬的的mac地址-w ⽂件路径和⽂件名⽤于指定保存⽂件的路径和名称,没有指定路径默认在系统默认路径下;-t是不显⽰时间戳,-tttt显⽰时间戳,-ttt显⽰请求和响应的时间的时间差;-v是显⽰⼀些协议的详细资料,-vv,-vvv来显⽰更详细的资料。
使用tcpdump命令在Linux中抓取指定端口的网络数据包在Linux中使用tcpdump命令抓取指定端口的网络数据包在网络通信中,数据包的抓取和分析是非常重要的,它能帮助我们了解网络流量、问题排查、安全性分析等方面的情况。
在Linux系统中,我们可以使用tcpdump命令来实现抓取指定端口的网络数据包。
本文将介绍如何使用tcpdump命令在Linux系统中抓取指定端口的网络数据包。
一、什么是tcpdump命令tcpdump是一个在Unix和Linux系统下的用于抓取网络数据包的命令行工具。
它能够监听网络接口上的网络流量,并将数据包内容以及相关的信息进行输出。
tcpdump命令可以根据用户的需求,对网络数据包进行过滤、解析和保存。
二、安装tcpdump在开始使用tcpdump之前,我们需要先确保系统已经安装了该命令。
可以通过以下命令来检查是否已经安装了tcpdump:```$ tcpdump -h```如果系统没有安装tcpdump,可以使用以下命令来安装:```$ sudo apt-get install tcpdump```三、tcpdump命令的基本用法tcpdump命令的基本语法如下:```$ tcpdump [选项] [表达式]```其中,选项用于指定tcpdump命令的具体行为,而表达式用于过滤所抓取的网络数据包。
下面介绍一些常用的选项和表达式:1. 选项- -i:指定网络接口,如eth0、wlan0等。
- -c:指定抓取数据包的数量。
- -v:输出详细的数据包信息。
- -X:以16进制和ASCII格式显示数据包内容。
2. 表达式- host:按照主机进行过滤,如host 192.168.0.1。
- port:按照端口进行过滤,如port 80。
- src/dst:按照源地址或目的地址进行过滤,如src 192.168.0.1或dst 192.168.0.2。
- and/or/not:用于进行逻辑运算,如host 192.168.0.1 and port 80。
tcpdump man page总览 (SYNOPSIS) tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ][ -i interface ] [ -r file ] [ -s snaplen ][ -T type ] [ -w file ] [ expression ]选项 (OPTIONS)-a试着把网络和广播地址转换成名称.-c count当收到 count 个报文后退出.-d把编译好的报文匹配模板 (packet-matching code) 翻译成可读形式, 传往标准输出, 然后退出.-dd把报文匹配模板 (packet-matching code) 以 C 程序片断的形式输出.-ddd把报文匹配模板 (packet-matching code) 以十进制数形式输出(前面加上总数).-e每行都显示链路层报头.-f用数字形式显示 '外部的' 互联网地址, 而不是字符形式 (这个选项用来绕 SUN 黄页服务器的问题 --- 一般说来它翻译外部网络数字地址的时候会长期挂起).-F把 file 的内容用作过滤表达式. 忽略命令行 上的表达式.-i监听 interface. 如果不指定接口, tcpdump 在系统的接口清单中, 寻找号码最小, 已经配置好的接口 (loopback 除外). 选中的时候会中断连接.-l行缓冲标准输出. 可用于捕捉数据的同时查看数据. 例如:``tcpdump -l | tee dat'' or ``tcpdump -l > dat & tail -f dat''.-n别把地址转换成名字 (就是说, 主机地址端口号等)-N不显示主机名字中的域名部分. 例如, 如果使用这个选项, tcpdump 只显示 ``nic'', 而不是 ``''.-O禁止运行报文匹配模板的优化器. 只有当你怀疑优化器有 bug 时才有用.-p禁止把接口置成 promiscuous 模式. 注意, 接口有可能因其他原因而处于 promiscuous 模式; 因此, '-p' 不能作为 `ether host {local-hw-addr} 或 ether broadcast' 的简写.-q快速输出. 显示较少的协议信息, 输出行会短一点点.-r从 file 中读入数据报 (文件是用 -w 选项创建的). 如果 file 是 ``-'', 就读标准输入.-s从每个报文中截取snaplen字节的数据,而不是缺省的68(如果是SunOS的NIT,最小值是96).68个字节适用于IP,IC M P,TCP和U D P,但是有可能截掉名字服务器和NFS报文的协议信息(见下面).输出时如果指定``[|proto]'',tcpdump可以指出那些捕捉量过小的数据报,这里的proto是截断发生处的协议层名称.注意,采用更大的捕捉范围既增加了处理报文的时间,又相应的减少了报文的缓冲数量,可能导致报文的丢失.你应该把snaplen设的尽量小,只要能够容纳你需要的协议信息就可以了.-T把通过 "expression"挑选出来的报文解释成指定的 type. 目前已知的类型有: rpc (远程过程调用 R emote Procedure Call), rtp (实时应用协议R eal-Time A pplications protocol), rtcp (实时应用控制协议 R eal-Time A pplications control protocol), vat (可视音频工具V isual A udio Tool), 和 wb (分布式白板 distributed W hite B oard).-S显示绝对的, 而不是相对的 TCP 序列号.-t禁止显示时戳标志.-tt显示未格式化的时戳标志.-v(稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报中的生存周期和服务类型.-vv更繁琐的输出. 例如, 显示 NFS 应答报文的附加域.-w把原始报文存进file,而不是分析和显示.它们可以以后用-r选项显示.如果file是``-'',就写往标准输出.-x以16进制数形式显示每一个报文(去掉链路层报头后).可以显示较小的完整报文,否则只显示snaplen个字节.expression用来选择要转储的数据报.如果没有指定expression,就转储网络的全部报文.否则,只转储相对expression为`true'的数据报.expression一个或多个原语(primitive)组成.原语通常由一个标识(id,名称或数字),和标识前面的一个或多个修饰子(qualifier)组成.修饰子有三种不同的类型: type类型修饰子指出 标识名称或标识数字 代表 什么类型的东西. 可以使用的类型有 host, net 和 port. 例如, `host foo', `net 128.3', `port 20'. 如果不指定 类型修饰子, 就使用缺省的 host .dir方向修饰子指出相对于标识的传输方向(数据是传入还是传出标识).可以使用的方向有 src, dst, src or dst 和 src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果不指定方向修饰子,就使用缺省的srcordst.对于`null'链路层(就是说象slip之类的点到点协议),用inbound和outbound修饰子指定所需的传输方向.proto协议修饰子要求匹配指定的协议.可以使用的协议有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例如, `ether src foo', `arp net 128.3', `tcp port 21'. 如果不指定协议修饰子,就使用所有符合类型的协议.例如,`srcfoo'指`(ip或arp或rarp)srcfoo'(注意后者不符合语法),`netbar'指`(ip或arp或rarp)netbar',`port53'指`(tcp或udp)port53'.[`fddi'实际上是`ether'的别名;分析器把它们视为``用在指定网络接口上的数据链路层.''F DD I报头包含类似于以太协议的源目地址,而且通常包含类似于以太协议的报文类型,因此你可以过滤F DD I域,就象分析以太协议一样.F DD I报头也包含其他域,但是你不能在过滤器表达式里显式描述.]作为上述的补充,有一些特殊的`原语'关键字,它们不同于上面的模式:gateway,broadcast,less,greater和数学表达式.这些在后面有叙述.更复杂的过滤器表达式可以通过and,or和not连接原语来组建.例如, `host foo and not port ftp and not port ftp-data'. 为了少敲点键, 可以忽略相同的修饰子. 例如, `tcp dst port ftp or ftp-data or domain' 实际上就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.允许的原语有:dst host host如果报文中IP的目的地址域是host,则逻辑为真.host既可以是地址,也可以是主机名.src host host如果报文中IP的源地址域是host,则逻辑为真.host host如果报文中IP的源地址域或者目的地址域是host,则逻辑为真.上面所有的host表达式都可以加上ip,arp,或rarp关键字做前缀,就象: ip host host 它等价于: ether proto \ip and host host 如果host是拥有多个IP地址的主机名,它的每个地址都会被查验.ether dst ehost tcpdump -i eth0 -n ether dst e0:cb:4e:fe:4d:8c如果报文的以太目的地址是ehost,则逻辑为真.ehost既可以是名字(/etc/ethers里有),也可以是数字(有关数字格式另见ethers(3N)).ether src ehost如果报文的以太源地址是ehost,则逻辑为真.ether host ehost如果报文的以太源地址或以太目的地址是ehost,则逻辑为真.gateway host如果报文把host当做网关,则逻辑为真.也就是说,报文的以太源或目的地址是host,但是IP的源目地址都不是host.host必须是个主机名,而且必须存在/etc/hosts和/etc/ethers中.(一个等价的表达式是ether host ehost and not host host 对于host/ehost,它既可以是名字,也可以是数字.)dst net net 如果报文的IP目的地址属于网络号net,则逻辑为真.net既可以是名字(存在/etc/networks中),也可以是网络号.(详见networks(4)).src net net 如果报文的IP源地址属于网络号net,则逻辑为真.net net如果报文的IP源地址或目的地址属于网络号net,则逻辑为真.net net mask mask tcpdump -i eth0 -n net 192.168.1.0 mask 255.255.255.0如果IP地址匹配指定网络掩码(netmask)的net,则逻辑为真.本原语可以用src或dst修饰.net net/len如果IP地址匹配指定网络掩码的net,则逻辑为真,掩码的有效位宽为len.本原语可以用src或dst修饰.dst port port如果报文是ip/tcp或ip/udp,并且目的端口是port,则逻辑为真.port是一个数字,也可以是/etc/services中说明过的名字(参看tcp(4P)和udp(4P)).如果使用名字,则检查端口号和协议.如果使用数字,或者有二义的名字,则只检查端口号(例如,dst port513将显示tcp/login的数据和udp/who的数据,而port domain将显示tcp/domain和udp/domain的数据).src port port如果报文的源端口号是port,则逻辑为真.port port如果报文的源端口或目的端口是port,则逻辑为真.上述的任意一个端口表达式都可以用关键字tcp或udp做前缀,就象:tcp src port port 它只匹配源端口是port的TCP报文.less length tcpdump -i eth0 -n less 64 长度小于等于64如果报文的长度小于等于length,则逻辑为真.它等同于: len <= length.greater length tcpdump -i eth0 -n greater 1400 大于等于1400如果报文的长度大于等于length,则逻辑为真.它等同于: len >= length.ip proto protocol如果报文是IP数据报(参见ip(4P)),其内容的协议类型是protocol,则逻辑为真.Protocol可以是数字,也可以是下列名称中的一个:icmp,igrp,udp,nd,或tcp.注意这些标识符tcp,udp,和icmp也是关键字,所以必须用反斜杠(\)转义,在C-shell中应该是\\.ether broadcast tcpdump -i eth0 -nv ether broadcast 2层广播如果报文是以太广播报文,则逻辑为真.关键字ether是可选的.ip broadcast tcpdump -i eth0 -nv ip broadcast 3层广播如果报文是IP广播报文,则逻辑为真.Tcpdump检查全0和全1广播约定,并且检查本地的子网掩码.ether multicast如果报文是以太组播传送报文(multicast),则逻辑为真.关键字ether是可选的.这实际上是`ether[0]&1!=0'的简写.ip multicast如果报文是IP组播传送报文,则逻辑为真.ether proto protocol如果报文协议属于以太类型的protocol,则逻辑为真.Protocol可以是数字,也可以是名字,如ip,arp,或rarp.注意这些标识符也是关键字,所以必须用反斜杠(\) 转义.[如果是F DD I(例如,`fddiprotocolarp'),协议标识来自802.2逻辑链路控制(LL C)报头,它通常位于F DD I报头的顶层.当根据协议标识过滤报文时,Tcpdump 假设所有的F DD I报文含有LL C报头,而且LL C报头用的是SN A P格 式.]decnet src host如果DE CN E T的源地址是host,则逻辑为真,该主机地址的形式可能是``10.123'',或者是DE CN E T主机名.[只有配置成运行DE CN E T的Ultrix系统支持DE CN E T主机名.]decnet dst host如果DE CN E T的目的地址是host,则逻辑为真.decnet host host如果DE CN E T的源地址或目的地址是host,则逻辑为真.ip, arp, rarp, decnet是: ether proto p 的简写形式,其中p为上述协议的一种.lat, moprc, mopdl是: ether proto p 的简写形式,其中p为上述协议的一种.注意tcpdump目前不知道如何分析这些协议.tcp, udp, icmp是: ip proto p 的简写形式,其中p为上述协议的一种.expr relop expr如果这个关系式成立,则逻辑为真,其中relop是>,<,>=,<=,=,!=之一,expr是数学表达式,由常整数(标准C语法形式),普通的二进制运算符[+,-,*,/,&,|],一个长度运算符,和指定的报文数据访问算符组成.要访问报文内的数据, 使用的语法: proto [ expr : si z e ] 之一,同时也指出了下标操作的协议层.expr给出字节单位的偏移量 ,该偏移量相对于指定的协议层.Si z e是可选项,指出感兴趣的字节数;它可以是1,2,4,缺省为1 字节.由关键字len给出的长度运算符指明报文的长度.例如,`ether[0]&1!=0'捕捉所有的多目传送报文.表达式`ip[0]&0xf!=5'捕捉所有带可选域的IP报文.表达式`ip[6:2]&0x1fff=0'只捕捉未分片和片偏移为0的数据报.这种检查隐含在tcp和udp下标操作中. & 按位与有一个0就为0例如,tcp[0]一定是TCP报头的第一个字节,而不是其中某个IP片的第一个字节. ^ 按位异或| 安位或有一个1就为1原语可以用下述方法结合使用:园括弧括起来的原语和操作符(园括弧在Shell中有专用,所以必须转义).取反操作 (`!' or `not'). 连结操作 (`&&' or `and'). 或操作 (`||' or `or').取反操作有最高优先级.或操作和连结操作有相同的优先级, 运算时从左到右结合.注意连结操作需要显式的and算符, 而不是并列放置.如果给出标识符,但没给关键字,那么暗指最近使用的关键字. 例如,not host vs and ace 作为not host vs and host ace 的简写形式,不应该和 not ( host vs or ace ) 混淆.表达式参数可以作为单个参数,也可以作为复合参数传给tcpdump,后者更方便一些.一般说来,如果表达式包含Shell元字符(metacharacter),传递单个括起来的参数要容易一 些.复合参数在被解析前用空格联接一起.示例 (EXAM P LE S)tcpdump host sundown 显示所有进出 sundown 的报文tcpdump host helios and \( hot or ace \)显示 helios 和主机 hot, ace 之间的报文传送tcpdump ip host ace and not helios 显示 ace 和除了 helios 以外的所有主机的 ip报文tcpdump net ucb-ether 显示本地的主机和 B erkeley的主机之间的网络数据tcpdump 'gateway snup and (port ftp or ftp-data)'显示所有通过网关 snup 的 ftp 报文 (注意这个表达式被单引号括起, 防止 shell 解释园括弧)tcpdump ip and not net localnet 显示既不是来自本地主机,也不是传往本地主机的网络数据tcpdump 'tcp[13] & 3!=0 and not src and dst net localnet'显示每个TCP会话的起始和结束报文(SYN和FIN报文),而且会话方中有一个远程主机.tcpdump 'gateway snup and ip[2:2] > 576'显示经过网关snup中大于576字节的IP数据报 (第3个字节开始,长度为2字节)tcpdump 'ether[0] & 1=0 and ip[16] >=224'显示IP广播或多目传送的数据报,这些报文不是通过以太网的广播或多目传送形式传送的tcpdump 'icmp[0] != 8 and icmp[0] !=0"显示所有不是回响请求/应答的IC M P报文(也就是说,不是ping报文)下标为0是第一个字节,icmp[0]=3 and icmp[1]=3 为端口不可达报文tcpdump -i eth1 ip host 114.255.247.2 and ! 58.30.34.17 显示114.255.247.2的包,但是不包括到58.30.34.17的ip包 tcpdump -i eth0 -n -p udp 'port 67 or port 68' 显示dhcp包tcpdump -i eth0 -n 'udp[0:2]=67 or udp[0:2]=68' 显示dhcp包tcpdump -i eth0 -nv net 192.168.1.0 mask 255.255.255.0 显示指定网络的数据包tcpdump -i eth0 -n ether src 0:f:e2:49:16:5c 显示原mac地址是0:f:e2:49:16:5ctcpdump -i eth0 -n 'arp' 显示arp数据包tcpdump -i eth0 -n 'ether[12:2]=0x0806' 显示dhcp包tcpdump -i eth0 'icmp[0]=3 and icmp[1]=3' 显示icmp端口不可达报文tcpdump -i eth0 -nv 'tcp[13]=2' 显示tcp的syn报文tcpdump -i eth0 -s0 -w filename -c 1000 显示1000个数据包,存入文件filename中。