【計網】SW、GBN、SR、TCP

目錄

三種可靠傳輸機制(數據鏈路層)

停止-等待(Stop and Wait,SW)協議

回退N幀(Go-back-N,GBN)協議

選擇重傳(Selective Repeat,SR)協議

傳輸控制協議 (Transmission Control Protocol, TCP)


滑動窗口 (Sliding Window)

所有這些協議都基于滑動窗口機制,用于在不可靠的、但能檢測錯誤的信道(如 IP)?上實現可靠、有序的數據傳輸

窗口機制的核心思想是:

  1. 發送窗口 (Sending Window):?允許發送方連續發送多個數據包(幀)而無需等待每個包的確認 (ACK)。窗口大小定義了當前可以發送的最大未確認包數。

  2. 接收窗口 (Receiving Window):?定義了接收方愿意接收并緩存的數據包范圍。接收方維護一個按序接收的期望序列號。

  3. 滑動:?當發送方收到對窗口內最老(最早發送)的數據包的 ACK 時,發送窗口向前“滑動”,允許發送新的數據包。接收窗口在成功按序交付數據后也向前滑動。

特性停止等待 (SW)回退 N 幀 (GBN)選擇重傳 (SR)TCP (核心機制)
發送窗口大小1N (N > 1)N (N > 1)動態可變 (cwnd + rwnd)
接收窗口大小11N (N > 1)動態可變 (rwnd)
確認機制單獨確認 (Individual ACK)累積確認 (Cumulative ACK)選擇確認 (Selective ACK / SACK)累積確認 (ACK) + 選擇確認擴展 (SACK)
重傳策略僅重傳超時或出錯的那個包重傳所有未確認的包 (從出錯包開始到窗口末尾)僅重傳超時或明確未收到的包超時重傳 (GBN式) / 快速重傳 (SR式,基于重復ACK)
接收方處理亂序包丟棄丟棄緩存 (直到可以按序交付)緩存 (直到可以按序交付)
接收方確認策略收到一個有效包,發一個ACK僅對按序到達的最高序列號包發累積ACK對任何按序或亂序但有效的包都發ACK (通常是SACK)發送期望接收序列號的累積ACK,SACK選項報告收到的亂序塊
主要優點實現極其簡單比SW吞吐量高,實現相對簡單帶寬利用率最高 (只重傳丟失包),適合高誤碼率可靠、有序、流量控制、擁塞控制、廣泛應用
主要缺點信道利用率極低 (尤其高延遲鏈路)亂序或丟包導致大量不必要重傳 (尤其大窗口/高誤碼)發送方和接收方邏輯更復雜,需要更大的緩存協議復雜,實現復雜,開銷相對大
適用場景理論模型,極少實際使用鏈路延遲低、誤碼率低的簡單環境 (如舊式鏈路)鏈路延遲高、誤碼率較高的環境互聯網主流傳輸層協議,處理各種復雜網絡環境
本質滑動窗口大小為1的特例發送方滑動窗口 >1,接收方窗口=1發送方和接收方滑動窗口 >1結合了GBN(累積ACK)和SR(SACK/緩存)思想的混合協議,并加入擁塞控制

【計算機網絡】第四章 數據鏈路層-CSDN博客

三種可靠傳輸機制(數據鏈路層)

停止-等待(Stop and Wait,SW)協議

分組重復--分組加上序號(1bit,0/1)

丟失重復的書分組,再發送一個確認ACK(補發)

回退N幀(Go-back-N,GBN)協議

發送窗口W_{T}(一口氣發出的量)

𝟏<?W_{T}?≤ (2^{n}?𝟏)? ? ? ? ? ? ? ?n比特(n> 1

W_{T}\neq 1W_{T}=1為停-等協議)

接收窗口W_{R}=1

超時重傳

失序(序號不匹配)? ? ? ? ? ? ? ? 補發ACK(上一次最后收到的正確ACK)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 重復確認---重發

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 超時---自動重傳

接收方采用累計確認ACK_{n}

選擇重傳(Selective Repeat,SR)協議

n個比特給分組編號(n>1)

1< W_{R}\leq W_{T} \\ W_{T}+W_{R}\leq 2^{n}

1< W_{R}=W_{T}\leq 2^{(n-1)}

傳輸控制協議 (Transmission Control Protocol, TCP)

