【計算機網絡入門】初學計算機網絡(七)

目錄

1. 滑動窗口機制

2. 停止等待協議(S-W)

2.1 滑動窗口機制

2.2 確認機制

2.3 重傳機制

2.4 為什么要給幀編號

3. 后退N幀協議(GBN)

3.1 滑動窗口機制

3.2 確認機制

3.3 重傳機制

4.??選擇重傳協議(SR)

4.2 確認機制

4.3 重傳機制


1. 滑動窗口機制

滿足發送窗口 + 接受窗口 ≤ 二的n次方,這里的n是用來給幀編號用的。

2. 停止等待協議(S-W)

2.1 滑動窗口機制

????????由于停止等待協議的發送端口和接受端口的大小都是1,所以n就取≥1就能滿足條件,也就是用一個比特位就能夠給幀編號。你可能會有疑問,1個比特位只能表示0或者1如何能給幀進行編號呢?我們往后看看就知道了。

2.2 確認機制

????????發送方發送0號數據幀,接收方在核對幀沒有出錯的情況下返回一個確認幀,并且往后移動一個窗口,此時發送方接受到確認幀之后再向后移動一個窗口。

2.3 重傳機制

? ? ? ? ①如果發送方發送0號幀的時候,受到電磁影響,數據幀丟失,那么接收方永遠不會接受到這個數據幀,也就不會給發送方發送確認幀,等待一段時間之后,會進行超時重傳

? ? ? ? ②如果接收方發送確認幀的時候丟失了,此時接收方會向后移動,但是發送方的計時器超時之后會重傳給接收方移動之前的位置如下圖所示,接收方的D收到重復幀之后會丟棄,然后發送重復幀的確認幀,在發送方的D的計時器超時之前會接受到重復幀的確認幀,從而順利后移。

? ? ? ? ③如果當傳輸的時候數據有差錯,那么接收方會把幀丟棄,發送方的計時器必定會超時重傳,然后接收方接受到正確幀再進行發送確認幀,接收方再后移一位,至此恢復正常。?

2.4 為什么要給幀編號

? ? ? ? 因為如果不給幀編號,那么接收方不知道當前幀是不是重復幀,況且接受窗口和發送窗口的距離不超過1,所以回答上面的問題使用1bit表示幀序號足矣。

3. 后退N幀協議(GBN)

3.1 滑動窗口機制

? ? ? ? 發送窗口大于1,接收窗口等于1;取發送窗口為3,那么我們可以使用:滿足發送窗口 + 接受窗口 ≤ 二的n次方,確定n是2bit,所以我們可以使用:0,1,2,3,來對幀進行編號。

3.2 確認機制

? ? ? ? 當發送方連續發送三個數據幀之后,接收方返回確認幀,表示當前幀以及之前的所有幀已經全部接受

3.3 重傳機制

? ? ? ?① 當發送方發送E的時候數據幀出現了問題,此時會繼續發送給F,但是F收到幀之后會直接丟棄,此時接受方的D會發送一個ack表示D之前的所有數據幀已經傳輸完畢,此時發送端的E的計時器已經超時,所以E之后的F會重傳、G第一次傳,此時接收到數據的EFG會在G處進行正常返回確認幀ack。

????????②當接收方發送確認幀的時候,確認幀丟失,那么最先發送的A會超時,就會重新發送數據幀ABC給接收方,接收方接收到的幀都是在窗口之外屬于“非法幀”,并且這些幀都是重復的會直接被丟棄,由于是“非法幀”,直接返回已接收的最后一個正確幀的確認幀。

4.??選擇重傳協議(SR)

接收窗口要小于等于發送窗口,如果違反規定則始終有空缺位沒有被利用,性能得不到完全發揮。

4.2 確認機制

選擇重傳協議,接受方可以連續接受多個幀,但是接收方必須每一個幀都必須回復一個ACK。

4.3 重傳機制

①當5號幀丟失,其他幀收到數據幀之后,會返回ACK,然后向后挪動一個位置,0號幀已經在發送窗口之內,會直接進行發送,但是發送方的5號幀并沒有接受到ACK,于是計時器就會超時重發。

?②當5號幀出現錯誤,那么接收方會發送一個NCK讓發送方立即重傳,這樣就可以讓發送方在計時器超時之前進行重傳,節省時間,此時0號幀也已經進入了窗口內也可以發送。

③BD確認幀丟失的時候,發送方窗口向后移動一格,此時E在窗口內,所以E直接發送數據幀,BD依次超時重傳,由于BD在接收窗口之外,所以認定這兩個數據幀是重復幀,直接丟棄并且返回ACK。?

再次說明,接收窗口 + 發送窗口的總大小 小于等于2的n次方 ,n是幀編號;如若不滿足則無法分辨重復幀。?

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

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

相關文章

《Python實戰進階》No 8:部署 Flask/Django 應用到云平臺(以Aliyun為例)

第8集:部署 Flask/Django 應用到云平臺(以Aliyun為例) 2025年3月1日更新 增加了 Ubuntu服務器安裝Python詳細教程鏈接。 引言 在現代 Web 開發中,開發一個功能強大的應用只是第一步。為了讓用戶能夠訪問你的應用,你需…

GitLab Pages 托管靜態網站

文章目錄 新建項目配置博客添加 .gitlab-ci.yml其他配置 曾經用 Github Pages 來托管博客內容,但是有一些不足: 在不科學上網的情況下,是沒法訪問的,或者訪問速度非常慢代碼倉庫必須是公開的,如果設置為私有&#xff0…

TVbox蜂蜜影視:智能電視觀影新選擇,簡潔界面與強大功能兼具

蜂蜜影視是一款基于貓影視開源項目 CatVodTVJarLoader 開發的智能電視軟件,專為追求簡潔與高效觀影體驗的用戶設計。該軟件從零開始編寫,界面清爽,操作流暢,特別適合在智能電視上使用。其最大的亮點在于能夠自動跳過失效的播放地址…

形象生動講解Linux 虛擬化 I/O

用現實生活的比喻和簡單例子來解釋 Linux 虛擬化 I/O,就像給朋友講故事一樣。 虛擬化 I/O 要解決什么問題? 想象你有一棟大房子(物理服務器),想把它分割成多個小公寓(虛擬機)出租。每個租客&…

Java內存管理與性能優化實踐

Java內存管理與性能優化實踐 Java作為一種廣泛使用的編程語言,其內存管理和性能優化是開發者在日常工作中需要深入了解的重要內容。Java的內存管理機制借助于垃圾回收(GC)來自動處理內存的分配和釋放,但要實現高效的內存管理和優…

代碼隨想錄算法訓練營第三十天 | 卡碼網46.攜帶研究材料(二維解法)、卡碼網46.攜帶研究材料(滾動數組)、LeetCode416.分割等和子集

代碼隨想錄算法訓練營第三十天 | 卡碼網46.攜帶研究材料(二維解法)、卡碼網46.攜帶研究材料(滾動數組)、LeetCode416.分割等和子集 01-1 卡碼網46.攜帶研究材料(二維) 相關資源 題目鏈接:46. 攜…

nvidia驅動更新,centos下安裝openwebui+ollama(非docker)

查看centos內核版本 uname -a cat /etc/redhat-release下載對應的程序(這個是linux64位版本通用的) https://cn.download.nvidia.cn/tesla/550.144.03/NVIDIA-Linux-x86_64-550.144.03.run cudnn想辦法自己下一下,我這里是12.x和11.x通用的…

【AIGC系列】4:Stable Diffusion應用實踐和代碼分析

AIGC系列博文: 【AIGC系列】1:自編碼器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介紹(內含擴散模型介紹) 【AIGC系列】3:Stable Diffusion模型原理介紹 【AIGC系列】4&#xff1…

51單片機-串口通信編程

