三:链路层
链路层的作用
有了物理层的服务:透明的传输bit。那链路层的作用是什么呢:还是一句话:在相邻的节点透明的传送帧。
又提到了透明一词,那链路层的透明是什么意思呢?让我们举个小例子:
如上图:笔记本的帧要传送到服务器:它经过的路径是:
笔记本电脑和wifi接入点之间wifi链路,wifi接入点到路由器的链路,路由器到路由器的链路,路由器到交换机的链路,交换机到服务器的链路。
可以看出:这一帧:经过了很多不同的节点和链路。透明的意思就是无视这些节点和链路的差异,传送帧。
链路层提供的服务
让我们看看链路层做了什么事情吧。
① 成帧: 链路层把从网络层的数据封装成帧。
② 链路接入: 规定了帧在链路上传输的规则。
③ 差错检测 :如果出了差错怎么办呢?
差错检测
在传输过程中,节点是怎么知道发来的帧出现了错误呢?这里:数据链路层采用了一种技术:差错检测和纠正比特,简称EDC。具体是在帧的末尾插入一段bit。通过这段bit来检测帧有没有出现差错。如下图。
书上介绍了三种EDC和相应的检测错误的技术。
奇偶校验
EDC只是单个bit,
在奇校验中:如果帧中bit为1的个数是奇数,那么EDC是1,否则为0
同样的:在偶校验中:如果帧中的bit是偶数,那么EDC是1,否则为0
这种方法用于单片机传输bit。所有有个了解就好啦。
检验和方法
假设帧有d bit长,将d分割成每份k bit。将这k bit加起来。取反码 作为EDC。
这样:接受方同样把接受到的帧每k bit加起来(包括EDC).如果结果任何bit都是1,那么数据是正确的。来看一个小栗子
CRC
CRC的全称是循环冗余检测。CRC是怎么操作的呢?
首先:接收方和发送方协商一个r+1比特。称为G。对与一个长度为d的帧:首先在d后添加r个0bit,再用G去除以这个加了0bit的帧。得到的余R即是EDC。
接受方把得到的帧去除以G。如果余数为0,代表数据是OK的。
链路接入
多亏了物理层的优秀表现:让我们可以把链路抽象为两种:
① 点对点链路
② 广播链路
可以做个形象的比喻:
点对点链路就像一对一辅导,有什么想问的,可以立马问老师。但是价格不菲。
广播链路就像老师带领的同学讨论。
帧:就是在这样的链路上进行传输。如果是点对点链路,其实是没有什么技术上的问题。就和一对一辅导一样,学生想什么时候提问都是OK的。但是如果是广播链路:就有很大的难题:如果大家都叽叽喳喳的讨论,老师一句话都是听不清楚的。所以大家要一个接着一个说。但是老师大家都不知道谁接下来要发言。所以这就产生了竞争。在数据链路层:这个问题叫做多路访问问题(multiple access problem)
下面来列举出为了解决这个问题,而提出的协议吧。
信道划分协议
如上图:就是信道划分。怎么划分呢? 有这几种划分方法
①频分复用 FDM
② 时分复用 TDM
③ 统计时分复用 STDM
④ 波分复用 WDM (其实就是频分复用,但是是用于光纤里的频分复用)
⑤ 码分复用 CDMA
具体细节可以看书。这里就不赘述了。
随机接入协议
随机接入协议的核心是:一个传输节点总是以信道最大速度进行发送。如果发生了碰撞:则等待一段时间,再次发送该帧。直到该帧成功发送。
接下来是几种常用的随机接入协议
ALOHA
这个协议很简单:即是每个节点以最大速度传输,如果发送了碰撞:则以概率p重传该帧,以概论1-p等待。经过计算:这种协议的传输效率只有 12e 1 2 e
时隙ALOHA
这个协议是经过上面的协议加了一点点小改动。添加了时隙。该协议把时间划分为了等长的时隙。每个节点只能在每个时隙开始才能传输数据。其他的和ALOHA一样。经过计算:这种协议的传输效率有 1e 1 e
CSMA/CD
这个协议是上面的协议的集大成版。
CSMA是载波侦听多路访问。
CD是 碰撞检测。
再次举起上面老师带领学生讨论的例子:CSMA是如果有其他人正在说话,先等他说完了在说话。CD是如果和别人同时开始说话,则停止说话。
可能大家会有疑惑:节点适配器是怎么进行载波侦听和碰撞检测的。马上我们要交以太网,那里会有答案。
轮流协议
书上介绍了两种轮流协议:
① 轮询协议
还是用老师带领学生讨论的例子:老师会轮流的问每一个学生:你想发言吗?如果学生想发言:那么就开始发言。如果不想,老师就问下一个学生。
具体是:主节点充当老师的任务。那其他节点是学生。主节点会轮流发送一个报文给其他节点:该你传输了。并告诉它能够传输的帧的最大数量。
② 令牌传递协议
有一个称为令牌的小的帧在节点以某种固定的次序进行交换。如果得到这个令牌的节点便可以传输帧。
成帧
在介绍数据链路层怎么形成帧之前:要先介绍MAC地址
MAC地址
如上图:MAC地址(物理地址)是一个48bit的序列,用16进制表示。每一个节点都有自己的MAC地址。准确的说:是节点的适配器有MAC地址。
MAC地址被设计为永久且独一无二。就好像身份证号一样。那么MAC地址的作用是什么呢?
MAC地址的作用是用来表明下一跳的地址。
如下图:路由器是怎么知道该把一个帧传送到电脑呢,还是旁边的路由器呢?这个时候就要靠MAC地址了。等介绍到网络层的时候,再来深入讲讲MAC地址
点对点链路
点对点链路的协议是 PPP协议。因为不常用,所以不赘述了
广播链路
广播链路用的最常见的协议是以太网协议。以太网的发展经过了几个阶段。
总线型以太网
如图:所有节点在同一条链路上。如果运行着CSMA\CD协议。CSMA是检查下总线上的电压。看看有没有别的节点在发送数据。CD即节点的适配器边发送数据边检测总线上的电压变换情况。因为如果有很多节点在发送数据的化:总线上的电压变化肯定很大。
使用集线器的星型结构
首先:集线器是一种物理设备:它作用于各个比特。当接受到一个1或0比特的时候,集线器只是重新生成这个比特,并将其能量强度放大
从表面上看:使用集线器的以太网在物理上是一个星型网,还能使用CSMA/CD吗?答案是可以。因为集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然是一个传统的总线以太网。还是使用CSMA/CD
交换机 以太网
交换机是什么呢:具有缓存和转发能力的集线器。
交换机的的输入输出端口都设有缓存。这样在繁忙状态下。也能正常工作。
转发:交换机通过自学习,产生了交换机表。用这个表可以决定一个帧应该转发到那个端口,还是直接丢弃。
交换机表如图:地址和接口是:如果该帧的目的地址是这个,则转发到该接口。时间是老化期。如果交换机没有在化期接收到以该地址作为源地址的帧,就从表中删除这个地址。
那这个交换机表是怎么生成的呢:
①交换机的表为空
②对与每一个接口接收到的每个入帧,该交换机在其表中存储:该帧的源地址MAC。该帧到达的接口。当前时间
③如果在老化期没有收到以该地址作为源地址的帧,则删除这个地址。
那交换机是怎么转发的呢:
假设一个帧来了:从x接口来,目的地址是DD-DD-DD-DD-DD-DD。
①如果表中没有DD-DD-DD-DD-DD-DD的项,则交换机向除接口x的所有接口发送该帧
②如果有一个DD-DD-DD-DD-DD-DD的项,且其接口是x,则丢弃该帧
③如果有一个DD-DD-DD-DD-DD-DD的项,接口y不是x,而向y接口发送该帧。
那么交换机有什么好处呢?
消除碰撞
可以看出:集线器虽然能连入更多设备,但是也把碰撞域加大了。导致传输效率更低了。
但是交换机确实把碰撞域给隔离了。使得传输效率变高。
易于管理
通过添加了一个交换机:
①交换机可以增强了网络的安全性。
②网络管理员可以通过交换机的流量进行有效的管理。
构建复杂的局域网系统
如下图:就是通过交换机建设的复杂的局域网
虚拟局域网
虚拟局域网
交换机的一大作用是分割碰撞域。而虚拟局域网要解决的是分割广播域。
https://zhuanlan.zhihu.com/p/25694603
下面来说说以太网的帧结构。
以太网帧结构
以太网的帧结构如下图:
前同步码: 7个10101010,用来唤醒适配器和同步频率。因为以太网发展的很快。有10Mbps传输速度的,也有100Mbps传输速度的,还有更快的。所以要有前同步码。
帧开始定界符:10101011 代表帧要来啦。
目的地址:目的适配器的MAC地址
源地址:下一跳的适配器的MAC地址
类型 网络层用的什么协议?IP协议,还是AppleTalk协议或其他协议
数据 是来自上一层的数据
CRC 前面说的差错检测。