一、简介

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

二、数据链路层基本概念

  • 节点:主机、路由器
  • 链路:网络中连个节点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
  • 数据链路:网络中两个节点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻节点传送数据报
  • 帧:链路层的协议数据单元,封装网络层数据报。

三、功能

1. 为网络层提供服务

无确认无连接服务、有确认无连接服务、有确认面向连接服务。(有连接一定有确认)

2. 透明传输

如果是文本文件,可以用SOH/EOT充作帧开始、结束控制符,但数据中可能也出现SOH/EOT,这时需要加转义字符ESC,如ESC-SOH,ESC-EOT,ESC-ESC,以达到透明传输。这里的透明指的是,数据链路层对传输的数据透明,传输的数据实际上感受不到数据链路层所做的操作。

当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

3. 链路管理

连接的建立、维持、释放(用于面向连接的服务)。

4. 组帧

组装成帧就是在一段数据的前后部添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部包含许多的控制信息,他们的一个重要作用是帧定界(确定帧的界限)。

组帧的四种方法:字符计数法、字符(节)填充法、零比特填充法、违规编码法。

5. 差错控制(帧错/位错)

可以简单的理解为差错都是传输过程中由噪声引起的。

  • 全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。

    解决办法:提高信造比来减少或避免干扰。(对传感器下手)
  • 局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因

    解决办法:通常利用编码技术来解决。

差错分为位错/比特错和帧错

  • 位错:比特位出错,由1变为0,0变1。
  • 帧错:丢失、重复、失序。

差错控制分为检测编码和纠错编码

  • 监错编码:奇偶校验、CRC循环冗余码
  • 纠错编码:海明码

注意:数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。

6. 流量控制

较高的发送速度和较低的接收能力不匹配,会造成传输出差,因此流量控制也是数据链路层的一项主要工作。

数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

数据链路层流量控制手段:接收方收不下就不回复确认。

传输层流量控制手段:接收端给发送端发送一个窗口公告

流量控制的方法:

  • 停止-等待协议
  • 滑动窗口协议:后退N帧协议(GBN)、选择重传协议(SR)

四、传输数据使用的两种链路

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

两个相邻节点通过一个链路相邻,没有第三者。

点对点信道主要用于用户同ISP(验证身份)通信时。早期使用高级数据链路控制HDLC,已经淘汰,现在用的是PPP协议,即point-to-point protocol,点对点通信协议。

PPP协议

是一种支持在点对点链路上传输多种上层协议的数据包。能够实现单点通信。PPP是数据链路层协议,最早是替代SLIP协议用来在同步链路上封装IP数据报的,后来也可以承载诸如DECnet等协议的分组。

PPP帧的格式如下:



注意:其中,F,A,C都是固定的,A是地址,C字段实际上无用。

PPP协议的链接过程:

2. 广播信道的数据链路层

所有主机共享通行介质。

应用:早期的总线以太网、无线局域网,常用于局域网。

典型拓扑结构:总线型、星型(逻辑总线)

  1. 局域网

    简称LAN,是指在某一区域内有多台计算机互联形成的计算机组,使用广播信道。

    特点:
  • 特点1:覆盖的地理范围小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
  • 特点2:使用专用铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)。
  • 特点3:通信延迟时间短,误码效率低,可靠性较高。
  • 特点4:各站为平等关系,共享传输信道。
  • 特点5:多采用分布式控制和广播通信,能进行广播和组播。

    注意:决定局域网的主要因素为:网络拓扑、传输介质与介质访问控制方法。
  1. 以太网

    以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。

    特点:
  • 以太网采用的是尽最大努力的交付,不可靠的交付。
  • 以太网采用使用CSMA/CD协议。
  • 以太网采用的是曼彻斯特编码,基带信号传输。这种编码中间跃变,由高->低为1,反之为0。

    以太网MAC帧:

五、介质访问控制

介质访问控制的内容就是采取一定的措施,使得两对节点之间的通信不会发生相互干扰的情况。

介质访问控制分为:静态划分通道和动态分配信道

1. 静态划分信道:信道划分介质访问控制

  • 频分多路复用(FDM)

    频分复用的基本思想是:要传送的信号带宽是有限的,而线路可使用的带宽则远远大于要传送的信号带宽,通过对多路信号采用不同频率进行调制的方法,使调制后的各路信号在频率位置上错开,以达到多路信号同时在一个信道内传输的目的。因此,频分复用的各路信号是在时间上重叠而在频谱上不重叠的信号。
  • 时分多路复用(TDM)

    时分复用TDM是采用同一物理连接的不同时段来传输不同的信号,也能达到多路传输的目的。时分多路复用以时间作为信号分割的参量,故必须使各路信号在时间轴上互不重叠。
  • 波分多路复用(WMD)

    波分复用WDM是将两种或多种不同波长的光载波信号(携带各种信息)在发送端经复用器(亦称合波器,Multiplexer)汇合在一起,并耦合到光线路的同一根光纤中进行传输的技术;在接收端,经解复用器(亦称分波器或称去复用器,Demultiplexer)将各种波长的光载波分离,然后由光接收机作进一步处理以恢复原信号。这种在同一根光纤中同时传输两个或众多不同波长光信号的技术,称为波分复用。
  • 码分多路复用(CDM)

    码分复用是用一组包含互相正交的码字的码组携带多路信号。采用同一波长的扩频序列,频谱资源利用率高,与WDM结合,可以大大增加系统容量。有码分多址,频分多址(FDMA)、时分多址(TDMA)和同步码分多址(SCDMA)等相关技术。

2. 动态分配信道

  • 轮询访问介质访问控制:令牌传递协议
  • 随机访问介质访问控制:ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议

3. ALOHA协议

  • 纯ALOHA协议

  • 时隙ALOHA协议

4.CSMA协议(载波监听多路访问协议)

  • 坚持CSMA

    坚持指的是对于监听信道忙之后的坚持

    协议思想: 如果一个主机要发送消息,那么它先监听信道,若空闲则直接传输,不必等待,忙则一直监听,直到空闲马上传输,如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。

    优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。

    缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。
  • 非坚持CSMA

    非坚持:指对于监听信道忙之后就不继续监听

    协议思想:忙则等待一个随机的时间在进行监听

    优点:采用随机的重发延迟时间可以减少冲突发生的可能性。

    缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。
  • p-坚持CSMA

    p-坚持:指的是对于监听信道空闲的的处理

    协议思想:空闲则以P概率直接传输,不必等待,概率1-P等待到下一个时间槽再传输,忙则等待一个随机的时间之后再监听信道。

    优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。

    缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。

6. CSMA/CD协议(载波多点监听/碰撞检测)

他解决的问题是如何在总线局域网上进行“有效”通信。

CSMA/CD的要点如下:

  • 多点接入

    CSMA/CD协议适用于广播信道,允许总线上多个站点接入。协议的核心是载波监听和碰撞检测。

  • 载波监听

    由于总线型广播信道上同一时刻只允许一个站点发送数据,故站点需要时时检测信道上是否有其他站点发送数据,这就是载波监听。检测信道通过才能获得发送权。

    载波监听发生在:一个站点发送数据之前,以及发送数据的过程中。一旦发现有其他站点发送数据,则立即停止发送。

    顺便指出,信道上发送的是基带信号,并没有载波,“载波”一词为借用。

  • 碰撞检测(冲突检测)

    碰撞检测就是“边发送边监听”。适配器边发送数据边检测信道上信号变化情况,看是否发生了 碰撞。若有两个计算机同时发送数据,则信道上的信号电压变化幅度会超过一定的门限值,则计算机(适配器)能够发现这种变化,后续作出进一步响应。

7. CSMA/CA协议(载波监听多点接入/碰撞避免)

CSMA/CA:超级有礼貌,不仅监听信道,看有没有其他人在说话,而且说话之前还等一下。



CSMA/CA协议的三个手段避免冲突:

  • 预约信道
  • ACK帧
  • RTS/CTS帧(可选)(主要是为了解决隐蔽站问题)

CSMA/CD 与CSMA/CA比较

相同点:

CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入。

不同点:

  • 传输介质不同: CSMA/CD 用于总线式以太网[有线],而CSMA/CA用于无线局域网[无线]。

  • 载波检测方式不同:因传输介质不同,CSMA/CD 与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用 能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。

  • CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。

参考文献

数据链路层:https://www.cnblogs.com/Uni-Hoang/p/13910549.html

【计算机网络】数据链路层总结:https://www.cnblogs.com/duye/p/9903160.html

OSI网络分层之数据链路层介绍:https://baijiahao.baidu.com/s?id=1724450697771358460&wfr=spider&for=pc

PPP协议详解:https://blog.csdn.net/pengjian444/article/details/102020881

数据链路层的MAC和LLC子层的区别:https://www.bilibili.com/read/cv10810893/

CSMA协议简介:https://blog.csdn.net/weixin_42498906/article/details/109601372

CSMA/CA协议:https://www.jianshu.com/p/852ad221cf44

