二、可靠透明的数据链路层【计算机网络全景梳理系列】

阅读: 评论:0

二、可靠透明的数据链路层【计算机网络全景梳理系列】

二、可靠透明的数据链路层【计算机网络全景梳理系列】

文章目录

        • 0. 前言——数据链路层的基本问题
          • 封装成帧
          • 透明传输
          • 差错检测
            • 位错与帧错
        • 1. 两种通信信道
          • 1.1 一对一信道与PPP协议
            • PPP协议的特点
            • PPP协议的应用场景
            • PPPoE
          • 1.2 一对多信道
            • 一对多信道的两个问题
        • 2. 定位:设备的身份证号码——MAC
        • 3. 冲突解决
          • 3.1 令牌——凭餐具吃饭
          • 3.2 CSMA/CD 载波监听多点接入/冲突检测——边发边听
            • 发送前
            • 发送中
            • 冲突处理
            • 冲突强化
          • 3.3 CSMA/CA 载波监听多点接入/冲突避免——用前预约
            • 发送前
            • 发送时
            • 发送完
        • 4. 局域网与以太网
          • 以太网 DIX Ethernet V2 与 IEEE802.3
          • 令牌总线网 IEEE802.4
          • 令牌环网 IEEE802.5
          • 光纤分布式数据接口 IEEE802.8
          • 无线局域网 IEEE802.11
          • 作用消失的LLC IEEE802.2
            • 子网络访问协议 SNAP
        • 5. 以太网交换机
          • 自学习功能
          • STP 生成树协议
        • 6. 虚拟局域网
        • 7.隧道协议
          • 隧道技术
          • 隧道协议
        • 8.全景图

0. 前言——数据链路层的基本问题

在上一节中,Bob、Alice和他们的朋友们用电路建立一个网络,用灯泡亮灭来传输信息。他们之间就构成了一个小的网络“局域网”。但是他们在使用的过程中却遇到了不少问题。

封装成帧

首先,为了保存通信,电路是一直存在的。可问题在于,Bob和Alice并不是一直在发送信息,怎么区分Bob**发送信息什么时候开始什么时候结束?**同时,Bob可能发送不同的信息,信息与信息之间如何区分出来

如该图上部分,仅仅在物理层传输数据时信息与信息之间很容易出现干扰,这很让人抓狂。那怎么解决呢?一个很好的办法就是使用信封将想要传递的信息封装到信封里这样接收者就很容易知道什么时候信息开始和结束(因为被包裹在信封里了),而且一个信息与一个信息之间也很容易区别

这样的一个信封就可以当作,信息放入信封中就是封装成帧在数据链路层中,上层的数据(主要为IP数据)会被添加上帧首部帧尾部构成一个帧。在具体实现中,分别使用帧开始符帧结束符来表示开始与结束

透明传输

生活中的语言可以表示各种信息,但是这些信息都是由基本的字符组成。就跟猴子打莎士比亚著作一样,会由一些数据部分的信息恰好与帧开始符和帧结束符的形式一样。这样就出现了一个问题,即当接收者看到假的EOH就停止接收,则会丢失部分的信息

如何解决这个问题?只需要一个严格的邮差先生这个邮差先生会负责检查信封中的信息,把那些信息中的假的帧开始符和结束符,通过前面插入转义字符的方式(当有数据中也有转义字符时,就在前面也插入一个转义字符)将这些危害的字符转为普通的字符。

这种可以支持所有数据,对于数据来说是透明的。这就是透明传输

差错检测

在物理线路中,电路中电流电压会受到外界的影响,可以表示“0”的电压变高而变为“1”,这时就发生了错误。所以在数据传输时,需要进行差错检测

常见的检错编码有奇偶校验码循环冗余检错CRC,而在经常使用的就是CRC。

CRC的基本原理是除了信息位,还会添加一个校验位用于存储信息与某个多项式的余数。而接受者在接收到信息时候后会使用校验位来校验,如果得出余数为0,则认为没有差错。反之则认为这个帧出错了。

位错与帧错

上述的功能保证了比特位不会出错,但是不能保证帧没有错。帧发生错误的情况有:

  1. 帧丢失
  2. 帧重复
  3. 帧序号发生错误

要提供可靠传输必须考虑上述的问题(OSI的观点)。但是实际上,现在通信线路的质量大大提高了,没有提供可靠传输,而是将问题交给了上层的协议(例如TCP)。只有通信质量不好的线路才使用确认和重传机制。

以上就是数据链路层中三个主要问题。数据链路层向下保证了物理传输的可靠性,向上保证了各种数据的准确透明传输。

1. 两种通信信道

在前面我们说了,Alice和他们的朋友们可以构成了一个小的网络。在这个网络中,可以有多少种通信方式呢?

  1. 一对一信道。最简单的方式就是两个人之间有着物理链路,一对一的方式
  2. 一对多信道。另一种方式就是一个用于与其它多个用户连接,使用广播的方式传输信息。

在这两种不同的通信信道中,有着各自的特殊协议。

1.1 一对一信道与PPP协议

