当前位置: 首页 > news >正文

【计算机网络】第三章·数据链路层(一)

目录

1.数据链路层概述

1.1.链路、数据链路、帧

2.数据链路层上的三个问题

2.1.封装成桢和透明传输

2.2.差错检测

2.2.1.差错检验的两种方法:奇偶校验、循环冗余校验

3.可靠传输

3.1.可靠传输的相关概念

3.2.停止-等待协议(SW)

3.2.1.停止-等待协议的基本原理

3.2.2.停止等待协议的信道利用率    

3.3.回退N帧协议(GBN)

3.3.1.回退N帧协议的基本原理

3.4.选择重传协议(SR)


1.数据链路层概述

1.1.链路、数据链路、帧

链路:从一个节点到相邻节点到一段物理线路(中间无其他交换节点)

数据链路:在链路上传输的数据,除链路本身外,还有一些必备的通信协议来控制数据传输,把         实现这些协议的硬件和软件加入链路中构成数据链路;其中的通信协议由网络适配器(物理层+数据链路层)和软件驱动程序实现

:数据链路层对等实体在水平方向上进行逻辑信息通信的协议数据单元PDU


2.数据链路层上的三个问题

2.1.封装成桢和透明传输

1.封装成桢:数据链路层将上层交付下来的协议数据单元PDU添加首部和尾部,使之成为桢

2.透明传输:数据链路层对上层交付下来的协议数据单元PDU没有任何限制

实现透明传输有两种方式:

1.面向字节的物理链路时的字节填充

2.面向比特的物理链路时的比特填充

2.2.差错检测

概念:在实际的通讯链路中会产生一些比特信号的失真,造成比特差错,在一定时间内出现比特差错的数量占该时间段内总传输数据比特总数的比率成为误码率(BER);提高信噪比可以降低误码率;一般帧的尾部用于存放帧检验序列(FCS)

2.2.1.差错检验的两种方法:奇偶校验、循环冗余校验

1.奇偶校验:奇偶校验分为奇校验和偶校验,奇校验是指:在待发送的数据后添加一个校验位,使数据中1的个数为奇数,偶校验则与之相应;若检测结果与原先的奇偶性不同,则出现误码。

若误码未导致奇偶性出现变化则无法检测成功

2.循环冗余校验CRC:收发双方约定好一个生成多项式G(x),发送方计算冗余码并包装在帧内发送,接收方根据G(x)判断是否出现误码

发送发使用CRC操作:

1.将带发送数据与G(x)多项式中最高次数个0合并形成被除数,G(x)多项式系数构成的比特串作为除数,进行模2除法(相同位数逻辑或运算)

2.得到余数作为冗余码(冗余码长度与G(x)最高次数相同,若余数不够则在余数前补0)

3.将待发送数据后加入余数发送出去

接收方使用CRC操作:

1.将已接收数据+余数组成被除数,G(x)多项式系数构成的比特串作为除数进行模2除法

2.若余数为0则无误码,若余数为1则表示发生误码


3.可靠传输

3.1.可靠传输的相关概念

可靠传输是指当数据产生误码并被成功检测时,通过技术使得收发一致的传输方式;

不可靠传输是指当数据产生误码并被成功检测时仅丢弃误码帧的传输方式

在有线链路中误码率极低,不要求可靠传输,而无线链路误码率高,需要使用可靠传输

传输差错分为误码(数据链路层及下层)、分组丢失、分组失序、分组重复(数据链路层上层)

3.2.停止-等待协议(SW)

3.2.1.停止-等待协议的基本原理

停止等待就是指发送方每发送一个数据分组后停止并等待接收方发送确认信号,接收方接受数据后若检测无误码则接受该数据并发送给发送发ACK确认分组,发送方接收到确认信号后再进行下一组数据发送;若检测出有误码则丢弃该分组并发送NAK分组,发送方接收到信息后重新发送该分组。

以上仅可以处理误码的情况,并不能实现可靠传输,对于分组丢失的情况采用以下方法:

