套接字網絡編程基礎(三)

傳輸層(Transport Layer)是OSI中最重要, 最關鍵的一層,是唯一負責總體的數據傳輸和數據控制一層.傳輸層提供端到端的交換數據的機制.傳輸層對會話層等高三層提供可靠的傳輸服務,對網絡層提供可靠的目的地站點信息。傳輸層中面向連接的協議爲TCP,無連接的協議爲UDP
#面向連接的套接字編程
面向連接的服務是電話系統服務模式的抽象,即每一次完整的數據傳輸都要經過建立連接、使用連接和終止連接的過程。在數據傳輸的過程中,各數據分組不攜帶目的地址,而使用連接號(Connect ID)。本質上,連接是一個管道,收發數據不但順序一致,而且內容相同
##TCP協議
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793定義。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能

面向連接意味着兩個使用TCP的應用(通常是一個客戶和一個服務器)在彼此交換數據包之前必須先建立一個TCP連接。這一過程與打電話很相似,先撥號振鈴,等待對方摘機說“喂”,然後才說明是誰。在一個TCP連接中,僅有兩方進行彼此通信

##套接字工作過程

一個完整的通信過程歷經建立連接、發送/接收數據和釋放連接3個階段:

建立連接的過程按照TCP三次握手的規範進行;
發送/接收數據階段稱爲客戶機與服務器的會話期,會話內容遵守應用程序協議規則;
釋放連接。

網絡進程間面向連接的通信方式基於TCP,因而必須藉助流式套接字來編程,應用程序分爲服務器和客戶端,雙方是不對稱的,需要分別編制

這裏寫圖片描述

###服務器端

  1. 創建監聽套接字:爲通信做第一步,該套接字爲服務器監聽客戶機連接請求的,不進行數據交換
  2. 綁定監聽套接字:將套接字與IP地址、傳輸層端口號聯繫在一起
  3. 啓動監聽:規定監聽套接字請求隊列長度,進入監聽狀態
  4. 接受客戶機連接請求:創建新的連接套接字,進行數據交換
  5. 關閉套接字

###客戶機端

  1. 創建套接字:操作系統自動綁定ip和端口號
  2. 請求連接
  3. 數據傳輸
  4. 關閉套接字

#無連接的套接字編程
無連接服務是郵政系統服務的抽象,每個分組都攜帶完整的目的地址,各分組在系統中獨立傳送。無連接服務不能保證分組到達的先後順序,不進行分組出錯的恢復與重傳,不保證傳輸的可靠性。無連接協議在通信前,不需要建立連接,也不管接收端是否正在準備接收

##UDP協議

UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規範

UDP提供了無連接通信,且不對傳送數據包進行可靠性保證,適合於一次傳輸少量數據,UDP傳輸的可靠性由應用層負責
##套接字工作過程

使用無連接的數據報套接字開發網絡應用程序,既可以採用對等模式,也可以採用C/S模式
###對等模式
這裏寫圖片描述
###C/S模式
這裏寫圖片描述

//以上內容大部分摘自《網絡編程實用教程(第三版)》 編者 段利國 劉金江 倪天偉 葉樹華
//侵權必刪
//僅供參考
//windows網絡編程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章