湖科大计网:数据链路层

news2024/9/9 6:11:44

一、数据链路层概述

一、基本概念

        实际上的数据传输需要在每个结点中通过特定的各层,但是在单独考虑数据链路层的内容时,我们只需要将数据链路层想象成水平传输的即可,数据链路层完成它自己部分的功能。数据链路层将从网络层下来的数据协议单元封装成帧,实现自己的功能。

数据链路层可以为网络层提供的服务有:

①无确认的无连接服务②有确认的无连接服务③有确认的面向连接的服务

数据链路层是解决相邻两个结点(主机、交换机、路由器)之间的数据通信问题。

数据链路就是相邻两个结点之间的物理线路(链路)加上实现通信协议的硬件和软件构成的逻辑链路。

二、三个重要问题

理解:以以太网MAC帧为例,数据链路层为上层交付的协议数据单元封装成帧(添加帧头和帧尾),帧尾包含检错码FCS,当接收方可以通过FCS判断接受到的帧是否误码(差错检测)。

一、封装成帧

将网络层交付的协议数据单元,添加帧头和帧尾。数据链路层以帧为单元传输数据。

一般在帧头和帧尾添加定界符,表示帧的开始和结束。

二、差错检测

发送方会用待发送的数据和检错算法计算出检错码,放入帧尾。

接收方根据帧尾中的检错码就可以检测帧中是否有误码。

三、可靠传输

如果数据链路层提供的是不可靠服务,那么检测出差错的帧直接被丢弃。

如果提供的是可靠服务,检测出差错的帧丢弃后还能再重新收到这个帧的正确副本。

二、数据链路层功能

一、封装成帧

①帧头和帧尾的作用之一是帧定界。

②透明传输

也即是数据链路层可以传输任何数据内容,它自己的帧头帧尾不会对数据内容产生限制。

(1)面向字节的物理链路:

字节填充法:添加转义字符。

(2)面向比特的物理链路:

零比特填充法:五1 ,一0。

(HDLC协议)

二、差错检测

①CRC循环冗余校验

这里的除法并不是除法,这里是进行异或运算,如果位数够就商上1,不够就商上0。

检错码只能检测错误,没有纠错功能。(计算机网络很少纠错)

三、可靠传输(实现流量控制和差错控制)

可靠传输并不是仅数据链路层中有的,而且也并非需要数据链路层实现。

①停等协议

信道利用率是指,传输并确认整个需要传输的数据,真正发送数据的时间与整个过程的比值。

②回退N帧协议

发送窗口1<Wt<=2^n-1

接收窗口Wr=1

(1)累计确认

(2)超时重传:若发送方已经发送的某个帧超时,那么发送窗口内已经发送的帧要全部重传。

(3)接收方只接收窗口内的帧,对于窗口外的帧,没接收一个就发送一个最近的ACK

(4)发送方接收到已经确认的ACK,会根据具体实现来选择是否提前进行“超时重传”,即提前将已经发送的帧全部重传。

(5)移动窗口并不一定立马进行传帧。

③选择重传协议SR

发送窗口1<Wt<=2^(n-1)

接收窗口1<Wr1<=Wt

选择重传是对回退N帧协议的改进。

(1)超时重传,只重传超时的即可。<回退N帧全都重传是因为接收方只需要一个,这一个是谁呢,很难评,所以干脆全都发了算了,但是选择重传可以乱序收,只需要传超时的这个就行了>

(2)乱序接收,每接收一个就发送一个

【SR只需要管住自己的那一个就行了,我接受了我就ACK,我超时了我就重传这个。

但是回退N帧不一样,接收方只要一个,不然就不行,那么发送方一次重传全都得传。】

【窗口大小的限制,都是看是否会出现问题,比如SR中的发送窗口必须是小于等于编号数的一半,因为超过一半的话,要是这一半接收方已经接受,准备接受下次的,下次的必然会包含之前已有的编号,而此时ACK失效了,那么就超时重传,问题出现了,之前已有的编号这次又有了。】

四、媒体接入控制

共享信道的问题。

七、总结

数据链路层学习时,是学习了一个整体框架,如数据链路层的封装成帧,差错检测,透明传输,可靠传输等,但是具体数据链路层的哪个协议用的是什么方法,对上层是否可靠传输等,因协议而定!

一、数据链路层协议总结

广域网的数据链路层协议:HDLC协议、PPP协议

以太网(局域网)的数据链路层协议:无名=-=

<广域网和局域网就是分布范围不一样而已!广域网可以包含若干个局域网>

一、以太网(局域网)

以太网采用曼彻斯特编码,接入控制协议CSMA/CD

MAC帧格式:

没有帧定界标志,但是物理层会加入前导码,前导码中有帧开始定界符,但是以太网MAC帧不需要结束定界符,因为它规定了一个帧间间隔。

二、PPP协议(广域网)

点对点PPP协议是目前使用最广泛的点对点数据链路层协议。不向上提供可靠传输服务!

①帧格式:

②透明传输的方法:

以吉大的PPT来看,PPP协议是面向字节的链路协议,采用字节填充法

③差错检测:

CRC循环冗余

八、王道习题补充内容

(1)流量控制限制的是发送方的数据流量

(2)在封装成帧的题目中,给出传送的字符,那么这些字符就是当做需要传送的数据,我们对其封装成帧发送,添头添尾增加定界符,然后使用透明传输方法修改帧。

题中A、B、ESC、FLAG是需要传输的数据

我们在这个数据前后添加定界符flag

即最终为01111110 01000111 11100011 11100000 01111110 01111110。

 字符填充法,在数据的每个转义字符和FLAG之前加入转义字符

01111110 01000111 11100011 11100000 11100000 11100000 01111110 01111110。

比特填充法:

01111110 01000111 110100011 111000000 011111010 01111110 (前两个0别忘了填)

(3)数据链路层是有纠错功能的,比如海明码

(4)回退N帧是累计确认。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS 学习应用篇(五)服务Server学习之自定义服务与调用

在之前我学着如何建立一个话题Topic的消息类型&#xff0c;那时候建立了一个msg文件&#xff0c;包括&#xff0c;消息名称和消息数据类型&#xff08;int还是什么之类的。&#xff09;&#xff0c;将其链接到CMakeList&#xff0c;.xml文件补录需要的依赖&#xff0c;CMakeLis…

kubernetes集群编排(12)

目录 istio 部署 部署示例应用 部署遥测组件 流量管理 熔断 istio 官网&#xff1a;https://istio.io/latest/zh/about/service-mesh/ 部署 demo专为测试准备的功能集合 [rootk8s2 ~]# tar zxf istio-1.19.3-linux-amd64.tar.gz [rootk8s2 ~]# cd istio-1.19.3/ [rootk8s2 isti…

Playwright UI 自动化测试实战

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

中国人民大学与加拿大女王大学金融硕士帮你打开选择学校的正确方式

随着社会对人才需求量的加大&#xff0c;对人才教育水平要求的攀升&#xff0c;越来越多的人意识到学历的重要性&#xff0c;于是每年攻读硕士和博士的人开始居高不下。例如大家对中国人民大学与加拿大女王大学金融硕士的选择。面对众多高校&#xff0c;如何选择合适的学校成为…

云原生下GIS服务规划与设计

作者&#xff1a;lisong 目录 背景云原生环境下GIS服务的相关概念GIS服务在云原生环境下的规划调度策略GIS服务在云原生环境下的调度手段GIS服务在云原生环境下的服务规划调度实践 背景 作为云原生GIS系统管理人员&#xff0c;在面对新建的云GIS系统时&#xff0c;通常需要应对…

2023/11/15JAVA学习

如何多开一个程序

python自动化第一篇—— 带图文的execl的自动化合并

简述 最近接到一个需求&#xff0c;需要为公司里的一个部门提供一个文件上传自动化合并的系统&#xff0c;以供用户稽核&#xff0c;谈到自动化&#xff0c;肯定是选择python&#xff0c;毕竟python的轮子多。比较了市面上几个用得多的python库&#xff0c;我最终选择了xlwings…

python 基础语法 (常常容易漏掉)

同一行显示多条语句 python语法中要求缩进&#xff0c;但是同一行可以显示多条语句 在 Python 中&#xff0c;可以使用分号 (;) 将多个语句放在同一行上。这样可以在一行代码中执行多个语句&#xff0c;但需要注意代码的可读性和维护性。 x 5; y 10; z x y; print(z) 在…

