(考研湖科大教书匠计算机网络)第三章数据链路层-第一节:数据链路层概述

news2024/11/28 1:32:50

文章目录

  • 一:数据链路层概述
    • (1)为什么要有数据链路层
    • (2)数据链路层定义
    • (3)点对点信道和广播信道
  • 二:数据链路层需要解决的一些问题
    • (1)三个最基本问题
      • ①:封装成帧
      • ②:差错检测
      • ③:可靠传输
    • (2)其他问题
      • ①:编址
      • ②:冲突避免

一:数据链路层概述

(1)为什么要有数据链路层

为什么要有数据链路层:上一章节中说到的物理层,它只负责比特流的传输,因此是无法保证传输的可靠性的,因为比特流在传输的过程极易发生跳变、错位、乱序等问题。所以我们需要一种控制手段施加物理层上,来保证物理层传输的可靠性,这一层便是数据链路层

在这里插入图片描述

(2)数据链路层定义

数据链路层:负责通过一条链路从一个结点向另一个相邻结点传送帧

  • 链路(Link):是指从一个结点到相邻结点的一段物理线路,中间没有其他任何交换结点
  • 数据链路(Data Link):想要在链路上传输数据,仅有链路还远远不够,还需要一些通信协议来控制这些数据的传输。因此如果把实现这些协议的硬件和软件加到链路上就构成了数据链路
  • 帧(Frame):在数据链路层传输的数据包称之为帧,因此数据链路层以帧为单位传输和处理数据

在这里插入图片描述

在大多数情况下,研究数据链路层的相关问题时可以不考虑网络体系结构中的其他层,因此可以想象:数据包只在数据链路层从左向右沿水平方向传送

如下图,从数据链路层看,主机H1到H2的通信可以看成是由4段不同链路上的通信所组成的

在这里插入图片描述

(3)点对点信道和广播信道

数据链路层使用的信道主要有两种类型

  • 点对点信道:这种信道使用一对一的点对点通信方式(如上图)
    在这里插入图片描述

二:数据链路层需要解决的一些问题

(1)三个最基本问题

封装成帧、差错检测可靠传输是数据链路层需要解决的最基本也是最重要的问题,在后面小节中会详细介绍,这里了解概念即可

以点对点信道为例进行介绍

①:封装成帧

封装成帧:我们将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作称之为封装成帧,添加帧头和帧尾的目的都是为了在链路上以帧为单元来传送数据,也就是为了实现数据链路层本身的功能

在这里插入图片描述

例如下图是以太网V2的MAC帧格式

在这里插入图片描述

②:差错检测

差错检测:帧在传输过程中可能会因为各种原因(例如信道噪声)而产生误码,接收方主机用以确定是否产生误码的方法称之为差错控制

在这里插入图片描述

这可以通过添加检错码(或校验码)来发现。具体来说,发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾,接收方主机在收到帧后,通过检错码和检错算法判断传输过程中是否出现了误码

  • 例如以太网V2的MAC帧的帧尾,就是4字节的帧检验序列FCS
    在这里插入图片描述

在这里插入图片描述

③:可靠传输

可靠传输:误码是不可能完全避免的,但若能实现发送方发送什么,接收方就能接收到什么,就可以称数据链路层提供的是可靠传输。换句话说,接收方接收到错误的帧后会丢弃,如果它提供的是不可靠传输,那么丢了就丢了,不会再有任何补救措施;而如果它提供的是可靠传输,那么它会通过各种方法拿到该帧的正确版本,以交付给上一层

(2)其他问题

对于使用广播信道的数据链路层来说,除了要解决上面的三个最基本问题之外,还有一些其他问题需要解决

①:编址

编址:如下图,对于使用一根总线互连的各主机来说,所传输的数据会在总线上流动,因此如何确定帧的来源和目的称之为编址

在这里插入图片描述

如下图是以太网V2 的MAC帧格式,其首部三个字段中,就有两个字段分别是目的地址和源地址

在这里插入图片描述

②:冲突避免

冲突避免:当总线上多台主机同时使用总线来传输帧时,传输信号就会产生碰撞,这是采用广播信道的共享式局域网不可避免的问题,所以数据链路层必须解决这样的问题

在这里插入图片描述

例如以太网采用CSMA/CD协议进行控制

在这里插入图片描述

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

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

相关文章

深入理解Promise之一步步教你手写Promise构造函数

目录前言一,手写教学1.1 基本结构1.2 resolve与reject结构搭建1.3 resolve与reject代码实现1.4 throw抛出异常改变状态1.5 promise对象状态只能转换一次1.6 then方法进行回调1.7 异步任务的回调执行1.8 执行多个回调的实现1.9 同步修改状态then方法结果返回1.10 异步…

【手写 Promise 源码】第四篇 - 翻译并理解 Promise A+ 规范

一,前言 上一篇,根据对 Promise 的分析和了解,实现了一个简版 Promise,主要涉及以下内容: Promise 的实现思路;Promise A 规范(简版);Promise 简版实现和功能测试&…

KVM虚拟化之小型虚拟机kvmtool的使用记录

根据 kvmtool github仓库文档的描述,类似于QEMU,kvmtool是一个承载KVM Guest OS的 host os用户态虚拟机,作为一个纯的完全虚拟化的工具,它不需要修改guest os即可运行, 不过,由于KVM基于CPU的硬件虚拟化支持&#xff0…

读《哲学的故事》

文章目录读《哲学的故事》🚩 遇见🌻 简述🌾 部分摘抄读《哲学的故事》 一本书读过后,我有种脑子里又被塞进了很多新东西的感觉,也有种想要自我抒发、宣泄的欲望。可真到要说的时候,又好像无话可说。总归勉…

