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连接的三次握手包,如下图:

相关推荐
Eloudy5 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技6 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu6 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
是真的小外套7 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
小天源9 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
老李IT笔记9 小时前
连不上不一定是网不好:新系统不认的服务端配置卡在哪一档
运维·服务器·网络
小此方10 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
隐擎fox11 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
Da Da 泓11 小时前
[项目] --- 基于websocket的网页五子棋(可多用户)
网络·websocket·网络协议·多线程·项目
lazy H11 小时前
【计算机网络】第 2 篇:一条数据如何穿过网络?彻底理解数据封装与解封装
网络·经验分享·后端·学习·计算机网络