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
。