Redis Hotkey?3招定位+5招解决

作者总结分享 Redis Hotkey 定位和解决方法的优缺点。 作者&#xff1a;贲绍华&#xff0c;爱可生研发中心工程师&#xff0c;负责项目的需求与维护工作。其他身份&#xff1a;柯基铲屎官。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系…

贪吃蛇小游戏代码

框架区 package 结果;import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.util.ArrayList; import java.util.List; import java.util.Random;import javax.s…

什么是CSV文件,以及如何打开CSV文件格式

​CSV代表Comma Separated Values。CSV文件是一种纯文本文件&#xff0c;用于存储表格和电子表格信息。内容通常是由文本、数字或日期组成的表格。使用将数据存储在表中的程序可以轻松导入和导出CSV文件。 CSV文件格式 通常CSV文件的第一行包含表格列标签。后面的每一行表示表…

virtualbox基本配置

全屏模式调出热键 右边的 ctrl home 键 安装增强功能 注意&#xff1a;virtualbox 自带那个安装增强功能点击后是没有效果的 1、启动虚拟机 2、设备 3、分配虚拟光驱 4、选择虚拟盘 5、选择对应iso文件&#xff0c;文件下载路径 6、双击对应文件安装&#xff0c;默认配置…

指针传2

几天没有写博客了&#xff0c;怎么说呢&#xff1f;这让我总感觉缺点什么&#xff0c;心里空落落的&#xff0c;你懂吧&#xff01; 好了&#xff0c;接下来开始我们今天的正题&#xff01; 1. ⼆级指针 我们先来看看代码&#xff1a; 首先创建了一个整型变量a&#xff0c;将…

Vue 简单的语法

1.插值表达式 1.插值表达式的作用是什么&#xff1f; 利用表达式进行插值&#xff0c;将数据渲染到页面中&#xff1b; 2.语法结构&#xff1f; {{表达式}} 3.插值表达式的注意点是什么&#xff1f; &#xff08;1&#xff09;使用的数据要存在&#xff0c;在data中&…

Java基础(第七期):Java面向对象和类 类的封装 Java构造器 JavaBean标准

Java基础专栏 Java基础&#xff08;第七期&#xff09; 面相对象 面向对象&#xff08;Object-oriented&#xff09;是一种编程思想和方法&#xff0c;它将程序的设计和组织建立在对象的概念上。在Java中&#xff0c;每个对象都是类的一个实例&#xff0c;而类定义了相同类型对…

【机器学习6】概率图模型

用观测结点表示观测到的数据&#xff0c; 用隐含结点表示潜在的知识&#xff0c; 用边来描述知识与数据的相互关系&#xff0c; 最后基于这样的关系图获得一个概率分布 。 概率图中的节点分为隐含节点和观测节点&#xff0c; 边分为有向边和无向边。 从概率论的角度&#xff0c…

使用pixy计算群体遗传学统计量

1 数据过滤 过滤参数&#xff1a;过滤掉次等位基因频率&#xff08;minor allele frequency&#xff0c;MAF&#xff09;低于0.05、哈达-温伯格平衡&#xff08;Hardy– Weinberg equilibrium&#xff0c;HWE&#xff09;对应的P值低于1e-10或杂合率&#xff08;heterozygosit…

想买GPT4会员却只能排队?来看看背后的故事!

文章目录 &#x1f9d0; 为什么要进候选名单&#xff1f;&#x1f50d; 究竟发生了什么&#xff1f;&#x1f62e; IOS端还能买会员&#xff01;&#x1f914; 网页端为啥不能订会员&#xff1f;第一点&#xff1a;防止黑卡消费第二点&#xff1a;当技术巨头遇上资源瓶颈&#…

2023.11.16-hive sql高阶函数lateral view,与行转列,列转行

目录 0.lateral view简介 1.行转列 需求1: 需求2: 2.列转行 解题思路: 0.lateral view简介 hive函数 lateral view 主要功能是将原本汇总在一条&#xff08;行&#xff09;的数据拆分成多条&#xff08;行&#xff09;成虚拟表&#xff0c;再与原表进行笛卡尔积&#xff0c…