gpt4 book ai didi

networking - 了解带有以太网 header 的 tcpdump 跟踪

转载 作者:行者123 更新时间:2023-12-01 11:55:42 25 4
gpt4 key购买 nike

我的 tcpdump 日志中有两个数据包,我不知道第二列中的“P”和“In”是什么意思。谁能解释一下他们的意思?

00:43:44.896482   P 00:00:ac:12:80:01 ethertype IPv4 (0x0800), length 76: 172.18.128.1.ssh > 155.xx.xx.xx.56365: S 1308033114:1308033114(0) ack 1315850475 win 5792 <mss 1460,sackOK,timestamp 12196173 122040733,nop,wscale 8>

00:43:44.896482 In 00:00:ac:12:80:01 ethertype IPv4 (0x0800), length 76: 172.18.128.1.ssh > 155.yy.yy.yy.4242: S 1308033114:1308033114(0) ack 1315850475 win 5792 <mss 1460,sackOK,timestamp 12196173 122040733,nop,wscale 8>

请注意,由于这个“P”,目标 IP 发生了变化。

最佳答案

从 Guy Harris 的 tcpdump-workers 邮件列表中得到以下答案。

Linux“任何”设备使用 DLT_LINUX_SLL/LINKTYPE_LINUX_SLL 链路层 header ,其中包括您从 PF_PACKET 套接字上的“recvfrom()”调用获得的信息,其中包括源地址,但不包括目标地址数据包,因此您看到的唯一链路层地址是源地址。

它还包括一些标志,指示数据包是如何接收的:

  • “In”——数据包被单播到主机;

  • “B”——数据包被广播;

  • “M”- 数据包不是广播而是多播;

  • “P”- 数据包被单播到某个其他主机并且该主机收到它是因为网络适配器处于混杂模式;

  • “Out”- 数据包由主机发送并“环绕”并传送到 PF_PACKET 套接字。

我认为,Linux 网络堆栈确定“In”、“B”、“M”和“P”之间差异的方式是查看数据包的目标地址并查看它是否是广播地址(在使用 IEEE MAC-48 地址的网络上为 ff:ff:ff:ff:ff:ff),多播地址(在使用 IEEE MAC-48 地址的网络上设置了“组”位),或适配器的地址收到的。它在“任何”设备上检测到一个混杂接收的数据包,这有点令人惊讶,因为“任何”设备本身不能进入混杂模式,但可能是从中接收的特定接口(interface)由于某些其他原因,接收到的数据包处于混杂模式。

关于networking - 了解带有以太网 header 的 tcpdump 跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com