TCP/UDP協議原理和區別 筆記

從簡單到難吧

區別就是TCP一般用于安全穩定的需求,UDP一般用于不那么需要完全數據的需求,比如說直播,視頻等。

再然后就是TPC性能慢于UDP。

再然后我們看TCP的原理(三次握手,數據傳輸,四次揮手)

首先是三次握手,然后我在后面會問二次握手可不可以,可能面試會被問到。

三次握手:

(第一次)客戶端向服務端發起請求,我要連接,然后客戶端發送syn包給服務端。

(第二次)服務端發送之前的syn和ack包給客戶端

(第三次)客戶端收到服務端發給我的syn和自己的syn,如果一致了那么給服務端發起ack。

為什么不是兩次握手?

如果是兩次的話,客戶端給服務端的syn1包卡住了,那么客戶端會再發一個syn2包給服務端,服務端給客戶端連接,但是這時候syn1包又好了,再次請求給服務端,這時候服務端會再次連接,最后導致客戶端認為是一個連接,但是服務端認為是兩個。就會出現問題。

數據傳輸:

  • 分段與編號:應用程序交給 TCP 的數據可能很大,TCP 會將其分成合適大小的數據段(報文段)。每個數據段都有一個序列號,用于標識數據在字節流中的位置 。比如發送一個大文件,會被分成多個數據段,每個數據段都有序列號,便于接收方按序重組 。
  • 確認與重傳:發送方發送數據段后,啟動一個定時器并等待接收方的確認(ACK)。接收方收到數據段后,會檢查數據是否正確,若正確則向發送方發送確認報文,其中確認號表示期望接收的下一個數據段的序列號 。如果發送方在定時器超時前未收到確認,就會重傳該數據段 。
  • 流量控制:接收方通過 TCP 報文中的窗口字段告知發送方自己當前的接收緩沖區還能容納多少字節的數據(即窗口大小 )。發送方根據這個窗口大小來調整自己的發送速率,避免發送過快導致接收方緩沖區溢出 。比如接收方緩沖區快滿時,會減小窗口大小,發送方收到通知后降低發送速度 。
  • 擁塞控制:發送方會根據網絡的擁塞情況調整自己的發送速率。當網絡出現擁塞時,發送方會降低發送數據的速度,避免網絡擁塞進一步惡化 。常見的擁塞控制算法有慢開始、擁塞避免、快速重傳、快速恢復等 。

這是ai給我發的,很詳細,但是我想要的不是這個。所以我精簡一下。(主要看下面這個即可)

  • 分段與編號:TCP的數據會把它分成幾段進行處理,并且進行編號。
  • 確認與重傳:如果發送數據以后拿到ack就是確認。但是發送數據以后等待超時拿不到ack就會重發。
  • 流量控制:接收方會發送窗口大小給發送方,發送方自動根據大小進行發送調整。
  • 擁塞控制:發送方會自動根據網絡進行調整發送。

四次揮手:

(第一次揮手)客戶端發送fin給服務端,然后服務端返回ack,進入到終止等待狀態

(第二次揮手)服務端接收到fin以后進入到終止等待狀態(主要是為了要處理還剩余的數據)。

(第三次揮手)服務端發送fin給客戶端

(第四次揮手)客戶端發送ack給服務端,服務端接收到ack直接關閉,客戶端等待超時才會關閉。

為什么要一直等到超時才會關閉,因為如果ack沒有發送到服務端就會出現問題,如果一直等待可以避免,如果沒有發送到那就重發即可。

至于UDP的工作原理,其實就是直接發送數據給目標地址. hh

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

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

相關文章

Jackson使用詳解

JSON Jackson是java提供處理json數據序列化和反序列的工具類,在使用Jackson處理json前,我們得先掌握json。 JSON數據類型 類型示例說明字符串(String)"hello"雙引號包裹,支持轉義字符(如 \n&a…

C語言| 指針變量的定義

C語言| 指針的優點-CSDN博客 * 表示“指向”,為了說明指針變量和它所指向的變量之間的聯系。 int * i;//表示指針變量i里面存放的地址,所指向的存儲單元里的【數據】。 【指針變量的定義】 C語言規定所有變量,在使用前必須先定…

Java 快速轉 C# 教程

以下是一個針對 Java 開發者快速轉向 C# 的簡明教程,重點對比 Java 與 C# 的異同,幫助你快速上手。 項目結構: .sln :解決方案文件,管理多個項目之間的依賴關系。.csproj :項目文件,定義目標框…

EasyExcel詳解

文章目錄 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底層邏輯~~4.easyExcel write的底層邏輯~~ 二、FastExcel1.為什么更換為fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 內容摘自官方:Java解析、生成Excel比較有名的…

jvm安全點(三)openjdk17 c++源碼垃圾回收之安全點結束,喚醒線程

1. VMThread::inner_execute() - 觸發安全點?? cpp 復制 void VMThread::inner_execute(VM_Operation* op) { if (op->evaluate_at_safepoint()) { SafepointSynchronize::begin(); // 進入安全點,阻塞所有線程 // ...執行GC等操作... SafepointSynchronize::…

102. 二叉樹的層序遍歷遞歸法:深度優先搜索的巧妙應用

二叉樹的層序遍歷是一種經典的遍歷方式,它要求按層級逐層訪問二叉樹的節點。通常我們會使用隊列來實現層序遍歷,但遞歸法也是一種可行且有趣的思路。本文將深入探討遞歸法解決二叉樹層序遍歷的核心難點,并結合代碼和模擬過程進行詳細講解。 …

首個窗口級無人機配送VLN系統!中科院LogisticsVLN:基于MLLM實現精準投遞

導讀 隨著智能物流需求日益增長,特別是“最后一公里”配送場景的精細化,傳統地面機器人逐漸暴露出適應性差、精度不足等瓶頸。為此,本文提出了LogisticsVLN系統——一個基于多模態大語言模型的無人機視覺語言導航框架,專為窗戶級別…

WPF Datagrid 數據加載和性能

這篇文章并非討論 WPF Datagrid 的性能數據,而只是簡單介紹一下為了使其性能良好,你需要注意哪些方面。我不太想使用性能分析器來展示實際數據,而是盡可能地使用了 Stopwatch 類。這篇文章不會深入探討處理海量數據的技術,例如分頁…

matlab求矩陣的逆、行列式、秩、轉置

inv - 計算矩陣的逆 用途:計算一個可逆矩陣的逆矩陣。 D [1, 2; 3, 4]; % 定義一個2x2矩陣 D_inv inv(D); % 計算矩陣D的逆 disp(D_inv);det - 計算矩陣的行列式 用途:計算方陣的行列式。 E [1, 2; 3, 4]; determinant det(E); % 計算行列式 disp…

ridecore流水線解讀

文章目錄 流水線stage分屬前后端PCpipelineIFIDDPDP 與 SW 中間沒有latchSWCOM 源碼地址 流水線stage分屬前后端 IF -> ID -> DP -> SW -> EX -> COM分類階段說明前端IF指令獲取階段。PC 使用分支預測器,訪問指令存儲器。典型前端操作。前端ID解碼并…

【SpringBoot】關于MP使用中配置了數據庫表前綴的問題

problem 使用MP時,在application.yml配置文件中配置了MP匹配數據庫表中的表名時的前綴作了規定,如下: 那么當我運行時報錯了錯誤,報錯信息如下: 因為我數據庫表的書類表名是book,MP在匹配時使用了表名前…

印度Rummy游戲支付通道申請策略:技巧類游戲的合規與創新

本文為印度支付申請科普文,自去年開始,印度Rummy類游戲申請印度支付都需要擁有AIGF的會員及產品證書。 如需要rummy可以通過AIGF審核的源。碼,或咨詢AIGF的相關內容,可以聯。系老妙。 印度作為全球棋牌類游戲增長最快的市場之一&…

日志與策略模式

什么是設計模式 IT?業 ,為了讓 菜雞們不太拖?佬的后腿, 于是?佬們針對?些經典的常?的場景, 給定了?些對應的解決?案, 這個就是 設計模式 日志認識 計算機中的?志是記錄系統和軟件運?中發?事件的?件,主要作?是監控運?狀態、記錄異常信 息&#xff…

解鎖Ubuntu高效部署!自動安裝配置文件YAML全解析

我們之前介紹了兩種Ubuntu系統的安裝方式,分別對應桌面版(準備搞OpenStack了,先裝一臺最新的Ubuntu 23.10)和服務器版(Ubuntu 22.04 LTS服務器版本安裝演示)。但對于有些用戶,因為技術問題&…

關系代數和關系數據庫語言(SQL)

閱讀提示:本篇文章較長,建議從目錄上選取想看的內容。代碼上的話,我習慣用小寫,如果看不習慣建議跳過。有問題歡迎討論!!! 一、基礎概念 1.1數據庫的概念 數據庫(Database)是按照數據結構來組…

EXO 可以將 Mac M4 和 Mac Air 連接起來,并通過 Ollama 運行 DeepSeek 模型

EXO 可以將 Mac M4 和 Mac Air 連接起來,并通過 Ollama 運行 DeepSeek 模型。以下是具體實現方法: 1. EXO 的分布式計算能力 EXO 是一個支持 分布式 AI 計算 的開源框架,能夠將多臺 Mac 設備(如 M4 和 Mac Air)組合成…

區塊鏈基本理解

文章目錄 前言一、什么是分布式賬本(DLT)二、什么是P2P網絡?二、共識算法三、密碼算法前言 區塊鏈是由一個一個數據塊組成的鏈條,按照時間順序將數據塊逐一鏈接,通過哈希指針鏈接,所有的數據塊共同維護一份分布式賬本(DLT),每個節點(可以理解為一個玩家,一臺計算機)都擁…

Node.js中的洋蔥模型

文章目錄 前言 前言 Node.js中的洋蔥模型是一種中間件執行機制,主要用于處理HTTP請求和響應的流程控制。該模型通過層層包裹的中間件結構,實現請求從外到內穿透、響應從內向外返回的順序執行。以下從核心概念、實現原理、框架差異及實際應用等方面解析&…

UI-TARS Desktop:用自然語言操控電腦,AI 重新定義人機交互

在人工智能技術飛速發展的今天,從文本生成到圖像識別,AI 的能力邊界不斷被打破。而字節跳動近期開源的 UI-TARS Desktop,則將這一技術推向了更復雜的交互場景——通過自然語言直接控制計算機界面,實現了圖形用戶界面(GUI)的智能化自動化。這款工具不僅降低了操作門檻,更…

一個可拖拉實現列表排序的WPF開源控件

從零學習構建一個完整的系統 推薦一個可通過拖拉,來實現列表元素的排序的WPF控件。 項目簡介 gong-wpf-dragdrop是一個開源的.NET項目,用于在WPF應用程序中實現拖放功能,可以讓開發人員快速、簡單的實現拖放的操作功能。 可以在同一控件內…