计算机网络抓包工具——tcpdump详解

这篇具有很好参考价值的文章主要介绍了计算机网络抓包工具——tcpdump详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、tcpdump是什么?

二、tcpdump里常用参数

1、可接的选项

 2、type类过滤器【参数】


一、tcpdump是什么?

tcpdump是Linux里的字符界面的数据抓包分析软件。tcpdump是一个用于截取网络分组,并输出分组内容的工具。

tcpdump:其中tcp:传输控制协议,位于传输层transmission control protocol。dump:导出。

Windows 抓包软件:wireshark、科来网络分析系统:抓网卡数据包。

使用tcpdump来抓包可以知道有哪些客户端的人访问到自己的服务器上了。

二、tcpdump里常用参数

只使用tcpdump命令进行抓包:截获主机收到和发出的所有数据包。

tcpdump截取的包默认数据包的头部,默认情况下,直接启动tcpdump将监听的是第一个网络接口上所有流过的数据包。

[root@nginx-kafka01 ~]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on docker0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel

tcpdump里面的参数,这些参数是用来过滤的。

1、可接的选项

-i interface指定抓哪个接口的数据包。
-vv 显示更加详细的信息。
-e 显示mac地址。
-w write 写入保存到文件中。导入的文件可以使用wireshark打开。
-r read 读取文件中的数据。
-c 在收到指定包数目之后,tcpdump就会停止。

文件的后缀名可以自定义.pcap packet capture

例如:

1、监听指定网卡ens33的所有传输数据包 

tcpdump -i ens33

[root@nginx-kafka01 ~]# tcpdump -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on docker0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:48:51.599093 IP 192.168.2.130.55734 > nginx-kafka01.ssh: Flags [.], ack 141668, win 4103, length 0
21:48:51.599156 IP nginx-kafka01.ssh > 192.168.2.130.55734: Flags [P.], seq 141668:141928, ack 37, win 261, length 260
21:48:51.599274 IP nginx-kafka01.ssh > 192.168.2.130.55734: Flags [P.], seq 141928:142084, ack 37, win 261, length 156
21:48:51.605319 IP 192.168.2.130.55734 > nginx-kafka01.ssh: Flags [.], ack 142084, win 4101, length 0
21:48:51.605373 IP nginx-kafka01.ssh > 192.168.2.130.55734: Flags [P.], seq 142084:142240, ack 37, win 261, length 156
21:48:51.608121 IP nginx-kafka01.ssh > 192.168.2.130.55734: Flags [P.], seq 142240:142500, ack 37, win 261, length 260
^C^C

21:48:51.610340 ARP, Request who-has 192.168.2.104 tell gateway, length 46

1032 packets captured
1086 packets received by filter

 2、创建文件,文件名后缀可以随便取,然后使用tcp协议抓网卡ens33的所有传输数据包并显示mac地址并写入feng.sc文件中。

[root@nginx-kafka01 shell]# touch feng.sc
# -i ens33:指定抓ens33接口中的数据包
[root@nginx-kafka01 shell]# tcpdump -i ens33 -e -vv tcp -w feng.sc

# -r :读取文件数据
[root@nginx-kafka01 shell]# tcpdump5 -r feng.sc

3、-i :抓取网卡ens33的所有传输数据包 ,-vv:显示更加详细的信息。

[root@nginx-kafka01 /]# tcpdump -vv -i ens33
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
22:26:53.664261 IP (tos 0x10, ttl 64, id 32581, offset 0, flags [DF], proto TCP (6), length 164)
    nginx-kafka01.ssh > 192.168.2.130.60716: Flags [P.], cksum 0x8701 (incorrect -> 0xc90f), seq 1310010851:1310010975, ack 1763474695, win 284, length 124
22:26:53.664807 IP (tos 0x0, ttl 64, id 22115, offset 0, flags [DF], proto UDP (17), length 72)
    nginx-kafka01.53273 > public1.114dns.com.domain: [bad udp cksum 0xa86a -> 0xc47a!] 235+ PTR? 130.2.168.192.in-addr.arpa. (44)
