jet*_*tru 3 networking tcpdump
我的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>
Run Code Online (Sandbox Code Playgroud)
请注意,由于此"P"事物,dest IP发生了变化.
从Guy Harris的tcpdump-workers邮件列表中得到以下答案.
Linux"any"设备使用DLT_LINUX_SLL/LINKTYPE_LINUX_SLL链路层标头,其中包含从PF_PACKET套接字上的"recvfrom()"调用获得的信息,其中包括数据包的源地址,但不包括目标地址,所以你看到的唯一链接层地址是源地址.
它还包括一些标志,指示如何接收数据包:
"在"中 - 数据包是对主机的单播;
"B" - 数据包被广播;
"M" - 数据包未广播但是多播;
"P" - 数据包被单播到其他主机,并且该主机接收到它,因为网络适配器处于混杂模式;
"Out" - 数据包由主机发送并"缠绕"并传送到PF_PACKET套接字.
我认为,Linux网络堆栈确定"In","B","M"和"P"之间的区别的方式是查看数据包的目标地址并查看它是否是广播地址(ff: ff:ff:ff:ff:ff在使用IEEE MAC-48地址的网络上),多播地址(在使用IEEE MAC-48地址的网络上设置"组"位),或者在其上使用的适配器的地址接收.这是一个有点令人惊讶的是它检测到的"任何"设备上的杂乱接收的数据包,因为"任何"设备本身不能投入混杂模式,但或许从中接收到的数据包中的特定接口是处于混杂模式由于其他原因.
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |