tcpdump入门——抓取三次握手数据包

1. 使用docker启动一个tcp应用

参考:https://blog.csdn.net/LONG_Yi_1994/article/details/141175526

2. 获取容器id

bash 复制代码
docker ps |grep gochat

3. 获取容器的 PID

首先,你需要获得容器的进程 ID(PID)。可以使用 docker inspect 命令来实现:

docker inspect --format '{{.State.Pid}}' 37cb595d0370

这个命令将返回容器的 PID。

4. 查看网络接口信息

使用 nsenter 命令进入容器的网络命名空间。你需要安装 nsenter 工具(通常在 util-linux 包中)。假设你获得的 PID 是 12345:

bash 复制代码
sudo nsenter -t 12345 -n ip link

这个命令会列出容器内部的所有网络接口信息。

5. 解析网络接口信息

在 ip link 命令的输出中,容器的网络接口名称通常是以 eth 开头的,例如 eth0。你会看到类似如下的输出:

bash 复制代码
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
252: eth0@if253: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default 
    link/ether 02:42:ac:11:00:09 brd ff:ff:ff:ff:ff:ff link-netnsid 0

eth0 是容器内的网络接口名称。

lo 是容器的回环接口,不用于外部通信。

5. 查找主机上的 veth 接口

查找 veth 接口:

使用 ip link 命令列出主机上的所有网络接口,并找到 veth 开头的接口即为容器在主机上的网络接口。

6. 开始抓包

bash 复制代码
tcpdump -i vethfac5fb8 -S

-S表示显示绝对序列号。

7. 使用telnet建立连接

bash 复制代码
telnet localhost 8090

8. 分析包

执行步骤7后,即可抓到建立tcp连接的三次握手包,如下图:

相关推荐
测试19981 小时前
Selenium 无法定位元素的几种解决方案
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
Raas1003 小时前
企业AI网关哪个好?MAI Gateway(魔芋企业级AI网关)入选2026年企业AI网关推荐清单
网络·人工智能·gateway·企业·ai网关·mai gateway
芯盾时代3 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(一)
网络·安全·web安全
慧都小项3 小时前
夜间Web回归跑到一半停了?TestComplete 15.83提升批量测试稳定性
前端·测试工具·数据挖掘·回归·汽车·web
深蓝海拓3 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
Luminbox紫创测控4 小时前
汽车前照灯阳光灼烧:光学热仿真与太阳光模拟器验证
人工智能·测试工具·汽车·安全性测试·测试标准
啦啦啦啦啦zzzz4 小时前
时间轮定时器
linux·服务器·网络·c++·定时器
ITyunwei09874 小时前
从 ITIL 视角量化-第三集:工单系统如何成为 ITSM 治理抓手?架构+量化
运维·网络·企业微信
半桶水专家4 小时前
MQTT协议使用手册
网络
那年窗外下的雪.4 小时前
AIDC 学习日志|第 14 天|MAC Flapping 与 EVPN 多归属分层排障
网络·git·学习·macos·github·spine