首頁  >  文章  >  運維  >  linux的協定棧是什麼東西

linux的協定棧是什麼東西

WBOY
WBOY原創
2022-07-13 16:05:532200瀏覽

在linux中,協定堆疊是電腦網路協定套件的一個具體的軟體實現,是網路中各層協定的總和;協定套件中的一個協定通常是只為一個目的而設計的,這樣可以使得設計更容易,協定棧反映了一個網路中檔案傳輸的過程。

linux的協定棧是什麼東西

本教學操作環境:linux7.3系統、Dell G3電腦。

linux的協定堆疊是什麼東西

協定堆疊(英文:Protocol stack),又稱協定堆疊,是電腦網路協定套件的一個具體的軟體實作。協議套件中的一個協議通常是只為一個目的而設計的,這可以使得設計更容易。因為每個協定模組通常都要和上下兩個其他協定模組通信,它們通常可以想像成是協定棧中的層。最低級的協定總是描述與硬體的物理交互作用。每個高階的層次增加更多的特性。用戶應用程式只是處理最上層的協定。

解釋:網路中各層協定的總和,反映了一個網路中檔案傳輸的過程

#linux儲存協定堆疊簡介:

linux的協定棧是什麼東西

資料流程:
應用程式透過系統呼叫發出一個寫入請求,最終的目的是要把資料寫到磁碟上,

  1. 檔案系統來負責定位這個寫請求的位置並將其轉換成塊設備需要的塊,然後把這個請求發送到設備上。
  2. 內存在這個過程中扮演了一個磁碟快取的角色,把上下兩個部分隔離成異步運行的兩個過程,對上半部來說,讓資料一直留在記憶體中是最好的方式,因為沒有辦法預料到之後還會不會修改,如果需要對同一個位置頻繁地進行修改,則與磁碟進行不斷的資料同步是沒有必要的。至於下半部分,資料從頁面快取(Page Cache)同步到磁碟上,發出的請求被包裝成一個request,一個request包含一組bio,每個bio包含需要同步的資料頁。

應用層

應用程式透過系統呼叫存取檔案。例如open呼叫

系統呼叫

使用者應用程式存取並使用核心所提供的各種服務的途徑即是系統呼叫。
核心提供了一組系統呼叫接口,透過這組接口應用程式可以存取系統硬體及作業系統資源。
應用程式呼叫系統呼叫介面->核心->操作硬體->返回核心->應用程式
與儲存系統相關的主要是read、write、open
“mmap()將檔案(由檔案句柄fd所指定)從偏移offset的位置開始的長度為length的一個區塊映射到記憶體區域中,從而將檔案的某一段映射到進程的位址空間,這樣程式就可以透過存取內存的方式去存取檔案了。」
「典型的例子就是利用/dev/mem可以將一些MMU能存取的實體位址對應為應用程式層虛擬位址,從而可以在應用程式層直接存取某些實體位址,實現一些簡單的驅動開發。」

虛擬檔案系統

透過使用一組通用API,linux可以在多種裝置支援多種檔案系統。
檔案系統是一種對儲存裝置上的文件,數據,進行儲存與組織的機制。
linux支援是多種檔案系統

「虛擬檔案系統透過在各種特定的檔案系統上建立一個抽象層,屏蔽了不同檔案系統間的差異,透過虛擬檔案系統分層架構),我們在對文件進行操作時,便不需要去關心相關文件所在的具體文件系統細節。」
「正是虛擬文件系統使得這種跨越不同存儲設備和不同文件系統的操作成為了可能」
VFS所提供的常用API有:

mount(), umount() …
 open(),close() …
 mkdir() …

檔案系統

檔案系統這一層相信大家都再熟悉不過了,目前大多Linux發行版本預設使用的檔案系統一般是ext4,另外,新一代的btrfs也呼之欲出,不管什麼樣的檔案系統,都是由一系列的mkfs.xxx指令來創建,如:

mkfs.ext4 /dev/sda
mkfs.btrfs /dev/sdb

核心所支援的檔案系統類型,可以透過核心目錄樹fs 目錄中的內容來檢視。

通用區塊設備層

這一層的作用,不同的硬碟驅動,會提供不同的IO接口,核心認為這種雜亂的接口,不利於管理,需要把這些接口抽像一下,形成一個統一的對外接口,這樣,不管你是什麼硬碟,什麼驅動,對外而言,它們所提供的IO接口沒什麼區別,都一視同仁的被看作塊設備來處理。

所以,如果在一層做的任何修改,將會直接影響到所有檔案系統,不管是ext3,ext4還是其它檔案系統,只要在這一層次做了某種修改,對它們都會產生影響。

硬碟機

常見的硬碟類型有PATA, SATA和AHCI等,在Linux系統中,對不同硬碟所提供的驅動模組一般都存放在內核目錄樹drivers /ata中,而對於一般通用的硬碟驅動,也許會直接被編譯到核心中,而不會以模組的方式出現,可以透過檢視/boot/config-xxx.xxx檔來確認。

推薦學習:Linux影片教學

#

以上是linux的協定棧是什麼東西的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn