一篇文章入門TCP與UDP(保姆級別)

🐳第一部分:什么是TCP和UDP?

先給結論:TCP 和 UDP 都是傳輸層協議,負責把數據從一臺電腦 “搬” 到另一臺電腦,但它們的 “搬運風格” 完全不同

📦 比喻:TCP 像 "打電話",UDP 像 "寫信"

  • TCP(Transmission Control Protocol,傳輸控制協議)
    就像打電話—— 必須先 “撥通對方號碼”(三次握手建立連接),通話中能"實時確認對方聽到"(通過確認應答、重傳機制保障可靠),掛電話前還要"說清楚再見"(四次揮手斷開連接)。
    核心是雙向確認、實時反饋,確保對話完整、有序。
  • UDP(User Datagram Protocol,用戶數據報協議)
    就像寫信—— 寫好內容、填完地址,直接丟進郵筒(無需確認對方是否在線)。信寄出去后,不管對方收沒收到、內容是否完整(丟包、亂序不管),自己的 "發送任務 "就結束了。
    核心是簡單快捷、無需等待,追求 “發出去就行”

📌 一句話總結:

TCP 像"實時電話",追求穩、準、全;UDP 像 "投信",追求快、簡、省

🐳第二部分:TCP的三次握手和四次揮手

2.1 TCP的三次握手🌈

🤝1.第一次握手(客戶端→服務器)
  • SYN 標志位:此時 SYN 標志位被置為 1,表示客戶端希望與服務器建立一個 TCP 連接。
  • 序列號(Sequence Number,seq):客戶端會隨機生成一個初始序列號,比如記為 x 。這個序列號用于標識客戶端在這個連接中發送的第一個字節的數據,后續發送的數據會基于這個序列號進行編號。 比如后續發送的數據長度為 100 字節,那下一個數據段的起始序列號就是 x + 100。

在第一次握手時,客戶端向服務器發送一個帶有 SYN 標志位且包含初始序列號 x 的 TCP 報文段,此時該報文段不包含 ACK 標志位,因為還沒有收到服務器的確認信息。

🤝2.第二次握手(服務器→客戶端)
  • SYN 標志位:同樣被置為 1 ,這是因為服務器在收到客戶端的連接請求后,也同意建立連接,所以使用 SYN 標志位來同步自己的初始序列號。
  • 序列號(seq):服務器也會隨機生成一個初始序列號,比如記為 y 。
  • ACK 標志位:被置為 1,表示服務器對客戶端發送的 SYN 報文進行確認。
  • 確認號(Acknowledgment Number,ack):其值為客戶端初始序列號 x 加 1,即 ack = x + 1 。這表明服務器已經成功收到了客戶端的 SYN 報文,并且期望客戶端下一次發送的數據從序列號 x + 1 開始。

所以,第二次握手時服務器發送的報文段同時包含了 SYN 和 ACK 標志位,以及服務器自己的初始序列號 y 和對客戶端的確認號 x + 1。

🤝3.第三次握手(客戶端→服務器)
  • ACK 標志位:被置為 1,表示客戶端對服務器發送的 SYN + ACK 報文進行確認。
  • 確認號(ack):其值為服務器初始序列號 y 加 1,即 ack = y + 1 。這意味著客戶端已經成功收到了服務器的 SYN + ACK 報文,并且期望服務器下一次發送的數據從序列號 y + 1 開始。
  • 序列號(seq):其值為客戶端在第一次握手時發送的初始序列號 x 加 1,即 seq = x + 1 ,這是因為在第一次握手時客戶端發送的 SYN 報文也占用了一個序列號

第三次握手時,客戶端發送的報文段主要是一個僅包含 ACK 標志位的確認報文,以及對服務器的確認號 y + 1 和自己的序列號 x + 1。

總結

通過這三次握手,客戶端和服務器雙方都確認了彼此的收發能力正常, 并且就各自的初始序列號達成了一致,從而建立起一個可靠的 TCP 連接,為后續的數據傳輸做好了準備。

2.2 TCP的四次揮手🌈

??一、【核心邏輯】四次揮手的 “靈魂”

為什么需要四次揮手?因為 TCP 是全雙工通信(雙方可以同時發數據),所以斷開連接時:

  1. 客戶端 → 服務器:"我要關了(FIN)"
  2. 服務器 → 客戶端:"收到,等我發完剩余數據(ACK)"
  3. 服務器 → 客戶端:"我也關了(FIN)"
  4. 客戶端 → 服務器:"收到,確認關閉(ACK)"
??二、【逐次拆解】四次揮手的報文細節
🤝1. 第一次揮手(客戶端 → 服務器):“我沒數據要發了,準備關”
  • 行為:客戶端主動發起斷開,發送 FIN 報文。
  • 關鍵字段
    • FIN 標志位:置為 1 → 告訴服務器 “我沒數據要發了,準備關閉連接”。
    • 序列號(seq):填 u → 表示 “這是我最后發的字節流的序列號”(u 是客戶端當前已發數據的最后一個序列號 + 1)。
    • 確認號(ack):填 v → 表示 “我確認收到你之前發的序列號到 v - 1 的數據”(v 是服務器最后一次 ACK 的確認號)。
  • 類比:你打電話說 “我這邊說完了,準備掛了”,并告訴對方 “我最后說的內容是第 u 字節”。
🤝2. 第二次揮手(服務器 → 客戶端):“收到關閉請求,等我處理完剩余數據”
  • 行為:服務器收到 FIN 后,先回復 ACK 確認 “收到關閉請求”,但不立即關閉(可能還有數據沒發完)。
  • 關鍵字段
    • ACK 標志位:置為 1 → 告訴客戶端 “我收到你的關閉請求了”。
    • 序列號(seq):填 v → 表示 “這是我當前要發的字節流的序列號”(v 是服務器已發數據的最后一個序列號 + 1)。
    • 確認號(ack):填 u + 1 → 表示 “我確認收到你 seq = uFIN 報文,期望你后續(如果有)從 u + 1 開始發”(但客戶端已經沒數據發了)。
  • 類比:對方說 “好的,我知道你要掛了,等我把最后幾句話說完”,并確認 “你最后說的是第 u 字節,我記住了”。
🤝3. 第三次揮手(服務器 → 客戶端):“我也沒數據發了,你可以關了”
  • 行為:服務器處理完所有剩余數據后,主動發送 FIN 報文,告訴客戶端 “我也沒數據了,現在可以關連接了”。
  • 關鍵字段
    • FIN 標志位:置為 1 → 告訴客戶端 “我也沒數據要發了,準備關閉”。
    • 序列號(seq):填 w → 表示 “這是我最后發的字節流的序列號”(w 是服務器處理完剩余數據后的最后一個序列號 + 1)。
    • 確認號(ack):填 u + 1 → 同第二次揮手,繼續確認客戶端的 FIN 報文。
  • 類比:對方說 “我說完了,你可以掛了”,并告訴客戶端 “我最后說的內容是第 w 字節”。
🤝4. 第四次揮手(客戶端 → 服務器):“收到關閉請求,確認關閉”
  • 行為:客戶端收到服務器的 FIN 后,回復 ACK 確認 “收到關閉請求”,并等待 2MSL 時間(確保服務器收到 ACK,避免服務器重發 FIN)后關閉連接。
  • 關鍵字段
    • ACK 標志位:置為 1 → 告訴服務器 “我收到你的關閉請求了”。
    • 序列號(seq):填 u + 1 → 表示 “這是我回應你的 ACK 報文的序列號”(客戶端已無數據發,序列號延續之前的邏輯)。
    • 確認號(ack):填 w + 1 → 表示 “我確認收到你 seq = wFIN 報文,期望你后續(如果有)從 w + 1 開始發”(但服務器也沒數據發了)。
  • 類比:你說 “好的,我知道你說完了,現在徹底掛了”,并確認 “你最后說的是第 w 字節,我收到了”。

完美撒花~

Linux的常見命令:Linux常見的命令(超實用!!!!)-CSDN博客

Linux中jar包腳本:在Linux環境安裝JDK17(保姆級教程)_linux安裝jdk17-CSDN博客

在Docker里面裝PostgreSQL:在Docker里面裝PostgreSQL(保姆級別)_docker安裝postgresql,設置時區,日志掛載出來,配置文件掛載出來-CSDN博客

在Docker中下載Redis和配置:在Docker中下載Redis和配置(保姆級別)_docker 下載redis-CSDN博客

在Docker中下載MySql和配置:在Docker中下載MySql和配置(超詳細!!!)_mysql docker鏡像下載-CSDN博客

在Linux系統中安裝Docker:在Linux系統中安裝Docker(保姆級別)_linux安裝docker csdn-CSDN博客

阿里云服務器的購買以及遠程連接:阿里云服務器入門教程:購買,配置,遠程連接(保姆級別)-CSDN博客

在Linux環境安裝JDK17:在Linux環境安裝JDK17(保姆級教程)_linux安裝jdk17-CSDN博客

在Linux環境安裝Redis:在Linux環境安裝Redis(保姆級教程)_linux 安裝最新版redis-CSDN博客

java中的stream流:Java中的Stream流(保姆級別!!)_流(streams)java,可以定時嘛-CSDN博客

保姆級別idea關聯數據庫的方式:保姆級別IDEA關聯數據庫方式、在IDEA中進行數據庫的可視化操作(包含圖解過程)-CSDN博客

Linux的訪問權限:Linux的訪問權限(保姆級別)-CSDN博客

如何優雅刪除Docker鏡像和容器:如何優雅刪除Docker鏡像和容器(保姆級別)-CSDN博客

最實用的vim指令:最實用的Vi/Vim指令匯總(上手超快!!!)_實用vim-CSDN博客

Git、Gitee、GitHub、GitLab完整講解:從基礎到進階:

Git、Gitee、GitHub、GitLab完整講解:從基礎到進階-CSDN博客

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

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

相關文章

2024年測繪程序設計比賽--空間探索性分析(數據為2025年第三次模擬數據)

想要在2026年參加這個比賽的&#xff0c;可以加入小編和其它大佬所建的群242845175一起來備賽&#xff0c;為2026年的比賽打基礎&#xff0c;也可以私信小編&#xff0c;為你答疑解惑一、讀寫文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI時代,Data+AI下一代數智平臺建設指南

DataAI下一代數智平臺建設指南一、生成式AI時代的五大數據挑戰二、驅動DataAI平臺建設的核心要素主動選擇&#xff1a;構建競爭壁壘被動應對&#xff1a;解決現有痛點三、DataAI平臺的六大關鍵能力四、騰訊云DataAI產品方案與實踐1. 數據與AI協同層2. 開發與治理層3. 存儲與計算…

FPGA學習筆記——SPI通訊協議簡介

目錄 一、SPI通訊協議簡介 二、SPI物理層 三、SPI協議層 1.通訊模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通訊流程 一、SPI通訊協議簡介 SPI&#xff08;Seria…

JavaScript核心概念解析:從基礎語法到對象應用

導語&#xff1a;本文系統梳理JavaScript的核心知識框架&#xff0c;適用于編程入門學習者。內容涵蓋基礎語法、數據類型、函數應用及內置對象&#xff0c;幫助讀者構建清晰的JS知識體系。一、語言基礎與執行原理瀏覽器執行機制渲染引擎&#xff1a;解析HTML/CSS&#xff08;如…

在 Kotlin 中使用函數類型和 lambda 表達式

參考官方文檔: https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0 1、 將函數存儲在變量中 作為一種一級結構,函數也屬于數據類型,因此,可以將函數存儲在變量中、將函數傳遞到函數,以及從函數返回函數…

計算機硬件組成原理

&#x1f9e0; 一、計算機的硬件組成&#xff1a;五大核心部件 根據“馮諾依曼體系結構”&#xff0c;現代計算機主要由這 5大部分組成&#xff1a;部件作用通俗解釋1?? 運算器&#xff08;ALU&#xff09;負責算術和邏輯運算會加減乘除和做判斷的“計算工廠”2?? 控制器&a…

告別 window.open,擁抱全新浮窗體驗!

深入了解 Document Picture-in-Picture API&#xff0c;并對比 Modal 的最佳使用場景在前端開發中&#xff0c;我們經常會遇到這樣的需求&#xff1a;彈出一個浮動窗口來顯示一些實時信息、工具欄或視頻內容。過去我們會用 window.open()&#xff0c;后來越來越多的開發者傾向于…

Python爬蟲實戰:研究weiboSpider技術,構建新浪微博數據采集系統

1. 引言 1.1 研究背景 在信息時代,社交媒體已成為人們獲取信息、表達觀點的重要渠道。微博作為其中的典型代表,擁有龐大的用戶群體和活躍的內容生態。截至 2023 年底,微博月活躍用戶數已超過 5.8 億,日均發博量達數千萬條,數據涵蓋社會熱點、公眾情緒、消費偏好等多維度…

