繁体   English   中英

在Linux原始套接字中接收完整的修改后的icmp数据包

[英]Receiving Full modified icmp packet in Linux raw socket

我有一个特定的网卡(NetFPGA),它在ICMP Echo Reply数据包的末尾添加了一个8字节的时间戳(校验和被忽略)。 当我尝试以这种方式读取原始套接字中的数据包时:

recvsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

我只有IP + ICMP数据,没有添加时间戳。 我试过了:

recvsock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP));

这样,我得到了所有信息,并且无法绑定任何地址。 还尝试了:

recvsock = socket(AF_INET, SOCK_RAW, htons(ETH_P_IP));

但是什么也没发现。

任何想法我怎么能打开一个原始套接字,它将只捕获特定的ICMP回显应答数据包,而不会忽略增加的8字节时间戳?

谢谢
我做

根据我的发现,显然没有办法在原始套接字中捕获完整的数据包,而仍然使套接字为您执行过滤。 我要做的就是这样打开插座:

recvsock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP));

用于捕获所有传入的IP数据包,然后基于libpcap过滤功能过滤出我的ICMP数据包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM