linux Linux學習總結 套接字

2021-07-26 04:41:57 字數 1446 閱讀 2164

bsd套接字介面

l i n u x支援多種套接字型別。套接字型別,是指建立套接字的應用程式所希望的通訊服務

型別。同一協議族可能提供多種服務型別,比如t c p / i p協議族提供的虛電路與資料報就是兩

種不同的通訊服務型別, linux bsd支援如下幾種套接字型別:

• stream 提供可靠的面向連線傳輸的資料流,保證資料傳輸過程中無丟失、無損壞和無

冗餘。i n e t位址族中的t c p協議支援該套接字。

• datagram 提供資料的雙向傳輸,但不保證訊息( m e s s a g e )的準確到達,即使訊息能夠到

達,也無法保證其順序性,並可能有冗餘或損壞。i n e t位址族中的u d p協議支援該套

接字。• raw 是低於傳輸層的低階協議或物理網路提供的套接字型別,比如通過分析為乙太網

裝置所建立的r a w套接字,可看到裸i p資料流。

• reliable delivered messages 類似於d a t a g r a m套接字,但它可以保證資料的正確到達。

• sequenced packets 類似於s t r e a m套接字,但它的報文大小是可變的。

• packet 這是l i n u x對標準b s d套接字型別的擴充套件,它允許應用程式在裝置層直接訪問報

文資料。

inet的套接字層

i n e t套接字( s o c k e t )層支援包括t c p / i p協議在內的i n e t位址族( address family),如前所

述,這是一些分層協議,下層協議為上層協議提供服務。l i n u x中實現t c p / i p協議的**與數

據結構充分體現了這種協議分層。i n e t套接字層介面是通過一組i n e t位址族套接字操作實現

的,這些操作在網路初始化時被註冊到了b s d套接字層,與其他註冊的位址族一起儲存在

p o p s向量中。b s d套接字層通過呼叫註冊在inet proto_ops資料結構中的i n e t套接字層例程

來完成上述操作。在進行每一項操作時, b s d套接字層都要把代表b s d套接字的資料結構傳

給i n e t層,i n e t套接字層並非簡單地抽取b s d套接字中的特定t c p / i p資訊,而是使用自己的

s o c k資料結構,該資料結構已被鏈結到bsd socket資料結構上了,在圖1 - 8 - 5中給出了這種鏈

接,這種鏈結通過bsd socket中的d a t a (資料)指標將s o c k資料結構鏈到了bsd socket資料結構

上。這樣以來,隨後的i n e t套接字呼叫將會很容易的得到套接字資料結構。在建立套接字時,

也建立了指向套接字資料結構的協議操作的指標,這些指標與所使用的協議有關:當使用t c p時,

它們將指向與建立t c p連線有關的一組t c p協議的操作。

linux Linux學習總結 管道

在l i n u x系統中,管道用兩個指向同乙個臨時性v f s索引節點的檔案資料結構來實現。這 個臨時性的v f s索引節點指向記憶體中的乙個物理頁面。乙個例程用於寫管道,另乙個用於從管道中讀資料。從一 般讀寫普通檔案的系統呼叫的角度來看,這種實現方法隱藏了下層的差異。當寫程序執行寫 管道操作時,...

學習Linux Linux的計算

在linux裡面使用expr命令進行運算,比如 expr 1 2結果就是3,輸入命令的時候注意不同字元之間的空格。還有乘號使用的是 這裡需要轉義,不能直接expr 1 2要expr 1 2 這裡定義了2個變數。注意定義變數的時候是不要加空格的,而計算的時候是要加空格的。結果 result 30 不僅...

Linux Linux開發面試總結

1.什麼是linux linux是一套免費使用和自由傳播的類unix作業系統,是乙個基於posix和unix的多使用者 多工 支援多執行緒和多cpu的作業系統。它能執行主要的unix工具軟體 應用程式和網路協議。它支援32位和64位硬體。linux繼承了unix以網路為核心的設計思想,是乙個效能穩定...