1. 程式人生 > >對TCP與UDP區別的深入瞭解

對TCP與UDP區別的深入瞭解

最近在做一款可靠UDP傳輸Client-Server軟體。通過多本書籍和網路文章的學習,加深了對UDP和TCP傳輸協議的認識。

簡單介紹

TCP: 自維持連線的資料“流”傳輸協議

UDP: 資料“報”形式的“單向”傳輸協議

表面上的區別

  1. 資料報頭部的長度(當然包括內容了);

  2. 傳送TCP報文需要先建立連線(三次握手),不使用後需要斷開連線(四次握手);而UDP完全不需要,只是要對面有監聽UDP埠就可以了;

  3. TCP因為是“流”形式的,所以傳輸的時候不自帶內容長度;UDP則是“報文”形式的,所以要麼不會到達目的埠,要麼自動帶著報文長度到達目的埠。

根本形成區別的原因

  1. 慢啟動(TCP為適應網路擁堵情況的特性)

  2. 滑動視窗協議(其一是控制流量,其二是保證重傳機制)

專案實現過程中的收穫:

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