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

数据链路层相关

作者:互联网

数据链路层依然是网络的基础设施

这张图片可以很直观的向我们展示数据链路层上的数据传输,十分重要
image
我们可以很清晰的看到,数据是一个链路层一个链路层流动的,因此在不同的链路层之间可能存在不同的链路层协议。

一些基本知识

链路:一个节点到另一个节点之间的一段物理线路
数据链路:物理线路加上通信协议
帧:数据链路层的数据单元
通信步骤:

  1. 将网络层的IP数据包加上首部和尾部后封装成帧
  2. 将帧发送到另一个节点
  3. 若节点收到的帧无差错,则提取帧中的IP数据报提交给网络层;否则丢弃该帧

数据链路层不会考虑物理层传输的细节。同理网络层也是如此,层层包装,各司其职

数据链路层使用两种信道:点对点信道(1:1)和广播信道(1:n)

三个基本问题:封装成帧,透明传输,差错检测

封装成帧:IP数据报分别加上首部和尾部。

首部和尾部要做的就是确定帧的边界
帧开始符(SOH-Start Of Header) 帧结束符(EOH-End Of Header),他们分别是首部的最开始和尾部的最后部分

只有当收到的帧包含SOH和EOH时才会将这个帧保存,否则丢弃该帧。

透明传输

因为SOH和EOH的问题,传输数据的二进制数据若恰好和SOH或者EOH相同,则会错误的确定帧边界,导致帧数据不全
因此透明传输就是要让SOH和EOH之间的数据都变成透明

实现透明传输的操作手法:字节填充(字符填充)

  1. 发送端发送前遍历数据帧,讲数据中出现控制字符处前加一个“ESC”转义字符。当然若转义字符本就在数据中时,在该转义字符前加上一个转义字符即可。
  2. 发送端发送帧
  3. 接收端接收到帧后,遍历数据,将帧中的转义字符删除后,将IP数据报内容发送到网路层
    image

差错检测

传输时出现差错是十分正常的情况。由于传输的是0和1,因此我们可以通过数学手法来级哦按册差错,还可以修补差错。此处的01差错又被叫做比特差错

循环冗余检验(CRC)

数据M,有k个bit。CRC即在M后加上n个冗余码。即要发送(m+n)的数据。这n个冗余码使得接收方可以自主进行差错检测。

冗余码计算

  1. 确定冗余码位数n,以及(n+1)位数的除数P
  2. 在数据M后加上n个0得到m
  3. m为被除数,P为除数,得到的余数R即作为冗余码

要注意,这里的除法每一位做的都是模2运算,即不进位,相同得0不同得1
image

根据冗余码校验

  1. 接收到帧
  2. 让帧被P除。若余数为0,即为正确帧;若不为0,即为有差错,丢弃。

生成多项式
image
这个东西也就是可以更加直观的帮助理解罢了

数据链路层是没有要求可靠传输的,即数据链路层只负责传输数据

image

点对点协议 PPP

PPP协议是运行在数据链路层的,它就是用户计算机和ISP交互使用的协议。它有一些特点需要满足的。

  1. 简单。因为互联网协议最复杂的部分放在了TCP协议中,而网络层的网际协议IP协议页比较简单,同时数据链路层也没有要求可靠传输。因此PPP协议是简单的。同时因为简单,所以也便于厂商们的修改
  2. 封装成帧。这是数据链路层协议必须要有的功能。
  3. 透明传输。同理,这也是数据链路层协议必须要的功能。
  4. 兼容多种网络层协议。这是必须的,毕竟不只有IP协议这么一种协议,他也是要“承上”的。
  5. 可以在多种数据链路上传输消息,串行的并行的,异步的同步的,光的电的等等。
  6. 差错检测。同23,理由在前面就有。
  7. 连接检测:要能够定时对信道进行检测,看看是否连接正常。
  8. 最大传输单元限制:要预先定好最大的传输单元数值。注意MTU是IP数据报的大小,不是帧的大小
  9. 网络层地址协商。PPP协议作为中介,他必须要要让通信的两个网络层能够互相知道彼此的地址且地址算法要尽可能的简单。
  10. PPP协议必须要能够协商使用数据压缩算法,理由同上。

根据这10点,我们可以理解PPP协议的构成 1. 一套将IP数据报封装的方法。2. 一个负责建立连接、配置连接、检测连接的连接控制协议(LCP----Link Control Protocol)。3. 一网络层控制协议,里面包含了对各种网络层协议的支持。

PPP帧:通过这一张图就可以理解image

7E是定界符,其值二进制数为01111110,因此要实现定界符之间的“透明化”。有两种做法,字节填充和零比特填充
填充就是通过加入特殊字符,让和首部尾部控制信息重叠的部分不重叠

PPP协议的工作流程

  1. 用户拨号建立与ISP的物理连接
  2. 用户向ISP发送LCP(链路控制协议)分组(按帧发送),建立LCP连接。
  3. LCP连接建立后进行鉴别,若是鉴别成功或者ISP不需要鉴别时,进行下一步网络层配置。
  4. NCP(网络控制协议)进行分配IP地址。用户成功在互联网上面被注册。
  5. 通信完毕后,NCP释放网络层连接,回收IP地址;LCP连接断开;物理层断开(断电)
    image

使用广播信道的数据链路通信

广播信道可以进行一对多的通信

局域网

局域网可以分为这么几种
星型网:image
环线网:image
总线网:image

