首页 > 其他分享 >数据链路层

数据链路层

时间:2024-01-13 17:37:35浏览次数:34  
标签:传输 信道 PPP 链路 数据 链路层

数据链路层在物理层提供的服务的基础上向网络层提供服务。


数据链路层_链路



1. 使用点对点的信道的数据链路层:

数据链路层的地位:

数据链路层_数据链路层_02

数据链路层信道类型:

  • 点对点

数据链路层_链路_03

  • 广播信道
  • 一对多
  • 必须使用专用的共享信道协议来协调这些主机的数据发送

数据链路层_数据_04

1.1. 数据链路和帧:

1.1.1. 链路

链路(link)----物理链路:

  • 一条点到点的物理路段,中间无任何交换点
  • 一条链路只是一条通路的组成部分

数据链路(date link)----逻辑链路:

  • 协议+链路
  • 实例:适配器(网卡)

1.1.2. 帧--数据链路层协议数据单元:

数据链路层_链路_05

数据链路层_链路_06



1.2. 该层的三个基本问题:

1.2.1. 封装成帧:

是什么?

在一段数据前后分别加上首部和尾部,构成一个帧。


首部和尾部的作用是什么?

一个重要作用是帧定界

数据链路层_链路_07

网络层的 IP 数据报传下来后,数据部分(<=MTU)加上首部和尾部,构成一个帧。

注意:帧包括首部和尾部


MTU 最大传送单元(Maximum Transfer Unit):规定了所能传送的帧的数据部分长度上限。(不是帧的总长)


首部和尾部用什么来表示?

控制字符作为帧定界符

  • 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。
  • 控制字符EOT(End Of Transmission)放在一顿的末尾,表示顿的结束。

数据链路层_数据_08


1.2.2. 透明传输

透明传输的背景:

封装成帧的过程中有可能会出现一个问题:即如果数据部分中含有与 SOH 和 EOT 一样的数据,数据链路层就会错误地“找到帧的边界”,导致帧无法被完整接收。

数据链路层_数据链路层_09

所以要解决的关键问题:如何标识一个帧的开始?

接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界




这时就需要透明传输来解决:

  • 透明传输的含义:无论发送什么样的比特组合的数据

据,这些数据都能够按照原样没有差错地通过这个数据链路层。


  • 如何来实现透明传输:
  • 字节(字符)填充法:插入转义字符 ESC 而在接受端的数据链路层在把数据送往网络层之前删除这些插入的控制字符。

数据链路层_数据链路层_10


1.2.3. 差错检测

为什么要有差错检测?

  • 数据在传输过程中可能会出现比特差错:1->0 0->1

在一段时间内,传输错误的比特占所传输比特总数的比率称为

误码率BER(Bit Error Rate)。


如何差错检测?

循环冗余校验 CRC (一种检错方法,不纠错)

  • 原理:

数据链路层_数据_11

  • 计算:

数据链路层_链路_12

数据链路层_链路_13

在数据后面添加上的亢余码称为帧检验序列FCS(Frame Check

Sequence)。

注意点:循环亢余检验CRC和顿检验序列FCS并不等同。

1.CRC是一种常用的检错方法,而FCS是添加在数据后面的亢余码。

2.FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一

方法。


CRC 练习

https://so.csdn.net/so/search?spm=1000.2115.3001.4501&q=crc%E6%A0%A1%E9%AA%8C%E7%A0%81%E7%BB%83%E4%B9%A0&t=&u=

抽取一道例题:

题:

原始报文为:11001010101,其 CRC 生成多项式为 x^4+x^3+x+1进行 CRC 编码。

CRC 生成多项式可转为二进制 1 1 0 1 1 ---作除数

所以在原始报文后加上 4 个 0 -----作被除数

数据链路层_数据链路层_14

检验:

数据链路层_数据链路层_15

余数为 0,所以传输的数据无误。

若数据在传输过程中出错, 即被除数会改变,这时余数一定不是 0,表示数据在传输过程中发生了出错


注意点:

无差错接受:凡是接收端数据链路层接收的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错。

可靠传输:数据链路层的发送端发送什么,在接受端就收到什么。

比特差错:比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1。

