面向連接的TCP
“面向連接”是指妳必須先與對方建立連接,然後才能正式溝通。例如,如果妳給某人打電話,妳必須等到線路接通,對方拿起話筒後,妳才能和對方通話。
TCP(傳輸控制協議)是壹種基於連接的協議,即在正式發送和接收數據之前,必須與對方建立可靠的連接。壹個TCP連接要經過三次“對話”才能建立,過程非常復雜。我們這裏只做壹個簡單生動的介紹,只要妳能理解這個過程。我們來看看這三個對話的簡單過程:主機A向主機B發送連接請求包:“我想給妳發送數據,可以嗎?”這是第壹次談話;主機B向主機A發送數據包,主機A同意連接,要求同步(同步是指兩臺主機在收發,協調工作):“好的,妳什麽時候發?”這是第二次談話;主機A再發壹個數據包確認同步主機B的請求:“我現在就發,妳可以繼續了!”“這是第三次談話了。三個會話的目的是同步數據包的發送和接收。三次對話後,主機A將正式向主機B發送數據..
TCP協議可以為應用程序提供可靠的通信連接,使得壹臺計算機發送的字節流可以無誤地發送到網絡上的其他計算機。高可靠性的數據通信系統通常使用TCP協議來傳輸數據。
面向連接的UDP協議
“非面向連接”是指在正式溝通之前,不必與對方建立連接,不管對方是什麽狀態,都可以直接發送。這和現在流行的手機短信很像:發短信的時候,只需要輸入對方的手機號碼。
Udp(用戶數據報協議)是與TCP相對應的協議。它是非面向連接的協議,它不與對方建立連接,而是直接發送數據包!
UDP適用於壹次只傳輸少量數據,對可靠性要求不高的應用環境。例如,我們經常使用“ping”命令來測試兩臺主機之間的TCP/IP通信是否正常。其實“ping”命令的原理就是向對方主機發送UDP包,然後對方主機確認收到包。如果包是否到達的消息被及時反饋,那麽網絡被連接。例如,默認情況下,“ping”操作發送四個包(如圖2所示)。可以看到,發送的包數是4,收到的包數也是4(因為對方主機會發回壹個包確認收到)。這充分說明UDP協議是壹種無連接協議,沒有建立連接的過程。由於UDP協議沒有連接過程,所以通信效果高;但正因為如此,它的可靠性沒有TCP協議高。QQ用UDP發送消息,所以有時候妳收不到消息。
TCP和UDP各有優缺點,適用於不同的通信環境。