共計 1714 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇“linux sock 文件指的是什么”文章的知識點大部分人都不太理解,所以丸趣 TV 小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“linux sock 文件指的是什么”文章吧。
linux sock 文件是指通過 shell 編程后形成的套接口文件;socket 是應用層與 TCP/IP 協議族通信的中間軟件抽象層,它是一組接口;在設計模式中,Socket 其實就是一個門面模式,它把復雜的 TCP/IP 協議族隱藏在 Socket 接口后面。
linux sock 文件是什么意思?
linux 中 sock,它一般是指通過 shell 編程后形成的套接口文件,通過 ls -l 后,第一個顯示的文件類型為:s。
Socket 是什么?
1、socket 套接字:
socket 起源于 Unix,而 Unix/Linux 基本哲學之一就是“一切皆文件”,都可以用“打開 open – 讀寫 write/read – 關閉 close”模式來操作。Socket 就是該模式的一個實現,socket 即是一種特殊的文件,一些 socket 函數就是對其進行的操作(讀 / 寫 IO、打開、關閉).
說白了 Socket 是應用層與 TCP/IP 協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket 其實就是一個門面模式,它把復雜的 TCP/IP 協議族隱藏在 Socket 接口后面,對用戶來說,一組簡單的接口就是全部,讓 Socket 去組織數據,以符合指定的協議。
注意:其實 socket 也沒有層的概念,它只是一個 facade 設計模式的應用,讓編程變的更簡單。是一個軟件抽象層。在網絡編程中,我們大量用的都是通過 socket 實現的。
2、套接字描述符
其實就是一個整數,我們最熟悉的句柄是 0、1、2 三個,0 是標準輸入,1 是標準輸出,2 是標準錯誤輸出。0、1、2 是整數表示的,對應的 FILE * 結構的表示就是 stdin、stdout、stderr
套接字 API 最初是作為 UNIX 操作系統的一部分而開發的,所以套接字 API 與系統的其他 I / O 設備集成在一起。特別是,當應用程序要為因特網通信而創建一個套接字(socket)時,操作系統就返回一個小整數作為描述符(descriptor)來標識這個套接字。然后,應用程序以該描述符作為傳遞參數,通過調用函數來完成某種操作(例如通過網絡傳送數據或接收輸入的數據)。
在許多操作系統中,套接字描述符和其他 I / O 描述符是集成在一起的,所以應用程序可以對文件進行套接字 I / O 或 I / O 讀 / 寫操作。
當應用程序要創建一個套接字時,操作系統就返回一個小整數作為描述符,應用程序則使用這個描述符來引用該套接字需要 I / O 請求的應用程序請求操作系統打開一個文件。操作系統就創建一個文件描述符提供給應用程序訪問文件。從應用程序的角度看,文件描述符是一個整數,應用程序可以用它來讀寫文件。下圖顯示,操作系統如何把文件描述符實現為一個指針數組,這些指針指向內部數據結構。
對于每個程序系統都有一張單獨的表。精確地講,系統為每個運行的進程維護一張單獨的文件描述符表。當進程打開一個文件時,系統把一個指向此文件內部數據結構的指針寫入文件描述符表,并把該表的索引值返回給調用者。應用程序只需記住這個描述符,并在以后操作該文件時使用它。操作系統把該描述符作為索引訪問進程描述符表,通過指針找到保存該文件所有的信息的數據結構。
針對套接字的系統數據結構:
1)、套接字 API 里有個函數 socket,它就是用來創建一個套接字。套接字設計的總體思路是,單個系統調用就可以創建任何套接字,因為套接字是相當籠統的。一旦套接字創建后,應用程序還需要調用其他函數來指定具體細節。例如調用 socket 將創建一個新的描述符條目:
2)、雖然套接字的內部數據結構包含很多字段,但是系統創建套接字后,大多數字字段沒有填寫。應用程序創建套接字后在該套接字可以使用之前,必須調用其他的過程來填充這些字段。
以上就是關于“linux sock 文件指的是什么”這篇文章的內容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注丸趣 TV 行業資訊頻道。