關于TCP和UDP兩種網絡協議的區別

1、tcp協議

TCP (Transmission Control Protocol - 傳輸控制協議)

TCP 的核心目標是為應用層提供一條可靠的、無差錯的、有序的字節流通道

主要特點:

  1. 面向連接:在數據傳輸之前,必須通過“三次握手”建立穩定的連接,傳輸結束后通過“四次揮手”斷開連接。

  2. 可靠傳輸:使用確認應答(ACK)超時重傳丟包重傳等機制來確保數據一定能到達對端。

  3. 流量控制:通過滑動窗口機制,根據接收方的處理能力來動態調整發送數據的速度,防止接收方被淹沒。

  4. 擁塞控制:通過復雜的算法(如慢啟動、擁塞避免、快速重傳、快速恢復)來感知網絡狀況,防止過多的數據注入網絡導致網絡癱瘓。

  5. 有序傳輸:為每個數據包編號(序列號),接收方會按照編號重新組裝,保證數據順序的正確性。

  6. 基于字節流:TCP 不保留消息邊界。發送方連續寫入多次數據,接收方可能一次全部讀出,或者分多次讀出。應用程序需要自己處理消息邊界問題(例如,通過規定消息長度或使用特殊分隔符)。

優點: 數據可靠,無差錯,不丟失,不重復,且按序到達。
缺點: 機制復雜,頭部開銷大(至少20字節),延遲高,傳輸效率相對較低。

2、udp協議

UDP 的核心目標是提供一個簡單、高效的傳輸服務,它只負責發送數據,不提供任何可靠性保證。

主要特點:

  1. 無連接:發送數據前不需要建立連接,直接發送。

  2. 不可靠傳輸:不提供確認、重傳、序列號等機制。發送數據后不知道對方是否收到。

  3. 無流量和擁塞控制:不管網絡是否擁堵,都會以恒定的速率發送數據。這既是缺點(容易加劇網絡擁堵)也是優點(延遲穩定)。

  4. 面向數據報:UDP 保留消息邊界。發送方調用一次發送函數發送一個數據包,接收方調用一次接收函數就會收到整個數據包。

  5. 頭部開銷小:只有8字節的固定頭部,非常精簡。

優點: 速度快、延遲低、開銷小、實時性好。
缺點: 不保證數據一定到達,不保證順序,不保證不重復。

典型應用場景: 對實時性要求高于可靠性的應用,或者可以自己實現簡單可靠性機制的應用。

  • 語音和視頻通話(VoIP, Zoom, Teams):丟失少量數據包只會導致短暫卡頓或雜音,但如果用TCP重傳,延遲會高到無法正常對話。

  • 在線直播和流媒體:同理,追求實時性。

  • 實時在線游戲:玩家的每一個操作都需要極低的延遲,偶爾丟包比高延遲更能接受。

  • DNS查詢:查詢請求本身很小,且需要快速響應,如果超時未收到回復,客戶端會直接重發請求。

  • DHCP:網絡分配IP地址的協議。

  • 選擇 TCP:當你需要可靠性和數據正確性時。你希望所有數據都能完整、無誤、按順序地到達目的地。例如:傳輸一個文件、加載一個網頁、發送一封郵件。99%的通用應用都使用TCP

  • 選擇 UDP:當你需要速度和低延遲,并能容忍少量數據丟失時。例如:視頻通話時的一幀畫面丟失,遠比等待它重傳導致整個對話卡住要好。或者,你可以在UDP的基礎上,在應用層自己實現一套簡單的確認和重傳機制來滿足特定需求,從而獲得比TCP更好的性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96669.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Alibaba Lens:阿里巴巴推出的 AI 圖像搜索瀏覽器擴展,助力B2B采購

本文轉載自:https://www.hello123.com/alibaba-lens ** 一、🌟 一鍵截圖,輕松找貨:采購神器 Alibaba Lens 詳解 Alibaba Lens 是阿里巴巴集團專為全球 B2B 采購商打造的一款智能瀏覽器插件(支持 Chrome 等主流瀏覽器…

