C++面試題,TCP和UDP方面(1)

在這里插入圖片描述

個人主頁 : 個人主頁
個人專欄 : 《數據結構》 《C語言》《C++》《Linux》《網絡》 《redis學習筆記》

文章目錄

  • 前言
  • TCP和UDP的區別
  • UDP如何實現可靠
  • TCP滑動窗口原理
  • TCP流量控制
  • TCP超時重傳
  • 總結


前言

這是個人總結的C++方向的面試題,TCP和UDP方面,如果那些地方有錯誤。歡迎前來糾錯!!!


TCP和UDP的區別

TCP和UDP是傳輸層的兩種主要協議。

  1. 連接方式:
    TCP:是面向連接的協議。在開始傳輸之前,TCP客戶端和服務器之間會進行三次握手。在傳輸結束后,還會執行四次揮手來關閉連接,以確保通信的可靠性(。。。。。)
    UDP:是無連接的協議。在數據傳輸之前不需要建立連接,數據報只需要指定目標地址(ip:port)即可發送。
  2. 可靠性傳輸
    TCP:提供可靠的,面向鏈接的字節流服務。通過確認應答,超時重傳,流量控制,連接管理,擁塞控制等機制來保證數據的可靠傳輸。
    UDP:是一個不可靠,無連接的數據報協議。UDP只保證數據的發送,但不保證數據會被接收方收到,也不會處理丟失,損壞會重復的數據。
  3. 數據傳輸格式:
    TCP:以字節流(從緩沖區的角度)的方式傳輸數據,沒有明確的報文邊界。需要應用層來處理粘包問題
    UDP:傳輸的是獨立的,不可分割的數據報文。UDP數據報通常包含固定大小的數據庫,每個數據報的大小由應用層決定(報文的16為UDP長度,決定了UDP數據報的最大長度)。
  4. 傳輸效率:
    TCP:由于要保證數據的可靠傳輸,TCP需要進行額外的握手,確認。重傳等操作,因此傳輸效率相當較低
    UDP:不需要保證可靠性,傳輸效率比較高。(HTTP/3基于QUIC,而QUIC是建立在UDP上的)
  5. 應用場景:
    TCP:適合對數據可靠性要求高的場景,如文件傳輸,網頁瀏覽,電子郵件。
    UDP:適合用于對延遲敏感,實時性要求高的場景,如視頻直播,語言通話,在線游戲等

UDP如何實現可靠

UDP的可靠性需通過應用層協議來解決不可靠性,核心在于序列號確認機制重傳策略流量控制等。

在這里插入圖片描述


TCP滑動窗口原理

TCP滑動窗口是通過動態調整發送和接受雙方的窗口大小,實現數據的可靠傳輸和流量控制。具體而言,滑動窗口允許發送方在不等待每個數據包確認的情況下連續發生多個數據包,從而提高傳輸效率。接收方通過維護窗口大小,根據自身處理能力和剩余緩沖區空間大小調整窗口大小,控制發送方的發送速率,避免網絡擁塞。

  1. 發送窗口結構
    已確認:數據已發送且受到ACK確認
    已發送未確認:數據已發送但未收到ACK
    不發送:允許立即發送的數據范圍
    不可發送:超出接收方窗口或擁塞窗口限制
    在這里插入圖片描述
  2. 接收窗口結構
    已接收并確認:數據已提交給引用層
    可接收:緩沖區空閑區間,通過WIN字段通告
    不可接收:超出緩沖區容量
    在這里插入圖片描述

TCP流量控制

TCP流量控制的核心目標是防止發送方速率超過接收方的處理能力,避免接收方緩沖區溢出導致丟包。其實現依賴于滑動窗口機制,通過動態調整發送窗口大小實現速率匹配。
特別注意的是,當接收方通告窗口大小為0時,發送方啟動零窗口探測(ZWP),周期地發送1字節探測報文。若接收方持續返回零窗口,TCP可能最終斷開鏈接(如三次探測失敗后)

流量控制與擁塞控制的區別
流量控制:解決端到端速率匹配問題,防止接收方過載
擁塞控制:解決網絡資源競爭問題,避免全網性能惡化
但流量控制的窗口大小可能被擁塞窗口大小限制,如當網絡擁塞時,即使接收方有足夠緩沖區,發送速率扔受擁塞控制算法制約


