物理層主要提供各種連接的物理設備,如各種網卡,串口等;鏈路層主要指用于提供各種接口卡以訪問物理層的驅動程序,如網卡驅動程序;該角色負責將網絡數據包傳輸到正確的位置。
最重要的網絡層協議當然是IP協議。
事實上,在網絡層還有其他協議,如ICMP,ARP,RARP等,但與IP不同。
人們熟悉;傳輸層的作用主要是提供端到端,要說它是應用程序之間提供通信,最著名的傳輸層協議是非TCP和UDP端協議;顧名思義,應用層當然是“人機界面”。
應用程序提供的層語義解釋傳輸的數據,如HTTP,SMTP,FTP等。
實際上,應用層不是人們最終看到的層,頂層應該是“解釋層”層,負責以各種形式向人們展示數據。
Linux的網絡架構可以從上到下分為三層,即:用戶空間的應用層。
內核空間的網絡協議棧層。
物理硬件層。
其中最重要的核心當然是內核空間的協議棧層。
Linux的整個網絡協議棧是使用Linux內核構建的。
整個堆棧也嚴格按照分層的想法設計。
整個堆棧分為五層,它們是:系統調用接口層本質上是用戶空間應用程序的接口調用庫,使用網絡服務為用戶空間應用程序提供接口。
2.與協議無關的接口層是SOCKET層。
該層的目的是屏蔽在系統調用層和系統調用層之間使用的底層不同協議(更準確地說,TCP和UDP,當然還有RAW IP,SCTP等)。
界面可以簡單統一。
簡單地說,無論我們在應用層使用什么協議,我們都必須通過系統調用接口建立一個SOCKET。
這個SOCKET實際上是一個巨大的襪子結構,它與下一層的網絡協議層相關聯,屏蔽了不同的網絡。
協議的差異,只有數據部分呈現給應用層(通過系統調用接口呈現)。
3.網絡協議實現層,毫無疑問,這是整個協議棧的核心。
該層主要實現各種網絡協議,其中最重要的是IP,ICMP,ARP,RARP,TCP,UDP等。
該層包含了很多設計技術和算法,相當不錯。
4.驅動程序接口層獨立于特定設備。
該層的目的主要是統一不同接口卡的驅動程序和網絡協議層之間的接口。
它將各種驅動程序的功能抽象為幾個特殊操作。
如open,close,init等,這一層可以屏蔽底層不同的驅動程序。
5.驅動層,這層的目的很簡單,就是與硬件建立接口層。
可以看出,Linux網絡協議棧是一種嚴格的分層結構,其中每層執行相對獨立的功能,結構非常清晰。
兩個人的設計“不在乎”。
層很好,并且協議棧可以通過這兩個“不關心”而容易地擴展。
層。
這種設計方法可以在我們自己的軟件設計中吸收。