tcpdump歷史
這些抓包技術名詞,你分清楚了嗎?
首先,我幫你捋一下這些技術的來龍去脈甚至“八卦”,這樣你在進入後面課程的具體技術學習時,就會多幾分親近感,
也多幾分底氣了。
tcpdump
我們先來認識大名鼎鼎的 tcpdump。1988 年,勞倫斯伯克利國家實驗室的四位工程師編寫出了 tcpdump 這個殿堂級的工具。
這個實驗室呢,也很值得我們尊敬。這裡湧現過13 位諾貝爾獎獲得者,其中包括 1997 年獲得物理學獎的華人巨匠朱棣文,
可見這是多麼耀眼的一塊科學聖地。 這個地方能做出開創性的技術,確實一點都不令人意外。
tcpdump 可以工作在各種 Unix 類的作業系統上,包括 Linux、FreeBSD、macOS、Solaris 等,
也是目前使用最為廣泛的 抓包工具之一。 但是 tcpdump 要過濾報文的話,還要依賴一個底層能力:BPF。
BPF
BPF 全稱是 Berkeley Packet Filter(也叫 BSD Packet Filter),它是 tcpdump 等抓包 工具的底層基礎。
在 BPF 出現之前,雖然各家作業系統都有自己的抓包工具,但也都有這 樣或那樣的不足。
比如,有些系統把所有網路報文一股腦兒塞給使用者空間程式,開銷非常大;而有些系統雖然有報文過濾功能,
但是工作很不穩定。 為了解決這些問題,1992 年,也還是在勞倫斯伯克利國家實驗室,
當初 tcpdump 的兩個 作者史蒂文·麥克凱恩(Steven McCanne)和範·雅各布森(Van Jacobson)發表了關於 BPF 論文,
它以一種新的基於暫存器的虛擬機器方式,實現了高效穩定的報文過濾功能。從此以後,
抓包技術這棵大樹有了一個甚為強大的根基,而構建在 BPF 之上的 libpcap、tcpdump 等不斷枝繁葉茂,
進一步使得抓包工作變得方便、穩定,我們這些凡夫俗子才好在這棵大樹底下,下棋乘涼。
libpcap
BPF 實現了抓包虛擬機器,但它是如何被使用者空間程式使用的呢?於是,libpcap 出現了,
它提供了 API 給使用者空間程式(包括 tcpdump、Wireshark 等),使得後者能方便地調 用 BPF 實現抓包過濾等功能。
也就是說,libpcap 是 BPF 的一層 API 封裝。 那麼到目前為止,我們應該就能明白 tcpdump 是怎麼工作的了:
tcpdump 呼叫了 libpcap 介面,後者呼叫 BPF 實現了報文過濾和抓取。我們來看一下示意圖:
WinPcap
Windows 上也可以做到類似 Linux 這樣的抓包,其底層就是依賴 WinPcap,它是 libpcap 的 Windows 版本。
微軟很早就支援了圖形介面抓包工具,從 Windows NT 時代 開始,
人們就可以用 Network Monitor 這個工具在 Windows 平臺上進行網路排查。
十多年前,我還在做 Windows 工程師時,也時常用到這個工具。算起來,我跟抓包工具結 緣也有不少年頭了。
eBPF
Linux 從 3.18 版本開始支援 extended BPF,簡稱 eBPF。這是一個更加通用的核心接 口,不僅能支援網路抓包,
還能支援網路以外的核心觀測點的資訊收集等工作。所以事實 上,eBPF 已經是一個通用工具,
而不再侷限在網路工具這個角色定位上了。同時,也因為它在資料面上的效能很出色,所以現在不少公司正在探索,
利用它實現一些 資料面的開發工作,比如高效能的負載均衡。相信不久的將來,
我們就能看到越來越多的 eBPF 的應用案例了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2917284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS歷史(iOS系統發展歷史)iOS
- 容器歷史
- 歷史背景
- OAuth歷史OAuth
- HTTP的歷史HTTP
- 澳門歷史
- [oracle] 查詢歷史會話、歷史執行計劃Oracle會話
- 光榮策略遊戲的歷史及未來——歷史篇遊戲
- tcpdumpTCP
- 騰訊的歷史
- 計算機歷史計算機
- 回顧 Firefox 歷史Firefox
- 微信的歷史
- 14.3 瀏覽歷史
- SDRAM簡要歷史
- Linux發展歷史Linux
- 中國歷史(2)明朝276年曆史
- 中國歷史(5)唐朝289年曆史
- 中國歷史(4)宋朝319年曆史
- 中國歷史(3)元朝98年曆史
- 中國歷史(6)唐朝289年曆史
- mysql架構和歷史MySql架構
- Git基本命令 -- 歷史Git
- 朝鮮半島歷史
- 用遊戲學歷史遊戲
- 歷史精選文章合集
- Kubernetes 發行版本歷史
- TcxMRUEdit 最近歷史記錄
- git檢視提交歷史Git
- 如何修剪git reflog歷史Git
- tcpdump命令TCP
- 還原歷史?這恰恰是歷史策略遊戲中最難做到的遊戲
- Dynamics CRM 在表單上顯示更改歷史記錄(稽核歷史記錄)
- git log提交歷史詳解Git
- Entity Framework版本歷史概覽Framework
- Oracle檢視歷史TOP SQLOracleSQL
- Flowable查詢歷史任務
- 信用卡的歷史起源