计算机网络笔记3 数据链路层

news2025/1/31 18:35:52

计算机网络系列笔记目录👇

  • 计算机网络笔记6 应用层
  • 计算机网络笔记5 运输层
  • 计算机网络笔记4 网络层
  • 计算机网络笔记3 数据链路层
  • 计算机网络笔记2 物理层
  • 计算机网络笔记1 概述

文章前言 💗

站在巨人的肩膀上,让知识的获得更加容易!本文为立足B站最火的湖科大教书匠计网课程和王道课程的笔记,以及前人计网博客笔记,综合自己理解,梳理的一系列完整的笔记!如果您觉得文章对您有帮助记得👍⭐️,有不足之处欢迎指出,评论和私信会在第一时间回复。或者直接私信我。

  • 学习视频来源: 计算机网络微课堂(有字幕无背景音乐版)yyds
  • 课件pdf来源:评论区up bili_68567544整理目录分享
  • 参考文章:https://blog.csdn.net/weixin_45067603/article/details/107053479及百度百科、知乎等

课程相关资源(课件、PDF文档、仿真软件)稍后有时间整理后会分享链接到评论区自行下载😺

文章思维导图&知识点导航速览

1.链路层的功能
⒉链路层的两种信道
3.局域网、广域网
4.链路层的设备

一、数据链路层概述

  • 结点: 主机、路由器
  • 链路(Link): 一个结点到相邻结点的一段物理通道(双绞线、光纤、微波等,分为有线链路和无线链路),而中间没有任何其他的交换结点。
  • 数据链路(Data Link): 网络中两个结点之间的逻辑通道,把实现通信协议的硬件和软件加到链路上构成了数据链路。
  • 帧(Frame): 数据链路层以帧为单位,封装网络层数据报。
    数据链路层位置概述
    数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

说人话就是,物理层传的0101流怎么解读?有没有传输错误信息?是不是可靠的传输?
功能一∶为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。有连接一定有确认!功能二∶链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三∶组帧。
功能四︰流量控制。限制发送方哦~
功能五∶差错控制〔帧错/位错)。

二、数据链路控制

数据链路控制处理两个邻近结点的通信过程,即结点到结点的通信,无论该链路是专用的还是广播的。数据链路控制( Data Link Control,DLC)的功能包括成帧、流量控制和差错控制,以及差错检测和差错纠正。

1.1 封装成帧

封装成帧是指数据链路层在给上层交付的协议数据单元添加帧头和帧尾使之成为帧。帧头和帧尾中包含有重要的控制信息。帧头和帧尾的作用之一就是帧定界(确定帧的界限,从收到的比特流中识别帧的开始和结束)。
在这里插入图片描述
透明传输 就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中,可能出现数据中的某些标记符与开始/结束标记符恰巧重复的情况,如果不加以处理,那么会导致无法判定帧的开始于结束。
在这里插入图片描述
帧:
以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
“标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等等;”数据”则是数据包的具体内容。
“标头”的长度,固定为18字节。”数据”的长度,最短为46字节,最长为1500字节。因此,整个”帧”最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

组帧的四种方法:(透明传输的实现)
1、字符计数法
在这里插入图片描述
一个格子代表一个字符,帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数

2、字符填充法
在这里插入图片描述
原始数据中的帧边界为从**SOH(start of header)开始到EOT(End of transmisson)**结束,两者之间的数据存在类似的EOT、SOH时可能导致误判的帧的开始和结束,于是在与标记字符重复的数据流前面添加一段转义字符。

3、零比特填充法:
在这里插入图片描述

4、违规编码法
数据部分采用曼彻斯特编码所以都是高-低,低-高类型的,所以头和尾可以用高-高,低–低来帧定界
在这里插入图片描述
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。

1.2 差错控制(检错编码)

在这里插入图片描述
没错,就是计组中的检错编码!
在这里插入图片描述
1、编码vs调制
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
2、冗余编码
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
在这里插入图片描述
在这里插入图片描述
海明码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 流量控制与可靠传输

流量控制:让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费
可靠传输:发送方发的是什么,接收方接受的就是什么

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

停止等待协议 :

发送一个就停止,等待对方确认后再发送下一个;
无差错情况下的停等协议:
在这里插入图片描述
有差错情况下的停等协议:
使用一个超时计时器,每发一帧就开始计时,设置时间略长于一个RTT(往返时延)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是信道利用率太低
在这里插入图片描述
在这里插入图片描述

后退N帧协议(GBN)

停等协议效率低,所以GBN连续发送数据帧提高信道利用率,累计确认。
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传
在这里插入图片描述
发送窗口不能无限大,与使用的编号的比特数有关,二进制表示

GBN的优缺点也显而易见,优点是相对于上面的停止等待协议,明显提高了信道利用率,缺点是因为重传机制的原因,导致已经收到数据却需要强行丢弃,进而造成浪费

选择重传协议(SR)

吸取了GBN协议的教训,我们打算尝试只重传错误的帧,这样的话就不用浪费资源把已经收到的帧再重传一次。
在GBN中,仅有接收端有一个窗口来存放数据帧,在SR中,两者都有窗口了。
和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧(注释:缓存不可能无限大)
SR运行过程
注释:2帧丢失之后仍然在发送,但是2帧丢失之后只是缓存,并没有移动窗口;它可以继续接受窗口范围内排在2帧后面的数据帧,直至最后2帧收到后一次性确认窗口内的所有已经收到的帧,再移动窗口。
在这里插入图片描述

当发送窗口最后和接受窗口大小相同时,利用率比较高
sr协议特点:
1.对数据帧逐一确认。收一个确认一个
2只重传出镭帧
3.资收方有缓存
4.WT max= WRmay=2n-1

信道划分&介质访问控制

链路层设备

在这里插入图片描述

未完待续…

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

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

相关文章

给列起别名(关键字:as)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select 列名1 as 别名1, 列名2 as 别名2, 列名n as 别名n from 表名; 说明:可以省略as,列名和别名之间使用空格…