HashMap初始化容量為10,還未添加數據時,它的實際容量是多少?

在Java中&#xff0c;當使用 new HashMap<>(10) 初始化一個容量為10的 HashMap 但尚未添加任何數據時&#xff0c;其實際容量&#xff08;底層數組的長度&#xff09;不是10&#xff0c;而是16。原因如下&#xff1a;關鍵機制解析&#xff1a;容量必須是2的冪HashMap要求…

前端開發:CSS(2)—— 選擇器

前面我們初步學習了CSS&#xff0c;對其有了基本的認識。下面我們來具體學習CSS中的選擇器。 目錄 選擇器的種類 1.基礎選擇器 &#xff08;1&#xff09;標簽選擇器 &#xff08;2&#xff09;類選擇器 &#xff08;3&#xff09;id選擇器 &#xff08;4&#xff09;通…

人工智能2.0時代的人才培養和通識教育

目錄引言&#xff1a;從"機器模仿"到"智能協同"的時代跨越一、人工智能2.0的技術演進&#xff1a;從規則到大模型的三次躍遷1. 人工智能0.0&#xff08;1956-2006&#xff09;&#xff1a;規則驅動的"專家系統時代"2. 人工智能1.0&#xff08;20…

管理索引常用的API

二.管理索引常用的API 1.查看現有索引信息 查看所有索引信息列表&#xff1a;curl -X GET http://elk101.k8s.com:9200/_cat/indices?v查看某個索引的詳細信息:curl -x GET http://elk101.k8s.com:9200/linux-2020-10-2溫馨提示: (1)"?v"表示輸出表頭信息&#xff…

當文檔包含表格時,如何結合大模型和OCR提取數據?

在AI應用極速發展的當下&#xff0c;LLM&#xff08;大語言模型&#xff09;與RAG&#xff08;檢索增強生成&#xff09;系統已成為構建智能問答、知識管理等高階應用的核心引擎。 然而&#xff0c;許多團隊在項目落地時遭遇了現實的挑戰&#xff1a;模型的實際表現——無論是回…

機器學習工程化 3.0:從“實驗科學”到“持續交付”的 7 個關卡

一、背景&#xff1a;為什么 90% 的 ML 項目死在了實驗臺&#xff1f; Gartner 2024 報告顯示&#xff0c;87% 的企業機器學習項目未能走出實驗室。原因并非算法落后&#xff0c;而是缺少“工程化骨骼”&#xff1a;數據漂移無人發現&#xff0c;模型上線一周就失效&#xff1b…

BGP筆記整理

一、BGP 基礎概念1. 產生背景BGP&#xff08;Border Gateway Protocol&#xff09;是自治系統&#xff08;AS&#xff09;間的動態路由協議&#xff0c;屬于外部網關協議&#xff08;EGP&#xff09;&#xff0c;用于在不同 AS 之間傳遞路由信息。2. 自治系統&#xff08;AS&am…

Mysql-MVCC機制

1. MVCC機制詳解 在Read Uncommitted級別下&#xff0c;事務總是讀取到最新的數據&#xff0c;因此根本用不到歷史版本&#xff0c;所以MVCC不在該級別下工作。 在Serializable級別下&#xff0c;事務總是順序執行。寫會加寫鎖&#xff0c;讀會加讀鎖&#xff0c;完全用不到MVC…

MySQL面試題及詳細答案 155道(061-080)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

大數據中需要知道的監控頁面端口號都有哪些

以下是一些大數據中常見組件監控頁面的端口號&#xff1a;1. Hadoop&#xff1a;HDFS Web UI在Hadoop2.x版本中默認端口為50070&#xff0c;在Hadoop3.x版本中為9870&#xff0c;用于查看集群文件及目錄&#xff1b;YARN Web UI端口為8088&#xff0c;可查看MR執行情況&…

時隔六年!OpenAI 首發 GPT-OSS 120B / 20B 開源模型:性能、安全與授權細節全解

為什么這次開放值得關注&#xff1f; OpenAI 時隔六年再次“放權重”&#xff0c;一次性公布 gpt-oss-120b 與 gpt-oss-20b 兩個尺寸&#xff0c;并允許商業化二次開發 —— 采用 Apache 2.0 許可且可直接在 Hugging Face 下載(WIRED)。官方表示&#xff0c;開放旨在 降低門檻…