一、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