TCP/UDP協議

TCP/UDP協議

計算機領域術語
傳輸層的協議主要有兩個:TCP協議和UDP協議。它們都為應用層提供數據傳輸服務[1]。TCP和UDP協議是TCP/IP協議的核心。 其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路複用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然後再進行數據發送;而UDP則不為IP提供可靠性、流控或差錯恢複功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。
  • 中文名:TCP/UDP協議
  • 外文名:TCP/UDPProtocol
  • 所屬學科:
  • TCP:傳輸控制協議
  • UDP:用戶數據報協議
  • 類 别:傳輸層協議
  • 一級學科:計算機科學技術

定義

在TCP/IP網絡體系結構中,TCP(傳輸控制協議,Transport Control Protocol、UDP(用戶數據報協議,User Data Protocol)是傳輸層最重要的兩種協議,為上層用戶提供級别的通信可靠性。

傳輸控制協議(TCP):TCP(傳輸控制協議)定義了兩台計算機之間進行可靠的傳輸而交換的數據和确認信息的格式,以及計算機為了确保數據的正确到達而采取的措施。協議規定了TCP軟件怎樣識别給定計算機上的多個目的進程如何對分組重複這類差錯進行恢複。協議還規定了兩台計算機如何初始化一個TCP數據流傳輸以及如何結束這一傳輸。TCP最大的特點就是提供的是面向連接、可靠的字節流服務。

用戶數據報協議(UDP):UDP(用戶數據報協議)是一個簡單的面向數據報的傳輸層協議。提供的是非面向連接的、不可靠的數據流傳輸。UDP不提供可靠性,也不提供報文到達确認、排序以及流量控制等功能。它隻是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。因此報文可能會丢失、重複以及亂序等。但由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。

相關概念

網絡協議

網絡協議是指通信雙方就通信如何進行所必須共同遵守的約定和通信規則的集合。在網絡上通信的雙方隻有遵守相同的協議,才能正确地交流信息,就像人們交談時要使用同一種語言一樣,如果談話裡使用不同的語言,就會造成雙方都不知所雲,交流就被迫中斷。典型的網絡協議有:TCP/IP協議、IPX/SPX協議、IEEEE802标準協議系列、X.25協議等。

傳輸層

綜合OSI和TCP/IP參考模型的優點,采用一種5層的網絡體系結構。傳輸層即五層網絡體系結構中的一層。傳輸層的設計目标是允許源主機和目标主機上的對等實體進行對話,即為兩個主機中進程之間的通信提供服務。例如,一台主機上的浏覽器進程與另一台主機上的Web服務器進程之間進行通信。

傳輸層的基本功能是接收來自上一層應用層的數據,在必要的時候把這些數據分割成較小的單元,然後把這些數據單元傳遞給網絡層,并且确保這些數據單元能夠正确地到達另一端。

傳輸層是真正的端到端的層,它負責将數據從源端傳送到目标端,即源端主機上的一個程序利用傳輸層協議與目标端主機上的一個程序進行會話。而在其下面的各層,隻涉及一台主機與它的直接鄰居的通信,這是因為源主機和目标主機之間可能存在多個中間路由器。 

協議介紹

面向連接的TCP

“面向連接”就是在正式通信前必須要與對方建立起連接,是按照電話系統建模的。比如你給别人打電話,必須等線路接通了、對方拿起話筒才能相互通話。

TCP協議是一種可靠的、一對一的、面向有連接的通信協議,TCP主要通過下列幾種方式保證數據傳輸的可靠性:

(1)在使用TCP協議進行數據傳輸時,往往需要客戶端和服務端先建立一個“通道“、且這個通道隻能夠被客戶端和服務端使用,所以TCP傳輸協議隻能面向一對一的連接。

(2)為了保證數據傳輸的準确無誤,TCP傳輸協議将用于傳輸的數據包分為若幹個部分(每個部分的大小根據當時的網絡情況而定),然後在它們的首部添加一個檢驗字節。當數據的一個部分被接收完畢之後,服務端會對這一部分的完整性和準确性進行校驗,校驗之後如果數據的完整度和準确度都為100%,在服務端會要求客戶端開始數據下一個部分的傳輸,如果數據的完整性和準确性與原來不相符,那麼服務端會要求客戶端再次傳輸這個部分。 

客戶端與服務端在使用TCP傳輸協議時要先建立一個“通道”,在傳輸完畢之後又要關閉這“通道”,前者可以被形象地成為“三次握手”,而後者則可以被稱為“四次揮手”。

通道的建立——三次握手:

(1)在建立通道時,客戶端首先要向服務端發送一個SYN同步信号。

(2)服務端在接收到這個信号之後會向客戶端發出SYN同步信号和ACK确認信号。

(3)當服務端的ACK和SYN到達客戶端後,客戶端與服務端之間的這個“通道”就會被建立起來。

通道的關閉——四次揮手:

(1)在數據傳輸完畢之後,客戶端會向服務端發出一個FIN終止信号。

(2)服務端在收到這個信号之後會向客戶端發出一個ACK确認信号。

(3)如果服務端此後也沒有數據發給客戶端時服務端會向客戶端發送一個FIN終止信号。

(4)客戶端在收到這個信号之後會回複一個确認信号,在服務端接收到這個信号之後,服務端與客戶端的通道也就關閉了。

TCP協議能為應用程序提供可靠的通信連接,使一台計算機發出的字節流無差錯地發往網絡上的其他計算機,對可靠性要求高的數據通信系統往往使用TCP協議傳輸數據。 

無連接的UDP協議

“無連接”就是在正式通信前不必與對方先建立連接,不管對方狀态就直接發送。與手機短信非常相似:你在發短信的時候,隻需要輸入對方手機号就OK了。

UDP傳輸協議是一種不可靠的、面向無連接、可以實現多對一、一對多和一對一連接的通信協議。UDP在傳輸數據前既不需要建立通道,在數據傳輸完畢後也不需要将通道關閉。隻要客戶端給服務端發送一個請求,服務端就會一次性地把所有數據發送完畢。UDP在傳輸數據時不會對數據的完整性進行驗證,在數據丢失或數據出錯時也不會要求重新傳輸,因此也節省了很多用于驗證數據包的時間,所以以UDP建立的連接的延遲會比以TCP建立的連接的延遲更低。UDP不會根據當前的網絡情況來控制數據的發送速度,因此無論網絡情況是好是壞,服務端都會以恒定的速率發送數據。雖然這樣有時會造成數據的丢失與損壞,但是這一點對于一些實時應用來說是十分重要的。基于以上三點,UDP在數據傳輸方面速度更快,延遲更低,實時性更好,因此被廣泛地用于通信領域和視頻網站當中。

UDP适用于一次隻傳送少量數據、對可靠性要求不高的應用環境。比如,我們經常使用“ping”命令來測試兩台主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送ICMP數據包,然後對方主機确認收到數據包,如果數據包是否到達的消息及時反饋回來,那麼網絡就是通的。例如,在默認狀态下,一次“ping”操作發送4個數據包。大家可以看到,發送的數據包數量是4包,收到的也是4包(因為對方主機收到後會發回一個确認收到的數據包)。這充分說明了UDP協議是面向非連接的協議,沒有建立連接的過程。正因為UDP協議沒有連接的過程,所以它的通信效率高;但也正因為如此,它的可靠性不如TCP協議高。QQ就使用UDP發消息,因此有時會出現收不到消息的情況。

協議差别

TCP/IP 和UDP最大的區别就是:TCP/IP是面向連接的,UDP是無連接的。TCP協議和UDP協議各有所長、各有所短,适用于不同要求的通信環境。TCP協議和UDP協議之間的差别如下表所示。

在實際的使用中,TCP主要應用于文件傳輸精确性相對要求較高且不是很緊急的情景,比如電子郵件、遠程登錄等。有時在這些應用場景下即使丢失一兩個字節也會造成不可挽回的錯誤,所以這些場景中一般都使用TCP傳輸協議。由于UDP可以提高傳輸效率,所以UDP被廣泛應用于數據量大且精确性要求不高的數據傳輸,比如我們平常在網站上觀看視頻或者聽音樂的時候應用的基本上都是UDP傳輸協議。

TCP

UDP

是否連接

面向連接

無連接

傳輸可靠性

可靠的

不可靠的

應用場景

傳輸大量數據

傳輸少量數據

速度

相關詞條

相關搜索

其它詞條