【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
是否連線 面向連線 面向非連線
傳輸可靠性 可靠 不可靠
應用場合 傳輸大量資料 少量資料
速度 慢 快