概述
文章目录
前言
主要介绍数据链路层的广播通信方式,包括CSMA/CD协议、MAC帧、交换机的知识
一、什么是广播信道?
数据链路层主要有两种信道:点对点信道、广播信道,点对点通信主要用于主机连接到ISP的通信,广播通信主要用于局域网内主机之间的通信,特点是一台主机发出的数据在广播域内的主机都可以接收到(除了源主机),相比点对点通信,广播通信主要的优点是可以节省线路,共享信道。
二、CSMA/CD协议
1.协议主要的功能
1.1多点接入
CSMA/CD支持多个主机接入同一条主线,这是局域网内进行广播传输的基础。
1.2 载波监听
要想实现广播通信,最简单的就是设一条主线,将所有要进行通信的主机都连接到这条主线上,这样理论上任何一台主机发送数据主线上的其他主机都可以接受到这个数据。但是因为只有一条线路,如果不使用任何信道复用技术的话在同一时间一条线路上只能有一个主机在传输数据,否则就会导致信号碰撞,信号改变,使得目标主机无法识别,所以必须要有一个机制来检测、协调多个主机之间的数据发送,而载波监听就是解决检测信号的问题。
每一台主机无论是在发送数据前还是发送数据时都必须时刻监听信道的信号。发送数据前的监听,是为了检测信道上是否有数据在传输,若检测结果是信道上有传输信号则进行等待,若无则进行传输。传输数据时的监听是为了检测冲突信号,虽然信道上有信号就不传输的机制可以避免大部分的冲突,但依旧存在发生碰撞的可能,具体可以看1.3的内容。
1.3 碰撞检测
因为数据在信道上的传输有传播时延,就会导致依旧会有发送碰撞的可能。我们可以假设A,B主机在同一主线上上,之间的距离为225比特时间,t=0比特时间时A开始发送数据,t=200比特时间时B开始发送数据,此时A发送的数据尚未传输到B端,B的检测机制无法检测到信号,那么B就认为此时信道是空的,B也开始发送数据,当B发送的数据向A端传输时一定会与信道上A发送的数据发送碰撞,导致数据失效。因此我们就需要机制来检测碰撞,并且解决碰撞这个问题,检测碰撞可以直接由载波监听功能来实现,因为碰撞的表现就是信号发生不规则的波动、变化。为了解决碰撞CSMA/CD协议使用了截断二进制指数退避算法。基本原理就是当主机检测到碰撞信号后就会停止发送数据,并且等待一段时间,这个等待时间称为规避时间,等待结束后再进行检测若信道空闲且空余时间大于帧间最小间隔时间9.6μs(96bit时间)则进行传输,否则继续等待并持续监听。
在介绍截断二进制指数退避算法前先介绍一下争用期时间。
争用期时间:电磁波在1km电缆上的传播时延为5μs。设传输速率为10Mbit/s,假设局域网总线长度为2500m(实际上没有这么多),往返就是5000m,则电磁波在此局域网上的传播时延为25μs(理想状态下),当时往往还要加上之间中继器的额外时延,最坏的估计下传播时延为45μs,再加上强化信号的48bit的传输时延4.8μs,一共为49.8μs,所以通常争用期时间取51.2μs,争用期的时间在10Mbit/s的条件下刚好可以传输512bit(帧的最短长度就是64字节,原因在后面会介绍)。
截断二进制指数退避算法:当主机检测到碰撞信号时就会立即停止发送数据,并发送一段干扰信号(32或48字节,一般是48字节),以便让其他用户知道发生了碰撞,然后主机就会进入规避状态,规避时间的计算规则如下,从离散的整数集合[0,21,22,…,2k]中取一个随机整数r,则r*征用期时间就是规避时间,k的数值等于重传次数,但是不会超过10,k=Min[重传次数,10],当重传次数达到16次时,就会停止重传,并且向上层汇报(说明此时有很多主机要发送消息)。规避时间过后就会继续进行载波监听,进行重传。
三、MAC帧
3.1 MAC帧的组成
前同步码(7字节):
帧开始定界符(1字节):用于表示帧开始
目的地址(6字节):目标主机的mac地址
源地址(6字节):发送主机的mac地址
类型(2字节):用于表示应向上递交给网络层的哪个协议
数据部分:分组后的ip数据报,长度在46~1500字节之间
FCS(4字节):帧检验序列,校验范围从目的地址变到数据段的末尾,算法采用32位循环冗余码(CRC),不但需要检验MAC帧的数据部分,还要检验目的地址、源地址和类型字段,但是不校验前导码。
3.2 MAC帧的用途以及实现原理
MAC帧是用于局域网之间广播传输数据的最小单位,其作用当然是用于传输数据。
在介绍其实现原理之前先简单介绍一下MAC地址,MAC地址也被称为物理地址,每一台计算机中都有,且是世界上唯一的、不会改变的(大部分情况都不会),所以MAC地址就对应着世界上唯一的一台设备,所以我们可以通过MAC地址来找到任何一台设备。
MAC帧中包含了目标主机的MAC地址,所以当源主机要发送数据时,就会依照CSMA/CD协议在局域网内发送数据帧,局域网内的所有主机都可以收到这个帧,但是只有主机的MAC地址与帧中的目标MAC地址相同的主机才会将这个数据帧留下,并进行处理后向上层传递,而其他主机则会丢弃这个数据帧。
在以太网上传输数据是以帧为单位的,以太网传输帧时,各帧之间必须有一定的间隔,所以接收端只要找到帧定界符,其后续到达的比特流就都属于同一个MAC帧,所以,以太网不需要帧结束定界符,也不需要使用字节插入来保证透明传输。
3.3 帧最小长度
为什么会有帧最小长度?
因为数据太短会导致发生碰撞但未检测到,数据未重传。
假设一个帧长度很短,发生碰撞后,碰撞的信号还没有传输到发送主机时帧就发送完毕了,这就会导致发生碰撞却未重传的问题。
怎么得到帧最小长度?
帧最小长度的计算方法为争用期时间*信道传输速率,如果信道传输速率为10Mbit/s,争用期按照之前得到的为51.2μs,那么帧最小长度就是64字节,512bit。再介绍一下计算原理,争用期时间是数据在广播信道上来回传播所需要的最长时间,如果在一个争用期的时间内都没有检测到碰撞信号就说明一定没有发生碰撞。
四、交换机
4.1介绍
利用交换机是一种在数据链路层扩展以太网的方式。最初人们使用的是网桥,网桥就是将接受到的帧根据MAC帧中的目的地址查找地址表(地址表中有mac地址以及对应的端口),然后进行转发,或者丢弃。而交换机本质上就是一个多接口的网桥,交换机的每一个接口都与一个主机或交换机相连,并且都是全双工方式,同时还具有并行性(一个交换机可以同时连接多对接口,使多对主机可以同时通信),并且相互通信的主机都是独占信道,是无碰撞传输(所以不需要用到CSMA/CD协议)。而且交换机还设有存储器,当数据传输过于繁忙时就会先将数据存储在存储器中,之后再发送出去。
4.2 工作原理
交换机会接收端口发来的数据帧,并读取帧中的目标地址,然后在交换表中查找目标地址对应的端口,然后将这个数据帧从这个端口转发出去。
那么交换表中的地址及对应的端口是怎么形成的呢?
当交换机刚刚接入到局域网中时,交换表是空的,当有某个端口发数据过来时,交换机就会读取数据帧中的源地址,再加上端口号写入交换表中,然后因为交换表中查找不到目标地址对应的端口号,交换机就会在除了源端口外的所有端口进行广播发送。这样循环往复,交换表中的地址就会越来越完整。同时交换表中的每一个数据还具有老化时间,如果在老化时间内收到地址刷新信息(地址的端口号与交换表中的端口号对不上),就进行更新,如果超过老化时间就删除这个数据。
4.3 交换机的分类
存储转发:交换机在转发前要先将数据帧进行存储,差错检验,然后再进行转发,帧通过交换机的转发时延依据帧长度有所不同。
直通式:交换机只要读取到帧中的目标地址就进行转发,无差错检验,转发时延相同(因为帧头长度总是固定的)。
最后
以上就是正直蚂蚁为你收集整理的数据链路层---广播信道前言一、什么是广播信道?二、CSMA/CD协议三、MAC帧四、交换机的全部内容,希望文章能够帮你解决数据链路层---广播信道前言一、什么是广播信道?二、CSMA/CD协议三、MAC帧四、交换机所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复