1. 程式人生 > >計算機網路第三彈——TCP協議如何保證傳輸的可靠性 TCP和UDP的區別 TCP和UDP分別對應的常見應用層協議

計算機網路第三彈——TCP協議如何保證傳輸的可靠性 TCP和UDP的區別 TCP和UDP分別對應的常見應用層協議

TCP提供面向連線的、可靠的位元組流服務。面向連線意味著客戶端和伺服器在彼此交換資料之前必須先建立一個TCP連線;位元組流服務意味著兩個應用程式通過TCP連線交換8bit位元組構成的位元組流,TCP不存在位元組流中插入記錄識別符號。
TCP的可靠性應該是對於UDP不可靠傳輸來說的,因為UDP提供的是不可靠的資料報服務,不保證資料報能到達接收端,可能會有丟失,處於傳輸層之下的IP層也不可靠的,僅提供盡力的端到端資料傳輸服務,UDP在IP層上並未採取其他措施保證資料傳輸的可靠性,所以TCP得可靠性是基於不可靠的IP層在傳輸層增加措施以提供可靠的資料傳輸服務,主要是指傳輸資料不會損壞或丟失,而且所有資料都是按照發送順序進行傳送。

對於可靠性,TCP通過如下方式進行保證:

  • 資料包校驗:目的是檢測資料在傳輸過程中的任何變化,若校驗包出錯,則丟棄報文不給出響應,這時TCP傳送資料端超時後會重發資料。
  • 超時重發:當TCP發出一個段之後,啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。
  • 對失序資料包重排序:TCP報文段作為IP資料報來傳輸,而IP資料報的到達可能會失序,因此TCP報文段的到達也可能會失序。TCP將對失序資料進行重新排序,然後才交給應用層。
  • 丟棄重複資料:將丟棄重複資料。
  • 應答機制:當TCP收到來自另一端的資料,它將傳送一個確認。
  • 流量控制:TCP連線的每一方都有固定大小的緩衝空間。TCP接收端只允許另一端傳送接收端緩衝區所能接納的資料,這可以防止較快主機致使較慢主機的緩衝區溢位,這就是流量控制。TCP使用的流量控制協議是可變大小的滑動視窗協議。

使用更簡潔的說法就是:

  • 校驗和:檢驗資料是否損壞
  • 定時器:分組丟失則重傳
  • 序號:用於檢測丟失的分組和冗餘的分組
  • 確認:接收方告知傳送方正確接收分組已經期望的下一個分組;否定確認:接收方通知傳送方未被正確接收的分組
  • 視窗和流水線:用於增加通道的吞吐量

TCP和UDP的區別:

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議,他們之間的區別包括:

  • 是否連線:TCP是面向連線的,UDP是無連線的,TCP的傳送發要確認接收方是否收到資料段(3次握手協議)
  • 傳輸可靠性:TCP是可靠的,UDP是不可靠的;TCP在資料包接收無序、丟失或在交付期間被破壞時,負責資料恢復,它通過為每個資料報提供一個序號來完成此恢復,為確保正確收到資料,TCP要求目標計算機成功收到資料時發回一個確認(即ACK),如果在某個時限內未收到相應的ACK,將重新傳送資料包。如果網路擁塞,這種重新傳送將導致傳送的資料包重複,但是接收計算機可使用資料包的序號來確定它是否為重複資料包,並在必要時丟棄它。UDP協議不能保證資料準確無誤的到達目的地,並不是說UDP就完全無法知道是否發生了錯誤,一個16位的UDP包包含了一個位元組長的頭部和資料的長度,校驗碼域使其可以進行整體校驗,如:多媒體資料流,不產生任何額外的資料,即使知道有破壞的包也不進行重發
  • TCP只支援點對點通訊,UDP支援一對一、一對多、多對一、多對多的通訊模式
  • TCP是面向位元組流的,UDP是面向報文的(流模式和資料報模式)
  • TCP擁有擁塞控制機制,UDP沒有擁塞控制,適合媒體通訊
  • TCP要求系統資源較多,UDP較少
  • TCP首部開銷(20個位元組)比UDP的首部開銷(8個位元組)要大,TCP傳送資料段的時候要給段標號,UDP協議不用

當資料傳輸的效能必須讓位於資料傳輸的完整性、可控制性和可靠性時,TCP是更好地選擇;反之,當強調傳輸效能而不是傳輸的完整性時,如:音訊和多媒體應用,UDP是最好的選擇。

TCP和UDP分別對應的常見應用層協議:

1.TCP對應的應用層協議:

  • FTP:定義了檔案傳輸協議,使用21埠。下載檔案,上傳主頁都是用到FTP服務。
  • SMTP:定義了簡單郵件傳送協議,用於傳送郵件,使用的是25埠。
  • HTTP:從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。
  • Telnet:一種用於遠端登陸的埠,使用者可以以自己的身份遠端連線到計算機上,通過這種埠可以提供一種基於DOS模式下的通訊服務。
  • POP3:和SMTP對應,POP3用於接收郵件。通常情況下,POP3協議使用的是110埠,只要你有相應的使用POP3協議的程式(例如Foxmail或Outlook),就可以不以Web方式登陸進郵箱介面,直接使用郵件程式就可以收到郵件(如163郵箱就是沒有必要先進入網易網站,再進入自己的郵箱來收信)。

2.UDP對應的應用層協議:

  • DNS:用於域名解析服務,將域名地址轉換成IP地址。DNS用的是53號埠。
  • SNMP:簡單網路管理協議,使用161號埠,是用來管理網路裝置的。由於網路裝置很多,無連線的服務就體現出優勢。
  • TFTP(Trival File Transfer Protocal):簡單檔案傳輸協議,該協議在熟知埠69上使用UDP服務。

可參考如下圖示: