相關概念 協定 協定 (Protocol)是指通信雙方就如何進行通信的一種約定。如怎么樣建立連線、怎么樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。它的三要素是:語法、語義、時序。
圖1 防火牆 協定對於網路管理的網路安全具有至關重要的意義。比如,
防火牆 的作用本質就是檢測網路中的
數據包 ,判斷其是否違反了預先設定的規則,如果違反就加以阻止。下圖就是某防毒軟體個人版防火牆軟體設定規則的界面。細心的讀者會發現,圖中的“協定”欄中有“TCP”、“UDP”等名詞。
傳輸層 傳輸層 (transport layer)的設計目標是允許源主機和目標主機上的對等實體進行對話。
傳輸層與
網路層 一起構成了網路協定層次的核心。網路層使用的
數據報 或
虛電路 技術為端到端通信提供了數據包交付服務。傳輸層構架在網路層提供的服務之上,把數據傳遞服務從兩台計算機之間擴展到兩台計算機上的進程之間,並且服務所需的可靠程度獨立於當前使用的物理層網路。傳輸層為
套用層 使用網路提供了抽象的模型。如果沒有傳輸層,分層協定的整個概念毫無意義。
定義 Internet的傳輸層有兩個主要協定,面向連線和無連線各一個,兩個協定互為補充。無連線協定是UDP,它除了給應用程式提供傳送數據包功能並允許它們在所需的層次之下架構自己的協定之外,幾乎沒有做什麼特別的事情。面向連線的協定是TCP,該協定幾乎做了所有事情。它建立連線,並通過重傳機制增加了可靠性,同時還進行流量控制和擁塞控制,代表使用它的應用程式做了所有的一切。
面向連線的TCP
“面向連線”就是在正式通信前必須要與對方建立起連線,是按照電話系統建模的。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。
TCP(Transmission Control Protocol,
傳輸控制協定 )是基於連線的協定,也就是說,在正式收發數據前,必須和對方建立可靠的連線。一個TCP連線必須要經過三次“對話”才能建立起來,其中的過程非常複雜,我們這裡只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:
主機 A向主機B發出連線請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機B向主機A傳送同意連線和要求同步(同步就是兩台主機一個在傳送,一個在接收,協調工作)的數據包:“可以,你什麼時候發?”,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的傳送和接收同步,經過三次“對話”之後,
主機 A才向主機B正式傳送數據。
圖2TCP建立連線 TCP協定能為應用程式提供可靠的通信連線,使一台計算機發出的
位元組流 無差錯地發往網路上的其他計算機,對可靠性要求高的
數據通信系統 往往使用TCP協定傳輸數據。
無連線的UDP協定
“無連線”就是在正式通信前不必與對方先建立連線,不管對方狀態就直接傳送。與手機簡訊非常相似:你在發簡訊的時候,只需要輸入對方手機號就OK了。
UDP(User Data Protocol,
用戶數據報協定 )是與TCP相對應的協定。它是
面向非連線 的協定,它不與對方建立連線,而是直接就把
數據包 傳送過去!
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協定之間的差別如下表所示。
表1 TCP與UDP區別 TCP
UDP
是否連線
面向連線
無連線
傳輸可靠性
可靠的
不可靠的
套用場景
傳輸大量數據
少量數據
速度
慢
快