10.计算机网络---tcpdump抓包工具

假如你现在是一个网站的维护人员,维护着某台服务器,那么你如何知道客户端的人访问到你的服务器了呢?
1. 查看日志。我们可以查看某个服务对应的日志,那么便知道是否有人访问了,比如说nginx,那么我们可以查看nginx的access日志
2. netstat查看State列的状态。ESTABLISHED就是建立连接,web服务采用的是http协议,传输层采用的是tcp协议,那么就会建立三次握手,所以可以通过查看状态来确认是否有建立连接
3. 可以通过抓包工具来分析。例如服务器某个服务对应的端口是80,协议是tcp协议,那么我们可以使用抓包工具抓去特定端口和协议的包

在网络中抓包,我们可以使用Windows的Ciso Packet、wireshark等工具,也可以使用Linux中特有的tcpdump来抓包分析。

tcpdump抓包工具

参数详解

  1. -i 指定需要监听的接口
  2. -n 不把IP转换成域名,直接显示IP,避免了域名解析的过程,速度会快很多
  3. -nn 不进行端口和IP地址名称的转换,直接以数字的形式显示,速度会快很多
  4. -vv 输出详细的报文信息
  5. -w 将捕获到的信息保存到文件中,并且不会打印在屏幕上
  6. -r 从文件中读取数据
  7. -D 显示系统中所有可以用的tcpdump截包的网络接口
  8. -t 在每行的输出中不输出时间
  9. -tt 在每行的输出中会输出一个时间戳
  10. -Q 选择是入方向还是出方向的数据包,可选项有:in, out, inout

常见的过滤规则

  1. 指定IP
    src host -->source host
    dst host -->destination host
    host —> 不区分源或者目的IP
  2. 指定端口
    src port -->source port
    dst port --> destination port
    port
  3. 指定协议
    tcp
    udp
    arp
    icmp
  4. 指定mac地址
    ether src
  5. net 指定网络地址,可以是一个网段

注意:多个条件结合的时候,要使用运算符和连接,例如and、or、not、!

一些举例

抓取访问本机的22号端口的数据包

tcpdump -i ens33 port 22

抓取访问本机的icmp报文或者arp报文

tcpdump -nn -i ens33 icmp or arp

抓取源IP是从192.168.0.0网段来的,访问本机22号端口的数据包

tcpdump -i ens33 port 22 and src net 192.168.0.0/24

抓取源ip地址是192.168.0.1访问本机的tcp协议的80端口的数据包

tcpdump -i ens33 src host 192.168.0.1 and dst port 80 and tcp

抓取源ip是192.168.0.189,目的端口是80,目的ip地址是192.168.0.204的数据包

tcpdump -i ens33 src host 192.168.0.189 and dst port 80 and dst host 192.168.0.204

抓取源ip是192.168.0.123,目的ip地址是114.114.114.114的udp的53号端口的数据包

tcpdump -nn -i ens33 src host 192.168.0.123 and  dst host 114.114.114.114 and dst port 53 and udp

-i指定网卡,tcp是协议,src host是源IP(如果通过浏览器访问的话,就是真实机器的IP),dst port目的端口,-nn是指以数字的方式展示出来,不同的选项之间要使用and连接

tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn

将抓取到的数据存入文件中,并且再打开

[root@xieshan lianxi]# tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn -w web.data	#-w将抓包到的数据存入文件中,但是查看会有一些乱码,必须在Windows中通过字符界面的抓包工具wireshark打开
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C6 packets captured
6 packets received by filter
0 packets dropped by kernel
[root@xieshan lianxi]# cat web.data 
NN??k?be>
  ){?`0??E@@@????i??+?P?Ob???ʹ?
BBQn?k?b?N
  ){?`0??E4@@????i??+?P?Ocb}?l?