PPP协议的特点
  • 两节点之间建立的直接连接
  • 可以提供连接认证、传输加密压缩
    • 认证:PAP CHAP
PPP协议的应用场景
  • 拨号上网的IPS接入
PPPoE

PPPoE(PPP on Ethernet) 是在以太网中实现PPP一对一虚拟信道的一种方法

1.2 一对多信道

在现实生活中,一对一信道还是比较少见。更常见的是一对多式的局域网。常见的连接多个设备的方式有如下的星型、环型和总线型等。

局域网有着以下的优点

  1. 广播特性,从一个站点可以很方便地访问全网
  2. 系统容易扩展和演变
  3. 系统的可靠性、可用性和生存性较高
一对多信道的两个问题

但是同时特多出了两个主要的问题。第一,多个设备连接在同一网络中,如何分辨哪一个是设备想要发送的的目标,而对于接收者又是谁发送给它的。如图中的Bob想要发送给Alice一个消息,如何能够发送到Alice的手中。第二,多个设备共存在网络中使用同一资源,如何解决信道使用的冲突。如图中Bob->Alice的绿色信息流与其它用户的红色信息流发生了冲突。

所以在局域网中需要解决两大问题

  1. 如何标识不同设备?
  2. 如何解决冲突?
2. 定位:设备的身份证号码——MAC

类似于咱们都有一个身份证,连入网络的设备也都有一个全球唯一的号码——**MAC(Medium Access Control) **。这个号码有48位(6字节),其中三个字节由厂商自己分配。而另三个字节是OUI,由IEEE来进行分配。OUI中其中有两个比特分别用于控制是单播还是多播,全局还是本地。

3. 冲突解决
3.1 令牌——凭餐具吃饭

看上面图中的环型网络像不像五个人围着一个餐桌,哈哈。而可能有两个同学想吃同一个东西,就是发生了冲突。

如何解决这种冲突呢?一种虽然没有人道但是高效的方式就是——只有一个餐具(token),只有餐具才能吃东西。而每个人之间轮流来使用这个餐具,每次只有一个人能吃。这样冲突就被完美解决了

令牌环的缺点在于要需要维护这个令牌,在现代局域网市场占比并不多了。

3.2 CSMA/CD 载波监听多点接入/冲突检测——边发边听

在总线型的网络中(一些网络在物理上是星型,逻辑上则是总线型),设备多点接入的连接到一根总线中。在这个总线中,每个设备可以很容易地检测到信道有没有在被使用</u>。

该方法的重点在于,不管何时何刻,都要监听

发送前

发送前要时刻监听信道,是为了获得发送的权利当检测到信道是空闲的时间,就可以向信道中发送信息

为了让接收站点能够清理缓存,会确保帧间最小间隔信道是空闲

发送中

在发送中也要边发送边监听信道,来检测冲突。既然发送前信道是空闲的,为什么还需要检测呢?这是因为消息传递存在着时延。设备在发送消息中,如果另一个设备发送了消息,线路中的电压就会发送变化,就认为产生了冲突。

如图, AB两地之间的传播时延为τ。

  1. A在t=0时候检测到信道为空,尝试向信道内发送消息
  2. B在t=τ-δ时也检测到信道为空(因为消息还没传到B),也尝试发送消息
  3. B在t=τ时检测到冲突
  4. A在t=2τ-δ时检测到冲突
冲突处理

在上个流程中,可以看到A在发送消息后的最多经过就能知道有没有发生冲突,这个期间就叫做争用期

在争用期检测到冲突时,会停止发送然后找机会重传。而重传时使用到了截断二进制指数退避算法。其原理为

  • 从0到2^k中随机取一个数为r,等待r个争用期后重新发送
    • k 是 重传次数10最小值(重传次数越多可能越慢)
  • 当超过16次重传后,向上层报告错误
冲突强化

在发送数据时如果检查到了冲突,除了停止发送还会向信道中发送人工干扰信号以便让所有用户知道发生了碰撞

3.3 CSMA/CA 载波监听多点接入/冲突避免——用前预约

不同于有线网络,无线网络中由于信号会随着距离增加而衰减很难全局的得知信道有没有被占用。例如图中的C想向B发起通信时,就很难探测到A的影响。这时候就很难使用冲突检测的方式。

如何解决无线网络中的冲突呢?最好的办法就是预约例如生活中某个饭店好吃特别火爆,常常爆满没有空座位。如何保证我们去的时候有空座位呢?跟别人避开?但是我们根本呢不认识其它人,就更别说知道别人什么时候去吃饭所以这种方法并不可行。那完美的解决方法就是进行预约,只要预约上了就保证我们去到饭店可以吃。

这就是CAMS/CA算法的一个核心概念。

发送前

在发送数据前,同样也要检测信道空闲。可以使用的方法有

  1. 能量检测ED
  2. 载波检测CS
  3. 能量载波混合检测

当检测到信道空闲时,为了确保其他的站高优先级的帧可以发送,等待DIFS(分布协调功能帧间隔)后发送第一帧

发送时

如果目的站接收到第一帧成功之后,等待SIFS(短帧间隔)【为了区分一次会话】,后发送ACK确认信号

而如果目的站接收失败,发送站没有收到确认帧ACK(由重传计时器控制这段时间),就必须重传此帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送

发送完

在信道从忙态转为空闲时,为了减少减少了发生碰撞的概率,各站需呀执行退避算法

4. 局域网与以太网

基于上面的方法,发展出了许多的局域网协议。

以太网 DIX Ethernet V2 与 IEEE802.3

在各种局域网协议的角逐中,总线型以太网逐渐发展成快速以太网、吉比特以太网、10吉比特以太网。以极大的优势占领了市场,现在以太网几乎是局域网的代名词

现存两大标准是DIX Ethernet V2IEEE802.3 ,它们两者差异很小,可以在同一物理介质上共存。由于DIX Ethernet V2占比多,所以现在以太网帧基本就是指DIX Ethernet V2。其帧格式如下:

可以看到其与PPP帧的最大区别在于多了地址信息

注意以太网的服务类型是无连接服务,出错由上层处理。

令牌总线网 IEEE802.4

令牌总线是一种在总线拓扑结构中利用令牌(Token)作为控制节点访问公共传输介质的控制方法。主要用于工业通信

令牌环网 IEEE802.5

利用令牌(代表发信号的许可)来避免网络中的冲突,1980年代中期IBM在研发,但是在目前局域网中已经不太常见了。

其服务类型是面向连接的。

光纤分布式数据接口 IEEE802.8

在光缆上发送数字信号的一组协议,逻辑上是基于令牌。属于带确认的面向连接服务。

无线局域网 IEEE802.11

为无线局域网下的一种协议标准。随着无线网的快速发展,基于802.11协议后续也在不断补充。和以太网一样,是属于无连接服务(虽然信道预约有ACK,但是后续发送消息后并不再管了)。

作用消失的LLC IEEE802.2

出于有关厂商在商业上的激烈竞争, IEEE 802 委员会末能形成一个统一的、“最佳的” 局域网标准,而是被迫制定了几个不同的局域网标准, 如 802.4 令牌总线网、802.5 令牌环 网等。

为了使数据链路层能更好地适应多种局域网标准, IEEE 802 委员会就把局域网的数据链路层拆成两个子层,即逻辑链路控制 LLC (Logical Link Control)子层媒体接入控制 MAC (Medium Access Control)子层

  • LLC 子层: 与传输媒体无关, 不管采用何种传输媒体和 MAC子层的局域网对 L L C mathrm{LLC} LLC 子层来 说都是透明的
  • MAC 子层: 与接入到传输媒体有关的内容

由于以太网快速发展,TCP/P体系经常使用的局域网只剩下 DIX Ethernet v2而不是IEEE8023标准中的局域网,因此现在EEE802委员会制定的逻辑链路控制子层LLC(即IEEE8022标准)的作用已经消失了,很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议。

子网络访问协议 SNAP

SNAP 包含于LLC,主要用来在 IEEE 802 网络上封装IP 数据包、地址解析协议(ARP)的请求和答复。让上层的IP数据报可以在IEE802网络上发送。

5. 以太网交换机

交换机是数据链路层中的一个设施。在上面中,我们提到多个设备接入到局域网中。而交换机的一个功能就是支持两个设备之间的通信,可以根据MAC帧的目的地址进行转发过滤。在以太网交换机中具有学习功能,可以了解每一个端口的MAC地址,并缓存在MAC地址表中。

自学习功能

在以太网中有一个交换表,可以记住每个接口的MAC地址。且这个交换表可以进行自我学习,其原理如下图:

STP 生成树协议

在局域网中会有一些冗余线路作为备份。但是这会造成回路,导致数据包在回路里一直转动,为了解决这样的问题,STP生成树协议可以在图中找到一条生成树主路(就是图论的内容)。

6. 虚拟局域网

虚拟局域网是提供给用户的一种服务,可以不局限于地理位置来实现局域网服务。

虚拟局域网通过交换机可以很方便地实现,IEEE802.1Q对虚拟局域网进行标准化。实现虚拟局域网的关键点在于在以太网帧中插入了一个四字节的VLAN标记,用来表示802.1Q帧和所属的VLAN等信息

7.隧道协议

如我们在开始介绍的虚电路交换一样,在某些情况下,通过网络建立一条虚拟链路是有用的。实现这类服务的最常用方法称为隧道

隧道技术

一般来说,隧道是 在高层(或同等层)分组中携带低层数据,例如在IP(高层)中携带以太网(底层)的数据。

隧道协议
  1. 二层隧道协议 (主要用于构建远程访问VPN)
    1. PPTP 点对点隧道协议 (微软等)
    2. L2F 二层转发协议(思科等)
    3. L2TP 二层隧道协议(微软、思科等厂商支持、应用广泛)
  2. 三层隧道协议(主要用于构建企业内部VPN)
    1. IPsec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换
    2. GRE 与 IP in IP、IPX over IP 等封装形式很相似,但比他们更通用
8.全景图

到目前为止,构建的全景图如下

本文发布于:2024-02-04 17:16:58,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170712548757718.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23