我想知道這兩個協議的不同之處,我是菜鳥,希望可以給我說明白一些。 面向連接的tcp
“面向連接”就是在正式通信前必須要與對方建立起連接。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。
tcp(transmissioncontrolprotocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個tcp連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜,我們這裡只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:主機a向主機b發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機b向主機a發送同意連接和要求同步(同步就是兩台主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什麼時候發?”,這是第二次對話;主機a再發出一個數據包確認主機b的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之後,主機a才向主機b正式發送數據。
tcp協議能為應用程序提供可靠的通信連接,使一台計算機發出的字節流無差錯地發往網絡上的其他計算機,對可靠性要求高的數據通信系統往往使用tcp協議傳輸數據。 面向非連接的udp協議
“面向非連接”就是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。這與現在風行的手機短信非常相似:你在發短信的時候,只需要輸入對方手機號就ok了。
udp(userdataprotocol,用戶數據報協議)是與tcp相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!
udp適用於一次只傳送少量數據、對可靠性要求不高的應用環境。比如,我們經常使用“ping”命令來測試兩台主機之間tcp/ip通信是否正常,其實“ping”命令的原理就是向對方主機發送udp數據包,然後對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那麼網絡就是通的。例如,在默認狀態下,一次“ping”操作發送4個數據包(如圖2所示)。大家可以看到,發送的數據包數量是4包,收到的也是4包(因為對方主機收到後會發回一個確認收到的數據包)。這充分說明了udp協議是面向非連接的協議,沒有建立連接的過程。正因為udp協議沒有連接的過程,所以它的通信效果高;但也正因為如此,它的可靠性不如tcp協議高。qq就使用udp發消息,因此有時會出現收不到消息的情況。 tcp協議和udp協議各有所長、各有所短,適用於不同要求的通信環境。
|
|