串行口工作之前,應對其進行初始化,主要是設置產生波特率的定時器1、串行口控制盒中斷控制。具體步驟如下: 確定T1的工作方式(編程TMOD寄存器)計算T1的初值,裝載TH1\TL1啟動T1(編程TCON中的TR1位…

Windows 10 遠程桌面連接使用指南

目錄 一、引言 二、準備工作 1、確認系統版本 2、服務器端設置 三、客戶端連接 1、打開遠程桌面連接程序 2、輸入連接信息 3、輸入登錄憑證 4、開始使用遠程桌面 四、移動端連接(以 iOS 為例) 1、下載安裝應用 2、添加遠程計算機 3、進行連接…

spring boot打包插件的問題

在spring boot項目中聲明了 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> 執行mvn clean package&…

R語言+AI提示詞:貝葉斯廣義線性混合效應模型GLMM生物學Meta分析

全文鏈接&#xff1a;https://tecdat.cn/?p40797 本文旨在幫助0基礎或只有簡單編程基礎的研究學者&#xff0c;通過 AI 的提示詞工程&#xff0c;使用 R 語言完成元分析&#xff0c;包括數據處理、模型構建、評估以及結果解讀等步驟&#xff08;點擊文末“閱讀原文”獲取完整代…

iOS UICollectionViewCell 點擊事件自動化埋點

iOS 中經常要進行埋點&#xff0c;我們這里支持 UICollectionViewCell. 進行自動化埋點&#xff0c;思路&#xff1a; 通過hook UICollectionViewCell 的setSelected:方法&#xff0c; 則新的方法中執行埋點邏輯&#xff0c;并調用原來的方法 直接上代碼 implementation UICol…

課程《MIT Introduction to Deep Learning》

在Youtubu上&#xff0c;MIT Introduction to Deep Learning (2024) | 6.S191 共8節課&#xff1a; (1) MIT Introduction to Deep Learning (2024) | 6.S191 (2) MIT 6.S191: Recurrent Neural Networks, Transformers, and Attention (3) MIT 6.S191: Convolutional Neural N…

Docker 學習(一)

一、Docker 核心概念 Docker 是一個開源的容器化平臺&#xff0c;允許開發者將應用及其所有依賴&#xff08;代碼、運行時、系統工具、庫等&#xff09;打包成一個輕量級、可移植的“容器”&#xff0c;實現 “一次構建&#xff0c;隨處運行”。 1、容器&#xff08;Container…

007 訂單支付超時自動取消訂單(rabbitmq死信隊列 mybatis)

文章目錄 死信隊列RabbitMQ 配置類 RabbitMQConfig.java生產者 OrderTimeoutProducer.java消費者 OrderTimeoutConsumer.java應用配置 application.ymlpom.xml 依賴實體類 Order.java&#xff08;不變&#xff09;Mapper 接口 OrderMapper.java&#xff08;不變&#xff09;服務…

計算機畢業設計SpringBoot+Vue.js智慧圖書管理系統(源碼+文檔+PPT+講解)

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

《論數據分片技術及其應用》審題技巧 - 系統架構設計師

論數據分片技術及其應用寫作框架 一、考點概述 本論題“論數據分片技術及其應用”主要考察的是軟件工程中數據分片技術的理解、應用及其實際效果分析。考點涵蓋以下幾個方面&#xff1a; 首先&#xff0c;考生需對數據分片的基本概念有清晰的認識&#xff0c;理解數據分片是…

【每日學點HarmnoyOS Next知識】web加載pdf、Toggle禁用、Grid多次渲染問題、Web判斷是否存在title、 List側滑欄關閉

【每日學點HarmnoyOS Next知識】web加載pdf、Toggle禁用、Grid多次渲染問題、Web判斷是否存在title、 List側滑欄關閉 1、HarmonyOS Web組件加載本地pdf文件后&#xff0c;默認顯示標題和下載按鈕&#xff0c;可以隱藏或者有對應的操作這個title的API嗎&#xff1f; 隱藏PDF操…

下載 MindSpore 配置 PyTorch環境

以下是下載 MindSpore 并配置 PyTorch 環境的詳細步驟&#xff0c;適用于常見的 Linux/Windows 系統&#xff08;以 NVIDIA GPU 為例&#xff09;&#xff1a; 一、環境準備 1. 硬件與軟件檢查 GPU 支持&#xff1a;確保使用 NVIDIA 顯卡&#xff0c;通過 nvidia-smi 查看驅動…