【計算機網絡】第七章 運輸層-CSDN博客

  1. 停止等待 (Stop-and-Wait, SW):

    • 核心:?最簡單的形式,發送窗口大小=1,接收窗口大小=1。

    • 過程:

      • 發送方發送一個數據包 (Seq Num = x)。

      • 等待接收方對該包 (x) 的確認 (ACK x)。

      • 收到 ACK x 后,發送下一個包 (Seq Num = x+1)。

      • 如果超時未收到 ACK x,則重發包 x。

    • 優點:?概念簡單,實現容易。

    • 缺點:?信道利用率極低。發送方大部分時間在等待 ACK,尤其在鏈路延遲 (RTT) 大或帶寬高時。公式:利用率 ≈ (Packet Size / Bandwidth) / RTT。RTT 越大,利用率越低。

    • 定位:?主要是理解可靠傳輸的基礎概念,實際網絡幾乎不用。

  2. 回退 N 幀 (Go-Back-N, GBN):

    • 核心:?發送方有一個大小為 N 的發送窗口,可以連續發送最多 N 個未確認的包。接收方窗口大小固定為 1。

    • 過程:

      • 發送方連續發送窗口內的包 (Seq Num 從 base 到 base+N-1)。

      • 接收方只接收按序到達且序列號等于期望值 (next expected)?的包。

        • 如果收到期望的包 (Seq Num = next expected):交付給上層,發送一個累積 ACK (ACK next expected),該 ACK 表示所有小于 next expected 的包都已正確接收。next expected++

        • 如果收到亂序的包 (Seq Num > next expected):直接丟棄!?但仍會為最近按序接收的包發送一個重復的累積 ACK (ACK next expected - 1)。(這是觸發重傳的關鍵)。

        • 如果收到損壞的包:丟棄,不發送任何 ACK。

      • 發送方:

        • 如果收到對包?n?的累積 ACK (ACK n):這表示所有序號 <= n 的包都已被正確接收。發送窗口滑動到 n+1 (base = n+1)。

        • 如果發生超時:發送方重傳所有已發送但未確認的包?(即整個發送窗口 base 到 base+N-1 的包)。

        • 如果收到重復的累積 ACK?(例如連續收到 3 個相同的 ACK):在基礎 GBN 中,通常只依賴超時觸發重傳。但在 TCP 中,重復 ACK 是觸發快速重傳的關鍵信號。

    • 優點:?比 SW 吞吐量高很多,尤其在低延遲鏈路中。實現比 SR 簡單(接收方邏輯簡單)。

    • 缺點:

      • 效率低下:?任何單個包丟失或亂序都會導致發送方重傳該包及其之后窗口內所有已發送但未確認的包,即使這些包可能已經被接收方正確接收(只是由于前面的包丟失/亂序而被接收方丟棄了)。這在誤碼率高或窗口大時尤其浪費帶寬。

      • 接收方緩存要求低:?只需要緩存一個包(等待按序交付)。

    • 定位:?比 SW 更高效,但重傳策略比較“粗暴”。適合鏈路質量較好、延遲較低的環境。是理解累積 ACK 和窗口滑動的基礎。

  3. 選擇重傳 (Selective Repeat, SR):

    • 核心:?發送方和接收方窗口大小都大于 1 (通常相等為 N)。?目標是只重傳真正丟失或損壞的包。

    • 過程:

      • 接收方:

        • 維護一個接收窗口,緩存所有落在窗口內的、正確接收尚未按序交付給上層的包(無論是否按序到達)。

        • 當一個包按序到達 (Seq Num = next expected):

          • 交付該包給上層。

          • next expected++

          • 檢查緩存中是否有連續的包可以接著交付(滑動接收窗口)。

        • 當一個包亂序但落在窗口內且正確接收:

          • 緩存該包。

          • 立即發送一個針對該特定包的 ACK (選擇確認 SACK)。即使它是亂序的!

        • 發送?ACK?(通常是 SACK 形式)?給任何正確接收的包(按序或亂序)。

      • 發送方:

        • 為發送窗口內的每個包維護一個獨立的定時器

        • 收到一個 ACK (SACK):

          • 如果該 ACK 確認的包在發送窗口內,標記該包為已確認。

          • 如果該包是發送窗口的起始位置 (base):

            • 將窗口滑動到最小未確認序列號處 (base?移動到新的位置)。

        • 超時:?如果某個包的定時器超時,僅重傳那個超時的包

        • (可選優化) 收到一定次數的重復 ACK (表明某個特定包可能丟失) 也可以觸發對該包的快速重傳(類似 TCP)。

    • 優點:

      • 帶寬效率最高:?只重傳丟失或損壞的包,避免了 GBN 的不必要重傳。在高誤碼率或高延遲網絡中優勢明顯。

      • 接收方緩存允許接收和處理亂序包。

    • 缺點:

      • 實現最復雜:?發送方需要為每個包管理獨立定時器;接收方需要更大的緩存來存儲亂序包,并管理更復雜的確認 (SACK) 邏輯。

      • 序列號空間要求:?為了避免歧義(新舊包的序列號重疊),序列號空間大小通常需要至少是窗口大小的兩倍 (2N)。

    • 定位:?理論效率最高的滑動窗口協議,但實現復雜度高。是理解選擇性重傳和緩存的基礎。許多可靠傳輸協議借鑒了其思想(如 TCP 的 SACK)。

  4. 傳輸控制協議 (TCP - Transmission Control Protocol):

    • 核心:?TCP 是一個極其復雜的、面向連接的、提供可靠字節流傳輸服務的實際協議。它融合了 GBN 和 SR 的思想,并加入了關鍵的擁塞控制機制

    • 關鍵機制與對比:

      • 字節流 & 序列號:?TCP 傳輸的是字節流,序列號基于字節編號。這與 SW/GBN/SR 基于“包”或“幀”的序列號不同。

      • 累積確認 (GBN 思想):?TCP 接收方發送的?ACK 號是期望收到的下一個字節的序列號。這隱含地確認了所有在該序列號之前的字節都已正確按序接收。這是累積確認的核心思想(來自 GBN)。

      • 選擇確認擴展 - SACK (SR 思想):?標準的 TCP ACK 是累積的。但是,TCP 有一個重要的可選擴展?SACK (Selective Acknowledgment)。啟用 SACK 后,接收方可以在 ACK 包中攜帶額外的 SACK 選項,明確指出接收方已經收到的、但尚未按序交付的亂序數據塊。這為發送方提供了 SR 式的選擇確認信息。

      • 重傳機制 - 混合策略:

        • 超時重傳 (RTO - Retransmission Timeout):?類似于 GBN,當發送方檢測到某個數據段(可以看作一個包)超時未確認時,它會重傳那個最早未確認的數據段 (snd.una)。但是,TCP 的重傳粒度是段,并且 RTO 是動態計算且復雜的(基于 RTT 測量)。注意:?TCP 通常只重傳超時的段,而不是整個窗口(這點更像 SR 的目標,但觸發機制像 GBN的超時重傳整個最早的未確認段)。

        • 快速重傳 (Fast Retransmit - SR 思想):?這是 TCP 提高效率的關鍵機制。當發送方連續收到 3 個重復的 ACK (DupACK)?時(例如 ACK 50, ACK 50, ACK 50),它強烈暗示某個特定的數據段(序列號在 50 之后的某個段)可能丟失了,而后續的數據段已經到達接收方(觸發了重復的累積 ACK)。發送方不等超時,立即重傳這個被認為丟失的段。這直接借鑒了 SR 中“只重傳丟失包”的思想,并利用重復累積 ACK 作為 SR 中 SACK 的一種替代信號。

      • 接收方緩存 (SR 思想):?TCP 接收方有接收緩沖區 (rwnd),可以緩存亂序到達的正確數據段,等待前面的缺失部分到達后再按序交付給應用層。這是 SR 的核心思想。

      • 流量控制 (rwnd):?接收方通過 TCP 頭部中的?rwnd?(接收窗口)?字段動態告知發送方自己還有多少空閑緩沖區。發送方保證未確認數據量 (Flight Size) 不超過?min(cwnd, rwnd)。這是滑動窗口的直接應用。

      • 擁塞控制 (cwnd):?TCP 最核心的創新之一。發送方維護一個擁塞窗口 (cwnd),它是對網絡承載能力的估計。實際的發送窗口大小是?min(cwnd, rwnd)。TCP 通過復雜的算法(慢啟動、擁塞避免、快速恢復等)動態調整?cwnd?來探測可用帶寬、響應丟包(視為擁塞信號),避免壓垮網絡。這是 SW/GBN/SR 等理論協議完全沒有考慮的關鍵部分,也是 TCP 能主導互聯網的根本原因之一。

      • 窗口動態可變:?cwnd?和?rwnd?都是動態變化的,導致 TCP 的實際發送窗口大小不斷變化。這與 SW/GBN/SR 通常假設固定窗口大小不同。

    • 定位:?實際互聯網的基石協議。它不是一個“純”的 GBN 或 SR,而是取其精華(GBN 的累積確認簡單性、SR 的選擇性重傳/緩存高效性),并加入了革命性的擁塞控制機制和面向字節流的抽象,以應對復雜多變的互聯網環境。

