1. 程式人生 > >《TCP/IP網路程式設計》第4章 筆記&程式碼&註釋

《TCP/IP網路程式設計》第4章 筆記&程式碼&註釋

TCP

TCP Transmission Control Protocol 傳輸控制協議,意為對資料傳輸過程的控制。

TCP/IP 協議棧

TCP/IP 協議棧分四層:

  1. 應用層
  2. TCP層/UDP層
  3. IP層
  4. 鏈路層

根據2.的TCP套接字還是UDP套接字收發資料,他們的協議棧各不相同。

鏈路層

物理連線領域標準化的結果,是最基本的領域,定義LAN、WAN、MAN等網路標準。

IP層

IP本身是面向訊息、不可靠的協議,每次傳輸資料他來選擇路徑,但並不一致,如若發生路徑錯誤,則會選擇其他路徑;若資料丟失,則無法解決。

TCP層/UDP層

TCP保證可靠的資料傳輸,他傳送資料時以IP層為基礎。

UDP則不保證資料傳輸的可靠性。

根據應用性質選擇使用TCP/UDP層。

應用層

根據程式特點性質決定伺服器和客戶端之間的資料傳輸規則。

基於TCP伺服器端/客戶端

socket() bind() listen() accept()

read()/write()  Linux

recv()/send() Windows

close()
建立套接字 分配套接字地址 等待連線請求狀態 允許連線 資料交換 斷開連線

listen()進入等待連線請求狀態

SOCKET hServerSock;
//......
listen(hServerSock, 5);//Windows

第一個引數:套接字的控制代碼。

第二個引數,等待佇列的長度,這裡的5表示最多五個連結請求進入佇列。

實現迭代伺服器/客戶端

第一章中,伺服器處理了一次客戶端的連線請求就結束了執行,listen()中第二個引數沒有多大意義。

為了多次處理,需要編寫迭代伺服器端/客戶端。

回聲(echo)服務端/客戶端

socket() bind() listen() accept()

read()/write()  Linux

recv()/send() Windows

close()
建立套接字 分配套接字地址 等待連線請求狀態(回到這裡) 允許連線 資料交換 斷開連線(回到listen()執行後狀態)

程式碼:

https://github.com/ChristmasError/TCP-IP-Network-programming/tree/master/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E5%9F%BA%E4%BA%8ETCP%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%26%E5%AE%A2%E6%88%B7%E7%AB%AF