從L2層抓包的兩個問題

2021-05-26 03:23:29 字數 662 閱讀 9689

1. 無法指定具體網絡卡介面

1) 從核心看,socket(pf_packet,..,..)函式不提供對網絡卡(eth0/eth1)介面的篩選,但是可以對具體l3層

協議進行篩選列如socket(pf_packet,...,eth_p_all) 抓所有l2層ether packet,

而socket(pf_packet,...,eth_p_ip)則只抓取ip協議的包

2) 從libpcap庫看,libpcap採用了乙個變通的方法: 先抓取所有網絡卡介面上的ether packet,

通過ioctl將介面名(列如eth0)換算成網絡卡id號,再從抓取的包附帶的id號來判斷此包是否為所對應的

網絡卡介面, 不是就在使用者層丟掉。

(socket(pf_packet,..,..)-->ioctl(..,siocgifindex,...)-->recvfrom-->判斷)

2.無法真正抓取到包

這裡 無論是socket(pf_packet)介面還是libpcap庫所抓取的都是包的複製體,即此包仍然會發給正常的

網路棧處理。從核心網路棧**: netif_receive_skb函式可以看出,packet協議和ip等協議處理函式都是

在乙個迴圈內被呼叫,相互之間沒有優先順序

雖然可以通過netfilter的介面達到實際抓包效果,但此介面已經在l3層了

給定兩個已排序的表l1和l2 歸併排序簡介

3.參考文獻 最近在做題的時候接觸到求逆序數的這一類題目,比如51nod 2134 逆序對個數1000,我參考了網上的一些題解,發現大家普遍用歸併排序來解決這一類問題,於是我想要學習一下歸併排序的具體實現。我從 演算法學習與應用從入門到精通 1 中摘錄了歸併排序這一部分的內容,形成了這篇筆記。在使用...

100層摔兩個雞蛋的問題

這是一道動態規劃的題目。參考兩個鏈結,可以理解解法。1.2.在 1 中,把100層摔雞蛋問題,化成動態規劃理解 f a,b 表示現在有a個雞蛋,可以允許測試b次,那麼可以被測出來的層數是多少。譬如,f a,b 100。我不知道哪一層是臨界層,也不知道怎麼分段去測,但是我肯定如果有100層,我通過a個...

兩個關於Struts2的問題

又好久沒有寫點東西了,這兩天帶實驗,有幾個問題彙總一下吧 1 關於struts2中filterdispatcher過濾的問題,官方提供的過濾方式是 其實預設過濾的是 action,這個大家可以在struts2核心類庫中的default.properties struts2 core 2.0.11.j...