1. 程式人生 > >【OS】TCP和UDP理解

【OS】TCP和UDP理解

注:部分內容參考自https://www.cnblogs.com/xiohao/p/4439164.html

TCP:

TCP(Transmission Control Protocol,傳輸控制協議)是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。一個TCP連線必須要經過三次“對話”才能建立起來,其中的過程非常複雜,我們這裡只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:

1)主機A向主機B發出連線請求資料包:“我想給你發資料,可以嗎?”,這是第一次對話;

2)主機B向主機A傳送同意連線和要求同步(同步就是兩臺主機一個在傳送,一個在接收,協調工作)的資料包:“可以,你什麼時候發?”,這是第二次對話;

3)主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。

三次“對話”的目的是使資料包的傳送和接收同步,經過三次“對話”之後,主機A才向主機B正式傳送資料。

UDP:

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

tcp協議和udp協議的差別總結:

                            TCP               UDP

是否連線          面向連線        面向非連線

傳輸可靠性          可靠              不可靠

應用場合        傳輸大量資料    少量資料

速度                       慢                    快