首页 > 其他分享 >计算机网络(7) 数据链路层

计算机网络(7) 数据链路层

时间:2024-11-09 16:45:28浏览次数:3  
标签:ARQ 计算机网络 传输 MAC 帧封装 数据 链路层

数据链路层的内容不学不知道,一学真的是吓一跳哦,内容真的挺多的,但是大家不要害怕,总会学完的。

还有由于数据链路层的内容太多,一篇肯定是讲不完的所以我决定把它分为好几个部分进行学习与讲解。大家可以关注以后文章的发布。

数据链路层(Data Link Layer)

数据链路层是计算机网络体系结构中的第二层,它位于物理层之上,网络层之下。数据链路层的主要任务是确保在物理层提供的可靠传输基础上,能够有效地进行数据帧的可靠传输。它负责在局部网络中节点之间传输数据包(帧),并处理传输过程中可能出现的错误和流量控制。

数据链路层的主要功能

  1. 帧的封装与解封装: 数据链路层的最基本功能是将网络层传递下来的数据包(Packet)封装成帧(Frame),然后在物理层上进行传输。在接收到数据时,数据链路层会将物理层传输的比特流解封装成数据包并交给上层网络层处理。

  2. 错误检测与纠正: 数据链路层负责检测在物理层传输过程中可能出现的错误,如位错误、丢失或重复的帧。最常见的错误检测方法是循环冗余检查(CRC)。如果数据链路层发现错误,它可以请求重发(ARQ协议),以确保数据的正确性。

  3. 流量控制: 数据链路层需要管理网络节点之间的传输速度,防止因接收端处理能力不足导致丢失数据帧。流量控制通过一些机制(如窗口控制)来调整数据发送的速率。

  4. 介质访问控制(MAC): 数据链路层管理对共享传输介质的访问。在共享介质网络中(如以太网、无线网络),多个设备需要争用网络带宽,数据链路层采用介质访问控制协议来避免冲突并管理数据传输。

  5. 物理地址(MAC地址)管理: 数据链路层使用物理地址(通常是MAC地址)来唯一标识网络中的设备。MAC地址是一种硬件地址,它由网络设备的制造商赋予,并用于确保帧能够被正确地发送到目标设备。

数据链路层的子层

数据链路层通常被分为两个子层:

  1. 逻辑链路控制子层(LLC,Logical Link Control):
    • LLC子层负责在数据链路层与网络层之间建立逻辑连接。它处理与网络层的交互,提供帧的封装和差错控制。LLC子层使得数据链路层能够支持多种网络协议。
  2. 介质访问控制子层(MAC,Medium Access Control):
    • MAC子层负责控制对物理介质的访问。它通过协议来决定如何在共享的通信媒介上调度数据的发送。MAC子层使用硬件地址(MAC地址)来进行数据帧的目标定位,并解决冲突。
    • 典型的MAC协议有:CSMA/CD(以太网)、CSMA/CA(Wi-Fi)等。

数据链路层的常见协议

  1. 以太网(Ethernet):

    • 以太网是广泛使用的局域网协议,基于CSMA/CD(载波侦听多路访问/碰撞检测)协议,它在数据链路层提供帧的封装、错误检测和介质访问控制。
  2. 无线局域网(Wi-Fi):

    • Wi-Fi协议基于IEEE 802.11标准,定义了在无线环境中如何通过MAC协议进行数据的传输与访问。
  3. 点对点协议(PPP,Point-to-Point Protocol):

    • PPP是一种常用于点对点连接的协议,通常用于拨号连接、DSL和VPN等。PPP协议提供了数据封装、错误检测、流量控制等功能。
  4. 帧中继(Frame Relay):

    • 帧中继是一种广域网协议,使用虚拟电路传输数据帧,通常用于传输速率较高的数字数据。帧中继提供错误检测、流量控制和数据链路的管理。
  5. ATM(异步传输模式):

    • ATM是一种面向连接的技术,用于广域网和局域网。它将数据分成固定长度的53字节的单元(称为单元,或Cell),提供错误检测和流量控制。

数据链路层的错误检测与纠正

  1. 循环冗余校验(CRC,Cyclic Redundancy Check):

    • 数据链路层通过CRC来检测数据帧在传输过程中是否出现了错误。发送端会根据数据内容计算一个CRC值,并将其附加到数据帧中。接收端使用相同的算法检查数据的完整性,若CRC值不匹配,表示数据帧在传输中出错。
  2. 自动重传请求(ARQ,Automatic Repeat reQuest):

    • 数据链路层使用ARQ协议来请求丢失或损坏的数据帧重发。常见的ARQ协议有停等ARQ(Stop-and-Wait ARQ)、连续ARQ(Go-Back-N ARQ)、选择重传ARQ(Selective Repeat ARQ)等。

数据链路层与物理层的区别

  • 物理层: 主要负责比特的传输,将数据通过物理媒介从一个设备传输到另一个设备,它不涉及数据的内容和结构。
  • 数据链路层: 负责对比特进行封装形成数据帧,提供错误检测、流量控制等功能,确保数据能够可靠地在物理媒介上传输。

下面讲解帧封装的知识:

帧封装(Frame Encapsulation)

帧封装是数据链路层的核心功能之一,它指的是将来自上层(通常是网络层)的数据包附加上数据链路层的控制信息,形成一个完整的数据帧,然后通过物理介质传输到目标设备。帧封装的主要目的是确保数据在传输过程中得到可靠的传输和正确的识别。