Java转换流(InputStreamReader/OutputStreamWriter)

文章目录概述为什么会有转换流?InputStreamReaderOutputStreamWriter概述 转换流是字节流到字符流的桥梁,在转换的过程中,可以指定编码。转换流也是一种处理流,它提供了字节流和字符流之间的转换。 转换流的两个类 InputStreamR…

1.设计模式的前奏

哪些维度评判代码质量的好坏? 常用的评价标准 可维护性(maintainability):维护代码的成本可读性(readability)可扩展性(extensibility):码应对未来需求变化的能力灵活性&#xff0…

【keepass】密码管理软件-推荐插件和相关工具合集-keepass工作流分析(自动填充、美化界面、快速添加记录、安全增强、软件和数据库维护类)

Keepass有很多已经开源的插件,生态良好,在官网有专门的插件推荐区。安装插件的方法很简单,直接把下载好的插件文件放在plugins文件夹内,重启软件即可。下面我以几大功能推荐一些keepass插件或搭配使用的浏览器扩展,以求…

Coolify系列-手把手教学解决局域网局域网中的其他主机访问虚拟机以及docker服务

背景 我在windows电脑安装了一个VM,使用VM开启了Linux服务器,运行docker,下载服务镜像,然后运行服务,然后遇到了主机无法访问服务的问题。 问题排查 STEP1:首先要开启防火墙端口,这个我的Coolify系列其他文章有详细…

【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)

目录 游戏推荐 研究初步 SetConsoleTextAttribute函数 原型 参数 举个栗子 最后 题外话 一篇游戏笔记。。。 游戏推荐 最近,在玩(完)一个c的控制台游戏。 啊,真的非常好玩。虽然是一个文字游戏,但有很多隐…

分享137个ASP源码,总有一款适合您

ASP源码 分享137个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 137个ASP源码下载链接:https://pan.baidu.com/s/13nF0yADJhSBonIFUIoymPQ?pwdmsl8 提取码&#x…

【C++】位图、布隆过滤器概念与模拟实现

目录 一、位图 1.1 位图的概念 1.2 位图的使用 1.3 位图的实现 1.4 位图的应用 二、布隆过滤器 2.1 布隆过滤器 2.2 布隆过滤器的实现 2.3 布隆过滤器练习题 一、位图 1.1 位图的概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据&am…

监控Python 内存使用情况和代码执行时间

我的代码的哪些部分运行时间最长、内存最多?我怎样才能找到需要改进的地方?” 在开发过程中,我很确定我们大多数人都会想知道这一点,而且通常情况下存在开发空间。在本文中总结了一些方法来监控 Python 代码的时间和内存使用情况…

【24】C语言 | 调试技巧

目录 1、调试概念: 2、Debug和Release的介绍 3、windows中的快捷键 4、案例一:求1! 2!3!...n! 5、案例二:下面的代码输出什么? 6、案例三:实现一个strcopy的函数 …

零入门容器云网络实战-3->Underlay网络与Overlay网络总结

本篇文章主要用于收集、整理、总结关于Underlay网络以及overlay网络相关知识点。 1、underlay网络介绍? 1.1、什么是underlay网络? Underlay网络就是: 传统IT基础设施网络,由交换机和路由器等设备组成,借助以太网协议…

3分钟搭建起聊天机器人需要的NoneBot2环境

创建nonebot2运行环境 官网上说这里的Python版本要高于3.8.0,还会有其他的依赖。 所以这里推荐大家使用虚拟环境,Poetry、venv、Conda,我这里用的是conda环境(不同的项目依赖可能有所不同,所以才创建虚拟环境&#xf…

[羊城杯 2020]EasySer

目录 信息搜集 代码审计 参数扫描 信息搜集 先扫下目录 .htaccess&#xff1b;robots.txt&#xff1b;flag.php&#xff1b;index.php 在robots.txt下看到了/star1.php 进入star1.php发现出现ser.php <!-- 小胖说用个不安全的协议从我家才能进ser.php呢&#xff01; !--…

蓝桥杯刷题015——最少刷题数(二分法+前缀和)

问题描述 小蓝老师教的编程课有 N 名学生, 编号依次是 1…N 。第 i 号学生这学期刷题的数量是 Ai​ 。 对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 输入格式 第一行包含一个正整数 N 。 第二行包含 N 个整数:…

学成在线项目开发技巧整理---第一部分

学成在线项目开发技巧整理---第一部分1.数据字典2.http-client远程测试插件,可以保存测试数据3.三种跨域解决4.具有多层级数据查询思路5.Mybaits分页插件原理6.根据文件后缀解析出mime-type7.大文件上传8.Spring事务什么时候会失效9.分布式文件系统MinIo10.构建独立文件系统11.…

3.3Sram和Dram

文章目录一、引子二、存储元件1.DRAM芯片&#xff08;1&#xff09;栅极电容1&#xff09;存储2&#xff09;读出&#xff08;2&#xff09;物理特性&#xff08;3&#xff09;DRAM刷新&#xff08;4&#xff09;DRAM地址线复用2.SRAM芯片&#xff08;1&#xff09;双稳态触发器…

爬虫之JS的解析

JS的解析 学习目标&#xff1a; 了解 定位js的方法了解 添加断点观察js的执行过程的方法应用 js2py获取js的方法 1 确定js的位置 对于前面人人网的案例&#xff0c;我们知道了url地址中有部分参数&#xff0c;但是参数是如何生成的呢&#xff1f; 毫无疑问&#xff0c;参数肯…