TCP超時重傳

TCP超時重傳:當發送方在發送數據報后,啟動一個定時器(重傳計時器)。如果在指定的超時時間內沒有收到接收方的確認,則認為該數據段可能丟失或損壞,觸發超時重傳機制,重新發送該數據報。

  • 重傳策略:TCP采用指數退避算法,每次超時重傳時,重傳間隔時間會增加一倍,直到達到最大值。目的是為了減少頻繁重傳對網絡的影響
  • 快速重傳:當發送方連續三次收到重復的ACK時,會立即重傳未確認的數據報,而不需要等待超時定時器到期(RTO超時)

總結

以上就是我總結的C++面試題,TCP和UDP方面(1)

在這里插入圖片描述

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

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

相關文章

Huatuo熱更新--如何使用

在安裝完huatuo熱更新插件后就要開始學習如何使用了。 1.創建主框漸Main 新建文件夾Main(可自定義),然后按下圖創建文件,注意名稱與文件夾名稱保持一致 然后新建場景(Init場景),添加3個空物體…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek簡單調用示例

1. 版本說明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot項目搭建 可以集成在自己的項目里,也可以到 spring.io 生成一個項目 生成的話,如下…

如何在 macOS 上配置 MySQL 環境變量

如何在 macOS 上配置 MySQL 環境變量 步驟 1: 查找 MySQL 安裝路徑 打開終端,使用以下命令查找 mysql 的可執行文件路徑: which mysql如果該命令沒有返回結果,可以使用 find 命令: sudo find / -name "mysql" 2>/de…

Unity Excel導表工具轉Lua文件

思路介紹 借助EPPlus讀取Excel文件中的配置數據,根據指定的不同類型的數據配置規則來解析成對應的代碼文本,將解析出的字符串內容寫入到XXX.lua.txt文件中即可 EPPlus常用API //命名空間 using OfficeOpenXml;//Excel文件路徑 var fileExcel new File…

【vue項目中如何實現一段文字跑馬燈效果】

在Vue項目中實現一段文字跑馬燈效果,可以通過多種方式實現,以下是幾種常見的方法: 方法一:使用CSS動畫和Vue數據綁定 這種方法通過CSS動畫實現文字的滾動效果,并結合Vue的數據綁定動態更新文本內容。 步驟&#xff…

AcWing走迷宮-最短路問題-BFS求解

題目描述 給定一個 n * m 的二維整數數組,用來表示一個迷宮,數組中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通過的墻壁。 最初,有一個人位于左上角 (1, 1) 處,已知該人每次可以向上、下、左、右任…

go 錯誤處理 error

普通錯誤處理 // 包路徑 package mainimport ("errors""fmt" )func sqrt(f1, f2 float64) (float64, error) {if f2 < 0 {return 0, errors.New("error: f2 < 0")}return f1 / f2, nil }func sqrt1(f1, f2 float64) {if re, err : sqrt(f…

MCU Bootloader具備什么條件才能跳轉到APP程序

在MCU系統中&#xff0c;BootLoader&#xff08;Boot&#xff09;跳轉到應用程序&#xff08;APP&#xff09;的條件通常由硬件和軟件協同控制&#xff0c;核心邏輯是確保APP的完整性和合法性。以下是關鍵條件及流程&#xff1a; 1. 硬件啟動模式選擇 BOOT引腳電平&#xff1a…

LeeCode題庫第二十八題

28.找出字符串第一個匹配項的下標 項目場景&#xff1a; 給你兩個字符串 haystack 和 needle &#xff0c;請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標&#xff08;下標從 0 開始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;則返回 …

深入解析BFS算法:C++實現無權圖最短路徑的高效解決方案

在無權圖中&#xff0c;廣度優先搜索&#xff08;BFS&#xff09;是解決最短路徑問題的高效算法。接下來博主從專業角度深入探討其實現細節&#xff0c;并給出C代碼示例&#xff1a; 目錄 一、核心原理 二、算法步驟 三、C實現關鍵點 1. 數據結構 2. 邊界檢查 3. 路徑回溯…

Plant Simulation培訓教程-雙深堆垛機立庫仿真模塊