?w
??Qr1???k?bVO
  ){?`0??E?@@?q??i??+?P?Ocb}?l?
?r
dRQr1??GET / HTTP/1.1
Host: 192.168.2.43
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
Accept-Language: zh-CN,zh-Hans;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
[root@xieshan lianxi]# tcpdump -r web.data 	#tcpdump 的-r选项也可以很直观的看到
reading from file web.data, link-type EN10MB (Ethernet)
21:29:52.867941 IP 192.168.2.105.50691 > xieshan.http: Flags [S], seq 401362786, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 1683116398 ecr 0,sackOK,eol], length 0
21:29:52.872067 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1652406636, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 0
21:29:52.872278 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 0:366, ack 1, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 366: HTTP: GET / HTTP/1.1
21:29:52.876385 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 743, win 2047, options [nop,nop,TS val 1683116407 ecr 36827096], length 0
21:29:53.965394 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 366:732, ack 743, win 2048, options [nop,nop,TS val 1683117496 ecr 36827096], length 366: HTTP: GET / HTTP/1.1
21:29:53.969304 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1485, win 2036, options [nop,nop,TS val 1683117500 ecr 36828189], length 0

关于tcpdump更加详细的解析,推荐看这篇博客:全网最详细的tcpdump使用指南

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tcpdump 是一个网络抓包工具,可以用来捕获、分析和解释网络数据包。以下是 tcpdump 的基本用法: 1. 抓取指定接口的数据包: ``` tcpdump -i eth0 ``` 2. 抓取指定 IP 地址的数据包: ``` tcpdump host 192.168.1.100 ``` 3. 抓取指定端口的数据包: ``` tcpdump port 80 ``` 4. 抓取指定源 IP 地址或目的 IP 地址的数据包: ``` tcpdump src 192.168.1.100 tcpdump dst 192.168.1.100 ``` 5. 抓取指定协议类型的数据包: ``` tcpdump icmp tcpdump udp tcpdump tcp ``` 6. 抓取指定网段的数据包: ``` tcpdump net 192.168.1.0/24 ``` 7. 将抓包结果输出到文件: ``` tcpdump -w capture.pcap ``` 8. 从抓包文件中读取数据包: ``` tcpdump -r capture.pcap ``` 以上是 tcpdump 常用的基本命令,更多命令请查看 tcpdump 的手册页。 ### 回答2: tcpdump是一种在Linux操作系统下常用的网络抓包工具,可以用于捕获和分析网络上的数据包。它基于libpcap库,并且可以在终端上以命令行的方式运行。 使用tcpdump命令时,需要在终端中输入指定的参数来设置过滤条件和输出选项。以下是一些常用的tcpdump命令参数: 1. -i参数:用于指定抓包的网络接口。可以输入网络接口的名称,如eth0或wlan0。 2. -n参数:以数字形式显示主机地址而不是进行反向解析。 3. -X参数:显示数据包的十六进制和ASCII形式。 4. -c参数:指定抓包的数量。例如,使用-c 10可以抓取10个数据包后就停止。 5. -s参数:设置抓包的数据包长度。例如,-s 100可以指定抓取100字节的数据包。 6. -w参数:指定抓包数据的输出文件。例如,-w capture.pcap可以将抓包数据保存为名为capture.pcap的文件。 7. 表达式:可以使用表达式来设置过滤条件,例如指定源或目标IP地址或端口,以限制抓取特定的数据包。 当输入tcpdump命令并按下回车时,它将开始捕获网络上的数据包。捕获到的数据包将以逐个数据包的方式显示在终端上,包括源IP地址、目标IP地址、协议类型、目标端口等信息。可以按Ctrl+C来停止抓包。 总结起来,tcpdump是一种功能强大的抓包工具,可以帮助我们分析和排查网络问题。通过设置不同的参数和过滤条件,我们可以灵活地抓取并分析所需的数据包。 ### 回答3: tcpdump是一种在计算机网络上抓取数据包并进行分析的命令行工具。它通常用于诊断网络问题和监视网络流量。 使用tcpdump命令时,需要以root用户或具有网络管理员权限的账户运行。以下是一些常用的tcpdump命令参数和用法: 1. 抓取指定网络接口上的数据包: tcpdump -i eth0 该命令将在eth0接口上抓取数据包。 2. 抓取指定源或目标IP地址的数据包: tcpdump src 192.168.1.100 tcpdump dst 192.168.1.100 这些命令将抓取以192.168.1.100为源或目标IP地址的数据包。 3. 抓取指定端口的数据包: tcpdump port 80 tcpdump portrange 1000-2000 这些命令将抓取目标端口为80或在1000至2000范围内的数据包。 4. 保存抓取到的数据包到文件中: tcpdump -w output.pcap 该命令将把抓取到的数据包保存到output.pcap文件中,以便后续分析。 5. 显示抓取到的数据包信息: tcpdump -r input.pcap tcpdump -A 这些命令将显示input.pcap文件中的数据包信息或以可读形式显示抓取到的数据包内容。 6. 显示部分数据包信息: tcpdump -c 10 该命令将抓取并显示前10个符合条件的数据包。 tcpdump命令还有很多其他参数可以用于过滤数据包、显示指定的协议等。它可以帮助管理员查找网络故障、检查网络流量、监视网络安全等。因其灵活性和强大的功能,tcpdump网络管理员和安全专家常用的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值