TCP/UDP協定

TCP/UDP協定

TCP和UDP協定是TCP/IP協定的核心。 TCP 傳輸協定:TCP 協定是一TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協定屬於傳輸層協定。其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連線、端到端和可靠的數據包傳送。通俗說,它是事先為所傳送的數據開闢出連線好的通道,然後再進行數據傳送;而UDP則不為IP提供可靠性、流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的套用,而UDP對應的則是可靠性要求低、傳輸經濟的套用。TCP支持的套用協定主要有:Telnet、FTP、SMTP等;UDP支持的套用層協定主要有:NFS(網路檔案系統)、SNMP(簡單網路管理協定)、DNS(主域名稱系統)、TFTP(通用檔案傳輸協定)等。

基本介紹

  • 中文名:TCP/UDP協定
  • 外文名:TCP/UDP Protocol
  • TCP:傳輸控制協定
  • UDP:用戶數據報協定
  • 類別傳輸層協定
  • 一級學科:計算機科學技術
定義,相關概念,協定,傳輸層,協定介紹,面向連線的TCP,無連線的UDP協定,協定差別,

定義

Internet的傳輸層有兩個主要協定,面向連線和無連線各一個,兩個協定互為補充。無連線協定是UDP,它除了給應用程式提供傳送數據包功能並允許它們在所需的層次之下架構自己的協定之外,幾乎沒有做什麼特別的事情。面向連線的協定是TCP,該協定幾乎做了所有事情。它建立連線,並通過重傳機制增加了可靠性,同時還進行流量控制和擁塞控制,代表使用它的應用程式做了所有的一切。

相關概念

協定

協定(Protocol)是指通信雙方就如何進行通信的一種約定。如怎么樣建立連線、怎么樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。它的三要素是:語法、語義、時序。
圖1 防火牆圖1 防火牆
協定對於網路管理的網路安全具有至關重要的意義。比如,防火牆的作用本質就是檢測網路中的數據包,判斷其是否違反了預先設定的規則,如果違反就加以阻止。下圖就是某防毒軟體個人版防火牆軟體設定規則的界面。細心的讀者會發現,圖中的“協定”欄中有“TCP”、“UDP”等名詞。

傳輸層

傳輸層(transport layer)的設計目標是允許源主機和目標主機上的對等實體進行對話。
傳輸層與網路層一起構成了網路協定層次的核心。網路層使用的數據報虛電路技術為端到端通信提供了數據包交付服務。傳輸層構架在網路層提供的服務之上,把數據傳遞服務從兩台計算機之間擴展到兩台計算機上的進程之間,並且服務所需的可靠程度獨立於當前使用的物理層網路。傳輸層為套用層使用網路提供了抽象的模型。如果沒有傳輸層,分層協定的整個概念毫無意義。

協定介紹

面向連線的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傳輸協定。
表1 TCP與UDP區別
TCP
UDP
是否連線
面向連線
無連線
傳輸可靠性
可靠的
不可靠的
套用場景
傳輸少量數據
大量數據
速度

相關詞條

熱門詞條

聯絡我們