TCP和UDP之面試

UDP的優勢:

  1. 應用層能更好發控制要發送的數據和發送時間。因爲UDP只提供最簡單、服務最少的服務,所以當網絡應用進程有數據傳遞給UDP時,UDP馬上就會將此數據打包成UDP報文段,並把它交付給網絡層,從而把數據發送出去。
  2. 無需連接建立,不會引入建立連接的時延,而TCP在開始數據傳輸之前要經過三次握手。
  3. 無連接狀態,因此,使用UDP的服務器能支持更多的活動客戶機。
  4. 分組首部開銷小,其首部字段少,只有8個字節,而TCP的首部有20個字節。

UDP實現可靠傳輸:
UDP它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因爲它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。
傳輸層無法保證數據的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
實現確認機制、重傳機制、窗口確認機制。
如果你不利用linux協議棧以及上層socket機制,自己通過抓包和發包的方式去實現可靠性傳輸,那麼必須實現如下功能:
發送:包的分片、包確認、包的重發
接收:包的調序、包的序號確認
目前有如下開源程序利用udp實現了可靠的數據傳輸。分別爲RUDPRTPUDT


應用層 能否將數據直接交付給網絡層,而不經過運輸層:
肯定不能!網絡層的IP協議,傳輸的數據單元的IP數據報,網絡層實現的是主機之間的通信,而我們實際實現的是主機間應用進程的通信(主機裏有多個應用進程),而運輸層就是實現應用之間的通信。

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