WPF常見問題清單

1.Grid 內容自動換行及自適應行高 <DataGrid Grid.Row"1" FontSize"14" IsReadOnly"True" VerticalScrollBarVisibility"Auto" RowHeight"NaN" ItemsSource"{Binding List}" AutoGenerateColumns"False…

Linux驅動開發筆記(十)——中斷

視頻&#xff1a;第13.1講 Linux中斷實驗-Linux內核中斷框架簡介_嗶哩嗶哩_bilibili 文檔&#xff1a;《【正點原子】I.MX6U嵌入式Linux驅動開發指南V1.81.pdf》五十一章 1. 中斷API函數 每個中斷都有一個中斷號&#xff0c;通過中斷號即可區分不同的中斷。在Linux 內核中使用一…

ubuntu18.04安裝PCL1.14

簡化版說明 1. 安裝依賴庫&#xff1a; (1) boost1.84 &#xff08;https://www.boost.org/releases/1.84.0/&#xff09; tar vxf boost_xxx.tar.gz ./bootstrap.sh --prefix/usr/local/ ./b2 sudo ./b2 install (2) vtk9.1.0 &#xff08;https://vtk.org/files/releas…

python將pdf轉txt,并切割ai

python將pdf轉txt&#xff0c;并切割ai step1:pdf轉換 from PIL import Image import pytesseract import os import tempfile from pdf2image import convert_from_path# 設置 Tesseract 路徑 pytesseract.pytesseract.tesseract_cmd rC:\Users\wangrusheng\AppData\Local\Pr…

Ubuntu22.04更換阿里鏡像源,ubuntu更換源

在 Ubuntu 22.04 上更換為阿里云鏡像源可以加速軟件包的下載和更新&#xff0c;大幅提升系統更新速度。以下是更換阿里云鏡像源的步驟&#xff1a;1. 備份現有源列表在更換鏡像源之前&#xff0c;建議先備份當前的源配置文件&#xff1a;bashsudo cp /etc/apt/sources.list /et…

Git版本控制工具+基礎命令

Git是什么&#xff1f;Git是目前世界上最先進的分布式版本控制系統代碼托管平臺&#xff1a;Gitlab/Github/Gitee&#xff08;碼云&#xff09;什么是版本控制系統&#xff1f;指對軟件開發過程中各種程序代碼、配置文件及說明文檔等文件變更的管理。版本控制最主要的功能就是追…

圖解設計模式【3】

本系列共分為三篇文章&#xff0c;其中包含的設計模式如下表&#xff1a; 名稱設計模式圖解設計模式【1】Iterator、Adapter、Template Method、Factory Method、Singleton、Prototype、 Builder、Abstract Factory、 Bridge、 Strategy圖解設計模式【2】Composite、 Decorato…

(純新手教學)計算機視覺(opencv)實戰十四——模板與多個對象匹配

圖片旋轉、圖片鏡像相關教學&#xff1a; &#xff08;純新手教學&#xff09;計算機視覺&#xff08;opencv&#xff09;實戰十三——圖片旋轉、圖片鏡像 的幾種常用方法-CSDN博客https://blog.csdn.net/2302_78022640/article/details/151356600?spm1011.2415.3001.5331 模板…

Java面試核心知識點總結:Redis與MySQL高可用、高并發解決方案

在分布式系統開發中&#xff0c;高并發場景下的數據一致性、系統可用性以及性能優化始終是核心挑戰。本文基于Java技術棧&#xff0c;結合Redis與MySQL的工程實踐&#xff0c;系統梳理分布式系統設計的關鍵技術要點。一、Redis集群架構演進與高可用實踐1.1 主從哨兵模式部署方案…

R 語言科研繪圖第 72 期 --- mantel檢驗圖

在發表科研論文的過程中&#xff0c;科研繪圖是必不可少的&#xff0c;一張好看的圖形會是文章很大的加分項。 為了便于使用&#xff0c;本系列文章介紹的所有繪圖都已收錄到了 sciRplot 項目中&#xff0c;獲取方式&#xff1a; R 語言科研繪圖模板 --- sciRplothttps://mp.…

4.2-中間件之MySQL

4.2.1MySQL的基本知識SQL語句用于存取數據以及查詢、更新和管理關系數據庫系統。包括&#xff1a;DQL&#xff08;select&#xff09;、DML&#xff08;insert,update,delete&#xff09;、DDL&#xff08;create,alter,drop&#xff09;、DCL&#xff08;grant,revoke&#xf…

LVS + Keepalived 高可用負載均衡集群

目錄 一、核心組件與作用 1. LVS&#xff08;Linux Virtual Server&#xff09; 2. Keepalived 二、DR 模式下的 LVS Keepalived 工作原理 1. 整體架構 2. 數據包流向&#xff08;DR 模式&#xff09; 三、部署步驟&#xff08;DR 模式&#xff09; 3.1 環境規劃 3.2…

知識沉淀過于碎片化如何形成體系化框架

要將過于碎片化的知識沉淀轉變為體系化的框架&#xff0c;必須采取一套自上而下設計與自下而上歸集相結合的系統性方法&#xff0c;其核心路徑在于首先進行戰略性診斷與頂層藍圖設計、其次構建統一且可擴展的知識架構&#xff08;分類與標簽體系&#xff09;、然后實施系統性的…

XLua教程之C#調用Lua

上一篇文章 XLua教程之入門篇-CSDN博客 在C#腳本中訪問lua全局數據&#xff0c;特別是table以及function&#xff0c;代價比較大&#xff0c;建議盡量少做相關操作。 LuaEnv.Global.Get 用于獲取一個全局變量&#xff0c;但是無法獲取局部變量(用local修飾) 全局基本類型變量…

C++ 標準庫中的哈希函數:從std::hash到自定義哈希器

C 標準庫中的哈希函數&#xff1a;從 std::hash 到自定義哈希器 1. 引言 在上一篇中&#xff0c;我們介紹了哈希表為什么能夠實現 O(1) 查找。 核心秘密在于&#xff1a;哈希函數。 在 C 標準庫中&#xff0c;哈希表容器&#xff08;如 unordered_map、unordered_set&#xff0…

在圖形 / 游戲開發中,為何 Pixels Per Unit(PPU)數值越小,物體在屏幕上顯示的尺寸越大?

1. 什么是 PPU&#xff1f; PPU&#xff08;Pixels Per Unit&#xff09;指的是 多少像素對應游戲世界中的一個單位&#xff08;Unit&#xff09;。 在 Unity 等游戲引擎中&#xff0c;1 Unit 通常被視為世界空間的基本長度&#xff0c;比如 1 米。2. PPU 與物體大小的關系PPU …

【ZYNQ開發篇】Petalinux和電腦端的靜態ip地址配置

使用Petalinux工具為ZYNQ板卡搭建嵌入式Linux操作系統&#xff0c;成功搭建后&#xff0c;用戶通常會使用客戶端軟件對ZYNQ板卡上的Linux系統進行訪問&#xff0c;軟件需要知道ZYNQ板卡的ip地址才能進行訪問&#xff0c;如果ip地址是動態變化的&#xff0c;軟件每次訪問都要重新…

AVL樹知識總結

AVL樹概念性質一顆AVL樹或是空樹&#xff0c;或者具有一下性質的二叉搜索樹&#xff1a;左右都是AVL樹&#xff0c;左右子樹高度差的絕對值不超過1AVL樹有n個結果&#xff0c;高度保持在O&#xff08;logN&#xff09; 搜索時間復雜度O(logN&#xff09;模擬實現插入定義&#…

返利app的跨域問題解決方案:CORS與反向代理在前后端分離架構中的應用

返利app的跨域問題解決方案&#xff1a;CORS與反向代理在前后端分離架構中的應用 大家好&#xff0c;我是阿可&#xff0c;微賺淘客系統及省賺客APP創始人&#xff0c;是個冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在返利APP的前后端分離架構中&#xff0c;跨…