如何从tcpdump获取通过本地环回发送的数据包的发送和接收时间戳?

如何从tcpdump获取通过本地环回发送的数据包的发送和接收时间戳?,tcp,timestamp,localhost,tcpdump,Tcp,Timestamp,Localhost,Tcpdump,我试图在我的机器上运行的模拟网络上运行测试,并希望获得通过本地环回发送和接收的数据包的时间信息 当我运行tcpdump-ilo时,我看到通过本地环回发送的每个数据包都有两个数据包:一个带序列号的数据包和一个相关的ack数据包。每个都只有一个与之关联的时间戳 我想看看数据传输包何时发送和接收,以及ack包何时发送和接收——也就是说,总共4个时间戳。我不知道如何在tcpdump中实现这一点,无论我尝试了什么谷歌搜索或通过了什么标志 现在我只得到2个时间戳,每个包一个。我很确定他们都是收到包裹的时间

我试图在我的机器上运行的模拟网络上运行测试,并希望获得通过本地环回发送和接收的数据包的时间信息

当我运行
tcpdump-ilo
时,我看到通过本地环回发送的每个数据包都有两个数据包:一个带序列号的数据包和一个相关的
ack
数据包。每个都只有一个与之关联的时间戳

我想看看数据传输包何时发送和接收,以及ack包何时发送和接收——也就是说,总共4个时间戳。我不知道如何在tcpdump中实现这一点,无论我尝试了什么谷歌搜索或通过了什么标志

现在我只得到2个时间戳,每个包一个。我很确定他们都是收到包裹的时间


我可能可以使用两台不同的机器运行这个测试,但我手头上没有另一台,如果我这样做,两台机器之间的时钟就不会完全同步,所以时间戳就会消失。

结果证明我在这里要求的是不可能的。当通过本地环回发送时,内核使用纯软件层,因此实际上没有发送TCP数据包

这实际上适用于使用任何设备并向自己发送数据包——内核会自动进行优化,而不会实际使用硬件发送数据包

为了获得发送和接收时间,您需要通过其他外部代理进行路由。或者,您可以使用
netns
假装计算机上运行两个不同的接口,然后使用虚拟以太网(
veth
)连接它们,然后通过该连接记录
tcpdump
数据


请参阅关于设置已连接的
netns
命名空间的说明。

事实证明,我在这里要求的是不可能的。当通过本地环回发送时,内核使用纯软件层,因此实际上没有发送TCP数据包

这实际上适用于使用任何设备并向自己发送数据包——内核会自动进行优化,而不会实际使用硬件发送数据包

为了获得发送和接收时间,您需要通过其他外部代理进行路由。或者,您可以使用
netns
假装计算机上运行两个不同的接口,然后使用虚拟以太网(
veth
)连接它们,然后通过该连接记录
tcpdump
数据

请参见关于设置连接的
netns
命名空间