如何tcpreplay Socket数据?

发布于 2022-09-11 16:04:32 字数 2204 浏览 24 评论 0

背景

客户端连接服务端 接收数据 解析数据 入库

服务端(端口:8090) ==> 客户端

需求

本地想跑这个客户端应用 但是不能连线上的服务端 于是想能否在客户端上tcpdump来自服务端端口8090的数据 然后将dump的数据在本地tcpreplay一下 这样的话 客户端就能跑了

生产环境
服务端(8090) ==> 客户端(解析 入库)
本地环境
Mock server(8090) && tcp replay dump file ==> 客户端(解析 入库)

实验验证

tcpdump数据

本地起了个Server 端口8090 每隔1秒往客户端发送数据: 当前时间戳
同时起了个Client 连接端口8090 接收服务端传过来的数据 然后打印一下

# dump源端口是8090的数据 捕捉10条数据
➜  ~ sudo tcpdump -i lo0 -nn -s0 -v src port 8090 -c 10 -w test.pcap
# 查看捕捉的数据 都是服务端发给客户端的数据
➜  ~ tcpdump -r test.pcap

11:13:24.772928 IP localhost.8090 > localhost.50969: Flags [P.], seq 3586243504:3586243518, ack 1284618522, win 6379, options [nop,nop,TS val 741399489 ecr 741398485], length 14
11:13:25.775746 IP localhost.8090 > localhost.50969: Flags [P.], seq 14:28, ack 1, win 6379, options [nop,nop,TS val 741400491 ecr 741399489], length 14
...

Replay dump file

现在有了dump数据 怎么把上一步捕捉的数据 发给客户端呢

  1. 启动一个Mock Server 什么都不做 仅仅监听8090端口

    INFO: server listening on localhost:8090 (xSocket 2.8.15)

  2. 启动客户端连接Mock Server(8090端口)

    ➜ ~ lsof -i:8090
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    Shadowsoc 1097 zhugw 5u IPv4 0xe7dccacf94a472b5 0t0 TCP *:8090 (LISTEN)
    java 34607 zhugw 40u IPv6 0xe7dccacfb3a69df5 0t0 TCP localhost:8090 (LISTEN)
    java 34607 zhugw 49u IPv6 0xe7dccacfb3a6a975 0t0 TCP localhost:8090->localhost:52286 (ESTABLISHED)
    java 34610 zhugw 45u IPv6 0xe7dccacfb3a6c635 0t0 TCP localhost:52286->localhost:8090 (ESTABLISHED)

  3. replay 上一步的dump file

    ➜ ~ sudo tcpreplay -ilo0 test.pcap
    Warning: Unable to process unsupported DLT type: BSD loopback (0x0)

    Actual: 10 packets (700 bytes) sent in 4.01 seconds
    Rated: 174.5 Bps, 0.001 Mbps, 2.49 pps
    Statistics for network device: lo0

    Successful packets:        10
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0
    

但是客户端并没接收到数据 这是什么原因呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文