2011-09-28 33 views
2

我在tcpdump日志中有两个数据包,我不知道第二列中的“P”和“In”是什么意思。有人能解释他们的意思吗?了解带有以太网报头的tcpdump跟踪

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”事件,dest IP发生更改。

回答

3

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

Linux“any”设备使用DLT_LINUX_SLL/LINKTYPE_LINUX_SLL链接层标头,其中包含从PF_PACKET套接字上的“recvfrom()”调用获得的信息,该套接字包含源地址,但不包含目标地址,的数据包,所以你看到的唯一的链路层地址就是源地址。

它还包括一些标志指示数据包是如何获得:

  • “在” - 包是单播到主机; “

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

  • “M” - 数据包未被广播,但是多播;

  • “P” - 分组是单播到一些其它主机和该主机接收到它,因为网络适配器是处于混杂模式;

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

Linux网络栈决定通过查看数据包的目的地址,看是否与“在”,“B”,“M”和“P”是的,我认为,不同的方式它是使用IEEE MAC-48地址的网络上的广播地址(ff:ff:ff:ff:ff:ff),多播地址(在使用IEEE MAC-48地址的网络上设置了“组”位)接收到的适配器的地址。这是一个令人惊讶的是,它检测到“任何”设备上混杂接收的数据包,因为“任何”设备本身不能置于混杂模式,但可能是接收到该数据包的特定接口在出于某种其他原因的混杂模式。