OSI模型之数据链路层的更多相关文章

  1. CANopen学习——OSI模型复习

    CanOpen协议实现了物理层和数据链路层,OSI模型是完整的7层. OSI模型网络七层包括物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 物理层:提供信息传输的物理连接通道,包括使用的 ...

  2. OSI模型七层模型结构

    OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model ...

  3. 网络基础---OSI 模型与TCP/IP

    一.网络的演进: 1.简单的联接:1960's ------------ 1970's    Host Network 六十至七十年代,网络的概念主要是主机架构的低速串行联接,提供应用程序执行.远程打 ...

  4. 计算机协议、标准以及OSI模型的简单介绍

    由概念启发学习,引导学习.本篇文章中包含了一些最基本的概念和底层知识.虽然零碎,但是这是基础. 一.协议和标准 协议指的是一组控制数据通信的规则.协议有三要素:语法(syntax),语义(semant ...

  5. 计算机网络原理和OSI模型与TCP模型

    计算机网络原理和OSI模型与TCP模型 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信 ...

  6. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  7. python(十二):网络编程之ISO/OSI模型

    互联网(Internet)是依据操作系统,在计算机硬件的基础上建立起的通讯机制.它依赖于TCP/IP协议栈. 一.ISO/OSI模型 1.ISO七层模型与OSI五层模型 它们将计算机抽象成了具有层级关 ...

  8. 【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别

    挟天子以令诸侯 博客园 首页 新随笔 联系 订阅 管理 随笔 - 21  文章 - 0  评论 - 9 TCP/IP四层模型与OSI参考模型   TCP/IP四层模型: 1.链路层(数据链路层/网络接 ...

  9. 【计算机网络】OSI模型,TCPIP模型

    今天给大家分享的是两种模型的主要区别,夜视比较容易混淆的地方.我尽力用图形的方式来说问题,这样比较好理解~ (PS:画图真的不会,正在认真学,希望多多包含:)) 一.二者的模型对比 (这个图有点丑.. ...

  10. HUB、Switch、Router在OSI模型层次信息

    序 (HUB)集线器工作在局域网(LAN)环境,像网卡一样,应用于OSI参考模型第一层,因此又被称为物理层设备. Switch交换机工作在OSI第2层数据链路层 Router路由器工作在OSI第3层网 ...

随机推荐

  1. 记录--Three.js入门教程——教不会算我输

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在javascript中使用Three.js设计并且实现3D场景是一个很有意思的事情,因为在浏览器中就能够渲染出3D场景,非常简单和轻便. ...

  2. GitHub WebHook 使用教程

    本文收录于 Github.com/niumoo/JavaNotes,Java 系列文档,数据结构与算法! 本文收录于网站:https://www.wdbyte.com/,我的公众号:程序猿阿朗 什么是 ...

  3. Java 本月、上月第一天和最后一天

    //本月 @Test public void test01() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd&qu ...

  4. KingbaseES例程_普通表在线转分区表(基于规则)

    KingbaseES例程_普通表在线转分区表 概述 普通表转分区表,使用视图的替换式规则,以路由方式,实现在线转移数据. 数据准备 /*普通大表*/ create table tab_single a ...

  5. wordpress自建博客站,为文章添加显示浏览次数功能

    wordpress自建博客站,为文章添加显示浏览次数功能 笔者使用的主题是 GeneratePress 版本:3.1.3 1.后台文章管理列表添加浏览次数列 ​ 效果如图: ​ 实现: 编辑funct ...

  6. 大数据hadoop Linux 相关常用命令行操作

    bin/zkServer.sh start bin/zkServer.sh stop 启动Hadoop 1 hadoop102 sbin/start-dfs.sh 2 hadoop103 sbin/s ...

  7. #树状数组,离散#C 波动序列

    分析 设\(dp[i][j][0/1/2/3]\)表示前\(i\)个位置当前选的数为\(j\), 且选择的是第一行/第二行/第三行不下降/第三行不上升, 状态转移方程显然,用线段树或者树状数组维护一下 ...

  8. C++ While 和 For 循环:流程控制全解析

    C++ Switch 语句 使用 switch 语句选择要执行的多个代码块之一. 语法 switch(expression) { case x: // 代码块 break; case y: // 代码 ...

  9. MogDB/openGauss关于PL/SQL匿名块调用测试

    MogDB/openGauss 关于 PL/SQL 匿名块调用测试 一.原理介绍 PL/SQL(Procedure Language/Structure Query Language)是标准 SQL ...

  10. Python3学习--正则表达式

    import rer = re.match("Chen\d+","Chen123ronghua123")r = re.match(".+", ...