[网络]抓包工具介绍 tcpdump

一、tcpdump

tcpdump是一款基于命令行的网络抓包工具,可以捕获并分析传输到和从网络接口流入和流出的数据包。

1.1 安装

tcpdump 通常已经预装在大多数 Linux 发行版中。如果没有安装,可以使用包管理器 进行安装。例如 Ubuntu,可以使用以下命令安装:

Bash
sudo apt-get update
sudo apt-get install tcpdump

在 Red Hat 或 CentOS 系统中,可以使用以下命令:

Bash
sudo yum install tcpdump

1.2 常见使用

1. 捕获所有网络接口上的 TCP 报文

使用以下命令可以捕获所有网络接口上传输的 TCP 报文:

Bash
$ sudo tcpdump -i any tcp

注意:-i any 指定捕获所有网络接口上的数据包,tcp 指定捕获 TCP 协议的数据包。i 可以理解成为 interface 的意思

2. 捕获指定网络接口上的 TCP 报文

如果你只想捕获某个特定网络接口(如 eth0)上的 TCP 报文,可以使用以下命令:

Bash
$ sudo tcpdump -i eth0 tcp
3. 捕获特定源或目的 IP 地址的 TCP 报文

使用 host 关键字可以指定源或目的 IP 地址。

例如,要捕获源 IP地址为 192.168.1.100 的 TCP 报文,可以使用以下命令:

Bash
$ sudo tcpdump src host 192.168.1.100 and tcp

要捕获目的 IP 地址为 192.168.1.200 的 TCP 报文,可以使用以下命令:

Bash
$ sudo tcpdump dst host 192.168.1.200 and tcp

同时指定源和目的 IP 地址,可以使用 and 关键字连接两个条件:

Bash
$ sudo tcpdump src host 192.168.1.100 and dst host 192.168.1.200
and tcp
4. 捕获特定端口的 TCP 报文

使用 port 关键字可以指定端口号。例如,要捕获端口号为 80 的 TCP 报文(通常是HTTP 请求),可以使用以下命令

Bash
$ sudo tcpdump port 80 and tcp
5. 保存捕获的数据包到文件

使用 -w 选项可以将捕获的数据包保存到文件中,以便后续分析。例如:

Bash
$ sudo tcpdump -i eth0 port 80 -w data.pcap

这将把捕获到的 HTTP 流量保存到名为 data.pcap 的文件中。

pcap 后缀的文件通常与 PCAP(Packet Capture)文件格式相关,这是一 种用于捕获网络数据包的文件格式

6. 从文件中读取数据包进行分析

使用 -r 选项可以从文件中读取数据包进行分析。例如:

Bash
tcpdump -r data.pcap

注意事项

  • 使用 tcpdump 时,请确保你有足够的权限来捕获网络接口上的数据包。通常你需要以 root 用户身份运行 tcpdump。
  • 使用 tcpdump 的时候,有些主机名会被云服务器解释成为随机的主机名,如果不想要,就用-n 选项
  • 主机观察三次握手的第三次握手,不占序号

二、使用wireshark分析TCP通信流程(了解)

wireshark是windows下的一个网络抓包工具.虽然Linux命令行中有tcpdump工具同样能完成抓包,但是tcpdump是纯命令行界面,使用起来不如wireshark方便.

下载wireshark

https://1.na.dl.wireshark.org/win64/Wireshark-win64-2.6.3.exe

或者

链接:https://pan.baidu.com/s/159UUIoZ8b7guWDeuAHoF9A

提取码:k79r
启用telnet客户端

参考https://jingyan.baidu.com/article/95c9d20d96ba4aec4f756154.html
启动wireshark并设置过滤器

由于机器上的网络数据报可能较多,我们只需要关注我们需要的.因此需要设置过滤器在过滤器栏中写入

ip.addr == [服务器 ip]

则只抓取指定ip的数据包.

或者在过滤器中写入,则只关注9090端口的数据

tcp.port == 9090

更多过滤器的设置,参考

https://blog.csdn.net/donot_worry_be_happy/article/details/80786241

相关推荐
シ風箏1 小时前
Neo4j【环境部署 02】图形数据库Neo4j在Linux系统ARM架构下的安装使用
linux·数据库·arm·neo4j
Cachel wood4 小时前
Vue.js前端框架教程8:Vue消息提示ElMessage和ElMessageBox
linux·前端·javascript·vue.js·前端框架·ecmascript
小屁不止是运维6 小时前
麒麟操作系统服务架构保姆级教程(二)ssh远程连接
linux·运维·服务器·学习·架构·ssh
黑客K-ing8 小时前
网络安全防范
linux·服务器·web安全
王三三8 小时前
群晖利用acme.sh自动申请证书并且自动重载证书的问题解决
linux·自动化·证书·群晖·acme·acme.sh·lets encrypt
路飞雪吖~8 小时前
【Linux】进程控制
linux·运维·服务器
wy02_8 小时前
Linux基本命令
linux·运维
qq_459238499 小时前
Linux之压缩解压相关命令
linux
慕羽★9 小时前
详细介绍如何使用rapidjson读取json文件
linux·c++·windows·json·file·param·rapidjson
一只小爪子9 小时前
Redis 常用配置项说明
linux·运维·数据库·redis