计算机网络:数据链路层 —— 数据链路层概述

文章目录

    • 数据链路层
      • 主要功能
    • 基本概念
      • 链路
      • 数据链路

数据链路层

在计算机网络中,链路层(Data Link Layer)是网络协议栈中的一层,负责管理和控制链路的建立、维护和释放,以及处理链路层的数据帧传输和错误控制等功能。各种协议和技术(如以太网PPP 点对点协议等)都在链路层进行操作,以实现可靠的数据传输和链路的有效利用。

主要功能

  • 帧同步:数据链路层负责将来自网络层的数据分割成合适大小的数据帧,并在接收端重新组装这些帧。帧同步确保每个帧的开始和结束可以被正确识别。

  • 差错检测与控制:使用校验和(checksum)或循环冗余校验(CRC, Cyclic Redundancy Check)等技术来检测传输过程中的错误。如果检测到错误,则数据链路层会要求重发受影响的数据帧。

  • 流量控制:避免发送方发送数据的速度超过接收方处理的能力,通常采用滑动窗口(sliding window)等机制来控制数据流。

  • 拥塞控制:当网络中的数据量过大时,数据链路层会采取措施减少数据发送量,防止网络拥塞。

  • 介质访问控制(MAC):确定何时以及如何访问共享介质(如以太网中的电缆)。常用的访问控制方法有 CSMA/CD(载波监听多址/碰撞检测)和 CSMA/CA(载波监听多址/冲突避免)。

  • 地址分配:分配唯一的硬件地址(如MAC地址)给网络上的每个设备,以便正确地寻址和转发数据帧。

  • 链路管理:建立、维护和终止数据链路连接,确保链路的有效性和可靠性。

基本概念

链路

链路(Link)是指用来连接两个节点(例如计算机、路由器等)的物理或逻辑路径。它提供了节点之间的通信通路。即从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。

![[Link Model.png]]

链路的可靠性和带宽是网络连接的重要指标。可靠性指链路传输数据的稳定性和抗干扰能力,带宽则表示链路能够承载的数据传输速率。链路的性能和限制会根据具体的物理介质和网络设备而有所不同。

数据链路

数据链路(Data Link)是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

![[Pasted image 20241009201554.png]]

数据链路负责将原始的比特流转化为有结构的数据帧,并管理数据的传输和错误控制数据链路层的主要作用是提供可靠的点对点数据传输,并检测和纠正数据传输中出现的错误

计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。

帧(Frame)是数据链路层中的基本传输单位。它是由数据链路层定义的,存储了一个或多个数据字段,包括数据和控制信息。即,数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。每个帧通常包含了帧头(Frame Header)和帧尾(Frame Trailer)等控制字段,用于标识帧的开始和结束,并提供错误检测和纠正的机制。

在数据链路层的传输过程中,发送节点将数据进行分帧,并添加帧头和帧尾,形成完整的帧。接收节点通过接收到的帧进行帧解析,提取出数据和控制信息,并进行错误检测、纠正和确认。

帧在数据链路层的传输中起着重要的作用,它通过将数据划分为较小的块,并添加控制信息,实现了数据链路层的功能,如流量控制、差错检测和处理等。帧的具体结构和字段的定义会根据不同的数据链路协议而有所不同,例如以太网PPP 协议(Point-to-Point Protocol)等。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go发送邮件:在Go语言中实现发邮件的教程?

go发送邮件的教程指南?怎么使用Go语言发送电子邮件? Go语言,作为一种简洁、高效且并发性强的编程语言,自然也提供了丰富的库来支持邮件发送功能。AokSend将详细介绍如何在Go语言中实现发送邮件的功能,帮助你快速掌握这…

服务器数据恢复—硬盘坏扇区导致Linux系统服务器数据丢失的数据恢复案例

服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十个网站,使用一块SATA硬盘。 服务器故障&原因: 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败,于是将服务器上的硬盘拆下检测…

腾讯云SDK地址生成器

音视频终端 SDK(腾讯云视立方)将新版连麦管理方案的多个功能集成至 腾讯云视立方控制台 > 连麦管理,便于用户快捷使用,具体分为快速上手、连麦应用、用量统计和地址生成器四个功能页面。更多连麦功能说明,请参见 新…

查询v$asm_disk等待enq: DD - contention

1.两个节点查询v$asm_disk均卡住,等待enq: DD - contention,阻塞源头为rbal进程,rbal进程未发生阻塞,未在异常等待事件上。 2.阻塞源头RBAL,在CPU上运行。没有在做rebalance磁盘平衡。 3.diag诊断日志中,阻…