1.发送方数据分组传输丢失

2.接收方无法接受该分组从而无法发出信号回应发送方

3.发送方进入等待接收方信号的状态

4.若等待时间超过超时计时器所设置的超时重传时间RTO则重新发送该分组

以上过程称为超时重传

注意:

1.RTO太短会导致不必要的超时重传,太长会降低信道利用率;一般略大于收发双方平均往返时长RTT

2.使用超时重传协议后可以取消否认机制使协议实现简单;但对于点对点链路误码率较高,使用否认机制可以尽快重传数据

3.SW协议属于自动请求重传ARQ,即重传请求是由发送方自动进行的

3.2.2.停止等待协议的信道利用率    

3.3.回退N帧协议(GBN)

3.3.1.回退N帧协议的基本原理

GBN协议采用流水线传输方式,利用发送窗口限制连续发送分组数量,属于连续ARQ协议

发送方设置一个发送窗口WT(1<WT<=2^n -1),每次只发送窗口内的数据,接收方设置接收窗口WR(WR=1),每正确接收一个正确落入窗口的序号就将窗口滑动并发送给发送发确认信号,发送方接收确认信号后继续滑动一个位置加入新的序号。

该方法在无传输差错时信道利用率取决于发送窗口大小

当遇到超时重传,回退N帧时,一个分组的差错会引发大量数据重传,在易出现误码时信道利用率不高;

该协议中接收方采用累积确认的方式,ACKn表示序号n及之前的数据分组被正确接收,优点在于减少网络中注入确认分组的数量,且确认分组丢失不一定导致重传;缺点在于无法及时向发送方反馈已正确接收分组数量

3.4.选择重传协议(SR)

SR协议选择对分组进行逐一确认,且1<WR<=WT,WT+WR<=2^n(确保WR滑动后新序号与旧序号之间没有重叠)

发送方仅重传未收到确认而超时的数据帧


相关文章:

  • 智能巡检机器人常见问题答疑
  • 【小白教程】幻兽帕鲁服务器一键搭建 | 支持更新 | 自定义配置
  • ThreadLocal详解
  • apipost和curl收不到服务器响应的HTTP/1.1 404 Not Found
  • 探索IOC和DI:解密Spring框架中的依赖注入魔法
  • 基于51单片机智能电子秤
  • 《vtk9 book》 官方web版 第2章 - 面向对象设计
  • jenkins安装配置,使用Docker发布maven项目全过程记录(1)
  • git checkout和git switch的区别
  • 微信小程序(十五)自定义导航栏
  • 定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱
  • 那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法
  • C# 只读文件删除提示失败,给文件修改属性
  • 【论文笔记】《Learning Deconvolution Network for Semantic Segmentation》
  • YOLOv8加入AIFI模块,附带项目源码链接
  • 【前端学习】-粗谈选择器
  • 0基础学习移动端适配
  • 10个最佳ES6特性 ES7与ES8的特性
  • Computed property XXX was assigned to but it has no setter
  • httpie使用详解
  • JDK 6和JDK 7中的substring()方法
  • js继承的实现方法
  • PHP 小技巧
  • Python打包系统简单入门
  • Unix命令
  • vue:响应原理
  • Vue组件定义
  • 构造函数(constructor)与原型链(prototype)关系
  • 聊聊flink的TableFactory
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​力扣解法汇总946-验证栈序列
  • ​什么是bug?bug的源头在哪里?
  • #QT(智能家居界面-界面切换)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (06)金属布线——为半导体注入生命的连接
  • (翻译)terry crowley: 写给程序员
  • (分类)KNN算法- 参数调优
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (区间dp) (经典例题) 石子合并
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)Windows2003安全设置/维护
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .htaccess 强制https 单独排除某个目录
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Project Open Day(2011.11.13)
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net开发时的诡异问题,button的onclick事件无效
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ C++ ] STL---string类的使用指南
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [BZOJ4010]菜肴制作