TCP和UDP的數據傳輸+區別

目錄

一、數據傳輸過程

1.1 TCP字節流服務圖

1.2 UDP數據報服務圖

二、tcp與udp的區別

1.連接方式 ?

2.可靠性 ?

3.傳輸效率 ?

4.有序性 ?

5.流量控制和擁塞控制 ?

6.應用場景 ?

7.首部長度

三、tcp與udp能不能使用同一個端口號?

?四、同一個協議,TCP 和 TCP 能不能使用同一個端口號?


一、數據傳輸過程

1.1 TCP字節流服務圖

發送端

應用層:應用層通過多次調用 `send()` 函數分別發送 “abcdef”、“12345”、“test” 這些數據。`send()` 函數用于將應用層數據傳遞給傳輸層。

傳輸層:TCP 協議將這些數據暫存于 TCP 發送緩沖區。TCP 為了提高傳輸效率,會根據自身機制(如窗口大小、擁塞控制等 )對發送緩沖區中的數據進行組合和封裝。如圖中所示,可能會把 “abcdef” 和 “123” 組合在一起封裝成一個 TCP 報文段,“45test” 單獨封裝成一個 TCP 報文段。這種組合并非嚴格按應用層發送順序和邊界,而是根據 TCP 自身策略。

接收端

傳輸層:接收端的 TCP 協議從網絡中接收 TCP 報文段,先存儲在 TCP 接收緩沖區。

應用層:應用層通過 `recv()` 函數從 TCP 接收緩沖區讀取數據。由于 TCP 發送時可能對數據進行了組合封裝,接收端應用層調用 `recv()` 讀取數據時,不一定能按發送端應用層的原始邊界和順序獲取數據,可能會一次性讀取多個發送端組合封裝的數據,也可能分多次讀取。

????????總體而言,該圖展示了 TCP 字節流服務中,數據在發送端和接收端的處理過程,突出 TCP 并不保證應用層數據的邊界,而是以字節流形式進行傳輸和處理。 ?

呈現了 TCP 協議的數據傳輸流程。發送端應用層多次調用 send() 函數發送數據,數據先存于 TCP 發送緩沖區,傳輸層根據自身機制(如窗口、擁塞控制 )將緩沖區數據封裝成 TCP 報文段發送;接收端傳輸層接收 TCP 報文段存于 TCP 接收緩沖區,應用層通過 recv() 函數讀取數據。

1.2 UDP數據報服務圖

發送端

應用層:通過 `sendto()` 函數來發起數據發送操作。`sendto()` 是 UDP 編程中用于發送數據報的函數,它可以指定目標地址(IP 地址和端口號 )以及要發送的數據內容。在應用層,可能會有多個不同的操作或請求需要通過 UDP 發送數據,所以會多次調用 `sendto()` 函數 。

傳輸層:將應用層傳遞過來的數據封裝成 UDP 數據報。UDP 數據報由 UDP 報頭和數據部分組成,報頭包含源端口號、目的端口號、長度和校驗和等信息,完成封裝后的數據報會被發送到網絡中。

接收端

傳輸層:從網絡中接收 UDP 數據報,檢查數據報的目的端口號等信息,將符合條件的數據報傳遞給應用層 。

應用層:使用 `recvfrom()` 函數接收從傳輸層傳來的 UDP 數據報。`recvfrom()` 函數不僅能接收數據,還能獲取發送方的地址信息(源 IP 地址和端口號 ) 。同樣,在應用層可能會多次調用 `recvfrom()` 函數來處理不同時刻接收到的數據報。

????????展示了 UDP 協議數據傳輸過程。發送端應用層通過 sendto() 函數將數據傳遞給傳輸層,傳輸層封裝成 UDP 數據報進行發送;接收端傳輸層接收 UDP 數據報,應用層通過recvfrom() 函數接收數據。體現了 UDP 無連接、簡單的傳輸特點,發送方直接發送,接收方直接接收,不涉及復雜連接建立與管理。

二、tcp與udp的區別

1.連接方式 ?

????????TCP:面向連接的協議,在數據傳輸之前,需要先建立連接,通過三次握手來確保連接的可靠性,數據傳輸完成后,需要釋放連接。

????????UDP:無連接的協議,發送數據時不需要先建立連接,也不需要在數據傳輸完成后釋放連接,簡單地將數據報發送出去即可。

2.可靠性 ?

????????TCP:提供可靠的傳輸服務。它通過序列號、確認應答、重傳機制等保證數據的有序性和完整性,能夠自動糾正傳輸過程中出現的錯誤。 ?

????????UDP:不保證數據傳輸的可靠性。它只是盡最大努力將數據報發送到目的地,不進行錯誤檢查和重傳,可能會出現數據丟失、重復或亂序的情況。

3.傳輸效率 ?