局域网涉及到了共享信道的问题,这里有两种方式来解决。

  1. 静态划分信道,即此前说过的品分复用,时分复用,波分复用等。其优点是划分后就不会有冲突,缺点是成本很高。
  2. 动态媒体接入控制。又称多点接入。特点为信道不是按用户来固定分配的。
    • 随机接入:任意用户都可以自由的随机的发送消息。当然,若有两个或者多个用户同时发送了消息,那么必然会有碰撞产生,导致所有用户消息失效。因此需要有能处理碰撞的协议
      > 以太网就是随机接入的。
    • 受控接入:用户要接受一定的控制来发送信息,代表为轮询,书中不予讨论

以太网

这里需要注意的主要是数据链路层被拆分为两个子层:逻辑链路控制LLC(Logical Link Control)和媒体接入控制MAC(Medium Access Control)

与传输媒体相关的内容都存放到MAC层,因此不管是何种传输媒体和MAC子层,他们对于LLC来说都是透明的。

适配器

适配器,又称为网卡,是包含了物理层和数据链路层的硬件设备。他负责接收数据链路层传来的帧并且检验他们,并且发送来自该计算机的帧。他不会使用CPU,所有都是靠他自己。

计算机的硬件地址就在网卡的ROM中,但是IP地址是在计算机的存储器内的

CSMA/CD协议 (载波监听多点接入/碰撞协议)

以太网采用该协议来解决多用户同时发送时的碰撞问题。
以太网采用的是曼彻斯特编发的信号:“1”--前低后高;“0”--前高后低(这个可以调整,看人家怎么规定)

CSMA/CD的要点

重要图示----发送前正常但是还是发生了碰撞:
image要能够说出各个阶段的行为

争用期即知道发送数据情况最多需要时间(最长即为2倍单向信道通信时间)

由上图我们可以知道,即便是发送前检测了没人使用信道,还是有可能发生碰撞的。
解决这个问题的工具时--截断二进制退避算法。
思路:在发生碰撞后,随机时间重新发送数据。这里就涉及到一个随机算法了。

  1. 确定基本退避时间M为争用期
  2. 从离散整数集合[0,1,2,3,4....(2^k)-1]中随机取一个数,k的值为重传次数,最大值为10
  3. 若是超过16次重传都发生了碰撞,则丢弃该帧,向上层报告异常

为了避免超小帧会出现的发送时检测不到碰撞,却在发送后发生了碰撞的情况,解决方式是设置最小帧大小。帧若不够则要填充填充数据以满足此大小。

强化碰撞-----在发送方检测到碰撞后,要立刻发送32bit或者48bit的人为干扰信号,提醒网络上的其他设备。
小总结

image

集线器(hub)

以太网的信道利用率

因为碰撞的问题,以太网的信道不可能是100%的利用率

定义a为以太网的信道利用率

%% a=\frac{单程端到端时延}{帧的实际发送时间}

极限信道利用率
image

MAC地址

MAC地址又被称作硬件地址或者MAC地址(因为它用在MAC层中)

MAC地址可以为6字节(48位)和2字节(16位),6字节的主要是以太网中,2字节的为小型局域网。

在前面我们知道,数据链路层又被分成了两个子层,LLC层我们其实可以把它当作和物理层相接的基础设施,真正在上面跑动的是MAC层。
MAC帧是MAC层上面的基本传输单位,传输时有下面三种方式:

适配器强制要求支持前两种方式,第三种需要使用特殊的算法来实现--一对多也是要目标地址的。

MAC帧的格式

image

从这张图片上面,我们可以很清晰的看到,MAC帧前面,还有8字节的数据,他们是在非同步通信时进行时钟校准和表示该帧为MAC帧,避免因为初次通信时不同步导致的MAC帧缺失

以太网的拓展

物理上拓展以太网

image
很形象的展示

数据链路层上面拓展以太网。

这里是用的设备依然是交换机。在前面我们就了解过了,尽管交换机是个硬件设备,但是他实际上用的还是软件上面的方式比如算法。(这里可能有理解误区,需要注意

以太网交换机
这里我们需要知道的是以太网交换机的实质是一个多接口的网桥
网桥是能够对MAC帧根据目的地址进行过滤和转发的一种设备。
以太网交换机相比网桥最大的优点就是以太网交换机能够使得多对主机同时进行通信,同时这些相互通信的主机都是没有碰撞,相互独占传输媒体的。

以太网交换机有一项即插即用功能,实现方式是其自学习算法

自学习算法

可以通俗理解为一种注册

  1. 发送方A第一次在该交换机上发送数据时,注册该发送方MAC地址和其使用接口。发送方数据目标地址未在交换表内的,进行广播通信,让接收方自取。
  2. 接收方B接收A的消息后,发送了一个消息给A。通过交换机时先将自己注册,同时将数据发送到交换机。因为A已经在交换机上面注册了,因此交换子将数据自动通过A的注册端口发送出去。
  3. A再次给B发送消息,这时AB都已经注册,因此就不需要进行广播了,交换机自动进行转发。
    至此,交换机已经“自学习”了A、B的转发。
    这里有一点要注意,即交换机内的存储空间是有限的,可能会存在主机脱离网络,而又有新的网络接入的情况。因此,交换机内交换表内数据是有时限的。

多个交换机之间相互连接,为了保证可靠性,会有一些冗余接口。这很可能会因为上面说的有时效的交换表而导致一种兜圈子的循环行为。这显然是很浪费。
image
生成树协议是解决这个问题的方案

虚拟局域网VLAN

这属于是一种功能提供。通过设置标识将主机划分为多个组,划分根据不按照硬件区分。可以通过这张图来理解
image
我们可以从图片上面看到,各个组的机器都不是连接在同一个交换机上的。
帧格式变化:因为增加了标识,所以帧格式上面也添加了相应部分
image
这时候MAC帧就变成了802.1Q帧

高速以太网:本部分知识了解看书即可,P103

标签:信道,发送,MAC,相关,数据,以太网,链路层
来源: https://www.cnblogs.com/BBstack/p/16421955.html