计算机网络——数据链路层-数据链路层概述(介绍、三个重要问题、使用广播信道的数据链路层、其他问题)

news2024/7/6 20:14:46

目录

介绍

三个重要问题

封装成帧 

差错检测

可靠传输

使用广播信道的数据链路层

其他问题


介绍

本篇对数据链路层进行概述,我们首先来看看数据链路层在网络体系结构中的地位:

主机H1给主机H2发送数据,中间要经过三个路由器和电话网、局域网以及广域网等多种网络。

从五层协议原理体系结构的角度来看,主机应具有体系结构中的各个层次,而路由器只需具有体系结构中的下面三层。

各设备通过物理层下面的传输媒体进行互连,当主机H1向H2发送数据时,数据的流动如上图所示。主机H1将待发送的数据逐层封装后,通过物理层将构成数据包的各比特转换为电信号发送到传输媒体;数据包进入路由器后,由下往上逐层解封到网络层,路由器根据数据包的目的网络地址自身转发表确定数据包的转发端口,然后从网络层向下逐层封装数据包;并通过物理层将数据包发送到传输媒体,数据包最终到达主机H2时,还要由下往上逐层解封,最终解封出主机H1所发送的数据。

当我们专门研究数据链路层的问题时,在大多数情况下,我们可以只关心数据链路层,而不考虑网络体系结构的其他各层。换句话说,我们可以想象:数据包只在数据链路层从左向右沿水平方向传送。

从数据链路层来看,主机H1到H2的通信可以看成是在四段不同的链路上的通信组成的。

所谓链路,就是从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点要在链路上传输数据;

仅有链路还不够,还需要一些通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件
加到链路上,就构成了数据链路

在数据链路层上传输的数据包,又称为,也就是说,数据链路层以帧为单位传输和处理数据。

三个重要问题

接下来介绍数据链路层的三个重要问题,它们是封装成帧、差错检测和可靠传输。

封装成帧 

首先来看封装成帧,如下图所示,两台主机通过一段链路互连。两台主机都会对所发送或接收的数据包进行5个层次的封装或解封。

其中,数据链路层给网络层协议数据单元添加一个数据链路层协议首部,简称为帧头,还要给其添加一个帧尾

我们将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为封装成帧 

添加帧头和帧尾的目的,都是为了在链路上以帧为单元来传送数据;也就是为了实现数据链路层本身的功能。

例如这是以太网版本2的MAC帧格式:

差错检测

再来看差错检测,发送方将封装好的帧,通过物理层发送到传输媒体;帧在传输过程中遭遇干扰后
可能会出现误码,也就是比特0可能变成了比特1,反之亦然。

那么,接收方主机如何判断帧在传输过程中是否出现了误码呢?

这可以通过检错码来发现,发送方在发送帧之前,基于待发送的数据和检错算法,计算出检错码,并将其封装在帧尾。

例如以太网版本2的Mac帧的帧尾,就是4字节的帧检验序列FCS字段,要写入该字段的内容就是我们所说的检错码。

接收方主机收到帧后,通过检错码和检错算法就可以判断出帧在传输过程中是否出现了误码。

可靠传输

再来看可靠传输,接收方主机收到有误码的帧后,是不会接受该帧的,会将其丢弃。

如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施;

如果数据链路层向其上层提供的是可靠服务,那么就还需要其他措施来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。

换句话说,尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方最终都能收到什么,就称为可靠传输

封装成帧、差错检测和可靠传输是数据链路层中最基本最重要的问题,我们在后面的文章中还会详细介绍。

需要说明的是,我们在介绍这三个问题的时候,使用的是点对点信道的数据链路层来举例的;对于使用广播信号的数据链路层,除了包含这三个问题外,还有一些其他需要解决的问题。

使用广播信道的数据链路层

如下图所示,主机A、B、C、D、E通过一根总线进行互连,主机A要给主机C发送帧;
代表帧的信号会通过总线传输到总线上的其他各主机,那么主机BDE如何知道所收到的帧不是发送给他们的,而主机C又如何知道所收到的帧恰恰是发送给自己的呢?

相信大家能够想到地址,或者说编址的问题;也就是将帧的目的地址添加在帧中一起传输 。

例如这是以太网版本2的MAC帧格式:

除了编址问题外,再来看下面这个问题:

当总线上多台主机同时使用总线来传输时,传输信号就会产生碰撞。

这是采用广播信道的共享式局域网不可避免的。
以太网采用的协调方法是使用一种特殊的协议CSMA/CD,也就是载波监听多点接入/碰撞检测

其他问题

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线(局域网)领域已完全取代了共享式局域网。 

那么,网络中的交换机又是如何转发帧的呢?

另外,由于无线信道的广播天性,无线局域网仍然使用的是共享信道技术。

例如 802.11局域网采用的媒体接入控制协议是CSMA/CA,也就是载波监听多点接入碰撞避免,它的工作原理又是怎样的呢?

上述这些内容,都是数据链路层中比较重要的问题,我们将在后面的文章中逐个进行介绍。


END


学习自:湖科大——计算机网络微课堂

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

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

相关文章

java选择排序和冒泡排序

1.区别 选择排序和冒泡排序的区别主要在于算法逻辑、稳定性和交换成本。 算法逻辑:选择排序和冒泡排序都属于比较排序,但在具体算法逻辑上有所不同。冒泡排序是通过相邻元素之间的比较和交换,将较大(或较小)的元素逐…

自动驾驶HWP功能规范

HWP功能规范 Highway Pilot Functional Specification 文件状态: 【√】草稿 【】正式发布 【】正在修改 文件起草分工 撰写: 审核: 编制: 签名: 日期: 审核: 签名: 日期&am…

Leetcode—739.每日温度【中等】

2023每日刷题&#xff08;四十二&#xff09; Leetcode—739.每日温度 单调栈实现思想 从右到左实现代码 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();stack<int> st;vector<i…

深度学习实战61-基于知识图谱与BiLSTM网络实现疾病相关智能问答系统,并支持数据扩展

大家好,我是微学AI,今天给大家介绍一下深度学习实战61-深度学习在医疗领域的应用:疾病相关智能问答系统,并支持数据扩展。本文将详细介绍如何使用Py2neo这个Python库来构建一个医疗领域知识图谱,并将数据导入Neo4j图数据库。我们将提供一些医疗领域的数据样例,并展示如何…

TIME_WAIT状态套接字重新使用

《TIME_WAIT相关知识》里边有相关理论知识。 《TIME_WAIT状态TCP连接导致套接字无法重用实验》有相关实验。 现代Linux的TCP协议栈已经做了许多升级&#xff0c;所以可以让我们直接重用TIME_WAIT状态套接字而不会引起问题。下边是优化的内容&#xff1a; 1.新连接的SYN告知序列…

原生代码布局

背景&#xff1a; 原生开发移动端&#xff0c;每一个页面的组成部分是哪些呢&#xff1f;在一个项目文件里&#xff0c;每一个页面的组成部分又是哪些呢&#xff1f;参考链接&#xff1a;pages页面的组成 效果展示&#xff1a; 注意&#xff1a; 一、布局代码&#xff1a; <…

33 - MySQL调优之索引:索引的失效与优化

不知道你是否跟我有过同样的经历&#xff0c;那就是作为一个开发工程师&#xff0c;经常被 DBA 叫过去“批评”&#xff0c;而最常见的就是申请创建新的索引或发现慢 SQL 日志了。 记得之前有一次迭代一个业务模块的开发&#xff0c;涉及到了一个新的查询业务&#xff0c;需要…

数据库应用:Ubuntu 20.04 安装MongoDB

目录 一、理论 1.MongoDB 二、实验 1.Ubuntu 20.04 安装MongoDB 三、问题 1.Ubuntu Linux的apt 包管理器更新安装软件报错 2.Ubuntu20.04安装vim报错 3.Ubuntu20.04如何更换阿里源 4.Ubuntu22.04如何更换阿里源 一、理论 1.MongoDB &#xff08;1&#xff09;概念 …

