計算機網絡:流量控制與可靠傳輸機制

目錄

基本概念

流量控制:別噎著啦!

可靠傳輸:快遞必達服務

傳輸差錯:現實中的意外

滑動窗口

基本概念

換句話說:批量發貨+排隊驗收

停止-等待協議 SW(發1份等1份)

超時重傳:

分組編號:

信道利用率

回退N幀協議 GBN(批量發貨,錯了就從錯的重發!)

選擇重傳協議 SR(只補丟的那杯)


基本概念

流量控制:別噎著啦!

概念:流量控制涉及對鏈路上的幀的發送速率的控制,以使接收方有足夠的緩沖空間來接收每個幀(數據鏈路層,點到點;傳輸層也有流量控制,端到端)巴拉巴拉~~

🍔?吃漢堡比喻

  • 你(發送方)喂朋友(接收方)吃漢堡

  • 朋友嘴里塞滿時說:"慢點!等我咽下去再喂!" → 這就是流量控制

  • 如果不管不顧猛塞,朋友會吐(緩沖區溢出)

📱?手機內存例子

  • 舊手機接收大文件時跳提示:"存儲空間不足"

  • 發送方需要暫停發送 → 流量控制起作用

可靠傳輸:快遞必達服務

概念:盡管誤碼是不能完全避免的,但若能實現發送方發送什么,接收方就能收到什么,就稱為可靠傳輸 => 有確認機制和超時重傳機制 巴拉巴拉~~

換句話說:丟了就重發!

📦?網購快遞場景

  1. 商家發貨后要求:"收到請按1"(確認ACK)

  2. 三天沒回復?自動補發(超時重傳)

  3. 收到破損件?申請換貨(差錯重傳)

🚚?特別服務對比

  • 普通快遞(UDP):丟了不賠

  • 順豐保價(TCP):丟件必賠

傳輸差錯:現實中的意外

1、比特錯誤:使用差錯檢測技術,接收方的數據鏈路層就可檢測出幀在傳輸過程中是否產生了誤碼

2、分組丟失、分組失序和分組重復:一般不出現在數據鏈路層,而在上層

🔧?常見問題

  • 比特錯誤 → 就像快遞單被雨水打糊

  • 分組丟失 → 快遞車半路拋錨

  • 分組亂序 → 快遞員不按樓層送貨

  • 分組重復 → 商家不小心發了兩件

🌐?有線vs無線

網絡類型好比...可靠性需求
有線網絡室內通話小聲說也能聽清(一般不重傳)
無線網絡工地對講機必須重復確認(必須可靠傳輸)

一般情況下,有線鏈路的誤碼率比較低,為了減小開銷,并不要求數據鏈路層向上提供可靠傳輸服務。即使出現了誤碼,可靠傳輸的問題由其上層處理

無線鏈路易受干擾,誤碼率比較高,因此要求數據鏈路層必須向上層提供可靠傳輸服務


滑動窗口

基本概念

發送(接收)方維持一組連續的允許發送(接收)的幀的序號,稱為發送(接收)窗口

發送方:發送窗口的大小代表在還未收到對方確認信息的情況下發送方最多還可以發送多少個數據幀。只有發送方接收到確認幀后發送窗口才可能向前滑動

接收方:只有收到數據幀的序號落在接收窗口內,才允許將幀收下,否則丟棄

換句話說:批量發貨+排隊驗收

場景:奶茶店一次做5杯奶茶(窗口大小=5),顧客按順序取。

  • 發送方:連續做5杯(不用等每杯確認),但最多做5杯。

  • 接收方:只按順序喝,如果第3杯灑了,要求從第3杯重做(回退N幀)。

幀緩沖區:

1、目的:為了超時重發和判定重復幀的需要

2、實現方式:發送端在發送完數據幀時,必須在其發送緩存中保留此數據幀的副本,這樣才能在出錯時進行重傳(只有收到確認幀ACK時,才刪除副本)

