计算机网络原原理学习资料分享笔记---第三章/第三节(为有梦想的自己加油!)

本文主要是介绍计算机网络原原理学习资料分享笔记---第三章/第三节(为有梦想的自己加油!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第三节 停-等协议与

  1. 滑动窗口协议
    在这里插入图片描述
    第三节 停-等协议与滑动窗口协议
    知识点 1 可靠数据传输基本原理
    1 、internet传输层的两个协议:TCP 、UDP。
    TCP:可靠数据传输服务。将报文段交给IP传送,而IP只能提供“尽
    力”服务,也就是不可靠的服务。必须采取措施才能使其在基于不
    可靠的网络层上实现可靠传输。

第三节 停-等协议与滑动窗口协议
知识点 1 可靠数据传输基本原理
2 、不可靠传输信道的不可靠性主要表现在以下几方面:
1 )比特差错: 1100 —— 0110
2 )乱序(先发的数据包后到达,后发的数据包先到达):
发送: 1 、 2 、 3 、 4 、 5
接收: 2 、 1 、 5 、 4 、 3
3 )数据丢失(中途丢失,不能达到目的地):
发送: 1 、 2 、 3 、 4 、 5
接收: 1 、 3 、 4 、 5

第三节 停-等协议与滑动窗口协议
知识点 1 可靠数据传输基本原理
3 、基于不可靠信道实现可靠数据传输采取的措施( 5 种):
1 )差错检测:利用差错编码实现数据包传输过程中的比特差错检测
(甚至纠正)。(第五章详细介绍)
2 )确认:接收方向发送方反馈接收状态。
ACK(肯定确认);NAK(否定确认)
肯定确认:Positive Acknowledgement,正确接收数据。
否定确认:Negative Acknowledgement,没有正确接收数据。

第三节 停-等协议与滑动窗口协议
知识点 1 可靠数据传输基本原理
3 )重传:发送方重新发送接收方没有正确接收的数据。
发送方接收到NAK,表示接收方没有正确接收数据,则将出错的数据重
新向接收方发送。
4 )序号:确保数据按序提交。
对数据包进行编号。可以避免由于重传引起的重复数据被提交的问题。
5 )计时器:解决数据丢失问题。
发送方发送数据后启动计时器,如超时还未收到接收方的确认。主动重
发数据包,从而纠正数据丢失问题。

第三节 停-等协议与滑动窗口协议
知识点 1 可靠数据传输基本原理
4 、有效、合理地综合应用上述措施,可以设计实现可靠数据传输的协议:
例如:停-等协议与滑动窗口协议。

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【简答题】 1 、不可靠传输信道的不可靠性主要表现在以下几方面?

【参考答案】
1 )比特差错
2 )乱序
3 )数据丢失
【答案解析】:P 98 可靠数据传输基本原理

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【选择题】
2 、在实现可靠数据传输的措施中,能解决数据丢失问题的是( )
A.序号
B.确认
C.重传
D.计时器

【正确答案:D】
【答案解析】:P 98 实现可靠数据传输的措施
在这里插入图片描述
第三节 停-等协议与滑动窗口协议
知识点 2 停-等协议
2 、停-等协议的特点:
每发送一个报文段后就停下来等待接收方的确认。

第三节 停-等协议与滑动窗口协议
知识点 2 停-等协议
3 、停-等协议的工作过程:
1 )发送方发送经过差错编码和编号的报文段,等待接收方的确认。
2 )接收方如果差错检测无误且序号正确,则接收报文段,并向发送方
发送ACK,否则丢弃报文段,并向发送方发送NAK。
3 )发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送
的报文段。

第三节 停-等协议与滑动窗口协议
知识点 2 停-等协议
4 、几点细节讨论
1 )差错控制:
报文段、ACK、NAK数据包均需要进程差错编码以便进行差错控制。
2 )序列号:
只需要 1 位就够了(区分是新发的报文还是重传的报文)。
3 )ACK和NAK:
利用重复ACK代替NAK。(对上一个正确接收的报文段再次进行确认)
4 )ACK和NAK差错:有错推断。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标题第三节 停-等协议与滑动窗口协议

讲解归纳与举例
例:【简答题】 1 、简述停一等协议的基本工作过程。

【参考答案】
1 )发送方发送经过差错编码和编号的报文段,等待接收方的确认。
2 )接收方如果差错检测无误且序号正确,则接收报文段,并向发送方
发送ACK,否则丢弃报文段,并向发送方发送NAK。
3 )发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送
的报文段。
【答案解析】:P 99 停-等协议

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【选择题】 2 、最简单的自动重传请求协议是( )
A.UDP协议
B.SR协议
C.GBN协议
D.停-等协议

【正确答案:D】
【答案解析】:P 99 停-等协议
在这里插入图片描述
在这里插入图片描述
第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
2 、流水线协议实现可靠数据传输,做如下改进:
1 )增加分组序号(多位)。
2 )发送方和接收方可以缓存多个分组。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
3 、滑动窗口协议的工作特点:
发送方依序按流水线方式发送分组,接收方接收分组,按序向上
提交。
发送方对于已发送未收到确认的分组,必须缓存,必要时重发。
发送方可以连续发送多个未收到确认的分组(取决于缓存能力)。
接收方对未按序到达的分组,必须缓存或者丢弃并确认(取决于
缓存能力)。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
4 、滑动窗口协议的窗口:
发送窗口(Ws):发送方可以发送未被确认分组的最大数量;
接收窗口(Wr):接收方可以缓存的正确到达的分组的最大数量;
在这里插入图片描述
第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
6 、滑动窗口协议,根据窗口的大小,两种代表性的滑动窗口协议:
1 )回退N步协议:GBN协议(Go-Back-N)
2 )选择重传协议:SR协议(Selective Repeat)

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
1 )GBN协议
发送窗口WS≥ 1 ,接收窗口Wr= 1 。
发送端缓存能力高,可以在没有得到确认前发送多个分组。
接收端缓存能力很低,只能接收 1 个按序到达的分组,不能缓存未
按序到达的分组。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
GBN发送方响应的 3 类事件:
1 、上层调:窗口未满,用“下一个可以序号”编号并发送分组,否则
拒绝发送新的数据。
2 、收到 1 个ACKn。GBN采用累积确认方式,即发送方收到ACKn时,表明
接收方正确接收序号n以及序号小于n的所有分组。
3 、计时器超时。发送方只使用一个计时器,对“基序号”指向的分组
计时。如超时,重发当前发送窗口中所有已发送但未确认的分组,即
“回退N步”,因为接收方Wr= 1 ,无缓存能力。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
GBN的接收方操作:
Wr= 1 ,只能接收“基序号”所指向的分组。如接收方正确接收到
序号为基序号,则发送一个ACKn,接收窗口滑动到序号n+ 1 的位置。接
收到的序号不是n或者分组差错等,则发送ACKn- 1 。
在这里插入图片描述
第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
GBN协议总结:
在差错较低的情况下,信道利用率会得到很大提高。如果信道误
码率或者丢包率较高,导致大量重发,信道传输能力降低。
GBN适合低误码率、低丢包率、带宽高时延积信道,且对接收方缓
存能力要求低。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
2 )SR协议
选择重传(SR)通过让发送方仅重传那些未被接收确认(出错或
者丢失)的分组,避免了不必要的重传。
发送窗口WS> 1 ,接收窗口Wr> 1 。很多SR协议WS 、Wr大小相等。
发送端缓存能力高。
接收端缓存能力高。在这里插入图片描述
第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
SR发送方响应事件:
1 、上层调用,请求发送数据:检查“下一个可用序号”,位于发送窗
口内则发送,否则缓存或者返回给上层。
2 、计时器超时。发送方对每个分组进行计时,超时则重发该分组。
3 、收到ACKn。SR协议对n进行判断。如n在当前窗口内,则标记已接收
(刚好是基序号,窗口向右滑动到最小未被确认序号处);其他情形
不做响应。

第三节 停-等协议与滑动窗口协议
知识点 3 滑动窗口协议
SR接收方主要操作:
1 、正确接收到序号在接收窗口范围内的分组PTKn,发送ACKn,窗口滑动。
2 、正确接收到序号在接收窗口左侧的分组PTKn,这些分组在之前已经正确
接收并提交,丢弃PTKn,并发送ACKn,窗口不滑动。
3 、其他情况,直接丢弃分组,不做任何响应。

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【选择题】
1 、从滑动窗口的观点来看SR协议,其窗口尺寸的大小为( )
A.发送窗口> 1 ,接收窗口> 1
B.发送窗口> 1 ,接收窗口= 1
C.发送窗口= 1 ,接收窗口> 1
D.发送窗口= 1 ,接收窗口= 1

【正确答案:A】
【答案解析】:P 107 SR协议

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【填空题】
2 、两种最具有代表性的滑动窗口协议是____和____。

【正确答案:GBN SR】
【答案解析】:P 105 两个典型的滑动窗口协议

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【填空题】 3 、最典型的流水线可靠传输协议是____。

【正确答案:滑动窗口协议】
【答案解析】:P 105 两个典型的滑动窗口协议

第三节 停-等协议与滑动窗口协议
讲解归纳与举例
例:【简答题】 4 、简述从滑动窗口的观点看,停等、G 0 —back—N及选择
重传三个协议的区别。

【参考答案】
停等:发送窗口= 1 ,接收窗口= 1 ;( 1 分)
Go-back-N:发送窗口WS≥ 1 ,接收窗口Wr= 1 :( 2 分)
选择重传:发送窗口WS> 1 ,接收窗口Wr> 1 ;( 3 分)
【答案解析】:综合理解三种协议在这里插入图片描述

这篇关于计算机网络原原理学习资料分享笔记---第三章/第三节(为有梦想的自己加油!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988678

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx