1. 程式人生 > >TCP與UDP區別的深入了解(這裏只討論IPV4情況,當然,IPV6下的TCP與UDP協議部分也能適用)

TCP與UDP區別的深入了解(這裏只討論IPV4情況,當然,IPV6下的TCP與UDP協議部分也能適用)

頭部 線程鎖 重傳 發送 協議 分開 讀寫操作 實現 單向

簡單介紹

TCP: 自維持連接的數據“流”傳輸協議

UDP: 數據“報”形式的“單向”傳輸協議

區別

  1. 頭部長度的區別:
    • TCP報頭長20個字節,包括:源端口(2)、目的端口(2)、序號(4)、確認號(4)、頭長度(4乘以n)(0.5)、(空)(0.5)、各種標誌位(1)、窗口大小(2)、校驗和(2)、緊急指針(2);
    • UDP報頭長8個字節,包括:源端口(2)、目的端口(2)、UDP長度(2)、UDP校驗和(2)。
  2. TCP面向連接(有連接概念),有明顯的區分客戶端和服務端,由客戶端發起,服務端監聽;UDP沒有區分C/S端,只有發送方跟接收方的區別

  3. 收發數據上的區別:
    • 收發TCP數據前需要先建立連接(三次握手),服務端監聽,客戶端發起;斷開連接時需要(四次握手,也有兩次兩次分開握手的方式,稱之為半關閉
    • 而UDP只需要接收方有監聽本地UDP端口即可;
  4. TCP因為是“流”形式的,所以傳輸的時候不自帶數據長度;UDP則是“報文”形式的,所以要麽不會到達目的端口,要麽自動帶著報文長度到達目的端口;

  5. TCP有流量控制、擁塞控制、慢啟動(TCP為適應網絡擁堵情況的特性)、滑動窗口協議(其一是控制流量,其二是保證重傳機制),UDP沒有。

項目實現過程中的收獲:

如果不使用線程鎖之類的操作的話,並行的讀寫操作很容易發生“臟讀”或“越界寫入”問題。最低限度的改進是:將寫入與刪除的操作都盡可能在同一函數(線程)中操作。

TCP與UDP區別的深入了解(這裏只討論IPV4情況,當然,IPV6下的TCP與UDP協議部分也能適用)