路由器上的数据包分析与客户端和服务器不匹配

网络工程 路由器 tcp ARP 线鲨 tcpdump
2022-03-03 18:09:05

感谢您的时间。

我的(虚拟)网络有 3 个对象:客户端、服务器和它们之间的路由器。

我正在用命令嗅探 3 台机器上的流量

tcpdump -i any -s 0 -w [path]

客户端和服务器都捕获大约 700 个数据包。路由器总是捕获两者的确切总和,女巫是我不明白的。

在路由器中,我可以看到很多错误的 tcp 数据包(重新传输、重复 ack、乱序),但我从来没有在客户端捕获它们,也没有在服务器端看到它们。怎么会?我的意思是,例如,如果客户端重新传输了一个数据包,客户端嗅探器不应该也捕获它吗?难道我做错了什么?

这里有一些握手和获取请求的截图,你可以看到:

客户端 客户端

服务器端 服务器端

路由器流量 路由器流量


那是我的第一个问题。

我不知道我是否可以在 1 个主题中提出 2 个完全不同的问题,如果它打扰我将打开一个新问题。

否则,第二个问题:路由器上根本没有 ARP 流量,但在 TCP 连接关闭之后为什么客户端想在 TCP 连接之后而不是之前知道服务器的地址,反之亦然

这是截图: TCP 连接后的 ARP 流量

1个回答

看起来您用于捕获路由器上的数据包的任何命令确实是两次捕获每个数据包。鉴于两次捕获之间的时间差,看起来它正在捕获它们,因为它们是在入口端口上接收的,然后(稍晚一点)在出口端口上接收。事实上,使用“-i any”选项是有意义的。

对于(正确地)看起来像重复或无序数据包的分析工具。

您可能需要查看路由器上用于捕获数据包的命令。您是否在所有端口上捕获入口和出口?(是的:“-i any”)我建议只在所有端口上捕获入口,或者在一个端口上捕获入口+出口。

不知道您问题的 arp 部分。Arp 响应由主机(包括路由器)缓存。在通信之前路由器上的“show arp”命令可能会显示 arp 表中已经存在的条目,从而解释为什么 arp 不会在进程开始时发生。但这并不能解释最后的 arps。