深入理解網路技術內幕 閱讀筆記(二)

2021-07-06 05:46:33 字數 1032 閱讀 5857

核心通過不同的介面把內部資訊輸出到使用者空間。除了程式設計師用於請求特定資訊的系統呼叫(system call)外,還有三個特殊介面,而其中兩個是虛擬檔案系統:

procfs(/proc檔案系統)

這是乙個虛擬檔案系統,通常是掛在/proc允許核心以檔案的形式向使用者空間輸出內部資訊。這些檔案沒有實際存在於磁碟中,但是可以通過cat 或 more 以及》shell重定向字元予以輸入。

sysctl(/proc/sys目錄)

此介面允許使用者空間讀取或修改變數的值。從使用者空間,可以有兩種方式訪問sysctl輸出的變數,一種是sysctl系統呼叫,而另一種是procfs。

sysfs(/sys檔案系統)

sysfs以非常乾淨而有組織的方式輸出很多資訊。

此外,還有一下方式

ioctl系統呼叫

ioctl系統呼叫操作的物件是乙個檔案,通常是用於實現特殊裝置所需但標準檔案系統沒有提供的操作。也可以把socket系統呼叫返回的套接字描述符傳給ioctl而這也是網路**使用ioctl的方式。

netlink套接字

這是網路應用程式與核心通訊時最新的首選機制。

procfs與sysctl都輸出核心的內部資訊,但是procfs主要是輸出唯讀資料,而大多數sysctl資訊都是可以寫入的,但只有root能寫入。

procfs

大多數網路功能在初始化時都會在/proc中註冊乙個或多個檔案。當一位使用者讀取該檔案時,會引起核心間接執行一組核心函式,以返回某種輸出內容。網路**所註冊的檔案位於/proc/net。

proc中的目錄可以有proc_mkdir建立,/proc/net中的檔案可以使用proc_net_fops_create和proc_net_remove予以註冊和除名。

sysctl:目錄/proc/sys

使用者在/proc/sys下看到的乙個檔案,實際上是乙個核心變數。

《深入理解Linux網路技術內幕》閱讀筆記(二十)

858 static int netlink sendskb struct sock sk,struct sk buff skb 859 個人結論 如上圖所示,若命令為ip address add 則是由函式ipaddr modify處理。ip over ip,也稱為ip隧道或ipip,就是傳輸在其...

深入理解網路技術內幕 閱讀筆記(一)

第一章 簡介 記憶體快取 核心分別使用kmalloc和kfree函式分配和釋放乙個記憶體塊。當分配和 經常發生時,相關的核心組建初始化函式通常會分配一塊特殊的記憶體快取,以作分配之用。當乙個記憶體塊被釋放時,實際上是返回到當初被分配的同乙個緩衝區中。核心維護的其專屬記憶體快取的一些網路資料結構的例子...

《深入理解Linux網路技術內幕》閱讀筆記(五)

通過中斷,nic能夠告知其驅動程式幾種不同的事情,包括 1.接收一幀。2.傳輸失敗。3.dma傳輸已成功完成。給定乙個幀傳輸,當幀上載至nic的記憶體準備在此媒介上傳輸時,驅動程式就會將持有該幀的緩衝區釋放掉。使用同步傳輸時 無dma 當該幀已上傳至nic,驅動程式就會立刻知道。但使用dma時,也就...