Linux tcpdump命令的用法详细解析

所属分类: 操作系统 / unix linux 阅读数: 109
收藏 0 赞 0 分享

英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报。它会输出在某个网络接口上符合匹配表达式的报内容的描述。当tcpdump完成抓包后,会打印出类似下面的内容: 

9 packets captured
56 packets received by filter
17 packets dropped by kernel

当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户

tcpdump用法

tcpdump -A 用ascii打印出每个包信息,这个对于截获网页很方便
tcpdump -D 打印出当前系统的可用的网络接口。可以用-i选项来指定特定的接口


tcpdump -F 使用文件作为输入的过滤表达式

tcpdump -i 在指定的接口上进行监听。如果未指定,tcpdump会从interface list 中寻找最低数字作为监听的接口

tcpdump -l  使标准输出成为缓冲区,如果你想在截获数据包的同时也查看数据,则可以使用下面命令
tcpdump -l > dat & tail -f dat
tcpdump -S 打印出TCP绝对的序列号
tcpdump -w 将截获的数据包写到一个文件中
如果没有表达式,则网络上所有的包都会被截获

例子TCP Packets

下面就是TCP 报文的格式

src > dst : flags data-segno ack window  urgent options(MSS, 时间戳,窗口规模选项)
1. 要截获特定标志位的TCP 包:在TCP header中,有8位是控制位

CWR | ECE | URG | ACK | PSH | RST | SYN | FIN

有TCP 头的结构中

       0                            15                                     31
       -------------------------------------------------------------------------
       |          source port          |       destination port      |
       -------------------------------------------------------------------------
       |                        sequence number                       |
       -------------------------------------------------------------------------
       |                     acknowledgment number                |

       --------------------------------------------------------------------------
       |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size   |
       --------------------------------------------------------------------------
       |         TCP checksum          |       urgent pointer    |
       --------------------------------------------------------------------------

8为控制位是TCP头中的第13个 8-bits组

                       |                        |
                       |------------------------|
                       |C|E|U|A|P|R|S|F|
                       |------------------------|
                       |7     5    3        0|

当SYN位为1时

则该8-bits组的二进制表示为:00000010  -> 2
所以只截获TCP中标志位为SYN=1的表达式为
tcpdump -i 2 tcp[13]==2  
tcp[13]==2  就是让TCP数据报中的第13个8bits组的值为2


2. 如果TCP报文中带有SYN-ACK,我们认为他是带SYN的报文,那么该咋截获呢

                       |                        |
                       |------------------------|
                       |C|E|U|A|P|R|S|F|
                       |------------------------|
                       |7     5    3        0|

此时该8bits组的二进制表示为 00010010 ->18

此时应该不是 tcp[13] == 18,这样只能截获ACK-SYN报文,而不能再截获SYN报文啦,这时我们应该要维持SYN所在位的值,可以用上逻辑与运算,即如下

‘tcp[13] & 2 == 2' ,就可以啦

注意:下面截图的TCP报文的第二条的标志位 [S.]



UDP Packets

UDP 报文的格式为

  actibude.who > broadcast.who : udp 84

who 为端口号,artinide,broadcast都是主机的网络地址, 84为UDP数据报的大小

UDP name Server Requests

请求报文的格式为

src > dst : id op? flags qtype qclass name(len)

h2opolo.1538 > helios.domain : 3+ A? ucbvax.berkeley.edu (37)

主机hopolo询问主机helios上的domain服务的地址记录(qtype=A),该机路与ucbvax.berkeley,edu相关联

查询id为3,‘+'表明 recursion-desired flag 被设置,query的长度为37字节,没有包括UDP与IP的头长度

UDP Name Server Responses
src > dst : id op rcode flags a/n/au type class data(len)
 helios.domain > h2opolo.1538 : 3 3/3/7 A 128.32.137.3 (273)

该报文是helios响应来自h2opolo的query id 为3,且带有3个answer record,3 个name server records 和 7 个additional records

第一个 answer record 是type A ,它数据的大小为273字节,包括UDP和IP报文头

更多精彩内容其他人还在看

教你隐藏Linux的命令行历史

有的时候你可能不想让一些命令记录你的的命令行历史中,本文整理了多种方法让你可以参考。
收藏 0 赞 0 分享

怎样在Linux上录制你的终端操作及回放

在这次的文章中,我们将简单的了解一下如何在Linux上录制和回放终端会话及以gif格式记录的方法。
收藏 0 赞 0 分享

SUSE Linux登录出现黑屏解决方法

登录linux时出现黑屏的找到这篇解决SUSE的黑屏问题
收藏 0 赞 0 分享

个人学习Linux知识总结第1/4页

个人学习linux经常用到的小知识,方便大家以后查阅
收藏 0 赞 0 分享

Linux 下rename 命令的用法第1/2页

刚学习linux的时候,对文件重命名首先想到的就是rename命令,但是按照在windows下对文件重命名的方式试了N多次都没有反应,在网上一搜索,发现很多人都对rename命令知之甚少,甚至有一部分人说linux下没有rename命令,建议大家用mv命令。鉴于此,于是man r
收藏 0 赞 0 分享

Centos 源

Centos操作说明
收藏 0 赞 0 分享

linux备份文件命令收集

收集一些linux下实现文件备份
收藏 0 赞 0 分享

Linux rdesktop操作系统下远程登录Windows XP桌面

众所周知XP下有"远程桌面连接"用来远程登录桌面,设置也非常简单。那有没有什么办法在linux下远程登录到XP呢?有。用rdesktop这个linux下的软件就能实现。
收藏 0 赞 0 分享

Linux操作系统添加新硬盘方法

linux下添加硬盘的方法
收藏 0 赞 0 分享

CentOS 5.1 4.6最新官方下载地址列表

最近公司接触到centos系统,于是找了下,不太容易找到,所以我直接把官方的下载地址,给贴出来了,方便以后下载
收藏 0 赞 0 分享
查看更多