停止-等待協議 SW(發1份等1份

從滑動窗口機制的角度看,停止-等待協議相當于發送窗口和接收窗口大小均為1的滑動窗口協議

超時重傳:

1、接收端檢測到數據分組有誤碼時,將其丟棄并等待發送方的超時重傳

2、重傳時間一般略大于平均往返時間(平均 RTT),因為代價大,需要多來點時間避免又錯啦!

分組編號:

為了讓接收方(發送方)能夠判斷收到的數據分組是否重復,需要給數據(ACK)分組編號。由于停-等協議特性,只需一個比特編號即可(0、1)

場景:你給同學傳紙條,必須等他回復“收到”再傳下一張。

  • 優點:簡單。

  • 缺點:慢!(像玩“你拍一我拍一”)

信道利用率

1、發送方在一個發送周期內,有效發送數據的時間占整個發送周期的比例

2、信道利用率U = TD / (TD + RTT + TA)

回退N幀協議 GBN(批量發貨,錯了就從錯的重發!

1、發送方連續發送幀,當接收方檢測出失序的信息幀后,要求發送方重發最后一個正確接收的信息幀后的所有未被確認幀

場景:你開了一家奶茶店,顧客一次性點了5杯奶茶(編號1~5)。

  • 正常情況:你按順序做好5杯,顧客按順序喝(1→2→3→4→5)。

  • 出錯情況:如果第3杯做錯了(幀錯誤),顧客會說:“從第3杯開始,全部重做!”

    • 于是你把第3、4、5杯都重新做一遍(回退N幀)。

2、n比特編號,發送窗口大小:1 <= WT <= 2^n - 1 接收窗口大小:1

  • 發送窗口(WT):你最多能同時做多少杯奶茶(比如最多5杯)。

    • 如果編號用n個比特,最多能發?2^n - 1?杯(比如n=3,最多發7杯)。

  • 接收窗口(WR)=1:顧客一次只喝1杯,必須按順序,亂了就扔掉。

3、累計確認

  • 顧客喝了第1、2、3杯后,只回復“3號收到”(代表1~3都OK)。

  • 如果你沒收到確認,就全部重發(比如3號丟了,就重發3~5)。

稍待確認:或者在自己有數據分組要發送時才按累計確認規則進行捎帶確認

4、缺點

若信道的傳輸質量很差導致誤碼率較大時,不一定優于停止-等待協議

選擇重傳協議 SR(只補丟的那杯

1、概述:設法只重傳出現差錯的數據幀和計時器超時的數據幀

  • 每個發送緩沖區對應一個計時器,當計時器超時時,緩沖區的幀就會重傳
  • 一旦接收方懷疑幀出錯,就會發一個否定幀NAK給發送方,要求發送方對NAK中指定的幀進行重傳
  • 接收端要設置具有相當容量的緩沖區來暫存那些未按序正確收到的幀

場景:奶茶店發現第3杯做錯了,只重做第3杯,其他照常給。

  • 優點:高效。

  • 缺點:需要記錄哪杯錯了(復雜)。

2、缺點:需要開辟緩存空間用來存儲數據

3、n比特編號,窗口大小:WR <= 2^(n-1)

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

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

相關文章

Android組件刷新

Android中刷新View的方法有以下幾種&#xff1a; 調用invalidate()方法&#xff0c;該方法會使View樹中的所有視圖無效或臟&#xff0c;等待下一次繪制時重新繪制。例如&#xff1a; mCustomView.invalidate(); 調用postInvalidate()方法&#xff0c;該方法類似于invalidate()…

Pycharm(十四)函數

一、函數概述 函數也叫方法,可以用function(函數,功能),method(方法)來表示。函數是把具有獨立功能的代碼封裝到一起,使其成為具有獨立功能的代碼集。 它的好處:1.提高代碼的復用性;2.模塊化編程。 1.1 定義格式 def 函數名(形式參數1,形式參數2...): 函數體,就是邏…

Oracle測試題目及筆記(多選)

所有題目來自于互聯網搜索 在以下概要文件的陳述中&#xff0c;哪兩個是正確的&#xff1f; &#xff08;D 和 E&#xff09; A&#xff0e; 概要文件不能被用來為賬戶加鎖 B&#xff0e; 概要文件不能被用來控制資源使用 C&#xff0e; 數據庫管理員可以使用概要文件更改用戶密…

DDoS攻防實戰指南——解析企業級防護五大解決方案

一、流量清洗中心的智能化演進 云清洗服務已從被動響應轉向主動防御。基于全球Anycast網絡的分布式清洗節點&#xff0c;可在攻擊發生時將流量牽引至專用清洗集群。阿里云2023年實測數據顯示&#xff0c;其新一代清洗設備對SYN Flood的識別準確率達99.97%&#xff0c;誤殺率控…

Ubuntu多用戶VNC遠程桌面環境搭建:從零開始的完整指南

引言: 在當今遠程工作盛行的時代,搭建一個安全、高效的多用戶遠程桌面環境變得越來越重要。本文將為您提供一個從零開始的完整指南,教您如何在Ubuntu系統上搭建多用戶VNC遠程桌面環境。無論您是系統管理員、開發團隊負責人,還是想要為家庭成員提供遠程訪問的技術愛好者,這…

數據結構專題 - 線性表

線性表是數據結構中最基礎、最常用的數據結構之一&#xff0c;它在實際應用中非常廣泛。無論是操作系統中的內存管理&#xff0c;還是數據庫中的索引結構&#xff0c;線性表都扮演著重要角色。 一、線性表的概念與抽象數據類型 1.1 線性表的邏輯結構 線性表是由n&#xff08…

使用wpa_cli和wpa_supplicant配置Liunx開發板的wlan0無線網

目錄 1 簡單介紹下wpa_cli和wpa_supplicant 1.1 wpa_supplicant 簡介 1.2 wpa_cli 簡介 1.3 它們之間的關系 2 啟動wpa_supplicant 3 使用rz工具把wpa_cli命令上傳到開發板 4 用wpa_cli配置網絡 參考文獻&#xff1a; 1 簡單介紹下wpa_cli和wpa_supplicant 1.1 wpa_su…

篩選條件在on和where中的區別(基于hivesql)

理解篩選條件在on和where中的區別&#xff0c;最好先理解sql的執行順序&#xff0c;盡管實際執行時不同的物理執行引擎可能會有特定的優化&#xff0c;但是邏輯執行順序必須遵循&#xff1a; 1&#xff09;from&#xff1a;確定數據源是什么&#xff0c;from后可以是單表&#…

springboot 項目 jmeter簡單測試流程

測試內容為 主機地址隨機數 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…

愛普生FA2016AS晶振在智能家居中的應用

在智能家居設備高速發展的今天&#xff0c;穩定可靠的時鐘信號是確保設備互聯互通、精準執行指令的核心。愛普生&#xff08;EPSON&#xff09;推出的FA2016AS內置熱敏電阻晶振&#xff0c;憑借其高精度、小體積和卓越的溫度穩定性&#xff0c;成為智能家居領域的關鍵元件&…

分享一個python啟動文件腳本(django示例)

今天給大家分享一個python啟動文件腳本 在日常開發中&#xff0c;我們常常需要運行多條命令來完成“靜態收集”“數據庫遷移”“啟動服務”……如果把這些命令整合到一個腳本里就好了 一、整體流程概覽 #mermaid-svg-wA6UnfATaUOfJoPn {font-family:"trebuchet ms"…

Kubernetes》》K8S》》Pod的健康檢查

K8s概念總結 》》》Pod的生命周期階段 Pod的生命周期可以簡單描述&#xff1a;首先Pod被創建&#xff0c;緊接著Pod被調度到Node節點進行部署。 Pod是非常忠誠的&#xff0c;一旦被分配到Node節點后&#xff0c;就不會離開這個Node節點&#xff0c;直到它被刪除&#xff0c;刪除…

bininote: 使用AI將視頻轉換了Markdown筆記

GitHub&#xff1a;https://github.com/JefferyHcool/BiliNote 更多AI開源軟件&#xff1a;發現分享好用的AI工具、AI開源軟件、AI模型、AI變現 - 小眾AI BiliNote 是一個開源的 AI 視頻筆記助手&#xff0c;支持通過嗶哩嗶哩、YouTube 等視頻鏈接&#xff0c;自動提取內容并生…

鴻蒙NEXT開發文件預覽工具類(ArkTs)

import { uniformTypeDescriptor } from kit.ArkData; import { filePreview } from kit.PreviewKit; import { FileUtil } from ./FileUtil; import { AppUtil } from ./AppUtil; import { WantUtil } from ./WantUtil;/*** 文件預覽工具類* 提供文件預覽、加載、判斷等功能。…

MySQL常用SQL語句的示例

概述 MySQL 常用 SQL 語句的示例&#xff0c;涵蓋數據定義、操作、查詢等常見場景 一、數據庫操作 創建數據庫 CREATE DATABASE mydb;選擇數據庫 USE mydb;刪除數據庫 DROP DATABASE mydb;二、表操作 創建表 CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VAR…

智算啟新篇 安全筑新基 ——中國移動舉辦智算基礎設施及安全分論壇

4月10日&#xff0c;2025中國移動云智算大會智算基礎設施及安全分論壇在蘇州金雞湖國際會議中心揭幕。 在數字經濟浪潮奔涌向前的時代坐標下&#xff0c;中國移動錨定“創世界一流信息服務科技創新公司”定位&#xff0c;持續推進智算基礎設施建設&#xff0c;持續提升網信安全…

MySQL——游標(cursor)

一、什么是游標&#xff1f; 游標&#xff08;Cursor&#xff09; 是MySQL中用于逐行處理查詢結果集的數據庫對象。它類似于指針&#xff0c;允許開發者在結果集中逐行移動&#xff0c;并對每一行數據進行特定操作。游標將傳統的集合操作轉換為面向過程的記錄處理方式&#xf…

異步編程——微信小程序

1. 前言 引用來自&#xff1a;微信小程序開發中的多線程處理與異步編程_微信小程序 多線程-CSDN博客 微信小程序是基于JavaScript開發的&#xff0c;與瀏覽器JavaScript不同&#xff0c;小程序運行在WebView內部&#xff0c;沒有多線程的概念。小程序的 JavaScript 是單線程的…

HarmonyOS-ArkUI V2狀態-PersistenceV2:持久化存儲UI狀態

PersistenceV2類是一個與AppStorageV2類用法非常相似的類。因為它倆是子類和父類的關系。如果不了解AppStorageV2,可以先跳轉至了解一下這個類。 HarmonyOS-ArkUI V2工具類:AppStorageV2:應用全局UI狀態存儲-CSDN博客 PersistenceV2相比于其父類AppStorageV2而言,它存儲的…

《Mycat核心技術》第22章:搭建Mycat+Zookeeper+HAProxy+Keepalived+MySQL高可用架構

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章匯總&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球項目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…