linux 內核 網絡協議棧的源碼剖析之網絡分層模型

Linux 網絡分層模型

我們知道linux 內核有一套完整的網絡協議棧的代碼,它的設計非常的巧妙,我們在軟件開發的項目中,起初是框架的設計,在設計當中,儘可能使模塊之間的接口保持乾淨,就是說盡量降低耦合性,linux 內核網絡協議棧的設計就是耦合性降到了最低,組織的非常好。

Linux 網絡協議棧的設計與OSI 分層模型大體一致,分層模型就極大的保證了耦合性非常低,如下圖所示,是linux 的分層模型:

linux 內核 網絡協議棧的源碼剖析之網絡分層模型

分層模型

鏈路層提供了設備驅動程序,也就是網卡的驅動相關的程序,設備驅動用來支持物理層的設備。

物理層就是傳輸數據的介質,一般用的最多的就是以太網。

網絡層是向上面傳輸層提供數據,或者從傳輸層接收數據的一個模塊,網絡層最主要處理的報文就是IP報文。

傳輸層大家應該非常不陌生了,它主要為應用層提供數據,以及從應用層接收數據的模塊,它主要處理 TCP 和 UDP 報文,這層的業務比較複雜,可以說是整個協議棧最複雜的模塊之一。

應用層負責處理應用層數據,例如:HTTP、FTP、SMTP、HTTPS等。

Linux 網絡架構

下圖顯示了linux 網絡協議棧的架構,我們可以看出linux是遵循OSI模型進行的架構設計,最上面的為應用層,工作在用戶空間,中間的部分就是我們即將要講的工作在內核空間的網絡協議棧,網絡協議棧中,是靠套接口緩存區進行的數據傳遞,也就是我們常說的skb,有關skb的結構,我會下篇文章詳細述說,網絡協議棧的頂部是系統調用的實現,它是用戶態與內核態傳輸數據的一個模塊,系統調用的下面是套接口層,我們管它叫協議無關層,它提供了一種通用的方法來使用傳輸層,這種通用的設計方法我們可以學一學,這在我們以後的項目中會用到,傳輸層就是具體的協議的實現了,包括TCP和UDP,鄰居子系統主要的作用就是獲取下一跳的mac地址,主要的協議是arp。

linux 內核 網絡協議棧的源碼剖析之網絡分層模型

linux網絡分層架構

上面大體講述了linux網絡協議棧的分層架構,可見,linux 網絡協議棧的代碼非常的龐大,我會花大量的時間去寫相關的內容,也會一層一層的剖析linux內核源代碼,請大家進行關注我,我會更加的有信心的去做這件事情,謝謝。

請大家關注我哦

linux 內核 網絡協議棧的源碼剖析之網絡分層模型

linux


分享到:


相關文章: