哈工大计算网络课程数据链路层详解之:数据链路层服务

news2024/11/15 19:35:52

哈工大计算网络课程数据链路层详解之:数据链路层服务

在介绍完网络层的实现功能和协议之后,接下来我们继续介绍网络层的下一层:数据链路层。 本节首先对数据链路层的功能和所提供的服务进行概述。

如下图示例网络所示,标红色的部分实际上就是一段段的链路。实际上,数据链路层主要的功能就是实现将数据在节点之间的的链路上进行传输。

在这里插入图片描述

因此在数据链路层中,经常会用到以下一些术语:

  • 结点(nodes):主机和路由器

    在数据链路层中,不管是主机还是路由器,都可以把它概括性的称之为一个结点。

  • 链路(links):连接相邻结点的通信信道

    • 有线链路(wired links)
    • 无线链路(wireless links)
    • 局域网(LANs)
  • 链路层封装的数据包/数据分组:帧(frame)

    用来封装网络层的数据报,在链路上进行传输。

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

数据链路层服务

接下来我们来分析,数据链路层能够为高层(网络层)在这一段数据链路的传输上,提供哪些服务。

概括来讲,主要提供的服务主要有以下几种:

  • 组帧(framing)

    • 封装数据报构成数据帧,加首部和尾部。

    • 帧同步

      组帧另一个要实现的功能就是帧同步。作为数据链路层数据帧,在物理层传输时是一系列的比特。那么物理层在接收到一系列的比特流后,如何重新识别出数据帧呢?通常的做法,是在组帧之后,在帧收尾加上一个特殊的帧定界符,可以是一个特殊的字符/字符串。

  • 链路接入(link access)

    • 如果使用的链路是共享介质,则需要解决信道接入(channel access)。所谓共享就是有很多节点都要利用这段链路来传输数据。这个时候要防止不同节点传输数据间的干扰和混淆。
    • 伴随链路接入还有一个很重要的内容是链路寻址。在数据帧首部会有一个"MAC"地址,作为MAC地址其重要意义尤其在于当使用共享链路时,当构造数据帧时,需要这样一个链路层的物理地址来标识一个数据帧的源地址和目的地址。
    • MAC地址IP地址有很大不同,IP地址是网络层地址,MAC地址是链路层地址。
  • 相邻结点间可靠交付(比如借助确认、重传等机制)

    • 在低误码率的有线链路上很少采用(如光纤,某些双绞线等)
    • 无线链路:误码率高,需要可靠交付。
  • 流量控制(flow control)

    • 协调(pacing)相邻的发送结点的发送速率和接收速率。
  • 差错检测(error detection)

    • 作为很多链路层协议,未必会保证可靠传输,但通常都会进行差错检测。
    • 主要是应对信号衰减和噪声引起的差错。
    • 接收端检测到差错:
      • 通知发送端重传或者直接丢弃帧
  • 差错纠正(error correction)

    • 采用特殊的纠错编码,从而在接收端直接纠正比特差错。
  • 全双工和半双工通信控制

    • 全双工:链路两端结点同时双向传输
    • 半双工:链路两端结点交替双向传输

链路层具体实现

作为链路层提供的服务,一方面并不是所有的链路层协议都一定要提供上述提及的所有服务。另外,作为链路层,它的功能在网络中的具体实现,尤其是在主机上的实现,就是网络接口卡来实现的。因此,作为最常见的链路层具体实现,比如以太网网卡、802.11网卡、以太网芯片组等等,这些组件同时实现了链路层和物理层的功能。

因此,作为链路层的数据传输形式如下示例所示:

在这里插入图片描述

主机的网卡把高层(网络层)协议交付的数据报,在本地通过网卡的控制器封装成数据帧,然后通过物理链路把数据帧发送出去。另外一端主机的网卡接收数据帧,经过一系列差错检测等处理确认数据帧,如果没有差错,则把数据帧里封装的高层数据报提取出来,进一步交给上层协议。

  • 发送端:
    • 将数据报封装成帧
    • 增加差错检测比特,实现可靠数据传输和流量控制等
  • 接收端
    • 检测差错,实现可靠数据传输和流量控制等
    • 提取数据报,交付上层协议实体。、

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

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

相关文章

【二分查找】34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置 解题思路 使用二分查找查找到目标元素的索引之后然后向左以及向右寻找目标元素,然后记录下区间位置 然后保存下来 class Solution {public int[] searchRange(int[] nums, int target) {// 使用二分查找 数组有序…

Java使用Stream API对于数据列表经常处理

Java使用Stream API对于数据列表经常处理 先提供一些简单到复杂的常见例子&#xff0c;您可以根据这些例子进行进一步的开发和学习&#xff1a; 数据过滤筛选操作 查询表中所有数据&#xff1a; List<User> users userDao.getAllUsers();根据条件查询单个结果&#…

别测了,背锅上线!

三百六十行&#xff0c;行行都背锅。 用例千万条&#xff0c;质量第一条。 流程不规范&#xff0c;亲人两行泪&#xff01; 每次上线后多多少少都有些问题&#xff0c;每次的项目总结会总会生产一口新锅&#xff0c;等着你我他来背&#xff0c;这不又要上线了&#xff0c;这次…

华为OD机试真题 Java 实现【快递投放问题】【2023 B卷 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 一、题目描述 有N个快递站点用字符串标识&#xff0c;某些站点之间有道路连接。每个站点有一些包裹要运输&#xff0c;每个站点间的包裹不重复&#xff0c;路上有检查站会导致部分货物无…

基于kubernetes组件初步部署k8s

基于k8s组件初步部署k8s kubernetes组件kubernetes简单化部署安装Master操作环境检查安装配置Containerd安装Containerd配置containerd启动containerd 配置Circtl安装配置Kubeadm安装Kubeadmkubeadm配置启动kubelet服务 拉取镜像初始化集群操作命令行 安装网络插件 Node操作Nod…

Dubbo分布式服务框架,springboot+dubbo+zookeeper

一Dubbo的简易介绍 1.Dubbo是什么&#xff1f; Dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。 简单的说&#xff0c;dubbo就是个服务框架&#xff0c;如果没有分布式的需求&#xff0c;其实是不需…

N天爆肝数据库——MySQL(1)

数据库概念理解 数据库 DB 存储数据的仓库 数据库管理系统 DBMS 操纵和管理数据库的大型软件 SQL 操作关系型数据库的编程语言&#xff0c;定义了用一套操作关系型数据库同意标准 学习 SQL 的作用 SQL 是一门 ANSI 的标准计算机语言&#xff0c;用来访问和操作数据库系统。S…

在北京买房究竟需要多少钱?

无论是来北京前&#xff0c;还是来北京后&#xff0c;每每提起北京的房价&#xff0c;大家都会说出三个字「买不起」。 确实&#xff0c;北京房价非常贵&#xff0c;但是究竟「贵」到什么程度&#xff0c;我们却无法说出一个数。 几年前&#xff0c;我研三还没毕业时&#xf…

Linux高频常用指令汇总

目录 认识 Linux 目录结构 绝对路径&#xff1a;以根目录开头的, 称为绝对路径 相对路径&#xff1a;不是根目录开头的,称为相对路径 ls pwd cd mkdir touch cat echo rm cp mv vim编辑器 1、进入文件 2、进行编辑模式 3、保存退出 重要的几个热键[Tab],[ct…

SpringBoot中间件——封装限流器

背景 通常能知道一个系统服务在正产增速下流量大小&#xff0c;扩容与压测也是基于此。若有突发或者恶意攻击访问&#xff0c;都要将流量拦截在外。这部分功能不属于业务侧&#xff0c;它是通用非业务的共性需求&#xff0c;所以我们将共性抽取为限流中间件。 方案设计 图解&…

基于微信小程序的高校食堂点餐系统设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于微信小程序的高校食堂点餐系统设计与实现&#xff08;Javaspring bootMySQL微信小程序&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java…

指针-->笔试题(必备)

前言&#xff1a; 目录 前言&#xff1a; 本章介绍的指针笔试题是有点难度的&#xff0c;得花费一点时间来理解&#xff0c;并且我们在做题目的时候需要画图来理解。 文章目录 笔试题1 笔试题2 笔试题3 笔试题4 笔试题5 笔试题6 笔试题7 笔试题8 笔试题1 int main() {int a[5…

uniapp下载和上传照片

利用uniapp开发的时候&#xff0c;需要下载和上传照片&#xff0c;在H5和微信小程序中的写法不一样。 H5环境下 浏览器中下载就是模拟超链接下载。也不需要获取什么权限&#xff0c;比较简单。 // #ifdef H5 this.isLoading true; let oA document.createElement("a&…

[软件工具]姓氏谐音梗随机生成工具使用教程

首先我们打开软件 输入姓氏和生成数即可开始生成&#xff0c;注意生成数可以随便填&#xff0c;软件会自动按最大数生成&#xff0c;比如你设置生成数位10000则可能只会生成500个&#xff0c;因为软件内置只有这么多。单次生成不重复&#xff0c;生成效果可以访问视频教程&…

MySQL多表查询练习

多表连接查询 use mydb3; -- 创建部门表 create table if not exists dept3( deptno varchar(20) primary key , -- 部门号 name varchar(20) -- 部门名字 );-- 创建员工表 create table if not exists emp3( eid varchar(20) primary key , -- 员工编号 ename varchar(20), --…

数仓建设中最常用模型--Kimball维度建模详解

数仓建模首推书籍《数据仓库工具箱&#xff1a;维度建模权威指南》&#xff0c;本篇文章参考此书而作。文章首发公众号&#xff1a;五分钟学大数据&#xff0c;公众号后台发送“维度建模”即可获取此书籍第三版电子书 先来介绍下此书&#xff0c;此书是基于作者 60 多年的实际业…

leetcode:174. 地下城游戏:动态规划法

174. 地下城游戏 - 力扣&#xff08;Leetcode&#xff09; 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初…

史上最全Windows下VScode配置大全

文章目录 1、安装Vscode下载安装配置C和中文 2、安装MinGW-w643、检查是否配置成功 1、安装Vscode 下载安装 首先先下载VSCODE&#xff1a; 链接: VScode下载 下载好安装包以后&#xff0c;直接在自己指定目录安装&#xff1a; 配置C和中文 打开VScode的左下角位置&#…

Proteus 8.13安装教程

不涉及版权问题。 1、双击“Proteus 8.13 SP0 Pro.exe”开始安装 2、按照安装向导进行操作&#xff0c;等待安装成功 1&#xff09;选择“Browse"自定义安装路径&#xff0c;再点击&#xff1a;Next 2&#xff09;点击&#xff1a;Next 3&#xff09;等待一段时间&#xf…

C#学习之路-判断

判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 下面是大多数编程语言中典型的判断结构的一般形式&#xff1a; 判断语句 语句描述if …