力扣 -- 873. 最长的斐波那契子序列的长度

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int lenLongestFibSubseq(vector<int>& nums) {int nnums.size();unordered_map<int,int> hash;for(int i0;i<n;i){hash[nums[i]]i;}int ret2;vector<vector<int>> dp(n,v…

关于内存对齐你需要了解的事

简介 这篇文章的目的是带你了解什么是内存对齐&#xff0c;具体的内存对齐的细节、处理方式、不同架构则不会去详细讲解&#xff0c;只做科普文用。 1、什么是内存对齐 内存对齐和数据在内存中的位置有关。内存对齐以字节为单位进行&#xff0c;一个变量的内存地址如果正好等于…

集合(容器)-List接口及实现类

容器的特征&#xff1a;①数据长度可变&#xff1b;②数据保存方式不同。 集合体系概述&#xff1a;JAVA的集合框架是由很多接口、抽象类、具体类组成。都位于java.util包中。 Java中集合类中默认可以存储任意数据类型&#xff0c;Java中的集合提供泛型机制&#xff0c;在定义…

mysql5.7停止维护时间

mysql5.7将于2023年10月停止官网支持和更新&#xff1b;老项目要准备升级&#xff0c;新项目的mysql必须是mysql8.0&#xff08;2023-10&#xff09; 官方升级咨询地址 oracle官方升级咨询地址https://go.oracle.com/LP116153?elq_mid247718&sh1518132002061316121320310…

.Net开源迁移框架FluentMigrator的使用。

在实际的开发过程中&#xff0c;经常会遇到数据库结构变动&#xff0c;比如新增表、删除表&#xff1b;已有的表新增字段&#xff0c;删除字段&#xff1b;修改字段属性等等。而且需要开发环境、测试环境和生产环境进行同步。如果使用的是EF&#xff0c;还是挺方便的。而非EF环…

Android笔记:Android 组件化方案探索与思考

组件化项目&#xff0c;通过gradle脚本&#xff0c;实现module在编译期隔离&#xff0c;运行期按需加载&#xff0c;实现组件间解耦&#xff0c;高效单独调试。 先来一张效果图 组件化初衷 APP版本不断的迭代&#xff0c;新功能的不断增加&#xff0c;业务也会变的越来越复杂…

【多模态融合】TransFusion学习笔记(2)

接上篇【多模态融合】TransFusion学习笔记(1)。 从TransFusion-L到TransFusion ok,终于可以给出论文中那个完整的框架图了&#xff0c;我第一眼看到这个图有几个疑问: Q&#xff1a;Image Guidance这条虚线引出的Query Initialization是什么意思? Q&#xff1a;图像分支中的…

flex布局与几个实例(含源码)

本文简单的说明下flex布局 有源码实例&#xff0c;后续会持续添加 flex默认主轴是横轴 容器主要有6个属性 flex-direction 决定主轴的方向 flex-direction: row | row-reverse | column | column-reverse; flex-wrap 决定是否换行 flex-wrap: nowrap | wrap | wrap-revers…

JavaAPI---replace

package daysreplace;public class ReplaceTest {public static void main(String[] args) {String str "wwxhhhhhhhhhhh333";System.out.println("替换前的字符串" str);String newstr str.replace("333", "111");System.out.prin…

(第2遍中)内存的堆空间不够 error: MSB3073 超过了 PCH 的虚拟内存范围

压缩包里打开的新工程文件&#xff0c;运行 GenerateProjectFiles.bat 后&#xff0c;再点击 .sln 文件&#xff0c;编译工程&#xff0c;编译了 1.5h 左右&#xff0c;快结束的时候报错如下&#xff1a; 编译器的堆空间不足在第2遍中编译器的堆空间不足error MSB3073: 命令“…

【typescript】面向对象(下篇),包含接口,属性的封装,泛型

假期第八篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 面向对象&#xff1a;程序中所有的操作都需要通过对象来完成 计算机程序的本质就是对现实事物的抽象&#xff0c;抽象的反义词是具体。比如照片是对一个具体的…

大恒IFrameData IImageData转bmp HObject Mat

大恒工业相机采集的帧数据转为其他8bit图像格式 C#转为bmp格式转为Halcon的HObject格式转为OpenCVSharp的Mat格式 回调采集图像的数据类型为IFrameData&#xff0c;单帧采集的数据类型为IImageData&#xff0c;两者的区别为IImageData类多了一个**Destroy()**方法 C# 转为bm…

floyd算法细节

这个不是一篇学习性文章 主要是针对这几天思考的问题进行一些回答 floyD在计网和数据结构和图模型中有广泛的应用算法 很简单但是其中蕴含的原理值得细究。 弗洛伊德算法(Floyd)主要针对多源最短路径,且可以解决路径中有负权的情况(不包含负权回路),但是迪杰斯特拉算法只…

mycat实现mysql读写分离

架构图&#xff1a; 视频地址

逐步解决Could not find artifact com:ojdbc8:jar:12

Could not find artifact com:ojdbc8:jar:12 in central (https://repo.maven.apache.org/maven2) 原因&#xff1a; ojdbc8:jar:12 属于Oracle 数据库链接的一个程序集&#xff0c;缺失的话很有可能会影响数据库链接&#xff0c;蝴蝶效应产生不可预测的BUG&#xff01;但是版…

typescript开发环境搭建

typescript是基于javascript的强类型标记性语言&#xff0c;使用typescript语言可开发出不同规模的、易于扩展的web前端页面应用&#xff0c;本文主要描述typescript的开发环境搭建。 npm install -g typescript 如上所示&#xff0c;在本地开发环境中&#xff0c;使用nodejs…

arduino嵌入式1,LED闪烁案例

CVE系列在等等吧&#xff0c;环境我有点懒得搭建了 文章目录 前言一、anduino是什么玩意儿&#xff1f;二、使用步骤1.找蓝图/画蓝图2.写入数据成果 总结 前言 最近在学习嵌入式开发&#xff0c;我的单片机到了&#xff0c;然后我就沉迷于嵌入式开发的环境中 提示&#xff1a;…

1300*B. Sort the Array(排序构造)

题意&#xff1a; 一个无重复数字的序列&#xff0c;能否反转一个区间使其成为单增序列。 解析&#xff1a; 记录每个点的值和初始下标&#xff0c;然后排序。 对于排好序的序列进行遍历&#xff0c;找出第一段和原序列下标不同的区间并且标记&#xff08;此区间即为翻转的区…

SpringCloud Alibaba - Seata 四种分布式事务解决方案(XA、AT)+ 实践部署(上)

目录 一、Seata 分布式事务解决方案 1.1、XA 模式 1.1.1、XA模式理论 第一阶段&#xff1a; 第二阶段&#xff1a; 1.1.2、Seata 框架中的 XA 模式 第一阶段&#xff1a; 第二阶段&#xff1a; 1.1.3、XA 模式的优缺点 1.2.4、实现Seata 的 XA 模式 a&#xff09;修改…