總結:

  • SW:?基礎模型,效率最低,僅用于理解概念。

  • GBN:?使用累積確認和發送窗口 >1 來提高效率,但接收窗口=1 導致亂序包被丟棄和大量不必要重傳。實現相對簡單。

  • SR:?使用選擇確認 (SACK) 和接收緩存 (接收窗口>1) 來最大化效率(只重傳丟失包),但實現最復雜。

  • TCP:?實際標準協議。核心使用累積確認 (GBN 思想)?和接收緩存 (SR 思想)。通過SACK 擴展 (SR 思想)?和快速重傳機制 (基于重復ACK)?實現高效的選擇性重傳 (SR 思想)。其超時重傳行為更接近 GBN(重傳最早未確認段)。最大的創新和核心是動態的擁塞控制 (cwnd)。TCP 是一個融合了 GBN 和 SR 優點,并加入擁塞控制、流量控制、面向字節流等復雜機制的混合體,專門為應對互聯網的挑戰而設計。

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

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

相關文章

Go的隱式接口機制

正確使用Interface 不要照使用C/Java等OOP語言中接口的方式去使用interface。 Go的Interface的抽象不僅可以用于dynamic-dispatch 在工程上、它最大的作用是&#xff1a;隔離實現和抽象、實現完全的dependency inversion 以及interface segregation(SOLID principle中的I和D)。…

