4
我正在netfilter中编写一个数据包过滤器。有没有一种方法可以获得ICMP数据包的源端口和目的端口?ICMP数据包的源端口和目的端口
我已经从sk_buff结构中提取了icmp_hdr。但我没有看到来源地址和目的地址的任何属性?
我正在netfilter中编写一个数据包过滤器。有没有一种方法可以获得ICMP数据包的源端口和目的端口?ICMP数据包的源端口和目的端口
我已经从sk_buff结构中提取了icmp_hdr。但我没有看到来源地址和目的地址的任何属性?
端口号是TRANSPORT层识别哪个数据包属于终端系统的哪个进程的方式。
它们用于让流程到流程交付工作;但从功能角度来看,ICMP不是传输层协议。
ICMP是网络层的一个消息传递协议(在IP的顶层; but not really in the transport layer),它有很多责任,但是它们没有一个与流程到流程交付有关,所以有一个端口号没有任何意义。
举一个例子,当你ping
(ping使用ICMP回显消息)一个IP地址时,你真的在哪个端口pinging
?
答案是:没有端口,你正在ping整个站看它是否还活着。
现在,ICMP有很多types of messages;如果要过滤掉,例如,ping
消息,则应检查字段type
,如果它等于ICMP_ECHO
,则可以使用return NF_DROP
。