22:26:53.664962 IP (tos 0x10, ttl 64, id 32582, offset 0, flags [DF], proto TCP (6), length 172)
    nginx-kafka01.ssh > 192.168.2.130.60716: Flags [P.], cksum 0x8709 (incorrect -> 0xbf23), seq 124:256, ack 1, win 284, length 132
22:26:53.665071 IP (tos 0x0, ttl 128, id 62460, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.2.130.60716 > nginx-kafka01.ssh: Flags [.], cksum 0xc900 (correct), seq 1, ack 256, win 4106, length 0
22:26:53.689765 IP (tos 0x0, ttl 152, id 0, offset 0, flags [none], proto UDP (17), length 149)
    public1.114dns.com.domain > nginx-kafka01.53273: [udp sum ok] 235 NXDomain q: PTR? 130.2.168.192.in-addr.arpa. 0/1/0 ns: 168.192.in-addr.arpa. SOA prisoner.iana.org. hostmaster.root-servers.org. 1 604800 60 604800 604800 (121)
22:26:53.691101 IP (tos 0x0, ttl 64, id 22121, offset 0, flags [DF], proto UDP (17), length 74)

4、-i :抓取网卡ens33的所有传输数据包 ,-vv:显示更加详细的信息。-e:显示mac地址。

 tcpdump  -i ens33 -vv -e
[root@nginx-kafka01 ~]# tcpdump  -i ens33 -vv -e

 2、type类过滤器【参数】

type类过滤器后面需要接相应的参数。

host 根据主机ip来抓包
port 根据端口进行抓包
net 根据网段进行抓包
protocol 根据协议进行抓包
protocol协议

tcp、udp、icmp、ip、arp、rarp、ether协议等

icmp协议

ping命令
mac地址 指定mac地址进行抓包 src mac:源mac ,dst mac:目的mac

多条件组合的时候:需要运算符进行连接:and   、 or 、not

host:src host、 dst host

1、指定主机ip进行抓包分析。抓取ip为 192.168.2.152的数据包

[root@nginx-kafka01 /]# tcpdump -i ens33 host 192.168.2.152
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
2:09:09.020981 IP nginx-kafka01.ssh > 192.168.2.130.60716: Flags [P.], seq 1528452:1528616, ack 181, win 284, length 164
22:09:09.021904 IP nginx-kafka01.ssh > 192.168.2.130.60716: Flags [P.], seq 1528616:1528884, ack 181, win 284, length 268
22:09:09.023833 IP 192.168.2.130.60716 > nginx-kafka01.ssh: Flags [.], ack 1528884, win 4102, length 0
22:09:09.023872 IP nginx-kafka01.ssh > 192.168.2.130.60716: Flags [P.], seq 1528884:1529048, ack 181, win 284, length 164
22:09:09.023879 IP 192.168.2.130.60716 > nginx-kafka01.ssh: Flags [P.], seq 181:217, ack 1528884, win 4102, length 36
^C
10889 packets captured
10889 packets received by filter
0 packets dropped by kernel

src host:根据源ip地址来抓包 

dst host:根据目的ip地址来抓包

根据源ip抓包:需要两台虚拟机配合,虚拟机A去ping,虚拟机B去抓包。

虚拟机A的ip为192.168.2.43,虚拟机B的ip为192.168.2.152。

先在A机器进行ping 192.168.2.152。

然后在B机器上(192.168.2.152)根据源ip:192.168.2.43进行抓包。

[root@nginx-kafka01 shell]# tcpdump -i ens33 icmp and src host 192.168.2.43
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
12:03:18.050672 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 22, length 64
12:03:19.029060 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 23, length 64
12:03:20.026979 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 24, length 64
12:03:21.033853 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 25, length 64
12:03:22.028979 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 26, length 64
12:03:23.044427 IP 192.168.2.43 > nginx-kafka01: ICMP echo request, id 13063, seq 27, length 64
^C
6 packets captured
7 packets received by filter
0 packets dropped by kernel

 2、port 端口:src port、dst port

src port:源端口

dst port:目的端口

举例:抓取访问本机的80号端口的数据包。

[root@nginx-kafka01 /]# tcpdump -i ens33 port 80

 3、net:网段

抓取源IP从192.168.0.0/24网段来的,访问本机80端口的数据包。

[root@nginx-kafka01 /]# tcpdump -i ens33 port 80 and src net 192.168.0.0/24
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

 4、mac:根据mac地址进行抓包

src 00:0c:29:ae:89:5d :是指源mac地址为:00:0c:29:ae:89:5d 

ether:是值icmp协议中没有源ip和目的ip,所以需要依赖于ether 协议。

[root@nginx-kafka01 ~]# tcpdump -i ens33 ether src  00:0c:29:ae:89:5d 

 5、抓取源ip地址为192.168.2.137访问本机的tcp协议的80端口的数据包。

[root@nginx-kafka01 /]# tcpdump -i ens33 src host 192.168.2.137 and dst port 80 and tcp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

  6、抓ens33接口的数据包,源ip是192.168.0.1 目的端口是80 目的mac是00:0c:29:ea:ac:65的数据包,是tcp协议,请实现这个需求的tcpdump命令

[root@nginx-kafka01 shell]# tcpdump -i ens33 -e -vv tcp and src host 192.168.0.1  and dst port 80  and ether src 00:0c:29:ea:ac:65
[root@nginx-kafka01 ~]# tcpdump  -i ens33 tcp and src host 192.168.0.1 and dst port 80 and ether src 02:42:50:15:dc:29
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
1 packet received by filter
0 packets dropped by kernel

 7、抓取192.168.2.137这台机器ping过来的数据包。

[root@nginx-kafka01 ~]# tcpdump -i ens33 icmp and src host 192.168.2.137
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
22:55:58.510368 IP nginx-kafka03 > nginx-kafka01: ICMP echo request, id 7518, seq 225, length 64
22:55:59.513581 IP nginx-kafka03 > nginx-kafka01: ICMP echo request, id 7518, seq 226, length 64
22:56:00.515075 IP nginx-kafka03 > nginx-kafka01: ICMP echo request, id 7518, seq 227, length 64
22:56:01.518040 IP nginx-kafka03 > nginx-kafka01: ICMP echo request, id 7518, seq 228, length 64
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel

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

[root@nginx-kafka01 /]# tcpdump -nn -i ens33 icmp or arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
22:59:25.984345 ARP, Request who-has 192.168.2.129 tell 192.168.2.1, length 46
22:59:25.993326 IP 192.168.2.137 > 192.168.2.152: ICMP echo request, id 7518, seq 432, length 64
22:59:25.993363 IP 192.168.2.152 > 192.168.2.137: ICMP echo reply, id 7518, seq 432, length 64
22:59:26.290334 ARP, Request who-has 192.168.2.126 tell 192.168.2.1, length 46
22:59:26.995193 IP 192.168.2.137 > 192.168.2.152: ICMP echo request, id 7518, seq 433, length 64
22:59:26.995234 IP 192.168.2.152 > 192.168.2.137: ICMP echo reply, id 7518, seq 433, length 64
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel

对输出结果进行分析: 

第一列:时分秒毫秒 

第二列:网络协议 IP

第三列:发送方的ip地址

第四列:箭头 >, 表示数据流向

第五列:接收方的ip地址

第六列:冒号

第七列:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1。

更多标识符:使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:文章来源地址https://www.toymoban.com/news/detail-476150.html

  • [S] : SYN(开始连接)
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)
  • [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)。  

到了这里,关于计算机网络抓包工具——tcpdump详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络大作业(Wireshark抓包分析)

    wireshark的深入学习与掌握,如过滤器的使用,归纳方法 通过实验阐述ARP的工作原理 利用实验结果分析 ICMP 协议的报文结构字段定义 基于实验数据深入分析 TCP 协议的连接过程原理,报文的分片等功能 从校园网发起向外网中某 Web 服务器的访问,记录并分析从 MAC 层协议、IP

    2024年02月02日
    浏览(39)
  • 计算机网络实验2 HTTP 抓包分析

    实验目的 通过实验熟悉Wireshark 抓包软件的使用方法,理解有关 HTTP 协议的各方面内容。 实验内容 1. 在 windows 环境进行 Wireshark 抓包。 2. 理解基本 GET/response 交互, HTTP 数据包的格式。 3. 获取较长的 HTML 文件,分析其数据包。 4. 获取有嵌入对象的 HTML 文件,分析器数据包。

    2024年04月12日
    浏览(32)
  • 用Wireshark抓包分析协议 计算机网络

    此篇博客记录使用Wireshark抓包分析协议。 目录 一、DNS 二、分析TCP握手过程 三、TLS报文 四、HTTP协议 五、SMTP 六、ARP 七、RTP 八、RTMP        DNS是域名系统,Domain Name System的缩写,是基于TCP/IP的一个服务。DNS是将主机名到IP地址转换的目录服务。DNS是:①一个由分层的DNS服务

    2024年02月09日
    浏览(41)
  • 计算机网络抓包实验之SMTP、POP报文捕捉

    提示:安安来了!! 目录 文章目录 前言 一、SMTP、POP是什么? 二、捕捉步骤 1.SMTP报文获取 2.POP报文获取 总结      本次实验主要使用wireshark捕捉工具进行捕捉应用层的通信报文SMTP、POP。在做这次实验中,搭建pop3服务器是关键。以下是这次实验的一个小总结。 提示:以下

    2023年04月22日
    浏览(37)
  • 计算机网络综合大实验验优(含抓包、两届实验对比)

    第一届智科牛马人的计网实验验优报告: 实验需要组队,三人一组好像,也可以一人两人,排名在前面的人验优更容易,同时需要操作四台电脑,跟着实验指导书,不懂的问问老师和身边同学,一天从早到晚可以搞定,开窍也可以一上午或者一下午搞定。 前面画的拓扑图越

    2024年02月11日
    浏览(40)
  • 【计算机网络】—— 详解码元,传输速率的计算|网络奇缘系列|计算机网络

    🌈个人主页:  Aileen_0v0 🔥系列专栏:  一见倾心,再见倾城  ---  计算机网络~ 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 目录 码元  速率和波特 思考1   思考2  思考3 带宽(Bandwidth)  📝总结 码元 是指用一个 固定时长的信号波形 _(数字脉冲),代表不同离散数值的基本波

    2024年02月04日
    浏览(55)
  • 【计算机网络详解】——网络层(学习笔记)

    📖 前言:网络层它承担着网络间的数据传输和路由选择等核心任务,通过在传输层协议的基础上添加了路由和转发等功能,使得数据能够在全球范围内的互联网中自由流动。在这篇博客中,我们将深入探讨网络层的工作原理和具体实现,了解其对于现代计算机网络应用的重

    2024年02月10日
    浏览(40)
  • 【计算机网络】Udp详解

    上几文章我们讲解了应用层协议Http和Https,要知道应用层协议有很多,这些都是程序员自己定制的,而真正要传输的时候,是要在操作系统的传输层进行的,今天我们就来学习一下传输层协议Udp的 要进行跨网络通信,就要标识一个网络通信的唯一性 通常需要:源IP、目的IP、

    2024年02月12日
    浏览(51)
  • 【计算机网络】HTTP详解

    系列综述: 💞目的:本系列是个人整理为了 秋招工作面试 的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于 小林Codeing 进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。 🤭结语:如果

    2024年02月15日
    浏览(52)
  • 【计算机网络】网络层——详解IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 四位版本号:用来表示IP协议的版本,现有的IP协议只有两个版本,一个

    2024年01月20日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包