Async-profiler 內存采樣機制解析:從原理到實現

引言 在 Java 性能調優的工具箱中&#xff0c;async-profiler 是一款備受青睞的低開銷采樣分析器。它不僅能分析 CPU 熱點&#xff0c;還能精確追蹤內存分配情況。本文將深入探討 async-profiler 實現內存采樣的多種機制&#xff0c;結合代碼示例解析其工作原理。 為什么需要內…

Android 顏色百分比對照

本文就是簡單寫個demo,打印下顏色百分比的數值.方便以后使用. 1: 獲取透明色 具體的代碼如下: /*** 獲取透明色* param percent* param red* param green* param blue* return*/public static int getTransparentColor(int percent, int red, int green, int blue) {int alp…

MPLS-EVPN筆記詳述

目錄 EVPN簡介: EVPN路由: 基本四種EVPN路由 擴展: EVPN工作流程: 1.啟動階段: 2.流量轉發: 路由次序整理: 總結: EVPN基本術語: EVPN表項: EVPN支持的多種服務模式: 簡介: 1.Port Based: 簡介: 配置實現: 2.VLAN Based: 簡介: 配置實現: 3.VLAN Bundle: 簡…

SpringBoot自定義線程池詳細教程

文章目錄 1. 線程池基礎概念1.1 什么是線程池1.2 Java線程池核心參數1.3 線程池執行流程 2. SpringBoot中的線程池2.1 SpringBoot默認線程池2.2 SpringBoot異步任務基礎 3. 自定義線程池配置3.1 配置文件方式3.2 Java配置方式3.3 線程池工廠配置 4. 異步任務實際應用4.1 業務服…

智能快遞地址解析接口如何用PHP調用?

一、什么是智能快遞地址解析接口 隨著互聯網技術的普及和電子商務的迅猛發展&#xff0c;網購已成為現代人日常生活的重要組成部分。然而&#xff0c;在這個便捷的背后&#xff0c;一個看似不起眼卻影響深遠的問題正悄然浮現——用戶填寫的快遞地址格式混亂、信息不全甚至錯漏…

概率分布,支撐AI算法的數學基石

概率分布,是現代人工智能(AI)算法不可或缺的數學語言。它不僅描述了數據中的不確定性,更揭示了機器學習模型背后的本質運作機制。本文將帶你深入了解概率分布的數學本質,以及它在監督學習、深度學習、生成模型等核心AI領域的關鍵作用,揭秘概率論如何成為AI理論和實踐的強…

2025年Splunk的替代方案:更智能的安全選擇

在安全信息和事件管理&#xff08;SIEM&#xff09;領域&#xff0c;2025年的競爭愈發激烈。Splunk憑借其強大的功能和穩定性長期占據市場主導地位&#xff0c;但其高昂的成本、復雜性和擴展性挑戰促使許多企業轉向其他解決方案。無論是初創公司、快速發展的中型企業&#xff0…

(10)Fiddler抓包-Fiddler如何設置捕獲Firefox瀏覽器的Https會話

1.簡介 經過上一篇對Fiddler的配置后&#xff0c;絕大多數的Https的會話&#xff0c;我們可以成功捕獲抓取到&#xff0c;但是有些版本的Firefox瀏覽器仍然是捕獲不到其的Https會話&#xff0c;需要我們更進一步的配置才能捕獲到會話進行抓包。 2.環境 1.環境是Windows 10版…

simulink mask的使用技巧

1.mask界面布局 1.1如何調整控件的位置和控件大小&#xff1f; 反正2020a是調不了&#xff0c; 找了好久&#xff0c;只能是調布局&#xff0c;例如你要調成下面這樣&#xff1a; 第一個控件的iTem location屬性選擇New row 后面跟著的幾個和第一個同一行的空間屬性選擇Cu…

Go中MAP底層原理分析

MAP底層原理分析 參考 https://golang.design/go-questions/map/principalmap | Golang 中文學習文檔 先來看一下map結構體&#xff0c;&#xff08;runtime.hmap結構體就是代表著 go 中的map&#xff0c;與切片一樣map的內部實現也是結構體&#xff09; type hmap struct {/…

#開發環境篇:postMan可以正常調通,但是瀏覽器里面一直報403

本地header代理下面內容即可 headers: { // 添加必要的請求頭 ‘Host’: ‘服務端域名’, ‘Origin’: https://服務端域名, ‘Referer’: https://服務端域名 }, devServer: {// 本地開發代理API地址proxy: {^/file: {target: https://服務端域名,changeOrigin: true, // 是否…

【論文閱讀 | PR 2024 |ICAFusion:迭代交叉注意力引導的多光譜目標檢測特征融合】

論文閱讀 | PR 2024 |ICAFusion&#xff1a;迭代交叉注意力引導的多光譜目標檢測特征融合 1.摘要&&引言2.方法2.1 架構2.2 雙模態特征融合&#xff08;DMFF&#xff09;2.2.1 跨模態特征增強&#xff08;CFE&#xff09;2.2.2 空間特征壓縮&#xff08;SFS&#xff09;…

效率、便捷、安全:智慧充電樁一站式解決方案如何重塑新能源充電體驗?

在新能源浪潮席卷全球的背景下&#xff0c;電動汽車的普及對充電基礎設施提出了更高要求。傳統充電模式因效率低、操作繁瑣、安全隱患等問題&#xff0c;難以滿足用戶需求。智慧充電樁一站式解決方案應運而生&#xff0c;通過技術創新將效率、便捷與安全融為一體&#xff0c;徹…

杰發科技AC7840——Timer修改重裝載值

需要在運行過程中修改定時器的中斷時間 int main(void) {SystemClock_Config(); /*時鐘初始化*/GPIO_LedInit(); /*GPIO初始化*/TIMER_Init(); /*定時器初始化*/InitDebug(); …

https和http有什么區別-http各個版本有什么區別

http和 https的區別 HTTP&#xff08;超文本傳輸協議&#xff09;和 HTTPS&#xff08;安全超文本傳輸協議&#xff09;是兩種用于在網絡上傳輸數據的協議&#xff0c;它們的主要區別在于安全性&#xff1a; HTTP&#xff08;Hypertext Transfer Protocol&#xff09;&#x…

低秩矩陣、奇異值矩陣和正交矩陣

低秩矩陣 低秩矩陣&#xff08;Low-rank Matrix&#xff09;是指秩&#xff08;rank&#xff09;遠小于其行數和列數的矩陣&#xff0c;即 r a n k ( M ) r ? min ? ( m , n ) rank(M) r \ll \min(m,n) rank(M)r?min(m,n)。其核心特點是信息冗余性&#xff0c;可通過少量…

對抗性提示:大型語言模型的安全性測試

隨著大語言模型&#xff08;LLM&#xff09;在虛擬助手、企業平臺等現實場景中的深度應用&#xff0c;其智能化與響應速度不斷提升。然而能力增長的同時&#xff0c;風險也在加劇。對抗性提示已成為AI安全領域的核心挑戰&#xff0c;它揭示了即使最先進的模型也可能被操縱生成有…

SSM 框架核心知識詳解(Spring + SpringMVC + MyBatis)

&#x1f331; 第一部分&#xff1a;Spring 核心原理與使用 1. 什么是 Spring Spring 是一個開源的 Java 企業級開發框架&#xff0c;旨在簡化 Java 企業應用程序開發。它核心思想是控制反轉&#xff08;IoC&#xff09;和面向切面編程&#xff08;AOP&#xff09;&#xff0…

基于 Alpine 定制單功能用途(kiosk)電腦

前言 故事回到 7 年前, 在網上沖浪的時候發現了一篇介紹使用 Ubuntu 打造 kiosk 單功能用途電腦的文章, 挺好玩的, 就翻譯了一下并比葫蘆畫瓢先后用了 CentOS 7, ArchLinux 進行了實現. 歷史文章: 翻譯 - 使用Ubutnu14.04和Chrome打造單功能用途電腦(大屏展示電腦) 使用CentOS…