【问题标题】:tcpreplay not work client not receive the datatcpreplay 不工作客户端不接收数据
【发布时间】:2018-12-08 09:13:04
【问题描述】:

在服务器中

# nc -lp 2424
hi server
hi client
1
2
3

在客户端

➜  ~ nc 139.224.xxx.xx 2424
hi server
hi client
1
2
3

然后在客户端

➜  ~ sudo tcpdump -i en0 -nn -s0 -v src port 2424 -c 10 -w 2424.pcap
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
93 packets received by filter
0 packets dropped by kernel

➜  ~ tcpdump -r 2424.pcap
reading from file 2424.pcap, link-type EN10MB (Ethernet)
16:49:47.874743 IP 139.224.xxx.xx.kofax-svr > 192.168.199.171.53511: Flags [P.], seq 2832846522:2832846524, ack 587632101, win 227, options [nop,nop,TS val 1632491736 ecr 751973860], length 2
16:49:48.795743 IP 139.224.xxx.xx.kofax-svr > 192.168.199.171.53511: Flags [P.], seq 2:4, ack 1, win 227, options [nop,nop,TS val 1632492657 ecr 752338627], length 2
16:49:49.786093 IP 139.224.xxx.xx.kofax-svr > 192.168.199.171.53511: Flags [P.], seq 4:6, ack 1, win 227, options [nop,nop,TS val 1632493648 ecr 752339543], length 2

但是当我重播它时,客户端 nc 控制台没有任何输出

➜  ~ tcpreplay -ien0 2424.pcap
Warning: May need to run as root to get access to all network interfaces.
Actual: 10 packets (681 bytes) sent in 10.84 seconds
Rated: 62.7 Bps, 0.000 Mbps, 0.92 pps
Statistics for network device: en0
    Successful packets:        10
    Failed packets:            0
    Truncated packets:         0
    Retried packets (ENOBUFS): 0
    Retried packets (EAGAIN):  0

这是什么原因?我认为执行 tcpreplay 就像从服务器发送数据一样。那么在服务器 nc 控制台中发送数据和在客户端 tcpreplay 有什么区别呢?

【问题讨论】:

    标签: tcpdump netcat tcpreplay


    【解决方案1】:

    原因很简单;您不能使用 tcpreplay 重播数据包,并期望客户端(或服务器)将数据视为连接的一部分。

    这有很多原因。这里只有三个。

    1) 当客户端连接到服务器时,它会选择一个(实际上是随机的,尽管可能只是增加的)临时端口作为源。重放的数据将包含来自原始连接的端口,这几乎肯定不会与客户端现在使用的相同。

    2) 建立连接后,客户端和服务器各自建立一个随机的初始序列号,用于与对方的连接。这个数字在新连接中的可能性更小。

    3) 当客户端向服务器发送 SYN 时,即使你正在重放数据,服务器也会发回一个 RST ACK,关闭连接(不管重放的数据包),因为监听器不再可用。

    【讨论】:

    • 谢谢!那么 tcpreplay 不能重放套接字数据吗?在某些情况下(例如本地客户端无法直接连接到产品服务器)我应该在生产环境中 tcpdump 数据包然后在本地 tcpreplay 以重现或仅运行本地客户端(例如接收数据解析数据然后保存到数据库)
    • Tcpreplay 会重放套接字数据;但是您不能期望客户端或服务器按预期响应重放的 TCP 数据包。 UDP 是一个完全不同的故事。
    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多