【刷題】網絡:TCP與UDP

區別

  • TCP提供面向鏈接的、可靠的數據流傳輸,UDP提供的是非面向鏈接的、不可靠的數據流傳輸。
    • TCP傳送數據以前創建鏈接,傳送結束後釋放鏈接,UDP傳送數據以前不創建鏈接,收到後不給出任何確認。
    • tcp:提供可靠交付的服務(無差錯,不丟失,不重複,且按序到達)(校驗和、重傳控制、序號標識、滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還能夠對次序亂掉的分包進行順序控制。)。
    • udp:盡最大努力交付(不保證可靠交付)。
  • TCP適用於大文件,UDP適用於小文件。
  • TCP傳輸單位稱爲TCP報文段,UDP傳輸單位稱爲用戶數據報。
    • TCP面向字節流,UDP面向報文。
  • 每一條TCP鏈接只能是點對點的(一對一),UDP支持一對1、一對多、多對一和多對多的交互通訊。
    • TCP提供全雙工通訊,UDP無擁塞控制。
  • TCP注重數據安全性,傳輸慢;UDP數據傳輸快,可是其安全性卻通常。
  • TCP對應的協議和UDP對應的協議不一樣。
  • UDP無擁塞控制,適用於實時應用;
  • UDP首部開銷小,8B,TCP20B。

其餘

  • TCP的主要特色是:

面向鏈接。
每一條TCP鏈接只能是點對點的(一對一)。
提供可靠交付的服務(無差錯,不丟失,不重複,且按序到達)(校驗和、重傳控制、序號標識、滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還能夠對次序亂掉的分包進行順序控制。)。
提供全雙工通訊。
面向字節流。html

  • UDP的主要特色是:

無鏈接。
盡最大努力交付(不保證可靠交付)。
面向報文。
無擁塞控制。
支持一對1、一對多、多對一和多對多的交互通訊。
首部開銷小(只有四個字段:源端口、目的端口、長度、檢驗和)。瀏覽器

TCP對應的協議和UDP對應的協議

TCP對應的協議:

(1) FTP:定義了文件傳輸協議,使用21端口。
(2) Telnet:一種用於遠程登錄的端口,使用23端口,用戶能夠以本身的身份遠程鏈接到計算機上,可提供基於DOS模式下的通訊服務。
(3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。
(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。
(5) HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。緩存

UDP對應的協議:

(1) DNS:用於域名解析服務,將域名地址轉換爲IP地址。DNS用的是53號端口。
(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。因爲網絡設備不少,無鏈接的服務就體現出其優點。
(3) TFTP(Trivial File Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。安全

TCP如何實現可靠性傳輸?

  • 校驗,序號,確認機制、重傳機制、滑動窗口。
    • 重傳:超時和冗餘ACK

怎麼讓udp實現可靠鏈接

UDP不屬於鏈接協議,具備資源消耗少,處理速度快的優勢,因此一般音頻,視頻和普通數據在傳送時,使用UDP較多,由於即便丟失少許的包,也不會對接受結果產生較大的影響。服務器

傳輸層沒法保證數據的可靠傳輸,只能經過應用層來實現了。實現的方式能夠參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。網絡

最簡單的方式是在應用層模仿傳輸層TCP的可靠性傳輸。下面不考慮擁塞處理,可靠UDP的簡單設計。併發

一、添加seq/ack機制,確保數據發送到對端
二、添加發送和接收緩衝區,主要是用戶超時重傳。
三、添加超時重傳機制。
詳細說明:送端發送數據時,生成一個隨機seq=x,而後每一片按照數據大小分配seq。數據到達接收端後接收端放入緩存,併發送一個ack=x的包,表示對方已經收到了數據。發送端收到了ack包後,刪除緩衝區對應的數據。時間到後,定時任務檢查是否須要重傳數據。tcp

目前有以下開源程序利用udp實現了可靠的數據傳輸。分別爲RUDP、RTP、UDT。.net

參考連接

END

相關文章
相關標籤/搜索