【華為OD技術面試真題 - 技術面】- Java面試題(15)

華為OD面試真題精選

專欄:華為OD面試真題精選
目錄: 2024華為OD面試手撕代碼真題目錄以及八股文真題目錄

封面

介紹下TCP/UDP

TCP(傳輸控制協議)和 UDP(用戶數據報協議)

TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是兩種常見的傳輸層協議,主要用于不同類型的網絡通信。它們各自有不同的特性、應用場景以及優缺點。下面是對這兩種協議的詳細介紹:

1. TCP(傳輸控制協議)

TCP 是一種面向連接的協議,它確保數據包的可靠傳輸。它使用的是連接建立和斷開機制,這意味著在數據傳輸開始之前,發送方和接收方之間需要先建立連接。TCP 協議適用于那些對可靠性要求高的場景。

特性:
  • 面向連接:在數據傳輸之前,發送端和接收端需要建立一個連接,使用三次握手(3-way handshake)過程來完成連接的建立。
  • 可靠性:TCP 確保數據按順序到達接收方,并且通過校驗和、確認應答、重傳機制來保證數據的完整性。
  • 流量控制:TCP 使用滑動窗口協議來控制數據的流量,防止發送過快導致接收方無法處理。
  • 擁塞控制:TCP 還通過算法(如慢開始、擁塞避免)來避免網絡擁塞,確保數據傳輸的高效性。
  • 順序保證:TCP 確保數據包按發送順序到達接收方。如果數據包丟失或順序錯亂,會進行重傳,確保順序一致。
工作原理:
  • 三次握手:建立連接時,發送方和接收方通過三次握手的過程來同步各自的初始序列號,確保連接的可靠性。
  • 數據傳輸:數據按字節流的形式傳輸,接收方會對每一個收到的數據包進行確認,發送方根據接收方的確認應答進行重傳,確保數據的完整性。
  • 四次揮手:連接結束時,發送方和接收方通過四次揮手過程來關閉連接,釋放資源。
應用場景:
  • Web 瀏覽(HTTP/HTTPS)
  • 文件傳輸(FTP)
  • 電子郵件(SMTP, IMAP, POP3)
  • 遠程登錄(SSH, Telnet)
優點:
  • 可靠性高,數據傳輸保證無誤。
  • 數據按順序到達。
缺點:
  • 建立連接需要時間(3次握手),增加延遲。
  • 流量和擁塞控制帶來額外的開銷。
  • 不適合實時應用,因為延遲較高。

2. UDP(用戶數據報協議)

UDP 是一種無連接的協議,相較于 TCP,它提供較低的開銷和更少的延遲。UDP 不保證數據的可靠性,數據包可能丟失、重復或無序到達。因此,它適用于對傳輸速度要求較高,但對可靠性要求不那么嚴格的應用。

特性:
  • 無連接:UDP 不需要在發送數據之前建立連接,因此減少了建立和斷開連接的時間。
  • 不可靠性:UDP 不保證數據包的到達和順序,不進行任何重傳或確認。
  • 無流量控制和擁塞控制:UDP 不會控制發送的速率,因此沒有流量控制和擁塞控制機制。
  • 輕量級:UDP 的頭部開銷非常小,相比 TCP 它傳輸數據更高效。
工作原理:
  • 數據傳輸:發送方直接發送數據包給接收方,沒有建立連接,也沒有確認機制。如果數據丟失或順序錯誤,接收方也不會請求重傳。
  • 數據報文:UDP 每次發送的數據是一個獨立的“數據報”,即使數據包丟失或錯亂,UDP 也不進行任何補救。
應用場景:
  • 流媒體(視頻、音頻傳輸)
  • 實時通訊(VoIP、在線游戲)
  • DNS 查詢
  • SNMP(簡單網絡管理協議)
  • DHCP(動態主機配置協議)
優點:
  • 速度快,延遲低,適合實時應用。
  • 傳輸開銷小,沒有連接建立和維護的過程。
  • 無連接,適合廣播、單播等場景。
缺點:
  • 不保證數據的可靠性、順序和完整性。
  • 不適合需要高可靠性的應用。

3. TCP 和 UDP 的對比

特性TCPUDP
連接性面向連接,需要建立連接(3次握手)無連接,數據包獨立發送
可靠性保證數據按順序到達,丟失數據會重傳不保證數據到達,也不保證順序,不重傳丟失數據
流量控制有流量控制和擁塞控制無流量控制
傳輸速度相對較慢,因有重傳和確認過程較快,無重傳和確認過程
頭部開銷大,通常是20字節以上小,通常是8字節
適用場景需要可靠性保證的應用,如 HTTP、FTP、SSH 等對速度要求高、可容忍丟包的應用,如視頻、音頻流等

TCP為什么可靠

TCP(Transmission Control Protocol)被設計為一個可靠的傳輸協議,提供可靠的數據傳輸服務。它通過一系列機制來確保數據從發送方到接收方的可靠性,以下是 TCP 保證可靠性的幾個關鍵特性:

1. 數據完整性

  • TCP 在發送數據時會計算數據的校驗和(Checksum)。在接收方,TCP 會使用相同的算法重新計算接收到的數據的校驗和。如果校驗和不匹配,數據就被認為是損壞的,接收方會丟棄該數據包并要求重傳。

2. 數據順序保證

  • TCP 使用序列號(Sequence Number)來標識每個數據包。當接收方收到數據包時,它會根據序列號對數據進行排序。即使數據包到達的順序不同,接收方仍能根據序列號按正確的順序重組數據。

    • 如果一個數據包丟失或亂序,接收方會按順序等待并請求重傳。

3. 確認應答與重傳機制

  • 在 TCP 中,發送方會在發送每個數據包后等待接收方的確認應答(ACK)。接收方收到數據包后,會向發送方發送一個確認信號,告知已經收到的數據包的序列號。

    • 如果發送方在一定時間內沒有收到確認應答,它會認為數據包丟失,并會重傳該數據包。這保證了數據的可靠傳輸。

4. 流量控制(Flow Control)

  • TCP 使用滑動窗口機制進行流量控制,以避免發送方發送過快,導致接收方處理不過來。

    • 接收方會告知發送方它的緩沖區大小(即窗口大小),發送方會根據這個信息調整發送速度,從而避免緩沖區溢出和數據丟失。

5. 擁塞控制(Congestion Control)

  • 為了防止網絡擁塞,TCP 使用擁塞控制算法(如慢開始、擁塞避免、快速重傳、快速恢復等)來動態調整數據的發送速度。

    • 這些機制確保了網絡中不會因為數據發送過快而導致網絡擁塞,從而減少了丟包和延遲。

6. 三次握手(Three-Way Handshake)

  • 在連接建立時,TCP 使用三次握手來確認雙方是否都準備好開始數據傳輸:

    1. SYN:客戶端向服務器發送一個連接請求。
    2. SYN-ACK:服務器響應確認請求。
    3. ACK:客戶端確認收到服務器的響應。

    這個過程確保了雙方的連接建立是可靠的。

7. 四次揮手(Four-Way Handshake)

  • 在連接斷開時,TCP 使用四次揮手來確保雙方都知道連接已經關閉,數據傳輸也已完全結束。這確保了沒有數據丟失,并且連接能夠安全地關閉。

8. 重傳機制(Retransmission)

  • 當發送方沒有收到接收方的確認應答時,TCP 會定時進行重傳。通過超時重傳(Timeout Retransmission)機制,保證丟失的數據包能夠及時重傳并且最終到達接收方。

9. 流控制和擁塞控

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

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

相關文章

?在 Fedora 系統下備份遠程 Windows SQL Server 數據庫的完整方案

?一、環境準備與工具安裝? ?1. 安裝 Microsoft SQL Server 命令行工具? Fedora 需安裝 mssql-tools 和 ODBC 驅動: # 添加 Microsoft 倉庫 sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安裝工具包 …

DeepSeek:巧用前沿AI技術,開啟智能未來新篇章

引言 近年來,人工智能(AI)技術迅猛發展,大模型成為全球科技競爭的核心賽道。在這場AI革命中,DeepSeek作為中國領先的大模型研發團隊,憑借其創新的技術架構、高效的訓練方法和廣泛的應用場景,迅…

R語言實現軌跡分析--traj和lcmm包體會

R語言實現軌跡分析–traj和lcmm包體會 軌跡分析是對重復測量數據的一種歸納,轉化為一種分類變量,比如手術后1~7天內的疼痛評分,可以形成術后急性痛軌跡。形成的軌跡作為一個分類變量,可以用于預測疾病的預后&#xff…

Vue 3 事件總線詳解:構建組件間高效通信的橋梁

Vue 3 事件總線詳解:構建組件間高效通信的橋梁 為什么需要事件總線?使用 mitt 實現事件總線1. 安裝 mitt2. 創建事件總線3. 在組件中使用事件總線發送端組件(例如 ComponentA.vue)接收端組件(例如 ComponentB.vue&…

MySQL的基礎語法1(增刪改查、DDL、DML、DQL和DCL)

目錄 一、基本介紹 二、SQL通用語法 三、SQL分類(DDL、DML、DQL、DCL) 1.DDL 1.1數據庫操作 1.2表操作 1.2.1表操作-查詢創建 1.2.2表操作-數據類型 1)數值類型 2)字符串類型 3)日期時間類型?編輯 4)表操作-案例 1.2.3…

【NLP】15. NLP推理方法詳解 --- 動態規劃:序列標注,語法解析,共同指代

動態規劃 (Dynamic Programming) 動態規劃(Dynamic Programming,簡稱 DP)是一種通過將問題分解為較小子問題來優化計算效率的技術。它特別適用于優化最優解問題,比如序列標注(sequence tagging)這類任務。…

JavaScript中的NaN、undefined和null 的區別

NaN代表"Not a Number",它是一種特殊的數值,用于表示非數字值。當一個操作無法返回有效的數值時,通常會得到NaN作為結果。 let result = 10 / abc; console.log(result); // 輸出 NaN需要注意的是,NaN與自身不相等,我們無法通過簡單的比較操作符(如==或===)來…

Turtle事件處理(鍵盤與鼠標交互)

Turtle 提供了 事件驅動編程,允許我們使用 鍵盤 和 鼠標 控制 Turtle,從而實現交互式繪圖。例如,我們可以讓 Turtle 響應 按鍵、鼠標點擊 和 拖動 事件,使其根據用戶的輸入進行移動、旋轉或繪制圖形。 1. 事件機制概述 Turtle 的事件處理主要依賴 turtle.Screen() 提供的 …

【Keepalived】Keepalived-2.3.3明確結束對CentOS 7的支持

2025年3月30日,官方發布了Keepalived的最新版,版本號:2.3.3 而2024年11月3日發布的2.3.2版本,在CentOS 7.9上編譯的時候,就出現了報錯,但是在Alma Linux 8.10上,則可以成功編譯安裝&#xff0c…

PyTorch --torch.cat張量拼接原理

在 PyTorch 的 torch.cat 函數中,out 參數用于指定輸出張量的存儲位置。是否使用 out 參數直接影響結果的存儲方式和張量的內存行為。以下是詳細解釋: 不使用 out 參數(默認行為) 含義:不提供 out 參數時,…

人工智能之數學基礎:矩陣對角化的本質

本文重點 前面的課程中,我們學習了矩陣的對角化,基于對角化可以將矩陣A轉變為對角矩陣D,但是你有沒有想過,為什么要進行矩陣對角化,矩陣對角化究竟做了一件什么事情呢? 矩陣對角化的本質 幾何解釋: 從幾何變換的角度看,矩陣對角化意味著我們找到了一組基,使得線性變…

ubuntu的ubuntu--vg-ubuntu--lv磁盤擴容

在我們安裝ubuntu時,如果選擇的是自動分區,就會按照邏輯卷的形式來分區,并且只分配100G其余的并不會被分配,這對我們大多數情況來說都是不合理的,所以,如何擴充呢 下面以一個小的案例來說明如何擴充 問題…

Redis BitMap 實現簽到及連續簽到統計

一、引言 用戶簽到功能是很多應用都離不開的一個板塊,單詞打開、QQ達人等等為我們所熟知,這項功能該如何實現呢,一些朋友可能想當然的覺得無非將每日的簽到數據記錄下來不就好了,不會去細想用誰記錄,如何記錄才合適。 …

前端國際化-插件模式

文章目錄 Webpack 插件開發解析中文調用有道翻譯 API生成 JSON 語言文件React 國際化實現 Webpack 插件開發 創建 i18n-webpack-plugin.js 插件:在 src 目錄下掃描所有文件使用 babel-parser 解析 JavaScript/JSX 代碼識別中文文本通過有道翻譯 API 翻譯生成 local…

IP屬地和發作品的地址不一樣嗎

在當今這個數字化時代,互聯網已經成為人們日常生活不可或缺的一部分。隨著各大社交平臺功能的不斷完善,一個新功能——IP屬地顯示,逐漸走進大眾視野。這一功能在微博、抖音、快手等各大平臺上得到廣泛應用,旨在幫助公眾識別虛假信…

PP-ChatOCRv3新升級:多頁PDF信息抽取支持自定義提示詞工程,拓展大語言模型功能邊界

文本圖像信息抽取技術在自動化辦公、建筑工程、教育科研、金融風控、醫療健康等行業領域具有廣泛應用場景。2024年9月,飛槳低代碼開發工具PaddleX中新增文本圖像智能產線PP-ChatOCRv3,充分結合PaddleOCR的文本圖像版面解析能力和文心一言語言理解優勢&am…

算法刷題記錄——LeetCode篇(1.2) [第11~20題](持續更新)

更新時間:2025-03-29 LeetCode題解專欄:實戰算法解題 (專欄)技術博客總目錄:計算機技術系列目錄頁 優先整理熱門100及面試150,不定期持續更新,歡迎關注! 17. 電話號碼的字母組合 給定一個僅包含數字 2-9…

如何在 vue 渲染百萬行數據,vxe-table 渲染百萬行數據性能對比,超大量百萬級表格渲染

vxe-table 渲染百萬行數據性能對比,超大量百萬級表格渲染;如何在 vue 渲染百萬行數據;當在開發項目時,遇到需要流暢支持百萬級數據的表格時, vxe-table 就可以非常合適了,不僅支持強大的功能,虛…

阿里 FunASR 開源中文語音識別大模型應用示例(準確率比faster-whisper高)

文章目錄 Github官網簡介模型安裝非流式應用示例流式應用示例 Github https://github.com/modelscope/FunASR 官網 https://www.funasr.com/#/ 簡介 FunASR是一個基礎語音識別工具包,提供多種功能,包括語音識別(ASR)、語音端…

如何使用 LLaMA-Factory 微調 LLaMA3

【LLaMa3微調】使用 LLaMA-Factory 微調LLaMA3 實驗環境 1.1 機器 操作系統:Windows 10 或 UbuntuPyTorch 版本:2.1.0Python 版本:3.10(針對Ubuntu 22.04)Cuda 版本:12.1GPU 配置:p100 (16GB) …