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

文章目录

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

数据链路层

在计算机网络中,链路层(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.mfbz.cn/a/888982.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux入门3——vim的简单使用

1.vim 1.1 vim的模式 vim有三种主要模式: ①命令模式:使用vim刚打开进入的模式就是命令模式; ②插入模式:只有在插入模式下才可以做文字输入,按[Esc]键可退回命令模式; ③末行模式:文件保存或退…

大数据毕业设计选题推荐-王者荣耀战队数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

Android SELinux——安全策略(三)

SELinux 通过严格的访问控制机制增强了 Linux 系统的安全性。它通过标签和安全策略来控制进程和文件的访问权限,从而保护系统免受未经授权的访问和攻击。 一、策略介绍 1、主要组件 安全标签(Security Labels):每个文件、目录、…

vite学习教程02、vite+vue2配置环境变量

文章目录 前言1、安装依赖2、配置环境变量3、应用环境变量4、运行和构建项目资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1…

Python的pandas库基本操作(数据分析)

一、安装,导入 1、安装 使用包管理器安装: pip3 install pandas 2、导入 import pandas as pd as是为了方便引用起的别名 二、DateFrame 在Pandas库中,DataFrame 是一种非常重要的数据结构,它提供了一种灵活的方式来存储和…

typora笔记导出word格式:

Pandoc:各系统下载github链接 https://github.com/jgm/pandoc/releases/latest windows安装包 链接:https://pan.baidu.com/s/17AZNIMImbzFtWJAcAfAB0g?pwd55l2 提取码:55l2 先解压压缩包 点击 设置Pandoc路径,然后选择pa…

【Sceneform-EQR】(手势优化)通过手势事件实现在AR/VR等三维场景中的控制模型旋转、平移与缩放

在上一篇文档中,我们实现了通过手势控制模型节点的旋转、缩放和平移。现在本文将介绍如何优化上一篇做的手势控制器,从而实现更好的跟手效果。 相关链接:【Sceneform-EQR】(手势控制器实现)通过手势事件实现在AR/VR等…

FiBiNET模型实现推荐算法

1. 项目简介 A031-FiBiNET模型项目是一个基于深度学习的推荐系统算法实现,旨在提升推荐系统的性能和精度。该项目的背景源于当今互联网平台中,推荐算法在电商、社交、内容分发等领域的广泛应用。推荐系统通过分析用户的历史行为和兴趣偏好,预…

Linux平台Kafka高可用集群部署全攻略

🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Kafka简介 2、Kafka核心优势 二、环境准备 1…

【学习笔记】SquareLine Studio安装教程(LVGL官方工具)

一.简介与导航: SquareLine Studio是由LVGL官方开发的一款UI设计工具,采用图形化进行界面UI设计,轻易上手。 SquareLine Studio官方网址:https://squareline.io/SquareLine Studio官方文档:https://docs.squareline.io…

上传本地项目到GitHub远程仓库(极简洁操作版)

第一步:在GitHub创建一个空的仓库 第二步:将仓库克隆(下载)到本地 第三步:将你要上传的所有文件放到这个克隆的仓库文件夹中 第四步:通过git add .将待上传文件添加到暂存区 此时,可以通过git …

css3-----2D转换、动画

2D 转换(transform) 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 移动:translate旋转:rotate缩放:scale 二维坐标系 2D 转换之移动 trans…

SpringBoot项目打成jar包,在其他项目中引用

1、首先新建一个SpringBoot工程 记得要将Gradle换成Maven 2、新建一个要引用的方法 3、打包的时候要注意: ① 不能使用springboot项目自带的打包插件进行打包,下面是自带的: ②要换成传统项目的maven打包,如下图: 依…

《网络安全自学教程》- Nmap使用及扫描原理分析

《网络安全自学教程》 Nmap(Network Mapper)是一款免费的开源网络扫描器,向目标主机发送特定的数据包,根据返回的流量特征,分析主机信息。主要功能有:「端口扫描」、「主机探测」、「服务识别」和「系统识别…

(接口测试)接口测试理论 http理论 接口测试流程 接口文档解析

一.接口测试理论 1.接口和接口测试 服务器为客户端开了一个验证接口(接口本质:函数方法)客户端向服务器传送的消息可以相当于函数的参数,接口是用来让客户端传递数据的 接口:相当于开了一个通道 当服务器要给客户端响…

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信(IPC)。同一个进程是在同一块地址空间中的,在不同的函数与文件以变量进程传递,也可通过形参传递。2个不同进程处于不同的地址空间,要互相通信有难度(内存隔离的原…

Awaken Likho恶意组织利用高级网络工具对俄罗斯政府发起“猛攻”

近日,俄罗斯政府机构和工业实体遭遇了一场名为“ Awaken Likho ”的网络活动攻击活动。 卡巴斯基表示,攻击者现在更倾向于使用合法MeshCentral平台的代理,而不是他们之前用来获得系统远程访问权限的UltraVNC模块。这家俄罗斯网络安全公司详细…

Golang | Leetcode Golang题解之第457题环形数组是否存在循环

题目: 题解: func circularArrayLoop(nums []int) bool {n : len(nums)next : func(cur int) int {return ((curnums[cur])%n n) % n // 保证返回值在 [0,n) 中}for i, num : range nums {if num 0 {continue}slow, fast : i, next(i)// 判断非零且方…

docker简述

1.安装dockers,配置docker软件仓库 安装,可能需要开代理,这里我提前使用了下好的包安装 启动docker systemctl enable --now docker查看是否安装成功 2.简单命令 拉取镜像,也可以提前下载使用以下命令上传 docker load -i imag…