????????TCP:由于需要建立連接、進行可靠性檢查和流量控制等,會引入一定的開銷,傳輸效率相對較低。 ?

????????UDP:沒有連接建立和復雜的控制機制,頭部開銷小,傳輸效率高,適合對實時性要求高、允許一定數據丟失的應用。

4.有序性 ?

????????TCP:能保證數據按照發送的順序到達接收端,對數據進行排序和重組,確保應用層接收到的是有序的數據。 ?

????????UDP:不保證數據的有序性,數據報可能會以不同的順序到達接收端,應用層需要自己處理數據的順序問題。

5.流量控制和擁塞控制 ?

????????TCP:具有完善的流量控制和擁塞控制機制。通過滑動窗口協議進行流量控制,根據網絡擁塞情況調整發送速率,避免網絡擁塞。 ?

????????UDP:沒有內置的流量控制和擁塞控制機制,需要應用層自行實現相關功能,如果網絡出現擁塞,可能導致數據丟失加劇。

6.應用場景 ?

????????TCP:適用于對數據準確性和完整性要求高的場景,如文件傳輸、電子郵件、遠程登錄、網頁瀏覽等。 ?

????????UDP:適用于對實時性要求高、能容忍一定數據丟失的場景,如視頻直播、音頻通話、在線游戲、DNS查詢等。

7.首部長度

????????TCP:首部長度一般為20字節,當有選項時,首部長度會增加。 ?

????????UDP:首部長度固定為8字節,包括源端口、目的端口、長度和校驗和字段。

三、tcp與udp能不能使用同一個端口號?

????????TCP和UDP可以使用相同的端口號,因為它們是獨立的傳輸協議,每種協議有自己的端口空間。在通信過程中,端口號用于標識應用程序或服務,以便正確地將數據包傳遞到目標應用程序。因此,同一個端口號可以同時被TCP和UDP協議使用,只要它們不在同一個主機上相互沖突即可。這種情況在網絡編程或應用程序開發中是很常見的。

?四、同一個協議,TCP 和 TCP 能不能使用同一個端口號?

????????不可以,每個協議都有自己的一組預留端口號。TCP和UDP有各自獨立的端口號范圍,因此TCP和TCP不能使用相同的端口號。TCP的端口號范圍是0到65535,UDP的端口號范圍也是0到65535,但它們之間的端口號是相互獨立的。

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

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

相關文章

基于ssm的校園舊書交易交換平臺(源碼+文檔)

項目簡介 校園舊書交易交換平臺的主要使用者分為: 前臺功能:用戶進入系統可以對首頁、書籍信息、校園公告、個人中心、后臺管理等功能進行操作; 后臺主要是管理員,管理員功能包括主頁、個人中心、學生管理、發布人管理、書籍分類…

虛假安全補丁攻擊WooCommerce管理員以劫持網站

一場大規模釣魚攻擊正針對WooCommerce用戶,通過偽造安全警報誘使他們下載所謂的"關鍵補丁",實則為植入WordPress后門的惡意程序。 惡意插件植入 根據Patchstack研究人員發現,上當受騙的用戶在下載更新時,實際上安裝的…

《冰雪傳奇點卡版》:第二大陸介紹!