原創 知行 天理智能科技 2025年01月03日 17:02 浙江 又到年終盤點的時候了&#xff0c;在這里我把之前錄制的Plant Simulation培訓教程-雙深堆垛機立庫仿真模塊分享出來&#xff0c;有需要的可以直接聯系我。 雙深堆垛機立庫仿真模塊基于單深模塊開發&#xff0c;適用于雙深堆…

文本和語音互轉

目錄 1. 下載依賴ddl 2. 引入Pom依賴 3. java代碼 二. 語音轉文本 1. 下載中文語音轉文本的模型 2. 引入pom依賴 3. java代碼 4. 運行效果 1. 下載依賴ddl 文字轉語音文件需要使用jacob的dll文件放在jdk安裝目錄下的bin文件夾下 點擊官網下載錄或者通過csdn下載 2. …

DeepSeek破局啟示錄:一場算法優化對算力霸權的降維打擊

導言 2024年,中國AI大模型賽道殺出一匹黑馬——深度求索(DeepSeek)。從數學推理能力超越GPT-4,到API價格僅為Claude 3.5的1/53,再到開源生態的快速擴張,DeepSeek的崛起不僅打破了“算力霸權”的固有認知,更揭示了AI行業底層邏輯的深刻變革。這場技術革命背后,隱藏著技術…

Python大數據可視化:基于python大數據的電腦硬件推薦系統_flask+Hadoop+spider

開發語言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7數據庫&#xff1a;mysql 5.7數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;PyCharm 系統展示 管理員登錄 管理員功能界面 價格區間界面 用戶信息界面 品牌管理 筆記本管理 電腦主機…

阿里云虛機的遠程桌面登錄提示帳戶被鎖定了

提示由于安全原因&#xff0c;帳戶被鎖定。 阿里云虛機ECS的遠程桌面登錄提示帳戶被鎖定了&#xff0c;只能登錄阿里云處理 阿里云-計算&#xff0c;為了無法計算的價值 需選擇通過VNC連接 然后計算機管理&#xff0c;解除帳戶鎖定即可。

Grok 使用指南

文章來源&#xff1a;Grok 漫游指南 | xAI Docs 歡迎&#xff01;在本指南中&#xff0c;我們將引導您了解使用 xAI API 的基礎知識。 #第 1 步&#xff1a;創建 xAI 帳戶 您需要一個 xAI 帳戶才能訪問 xAI API。在此處注冊帳戶。 創建賬戶后&#xff0c;您需要為其加載積分…

Node.js高頻面試題精選及參考答案

目錄 什么是 Node.js?它的主要特點有哪些? Node.js 的事件驅動和非阻塞 I/O 模型是如何工作的? 為什么 Node.js 適合處理高并發場景? Node.js 與傳統后端語言(如 Java、Python)相比,有哪些優勢和劣勢? 簡述 Node.js 的運行原理,包括 V8 引擎的作用。 什么是 Nod…

Servlet概述(Ⅰ)

目錄 一、Servlet概述 演示 創建JavaWeb項目&#xff08;2017版本為例&#xff09; 1. 打開 IntelliJ IDEA 2. 選擇項目類型 3. 配置框架 二、Servlet初識(熟練) 1.servlet說明 2.Servlet 接口方法 3.創建Servlet 4.JavaWeb請求響應流程 ?編輯 ?編輯 5.servlet…

Windows 小記 18 —— 子窗口繼承父窗口的樣式

子窗口會繼承父窗口或者所有者窗口的一些樣式。 當我們使用 CreateWindowExW 創建窗口后&#xff0c;指定其 HwndParent 參數時&#xff0c;或者通過 SetWindowLongPtr(vd->Hwnd, GWLP_HWNDPARENT, (LONG_PTR)vd->HwndParent); 指定所有者窗口時&#xff0c;子窗口將從父…

19、《Springboot+MongoDB整合:玩轉文檔型數據庫》

SpringbootMongoDB整合&#xff1a;玩轉文檔型數據庫 摘要&#xff1a;本文全面講解Spring Boot與MongoDB的整合實踐&#xff0c;涵蓋環境搭建、CRUD操作、聚合查詢、事務管理、性能優化等核心內容。通過15個典型代碼示例&#xff0c;演示如何高效操作文檔數據庫&#xff0c;深…