帆软报表 channel 反序列化漏洞复现

0x01 产品简介 FineReport、FineBI 是帆软软件开发的企业级报表设计和数据分析工具与商业智能平台。 0x02 漏洞概述 帆软FineReport、FineBI 存在反序列化漏洞&#xff0c;攻击者可向 /webroot/decision/remote/design/channel 接口发送精心构造的反序列化数据&#xff0c;在目…

2023.11.27【读书笔记】|医疗科技创新流程(前言)

目录 注重价值关键要素如何解决价值问题&#xff1f;注重三个关键点价值探索价值预测价值定位 中国视角背景挑战战术 洞察过程发现需求发现需求筛选 发明概念产生概念选择 发挥战略发展商业计划 注重价值 在美国&#xff0c;医疗费用的增长率已经多年超过GDP增长率&#xff1b…

基于CW32F030单片机的便携式多功能测试笔

一、产品背景 在日常的硬件调试工作中&#xff0c;我们最常使用的仪器仪表可能就是万用表了&#xff0c;虽然万用表号称“万用”&#xff0c;但大部分时候&#xff0c;我们需要使用到的功能无非是电压测量和通断测量。 作为调试的“得力干将”&#xff0c;万用表有时候也会存…

SLURM超算集群资源管理服务的安装和配置-基于slurm22.05.9和centos9stream,配置slurmdbd作为账户信息存储服务

slurm介绍就不再赘述了&#xff0c;这里看官网链接&#xff0c;其他的自己搜索吧。 Slurm Workload Manager - Quick Start User Guide 这里主要将slurm集群配置的一般步骤&#xff0c;重点是slurmd的conf文件的配置&#xff1b;官网的内容比较全但不太好选择哪些是必须的&am…

10、静态数码管显示

数码管介绍 LED数码管:是一种简单、廉价的显示器&#xff0c;是由多个发光二极管封装在一起组成“8”字型的器件 数码管引脚的定义 共阴极、共阳极 例如&#xff1a;显示数字1&#xff08;b,c段&#xff09; 3、8&#xff1a;接VCC或者GND/低电平 10011111 0110000 共阴极、…

智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝴蝶算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Open Feign 源码解析(一) --- FactoryBean的妙用

什么是Open Feign? OpenFeign 是 Spring Cloud 全家桶的组件之一&#xff0c; 其核心的作用是为 Rest API 提供高效简洁的 RPC 调用方式 搭建测试项目 服务接口和实体 项目名称 cloud-feign-api 实体类 public class Order implements Serializable {private Long id;p…

Mysql——》int(1)和 int(10)区别

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

lv11 嵌入式开发 UART实验 11

目录 1 UART帧格式详解 1.1 UART简介 1.2 通信基础 - 并行和串行 1.3 通信基础 - 单工和双工 1.4 通信基础 - 波特率 1.5 UART帧格式 2 Exynos4412下的UART控制器 2.1 引脚功能设置 2.2 阅读芯片手册 3 UART寄存器详解 3.1 引脚寄存器 3.2 串口寄存器概览 3.3 ULC…

95.STL-遍历算法 for_each

算法概述: 算法主要是由头文件 <algorithm> <functional> <numeric> 组成。 <algorithm> 是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric> 体积很小&#xff0c;只包括几个在序列上面…

【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver

之前讲到基于python的自动化测试环境&#xff0c;需要安装Python,再安装Selenium。具体可看【如何学习Python自动化测试】—— 自动化测试环境搭建 但是&#xff0c;想要使用Selenium发送指令模拟人类行为操作浏览器&#xff0c;就需要安装浏览器驱动。不同的浏览器需要安…

用python实现kindle文件转换pdf

上一篇文章讲了下用工具转换相关的格式&#xff1a;https://blog.csdn.net/weixin_42019349/article/details/134654695 今天来分享一个python库实现上述功能&#xff0c;实现文件转换自由 ^_^ 主角就是pypandoc库 # 安装方式 pip install pypandoc# pypandoc主要有三个函数…