1. 程式人生 > >TCP/UDP協議

TCP/UDP協議

lan 有時 body aik htm 默認 tab 協調 不同

TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通信傳輸,而UDP則常被用於讓廣播和細節控制交給應用的通信傳輸。

連接:

面向連接的TCP

"面向連接"就是在正式通信前必須要與對方建立起連接。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。

TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次"對話"才能建立起來,其中的過程非常復雜,我們這裏只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:主機A向主機B發出連接請求數據包:"我想給你發數據,可以嗎?",這是第一次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:"可以,你什麽時候發?",這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:"我現在就發,你接著吧!",這是第三次對話。三次"對話"的目的是使數據包的發送和接收同步,經過三次"對話"之後,主機A才向主機B正式發送數據。

面向非連接的UDP

"面向非連接"就是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。與手機短信非常相似:你在發短信的時候,只需要輸入對方手機號就OK了。

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

tcp協議和udp協議的差別:

TCP協議和UDP協議各有所長、各有所短,適用於不同要求的通信環境。TCP協議和UDP協議之間的差別如附表所示。

TCP UDP
是否連接 面向連接 面向非連接
傳輸可靠性 可靠的 不可靠的
應用場合 傳輸大量時間 少量數據
速度

TCP/UDP協議