網絡棧總體架構
總體結構
網絡棧指的是為了進行網絡數據包的收發,由內核實現的一套函數集合。網絡棧安裝預先設置的一套規則對用戶數據進行封裝從而達到網絡上主機之間數據交換的目的。
最初按照這種分層設計的思想,網絡棧被分為了4層,從上到下依次為應用層、傳輸層、網絡層、鏈路層,而且在每個層次都定義了數據的封裝方式,隨著網絡協議的發展,四層分層架構滿足不了新的需求,OSI七層網絡棧出現,在原先的應用層進行了更細致的劃分,將應用層劃為:應用層、表示層、會話層。
以OSI七層模式為依據,學習Linux1.2內核網絡棧實現中的文件對應關系:
應用層:
該層定義了一套用戶調用接口函數,即socket套接字接口函數,如socket、bind、accept等,這套接口函數由Linux操作系統的glicbc庫提供,網絡棧實現不涉及這套函數。
表示層、會話層:
相應的功能實現對于BSD Socket或INET Socket層。
傳輸層:
如常見的TCP、UDP協議,對于傳輸層的實現集中在TCP協議和UDP協議上
該層涉及的文件主要有:tcp.c udp.c igmp.c snmp.h
網絡層:
數據包路由功能實現在網絡層,這一層也是IP協議所在的層次,RAW套接字也劃分在這一層,用戶必須自己創建IP首部和傳輸層協議首部。
該層涉及的文件主要有:ip.c route.c ip_fw.c raw.c packet.c
鏈路層:
鏈路層實現是作為網絡棧與底層硬件驅動的一個接口層存在的。
該層涉及的文件主要有:dev.c p8022.c panap.c p8023.c eth.c arp.c
“驅動層”:
OSI七層模式沒有這一層,將驅動層序所在層次定義為“驅動層”,該層與鏈路層進行交互,完成數據包的收發公工作。
該層涉及的文件定義在dricers子目錄下的一些網絡設備的驅動程序。
物理層:
網絡棧實現不涉及物理層
Linux網絡棧層次命名
網絡棧分層如下:BSD socket層、INET層、傳輸層(L4)、網絡層(L3)、鏈路層(L2)
-
Linux
+關注
關注
87文章
11229瀏覽量
208927 -
網絡
+關注
關注
14文章
7517瀏覽量
88628
發布評論請先 登錄
相關推薦
評論