一、第二大陸:高階資源與實力驗證的核心戰場 1. 準入條件與地圖分布 進入門檻: 基礎要求:角色需達到四轉(需消耗50萬元寶完成轉生任務),部分地圖需額外滿足神魔點數(如黑暗之森需神魔全2&#…

信創系統圖形界面開發指南:技術選擇與實踐詳解

信創系統圖形界面開發指南:技術選擇與實踐詳解 🧑 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C, C#, Java等多種編程語言開發經驗,擁有高級工程師證書&…

【人臉去遮擋前沿】三階段級聯引導學習如何突破真實場景遮擋難題?

一、現實痛點:當人臉被遮擋,AI “認臉” 有多難? 你是否遇到過這樣的場景? 中考體育測試:2025 年天津泰達街中考考場要求考生 “臉部無遮擋” 才能通過人臉識別入場,戴口罩、帽子的學生需現場調整發型。智能門鎖:奇景光電在 CES 2025 推出的 WiseEye 掌靜脈模塊,通過掌…

c++線程的創建

c 11 線程編程實戰 目錄 c 11 線程編程實戰1,線程的創建1.1 傳入無參函數1.2 傳入有參函數1.3 傳入類內部函數1.4 lambda表達式 1,線程的創建 1.1 傳入無參函數 //傳入函數,創建線程 void ThreadMain() {//獲取線程IDstd::thread::id thi…

人工智能數學基礎(六):數理統計

數理統計是人工智能中數據處理和分析的核心工具,它通過收集、分析數據來推斷總體特征和規律。本文將系統介紹數理統計的基本概念和方法,并結合 Python 實例,幫助讀者更好地理解和應用這些知識。資源綁定附上完整資源供讀者參考學習&#xff0…

解決STM32待機模式無法下載程序問題的深度探討

在現代嵌入式系統開發中,STM32系列微控制器因其高性能、低功耗和豐富的外設資源而廣受歡迎。然而,開發者在使用STM32時可能會遇到一個問題:當微控制器進入待機模式后,無法通過調試接口(如SWD或JTAG)下載程序…

C#擴展方法與Lambda表達式基本用法

C# 擴展方法與 Lambda 表達式詳解 一、擴展方法詳解 1. 基本概念 ??擴展方法??允許為現有類型"添加"方法,而無需修改原始類型或創建派生類型。 ??定義條件??: 必須在靜態類中定義方法本身必須是靜態的第一個參數使用this修飾符指…

C#規避內存泄漏的編碼方法

C#規避內存泄漏的編碼方法 內存泄漏是C#開發中常見的問題,盡管.NET有垃圾回收機制(GC),但不當的編碼實踐仍可能導致內存無法被及時回收。以下是系統性的規避內存泄漏的方法: 一、理解內存泄漏的常見原因 ??未釋放的事件訂閱????靜態…

React 后臺管理系統

這是一個基于 React TypeScript Ant Design 開發的向明天系統前端項目。 git倉庫地址 技術棧 React 19TypeScriptAnt Design 5.xRedux ToolkitReact RouterAxiosLess 環境要求 Node.js (推薦使用最新LTS版本)npm 或 yarn 安裝步驟 克隆項目到本地 git clone [https://…

第九節:文件操作

理論知識 文件的基本概念:文件是存儲數據的基本單位,在 Linux 系統中,一切皆文件。文件可以是文本文件、二進制文件、設備文件等。文件的創建:使用 touch 命令可以創建一個新的空文件。如果文件已經存在,則更新文件的…

2025-03 機器人等級考試四級理論真題 4級

1 2025年蛇年春晚,節目《秧BOT》機器人舞蹈表演節目點燃了全國觀眾的熱情,請問參加節目表演的機器人是由哪家公司研發?( ) A.大疆 B.華為 C.優必選 D.宇樹科技 【參考答…

k8s平臺:手動部署Grafana

以下是一個可用于生產環境的 Kubernetes 部署 Grafana 的 YAML 文件。該配置包括 Deployment、Service、ConfigMap 和 PersistentVolumeClaim,確保 Grafana 的高可用性和數據持久化。 Grafana 生產部署 YAML 文件 ☆實操示例 cat grafana-deployment.yaml --- # …

農產品園區展示系統——仙盟創夢IDE開發

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>農業大數據平臺</title><style>* {margi…

每日Bug:(2)共享內存

對于整個系統而言&#xff0c;主存與CPU的資源都是有限的&#xff0c;隨著打開進程數量的增加&#xff0c;若是將所有進程運行所需的代碼/數據/棧/共享庫都存放在主存中&#xff0c;那么開啟一部分進程就可以將主存占用完。 虛擬內存就是解決以上問題的方法&#xff0c;使用虛…

C語言Makefile編寫與使用指南

Makefile 詳細指南&#xff1a;編寫與使用 Makefile 是 C/C 項目中常用的自動化構建工具&#xff0c;它定義了項目的編譯規則和依賴關系。下面我將詳細介紹 Makefile 的編寫和使用方法。 一、Makefile 基礎 1. 基本結構 一個典型的 Makefile 包含以下部分&#xff1a; mak…

Centos離線安裝Docker(無坑版)

1、下載并上傳docker離線安裝包 官方地址&#xff1a;安裝包下載 2、上傳到離線安裝的服務器解壓 tar -zxvf docker-28.1.1.tgz#拷貝解壓二進制文件到相關目錄 cp docker/* /usr/bin/ 3、創建docker啟動文件 cat << EOF > /usr/lib/systemd/system/docker.servic…

OceanBase數據庫-學習筆記4-租戶

租戶 租戶偏向于資源層面的邏輯概念&#xff0c;是在物理節點上劃分的資源單元&#xff0c;可以指定其資源規格&#xff0c;包括 CPU、內存、日志盤空間、IOPS 等。 租戶類似于傳統數據庫的數據庫實例&#xff0c;租戶通過資源池與資源關聯&#xff0c;從而獨占一定的資源配額…

UNIAPP項目記錄

一、通過 vue-cli 創建 uni-app 項目 創建 vue3 項目 創建以 javascript 開發的工程&#xff08;如命令行創建失敗&#xff0c;請直接訪問 gitee 下載模板&#xff09; npx degit dcloudio/uni-preset-vue#vite my-vue3-project復制代碼 npx degit dcloudio/uni-preset-vue#vit…