帧丢失:收到[#1]-[#3](丢失[#2])

帧重复:收到[#1]-[#2]-[#2]-[#3](收到两个[#2])

帧失序:收到[#1]-[#3]-[#2](后传输的帧反而先到达)


2. 点对点协议 PPP:

2.1. PPP 协议的特点:

对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议

PPP(Point-to-Point Protocol)。


PPP协议通常用于拨号网络和广域网中的点对点连接

数据链路层_数据_16

数据链路层_链路_17


特点(还需补充):

  • 封装成帧
  • 透明传输
  • 差错检测--有错丢弃
  • 支持多种网络协议-(一条链路上)
  • 支持多种类型链路
  • 检测链路连接状态
  • 具有最大传输单元 MTU-1500byte

PPP协议的组成(还需补充) :

  • 链路控制协议 LCP
  • 网络控制协议 NCP
  • 地址解析协议 ARP(发挥封装成帧的作用):ARP协议用于查找和解析IP地址和MAC地址,它可以将IP地址转换为MAC地址,以及将MAC地址转换为IP地址。



2.2. PPP 协议的帧格式:

我们通常所说的PPP协议的帧,是指使用PPP协议的链路上传输的帧。

数据链路层_数据_18

解读:

  • 首部和尾部分别为 四个字段两个字段
  • 帧的首尾字段都是 F 字段(标志字段,表示一个帧的开始和结尾,即帧定界符
  • 连续两帧只使用一个标志字段。(若连续出现两个标志字段,就可以知道这是个空帧,应丢弃)
  • 地址字段 A:不起作用
  • 控制字段 C:置为 0x 03


2.2.1. PPP 帧 如何实现透明传输

  • 当PPP用在异步传输时,使用字节填充法。
  • 当PPP用在同步传输链路时,采用零比特填充法。
  1. 字节填充:
  • 当信息字段中出现 0x7E 时,将其变成 (0x7D,0x5E) ,如图:
  • 当信息字段中出现 0x7D,将其变成(0x7D,0x5D)

数据链路层_数据链路层_19

  • 若信息字段中出现ASCII的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)。---前插 7D2
  1. 零比特填充:
  • 为什么要零比特填充?

数据链路层_链路_20

  • 如何填充?

在连续五个 1 后填入一个 0。

数据链路层_链路_21

接收端会把连续五个 1 之后的 0 删除

数据链路层_数据_22


2.3. PPP 协议的工作状态:

关系:

物理层--路基

LCP--沙石

NCP--柏油路面

数据链路层_数据_23

3. 适用广播信道的的数据链路层

数据链路层_链路_24

广播信道(Broadcast Channel) 是指在无线通信网络中,所有接收端都可以接收到的信息信道。广播信道的特点是发送端发送的信息可以被网络中的所有接收端接收到,但是接收端不能确定信息的发送者。广播信道在无线通信网络中具有广泛的应用,例如在电视广播、无线电广播、卫星通信等网络中,都使用了广播信道。广播信道可以方便地实现信息的广播和传输,也可以方便地实现信息的共享和分发。广播信道是一种非常常见的无线通信信道,它可以用来描述无线通信网络中的信息传输和接收过程。广播信道可以方便地实现无线通信网络的设计和优化,也可以方便地实现无线通信网络的管理和维护。

3.1. 局域网的数据链路层:

3.1.1. 局域网(Local Area Network)

特点:

数据链路层_链路_25

优点:

数据链路层_数据链路层_26


3.1.2. 局域网拓扑结构:

数据链路层_数据_27

问题:在局域网上使用一对多的广播通信方式(即共享信道的方式)存在这样的问题,若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。因此,为了避免发生冲突,就需要媒体介入技术

3.1.3. 媒体共享技术

为什么要有媒体共享技术?

共享信道要着重考虑的问题就是如何使众多用户协调使用信道,不让冲突发生。

  1. 静态划分信道:


数据链路层_数据链路层_28

  1. 动态媒体接入控制(多点接入):

数据链路层_链路_29

由于静态划分信道的成本太高,因此不适合局域网,目前使用较多的技术主要是随机接入。


3.1.4. 第一个局域网的实例---以太网

  1. DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
  2. IEEE802.3:第一个IEEE的以太网标准。


其中 IEEE802.3 将局域网的数据链路层划分成了两个子层:

逻辑链路控制和媒体接入控制

数据链路层_链路_30


3.1.5. 适配器(网卡):

数据链路层_数据链路层_31

功能:

  • 进行串 、并行转换
  • 数据缓存
  • 在计算机的操作系统安装设备驱动程序。
  • 实现以太网协议

之前说到动态接入控制中的受控接入已经淘汰,我们直接学习随机接入

3.2. CSMA/CD 协议

为什么要有 CSMA/CD 协议?

还是前面的共享信道的问题:为了使众多用户协调使用信道,不让冲突发生。

概念:

CS( Carrier Sense )--载波监听

MA( Multiple Access)--多点接入

CD(collision detection)--碰撞检测

标签:传输,信道,PPP,链路,数据,链路层
From: https://blog.51cto.com/u_16516321/9232610

相关文章

  • 手把手教你MongoDB 数据库连接URL 格式、authSource参数
    快速了解MongoDB官方文档MongoDB是一个文档数据库MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成使用URL连接MongoDB数据库标准URI连接语法:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]......
  • 确保你的数据库安全:如何防止SQL注入攻击
    最近,越来越多的组织和公司受到SQL注入攻击的困扰。这种攻击可以导致数据库中的敏感信息泄露,破坏数据完整性,甚至可能导致整个系统崩溃。如果您是一名数据库管理员或网站管理员,您需要了解如何保护您的数据库免受SQL注入攻击的威胁。在本文中,小德将介绍什么是SQL注入攻击,以及如何预防......
  • Applescript成功实现imessage数据筛选,imessage蓝号检测,无痕检测手机号是否注册imess
    一、imessages数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写苹果MacOs......
  • 智能电网中的安全数据聚合方案
    基于秘密分享实现参考:基于秘密共享和同态加密的隐私数据融合方案-陈信系统模型三层架构:电力供应商(PS)基站(BS)智能电表(SM)第三方聚合器(TPA)可信第三方机构(TA):生成和分发随机数控制中心(CC)敌手模型可信:可信第三方机构(TA)、控制中心(CC)、电力供应商(PS)半诚实:基站(BS)、智能电......
  • 收银软件的这些数据报表可以帮助您制定更有效的营销策略
        这些数据报表可以帮助您更好地了解业务情况和顾客行为,从而制定更有效的营销策略,数据报表是制定有效营销策略的重要工具。通过分析销售数据报表,您可以更好地了解业务情况和顾客行为,从而制定更有效的营销策略。以下是一些利用数据报表制定有效营销策略的方法:锦澄软件小编......
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了
    文编|JavaBuild哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光吧,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦!我们知道Java是面向对象的静态型编程语言,在Java的世界里万物皆对象。但我......
  • 数据驱动未来:公司运营数据分析大屏引领企业变革
    在数字化时代,数据已经成为企业决策的关键。为了更好地洞察市场趋势、优化业务流程、提升运营效率,越来越多的企业开始引入数据分析大屏以分析公司运营状况。这一创新举措不仅改变了传统的管理模式,更引领企业迈向智能化决策的新篇章。 公司运营数据分析大屏是一个集数据整合、分......
  • vba抓取网页数据
    哈喽,哈喽,大家好!大家2024发大财啦!不知道,平时大家爱不爱看电影呢?从今年的贺岁档的拍片来看,今年的电影还挺多,而且国产优秀电影居多,元旦假期期间我也去看了部喜剧片,应该说在2023的年度还能看到一部优秀的国产喜剧片,还是挺开心的。大家看到这里是不是觉得走错频道了?难道我要来讲电影了?不......
  • Winform中使用Fleck实现Websocket服务端并读取SQLite数据库中数据定时循环群发消息
    场景Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中:Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作:Winform中操作Sqlite数据增删改查、程序启动时执......
  • Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中
    场景SpringBoot+Vue整合WebSocket实现前后端消息推送:SpringBoot+Vue整合WebSocket实现前后端消息推送_websocketvue3.0springboot往客户端推送上面实现ws推送数据流程后,需要在windows上使用ws客户端定时记录收到的数据到文件中,这里文件使用SQLite数据库进行存储。Winform中操作S......