springboot 整合 rabbitMQ(2)

springboot 整合 rabbitMQ(1)-CSDN博客 上期说了rabbitMQ的基础用法(普通队列模式) 这期学习一下如何防止消息重复消费和进阶用法(订阅者模式) 目录 重复消费问题 导致 RabbitMQ 重复消费问题的原因&a…

《Windows PE》4.1.4 手工重构导入表

接下来我们做一个稍微复杂一些的实验,实验需要四个程序: HelloWorld.exe:弹出MessageBox窗口(实验1已实现)。 Regedit.exe:添加注册表启动项。 LockTray.exe:锁定任务栏窗口。 UnLockTray.exe&…

pandas的用法

1.简介: pandas是一个开源的python数据分析库提供了快速,灵活和表达力强的数据结构,使数据清洗和分析工作变得更加简单易行。pandas的核心数据结构是DataFrame和Series 2.DataFrame的基本操作: DataFrame是pandas库中的一个二维…

【项目记录】大模型基于llama.cpp在Qemu-riscv64向量扩展指令下的部署

概述 本文在qemu-riscv64平台上,利用向量扩展指令加速运行基于llama.cpp构建的大模型。 参考博客链接: Accelerating llama.cpp with RISC-V Vector Extension 基于RVV的llama.cpp在Banana Pi F3 RISCV开发板上的演示 llama.cpp工程 Llama.cpp是一个基…

AI教父荣获2024诺贝尔物理学奖:杰弗里·辛顿和他的深度学习之路!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

Chrome浏览器调用ActiveX控件--allWebOffice控件功能介绍

allWebOffice控件概述 allWebOffice控件能够实现在浏览器窗口中在线操作微软Office及WPS办公文档的应用(阅读、编辑、保存等),支持编辑文档时保留修改痕迹,支持书签位置内容动态填充,支持公文套红,支持文档…

springMVC添加webapp

项目结构-->模块-->找到想添加的模块下的web 点击号 添加路径 会在.../src/main/目录下自动生成目录

Golang | Leetcode Golang题解之第467题环绕字符串中唯一的子字符串

题目: 题解: func findSubstringInWraproundString(p string) (ans int) {dp : [26]int{}k : 0for i, ch : range p {if i > 0 && (byte(ch)-p[i-1]26)%26 1 { // 字符之差为 1 或 -25k} else {k 1}dp[ch-a] max(dp[ch-a], k)}for _, v :…

【xilinx-versal】【Petalinux】I2C驱动开发问题记录

问题 调试中发现系统起来后无I2C设备。 仔细查找后发现没有配置versal的I2C控制器。 解决方法 打开versal的I2C控制器的配置 起来后I2C设备注册成功

使用idea和vecode创建vue项目并启动(超详细)

一、idea创建vue项目 创建项目之前先下载好插件 新建项目找到vue生成器 写好名称,找到自己需要存放的地址,node解释器安装方式可以看我上一个博客,vueCLI是选择vue的版本,我们可以使用idea自带的vue版本默认是vue3,创…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能

import tensorflow as tf import matplotlib.pyplot as plt # 设置随机种子以获得可重复的结果 tf.random.set_seed(42) # 生成正态分布的数据 # mean0 和 stddev1 表示生成标准正态分布的数据 # shape(1000,) 表示生成1000个数据点 data tf.random.normal(mean0, stddev1, …

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的,方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…

k8s中pod的管理

资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务 所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器&…

NLP: SBERT介绍及sentence-transformers库的使用

1. Sentence-BERT Sentence-BERT(简写SBERT)模型是BERT模型最有趣的变体之一,通过扩展预训练的BERT模型来获得固定长度的句子特征,主要用于句子对分类、计算两个句子之间的相似度任务。 1.1 计算句子特征 SBERT模型同样是将句子标记送入预训练的BERT模型…

Web3 游戏周报(9.22 - 9.28)

回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【9.22-9.28】Web3 游戏行业动态: Axie Infinity 将 Fortune Slips 的冷却时间缩短至 24 小时,从而提高玩家的收入。 Web3 游戏开发商 Darkbright Studios…

【源码+文档+调试讲解】二手物品调剂系统NODEJS

摘 要 二手物品调剂系统是一种在线平台,旨在促进用户之间的二手物品交易。该系统提供了一个方便的界面,让用户能够发布、浏览和搜索二手物品信息。用户可以根据自己的需求和兴趣,筛选出合适的物品,并通过系统与卖家进行联系。系统…