数据链路层入门笔记

数据链路层提供的服务是将数据报从一个物理节点传输到另一个物理节点。
在该层中,上层数据报加上头尾构成了帧,帧是在数据链路层的传递数据单元。帧头部一般是MAC地址,用于标识该帧的去处。该层所要解决的问题是保证数据的可靠交付,处理多数据源发送数据时信道的分配

差错编码

为了保证数据的可靠交付,我们采用了差错编码的方式进行数据的差错检测和纠正。原理如下:
这里写图片描述
差错编码的检测和纠正都要依据与数据集的汉明距离,例子如下:
这里写图片描述
在具体实际应用中,我们常采用三种校验模式:

  • 奇偶校验位
  • 校验和
  • 循环冗余校验码(CRC)

奇偶校验码

即若为奇校验码,则数据中1的个数加上1bit校验位中1的个数后应该为奇数,由此还衍生处了二维的奇偶校验。

校验和

就和之前的运算方法一样,在此不进行解释。

CRC

一种基于模二除法的校验方法。该方法如下:
对一个二进制数据集D,选取一个二进制模式数G(共有r+1位bit)。则可以计算出循环冗余校验码R(有r位bit),使得(D,R)构成的数据集能在接收方被G整除。为计算出该校验码R,我们可以通过模二除法进行计算(模二除法就是异或和移位操作,计算机底层容易实现)。计算方法如下:
这里写图片描述
得知D,在D后添加G的位数-1的0(即r个0),然后除以G,余数便是R。

广播网络

MAC地址
MAC地址用于标识网络中的具体设备,可以看成是每个链路层网络设备所独有的ID编号,一般情况下由网络设备制造商设置。MAC地址同IP地址之间的不同之处在于,IP地址可以分配,并依据所在子网而受限,但MAC地址一般都绑定了网络设备。IP地址有32bit,MAC地址有48bit,并用形如“1A-5D-8C-6C-DD-8F”的6组16进制数表示。

该协议旨在对多路访问同一条链路时进行信道分配。MAC协议可以分为3类:

  • 信道划分类MAC协议
  • 随机访问类MAC协议
  • 轮转类MAC协议

除此之外,由于是对接的网络层IP地址,因此还需要有协议来保证将IP地址映射到对应的MAC地址。

信道划分类MAC协议

该类协议其实就是电路复用中的时分多址,频分多址,码分多址,波分多址协议。该类协议会为每个节点分配特定的通信空间(时间),其特点是:在高负载通讯下能做到公平最大化利用信道资源,但是在低负载情况下会对信道资源造成浪费。

随机访问类MAC协议

该类协议的特点是不预先为各个节点预留资源,采取先到先得的方式。这样的好处是可以充分利用信道资源,不过会引起冲突现象。因此,随机访问类MAC协议的主要功能之一就是检测冲突并从冲突中恢复

时隙ALOHA协议

规定如下:
这里写图片描述
时隙ALOHA协议的效果在高负载的情况下并不好,通过计算可以推出其最大效率为37%。

ALOHA协议

该协议比时隙ALOHA协议更为简单,即取消了时隙,任何时候都可以发送数据,因此,其效果更差,最大效率为18%。

CSMA协议

载波监听多路访问协议(carrier sense multiple access)较之ALOHA协议是一种更为“无私的协议”,他规定节点要发送数据报时,必须监听信道,当监听到信道在忙时,就采取选择,依据选择的不同,可以分为:

  • 1-坚持CSMA(持续坚持监听,直到信道可用)
  • 非坚持CSMA(随机等待一段时间再监听)
  • P-坚持CSMA(概率P继续监听)
    虽然以上方法可以减少冲突的发生,但是由于延迟原因,还是可能发生冲突的。比如现有ABCD四个节点,D检测到信道可用,然后这个消息在传回D的途中,A也检测到信道可用。由于实际线路信号传播需要时间,当A的信道可以信号传回较快时,A先发出了数据报占用了信道,此时D刚收到信道可用的信号,因此也发送数据报,这样一来就产生了冲突,造成了信道传输数据失败,并且由于数据传输后节点就不管了,直到数据报传输完成才会发现错误。由此,人们提出了CSMA/CD协议。

CSMA/CD协议

即带有冲突检测的CSMA协议,该协议与CSMA不同之处在于:CSMA/CD采用了边发边听,不发不听的形式。即当节点发送数据报时也监听信道,一旦发现信道有多个节点使用就停止发送。如下图:
这里写图片描述
也正是由于CSMA/CD采用了边发边听,不发不听的形式。当一个数据报发送完成后节点就不会继续监听了,因此我们应该保证数据报的发送时间要大于监听信号的往返时间,即下图公式推导(左边为数据报发送时间,右边为监听信号的RTT时间):
这里写图片描述
通过计算,我们可以发现CSMA/CD协议的效率会远高于ALOHA协议。并且该协议常用于以太网之中(因为WiFi网络监听信道强度太难)


实例:以太网

以太网基于CSMA/CD协议,在以太网中,如遇到信道忙的情况,节点会依据二进制指数退避原则选取等待时间,进行等待。该原则可简述为:尝试连接的冲突次数越多,等待时间越长。
在以太网中的帧结构如下图,其中preamble为前导码,用于接发端的时钟同步,数据字段的最小数据要求也是因为要保证之前所说的数据报的发送时间要大于监听信号的往返时间。
这里写图片描述


CSMA/CA协议

