unp筆記一 網絡編程基礎

這幾天一直看不下書啊,也沒有學習的動力,閒着無聊,還是總結下unp前面幾章的知識。

1、簡介

PDU:協議數據單元,在網絡各層中交換的信息單元就叫PDU。例如TCP層的PDU就是tcp分節。


應用層實體之間交換的PDU爲應用數據。

對TCP應用進程來說,交換的是沒有長度限制的單個雙向字節流。TCP層會自己把收到的字節流(從應用層收到的)進行分割,這功能由TCP自己實現。

對UDP應用進程來說,交換的是其長度不超過UDP發送緩衝區大小的單個記錄。UDP層有多少就收多少。


Stevens很注意錯誤處理,這是個優點!!!


UNIX errno值,一般來說,系統調用出錯,在返回出錯值得同時會置errno的值,所以通過查看errno的值可以確定具體錯誤。


可以直接使用IP層、數據鏈路層進行應用編程。


標準的統一 :POSIX與開放團體組織走向一起。乾脆就叫POSIX標準。


2、TCP、UDP

SCTP就先不管了


TCP是字節流協議,沒有任何記錄邊界!!!沒有記錄邊界!

TCP終止連接的TIME_WAIT狀態。


3、套接字編程簡介

地址結構

值結果參數 內核到用戶進程

字節序


4、基本TCP套接字編程

各個函數的瞭解


socket:返回描述符,它具有和其他UNIX描述符一樣的特性。進程調用socket,內核會創建一個相應的數據結構,即在進程表表項的一個數組的下標。(有點繞口,書上這麼說的)file結構、socket結構和inpcb結構是一起分配和連接起來。

connect:調用connect指的是連接到某某地址去吧。如果調用前沒有綁定地址,內核會自己確定源IP和源端口。如果是TCP的話,激發三次握手過程。如果是UDP,會記錄外部地址。

bind:

listen:是非阻塞函數,執行成功就返回0,成功並不是指有連接來,而是開始監聽,所以該函數是非阻塞的。

accept:返回內核自動生成的全新套接字,如果已連接的隊列爲空,則進程投入睡眠(假定套接字爲默認的阻塞方式)。






發佈了31 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章