對于TCP協議和UDP協議,大家應該都有所耳聞。TCP協議和UDP協議都工作在傳輸層,他們的目標都是在應用之間傳輸數據。我們常用的網絡通信,比如瀏覽網頁,查看郵件,電話通信等,都是通過這兩種協議來進行數據傳輸的。
(資料圖片僅供參考)
這兩種協議有什么區別呢?他們又是如何工作的?跟著文檔君往下看~
TCP協議和UDP協議最核心的區別是什么?看看下邊圖片你就知道了。
TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議??煽啃?,是TCP的最大特點,主要體現在:數據無丟失、無錯誤、無失序、無重復到達。就如同上圖,TCP能將“孩子”(數據包)十分安全地傳送給接收者。
UDP(User Datagram Protocol,用戶數據報協議)是一種無連接、不可靠、快速傳輸的傳輸層通信協議??焖賯鬏?,是UDP的最大特點,主要體現在:數據發送前,不需要提前建立連接,能更高效地傳輸數據,但可靠性無法保證。就如同上圖,UDP只負責把“孩子”(數據包)送出去,不管接收者有無收到。
直觀感受了TCP協議與UDP協議的區別后,咱們來看看TCP協議是如何工作的?
02、TCP是如何工作的?TCP通信的連接管理機制(可靠機制)總結為:三次握手建立連接,四次揮手斷開連接。
< 三次握手建立連接 >
TCP 是面向連接的協議,所以每次發出的請求都需要對方進行確認。TCP 客戶端與 TCP 服務器在通信之前需要完成三次握手才能建立連接。
第一次握手目的:這是一個請求建立連接的數據包,客戶端先向服務器發送一個同步數據包。
數據包的TCP首部內容:
同步SYN=1(客戶端請求建立連接)序號seq=x(客戶端所傳送數據的第一個字節的序號)第二次握手目的:服務器收到客戶端發送的第一個數據包后,判斷出為主動建立連接的數據包。若服務器同意連接,則服務器發送一個數據包進行回應。
數據包的TCP首部內容:
同步SYN=1(服務器建立連接)確認標記ACK=1(服務器同意連接)序號seq=y(服務器所傳送數據的第一個字節的序號)確認號ack=x+1(已經收到客戶端發送的x個字節數據,并告訴客戶端下次應從數據的第x+1個字節開始發送)第三次握手目的:客戶端收到服務器的確認之后,再給服務器發送一個數據包。
數據包的TCP首部內容:
同步SYN=1(雙方已同意建立連接)確認標記ACK=1(收到服務器的確認數據包)序號seq=x+1(發出的數據包就是數據的第x+1個字節)確認號ack=y+1(收到服務器發送y字節數據,并告訴服務器下次應從數據的第y+1個字節開始發送)Tips在客戶端與服務器端傳輸的TCP數據中,雙方的序號seq和確認號ack的值,都是在彼此seq和ack值的基礎上進行計算的,這樣做保證了TCP數據傳輸的連貫性。一旦出現某一方發出的TCP數據丟失,便無法繼續"握手",以此確保了"三次握手"的順利完成。
< 四次揮手斷開連接 >
聚散終有時,當數據傳輸完成后,TCP客戶端與TCP服務器需要通過四次會話斷開連接,這個過程我們稱之為四次揮手。
第一次揮手目的:客戶端向服務器發送連接釋放的請求數據包,并停止發送數據。
在連接釋放數據包的TCP首部中:
終止FIN=1(客戶端要主動釋放客戶端和服務器的TCP連接)序號seq=x(x由客戶端指定。隨后等待服務器的確認)第二次揮手目的:服務器在收到連接釋放的報文之后,給客戶端發送確認報文。因此,客戶端到服務器方向上的連接釋放,TCP連接此時處于半關閉狀態。半閉因為客戶端已無法發送數據給服務器,半開因為服務器仍可以發送數據給客戶端并被其接收。
在服務器發送給客戶端確認報文的TCP首部中:
確認標記ACK=1(收到了客戶端發送的數據包,同意客戶端釋放連接)確認號ack=x+1(在收到客戶端報文的基礎上,將其序號seq值加1作為本段報文確認號ack的值)序號seq=y(y由服務器指定。隨后等待客戶端的確認)第三次揮手目的:若服務器已停止向客戶端發送的數據,則釋放連接,并向客戶端發送確認報文。
在確認報文的TCP首部中:
終止FIN=1(服務器釋放服務器到客戶端的TCP連接,不再向客戶端發送數據)確認標記ACK=1(服務器對客戶端的數據傳送完畢)確認號ack=x+1(在收到客戶端報文的基礎上,將其序號seq值加1作為本段報文確認號ack的值)序號seq=z(z由服務器指定。隨后等待客戶端的確認)第四次揮手目的:客戶端收到服務器的連接釋放報文段后,向服務器發出確認報文。
在確認報文的TCP首部中:
終止FIN = 1(客戶端和服務器斷開連接)確認標記ACK=1(收到服務器的確認報文,并同意服務器釋放連接)確認號ack=z+1(在收到服務端報文的基礎上,將其序號seq值加1作為本段報文確認號ack的值)序列號seq=x+1(在收到服務端報文的基礎上,將其確認號作為本段報文序列號的值)了解完TCP后,再來了解一下UDP是如何工作的~
03UDP是如何工作的?UDP協議是面向無連接的,即發送數據之前不需要建立連接(無TCP協議復雜的三次握手,四次揮手的過程),發送數據就是簡單的把數據包封裝一下,然后從網卡發出去,數據包之間并沒有狀態上的聯系。UDP 協議基本上是 IP 協議與上層協議的接口,UDP協議使用IP層提供的服務將應用層得到的數據從一臺主機的某個應用進程傳遞到另一臺主機的某個應用進程。
舉個栗子~
當傳輸層從IP層收到UDP數據報文時,根據UDP數據報文首部中的目的端口,把UDP數據報文通過相應的端口傳遞給應用進程,如下圖所示。
如上圖中應用進程4與端口2,如果接收方UDP發現收到的報文中的目的端口號不正確(即不存在對應于端口號的應用進程),則丟棄該報文,并由ICMP發送“端口不可達"差錯報文給發送方。
TipsICMP(Internet Control Message Protocol,Internet控制報文協議)是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息??刂葡⑹侵妇W絡通不通、主機是否可達、路由是否可用等網絡本身的消息。
04總結一下數據傳輸看似簡單,其實非常智慧~
TCP和UDP服務的是程序,但程序和人是一樣的,可以你來我往進行交流,也可以一股腦的傾訴。TCP就是彼此之間坦誠交流。消息有沒有收到,收到的信息是否一致,都可以有及時的反饋。
優點:可靠。
缺點:傳輸速率慢。
適用場景:通信軟件的賬戶登錄、支付等相關功能,采用可靠的TCP。
UDP就是傾訴,我不管你有沒有聽進去,不管你有無反饋,我就要不停地說。
優點:傳輸速率快。
缺點:不可靠。
適用場景:QQ、微信等即時通信軟件進行點對點通信,或者音視頻通話時,通常采用傳輸快速的UDP。
TCP和UDP各有優缺點,就看你實際需求啦~
更多TCP干貨,請戳三次握手,四次揮手,原來TCP這么有禮貌!
關鍵詞:
上一篇:5G中的邊緣計算|世界快看
下一篇:最后一頁
X 關閉
X 關閉
- 15G資費不大降!三大運營商誰提供的5G網速最快?中國信通院給出答案
- 2聯想拯救者Y70發布最新預告:售價2970元起 迄今最便宜的驍龍8+旗艦
- 3亞馬遜開始大規模推廣掌紋支付技術 顧客可使用“揮手付”結賬
- 4現代和起亞上半年出口20萬輛新能源汽車同比增長30.6%
- 5如何讓居民5分鐘使用到各種設施?沙特“線性城市”來了
- 6AMD實現連續8個季度的增長 季度營收首次突破60億美元利潤更是翻倍
- 7轉轉集團發布2022年二季度手機行情報告:二手市場“飄香”
- 8充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運物品目錄
- 9好消息!京東與騰訊續簽三年戰略合作協議 加強技術創新與供應鏈服務
- 10名創優品擬通過香港IPO全球發售4100萬股 全球發售所得款項有什么用處?