对于无法在发送数据报时监听信道的情况,人们设计了CSMA/CA(Collision Avoid)协议来解决。其思路就是在结点A在发送数据前,和数据接受方进行预约时段,然后接收方会广播一个ACK给所有的节点,告诉别人从现在开始他只接收结点A的数据,其他人别给他发。当A发送完数据后,接收方又会发送一个ACK告知大家他又可以接收数据了。
如下图,首先,A检测到信道空闲,他会等待一个DIFS时间,看看这段时间内信道是否仍然保持空闲,如果是,他就开始发送RTS(Request to send)帧来预约,然后A等待ACK信号。这时如果B也发送了RTS,产生了冲突,则接受方AP(Acess Point)就收不到信号,不予理会。A发现没收到ACK,在等待一段时间(该段时间采用随即退避算法设定,效果就是:冲突次数越多退避时间越长)后,重新监听信道,并等待DIFS时间后重发RTS。假设这次成功,AP会在等待一个较短时间SIFS后,广播一个ACK(CTS,clear 同send),之后A接到该ACK,等待SIFS后开始发送数据。发送完毕后,AP又广播一个ACK,告知其他节点他又可以收数据了。
这里写图片描述


实例:无线网

以基于802.11协议的WiFi网络,也就是人们日常所说的无线网,其使用的多路访问控制协议为CSMA/CA。
无线网的体系结构如下所示:
这里写图片描述
根据802.11协议,传输频谱会被划分为若干信道,每个无线主机就在一个信道上工作。由于有可能
产生重叠,因此我们需要与AP进行关联。这个过程对于我们来说就是无线主机会扫描信道,然后发现AP,通过记录AP发出的标记帧(包含AP的SSID和MAC地址),与之通信,建立连接。通信过程的访问规则为CSMA/CA。其MAC帧数据结构如下:
这里写图片描述
ToAP置一,则表示该数据是送往AP的数据帧。其中,address1,2,3表示的是AP的MAC地址,主机MAC地址,以及与AP相连的路由器的MAC地址。
FromAP置一,则表示该数据是来自于AP的数据帧。其中,address1,2,3表示的是主机MAC地址,AP的MAC地址,以及与AP相连的路由器的MAC地址。


轮转访问类MAC协议

为了结合前两类协议的优点,人们设计了该类协议。

轮询

由主节点依次询问其他节点是否有需要发送到数据,如果有节点想要发送数据但是还没被轮询到,就要等待。

令牌传递

设立一个特殊字节作为令牌,节点会依次持有令牌,当节点需要发送数据报时必须持有令牌。


ARP协议

地址解析协议 (ARP) 是通过解析网路层IP地址来找寻数据链路层MAC地址的一个在网络协议包中极其重要的网络传输协议。依据是否在同一局域网中,来分别学习ARP协议的使用方法。

在同一局域网中的ARP

现假设节点A想向B发送数据,若A只知道B的IP地址,则A向所在LAN中广播(泛洪式的发送消息)包含A的IP,MAC和B的IP的消息,同属于一个LAN的BCD都接到了A的消息,但是根据目的IP为B,故CD忽略,B进行回复,将自己的MAC地址发送给A,然后A收到地址,讲该IP,MAC对应关系存在自己的ARP表中。

在不同局域网中的ARP

这里写图片描述
如上图,当A想要传数据给B时,A通过广播找到的只能是R的左端口MAC,因此A会发送一个包含自身IP地址,MAC地址,B的IP地址和R的MAC地址的数据帧给R,再由R将MAC地址通过ARP协议替换掉来进行数据传输。


交换机

冲突域&广播域
冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。处于物理层面的(OSI模型)。
广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。处于数据链路层面(OSI模型)。
详见:广播域与冲突域详细解析

交换机属于链路层设备,并对主机透明(主机感知不到)。交换机具有自动配置参数功能,一般情况下无需软件编写,固有程序都是以专用芯片的方式固化在芯片当中。交换机可以隔绝冲突域,其每段链路都是一个冲突域,但是不可以隔绝广播域。

交换表

每台交换机维护一个交换表,交换表一开始是空的,但是通过交换机自动学习,可以对交换表进行修改和删除。交换表的维护规则如下:

if(在交换表中是否能检索到目的MAC地址)
如果可以,then{  if(目的MAC地址同收到帧的MAC地址相同)丢弃该帧
                else 将该帧转发至目的MAC地址接口
}
else 广播(泛洪处理)该消息

可以发现,上述过程很像之前说的ARP处理方式。对于多台交换机相连的一个广播域,其处理方式类似。

路由器&交换机

路由器和交换机的区别如下图,路由器可以划分广播域,而交换机不能划分广播域只能划分冲突域。
这里写图片描述


VLAN–虚拟局域网

参考文献:VLAN原理解释
根据上文提到的,ARP协议和交换机等都会进行频繁的广播,但是广播会对网络造成负担。因此有人提出了虚拟局域网,即原本要通过路由器来划分局域网阻止大范围的广播,现在改用在交换机内部设置规则进行虚拟局域网划分阻止大范围广播。

IEEE 802.1Q

既然通过交换机内部进行VLAN的划分,那不同VLAN之间的通信则要协议进行沟通,因此产生了IEEE 802.1Q协议。IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。该协议通过在数据帧中添加了4字节的内容,并重新计算CRC值来保证正确识别数据帧所属VLAN。

点对点网络

参考:PPP协议解析
在点对点网络中,主要采用的是PPP协议,点对点协议(Point-to-Point Protocol,PPP)工作在数据链路层(以OSI参考模型的观点)。它通常用在两节点间创建直接的连接,并可以提供连接认证、传输加密以及压缩。
由于是P2P的网络,因此其具有一下特点:

  • PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址;
  • PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
  • PPP具有身份验证功能。
  • PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。

猜你喜欢

转载自blog.csdn.net/timemagician/article/details/80444153