帧封装的过程

帧封装的过程通常包括以下几个步骤:

  1. 添加帧头(Header):在网络层的数据包之前附加一个帧头。帧头通常包含目标地址、源地址、类型信息、帧序号、流量控制和错误检测等信息。

  2. 封装数据:帧头之后是上层传输的数据包,这是数据帧的主要内容部分,也就是数据载荷(payload)。

  3. 添加帧尾(Trailer):在数据部分之后附加帧尾。帧尾通常包含循环冗余校验(CRC)或其他形式的错误检测码,用于检测帧在传输过程中是否发生错误。

  4. 帧边界标识(Frame Boundary Identification): 通过在帧的其实和结束位置使用特定的标志位,可以明确区分帧之间的界限,确保在传输过程中数据不会混淆。

帧封装的结构

帧的结构因协议而异,但通常包含以下几个常见的字段:

  • 帧头(Header):包含控制信息,如目标MAC地址、源MAC地址、协议类型等。
  • 数据(Data):包含要传输的实际数据,即来自网络层的数据包。
  • 帧尾(Trailer):包含错误检测码(例如CRC),用于检测帧在传输过程中的完整性。

帧封装的作用

  1. 确保数据完整性:通过添加错误检测码,帧封装可以帮助接收方检测并定位传输过程中是否有数据损坏或丢失。

  2. 地址识别和定位:帧头中包含源地址和目标地址,确保数据帧能够到达正确的目标设备。

  3. 分段和组装:封装成帧的数据可以在发送端分段处理,接收端则可以按照帧序号将数据重新组合成完整的信息。

  4. 流量控制和顺序控制:通过帧头中的控制信息,可以有效地实现对数据流的控制,并保证数据按顺序到达。

帧封装的典型例子

  1. 以太网帧

    • 以太网帧是数据链路层的典型帧格式之一。它由以太网协议(如IEEE 802.3)定义,帧头包括目标MAC地址、源MAC地址、帧类型等字段,帧尾通常包含CRC校验码。
  2. PPP帧

    • 在点对点协议(PPP)中,帧封装结构为标志字段、地址字段、控制字段、协议字段、数据和帧校验序列。PPP广泛用于通过电话线或宽带连接等点对点链路传输数据。

标签:ARQ,计算机网络,传输,MAC,帧封装,数据,链路层
From: https://blog.csdn.net/weixin_73012949/article/details/143647258

相关文章

  • Python数据分析案例64——杭帮菜美食探索数据分析可视化
    案例背景杭州是真没啥美食呀.....但是总是还是有好吃的店家,于是就发挥专业长处,进行一下分析,看看杭帮菜的一些特点。。例如看看品种分布啊,类型分布啊,行政区的分布啊,店铺评分的一些分布啊,一些推荐菜的特点呀,平均消费价格呀等等。数据介绍本次数据来自美团爬虫所有杭州地区......
  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • 计算机网络 - 体系结构
    定义和分层图先说定义:计算机网络的体系结构就是值计算机网络的各层及其协议的集合分层图示如下:七层协议具体是指国际标准化组织ISO定义的标准化的计算机网络模型OSI/RM(OpenSystemInterconnectionReferenceModel,开放系统互联基本参考模型)然而由于其设计复杂,实际上目前......
  • 第三章 数据与C
    在本章中主要学习的是基本数据类型的概念,类型的大小,调用和打印。在学习基本数据类型之前,要先了解常量与变量。常量就是预先规定,不会再此发生变化的量,变量则与之相反,会发生变化。概念基本数据类型可以分为两大类:整型和浮点型。储存单元首先,要认识一下计算机的储存单元最......
  • 如何进行数据库连接池的参数优化?
    以下是进行数据库连接池参数优化的一些方法:一、确定合适的初始连接数:考虑因素:数据库的规模、应用程序的启动需求以及预期的初始负载。如果数据库规模较小且应用程序启动时对数据库的即时访问需求不高,可以将初始连接数设置得较少,比如3到5个;如果数据库较大或应用启动后很快......
  • 计算机网络:网络安全(网络安全概述)_网络安全概论
    一、网络安全的概念与特征由于计算机网络多样的连接形式、不均匀的终端分布,以及网络的开放性和互联性等特征,使通过互联网传输的数据较易受到监听、截获和攻击。伴随着虚拟化、大数据和云计算技术等各种网络新技术广泛而深入的应用,如今网络安全问题已经和几乎所有传统的安全问......
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5
    《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.......
  • 数据结构:链表oj题
    目录题1.删除链表中的某个元素val题目表述:思路1:在源链表中进行删除更改思路2:创建一个新链表题2:反转一个链表问题描述:思路1:在源链表内部进行操作思路2:创建一个新链表题3:寻找链表中间位置题目描述:思路1:思路2:快慢指针题1.删除链表中的某个元素val题目表述:......
  • 1.Kotlin-基本数据类型及运算
    一.Kotlin基本数据类型基本数据类型包括:Byte,Short,Int,Long,Float,Double数据类型推断:Kotlin中的数据类型全部以val进行声明,编译器会自动推断数据类型当然也可以在变量名后加:数据类型的形式,显示指明数据类型valbyteNumber:Byte=127;//Byte1.整数类型类......
  • linux搭建大数据环境
    前期准备工作友情提醒提前安装好vmware软件,准备好连接虚拟机的客户端一.基础环境1.配置ip地址修改ip配置文件[root@node1/]#vim/etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"#1.把dhcp修改成staticBOOTP......