概述
一、链路层提供的服务
-
成帧
链路层协议将上层数据用链路层帧封装起来,一个帧由一个数据字段(网络层数据报)和若干首部字段组成
-
链路接入
媒体访问控制(Medium Access Control,MAC)协议规定了帧在链路上传输的规则。在点对点链路中,MAC协议比较简单,但在多个节点共享单个广播链路时,即多路访问问题,MAC协议用于协调多个节点的帧传输
-
可靠交付
当链路层提供可靠的交付服务时,保证无差错的经过链路层移动每个网络层数据报。一般对于低比特差错的链路(有线介质),其出错率很低,没必要浪费性能来做可靠交付保证;而对于高比特差错的链路(无线介质),出错率比较高,则需要有链路层提供可靠的数据传输
-
差错检测和纠正
检验发送的数据是否发生了比特翻转,由0变成1,或者由1变成0
链路层的实现是在路由器的线路卡中,主机中链路层的主要部分是在网络适配器(Network adaptor,网卡)中实现,其核心是链路层控制器,该控制器是一个硬件芯片。部分链路层是在软件中实现,比如组装链路层寻址信息和激活控制器硬件
二、差错校验和纠正技术
奇偶校验、检验和方法、循环冗余检测
循环冗余校验:
发送方和接收方约定一个多项式G(类似x3+x2+1,也可表示为1101),在发送方,将发送数据比特D(d比特)左移4位(G的最高项+1),低四位用R(r比特)表示。接收方用G去除以接收到的d+r比特,如果余数为非零,则接收方知道出现了错误。
关于发送方中R的计算:
D2^r(D左移r位) XOR(异或) R = nG (两边同时异或R)
三、多路访问链路和协议
有两种类型的网络链路:点对点链路(由链路一端的单个发送方和另一端的单个接收方组成)、广播链路(多个发送方和接收方连接到相同的、单一的、共享的广播链路)
广播链路中由多路访问协议(Multiple access protocol)控制发送和接收
帧碰撞:多个节点同时传输帧,所有节点同时接到多个帧
碰撞发生时,没有任何一个节点可以正确接收传输的帧,碰撞时间间隔中的广播信道被浪费
多路访问协议被划分为3种类型:
信道划分协议(channel partitioning protocol)、随机接入协议(random access protocol)和轮询协议(taking-turns protocol)
对于速率为R bps的广播信道,多路访问协议应该具有以下特性:
- 当仅有一个节点发送数据时,该节点具有R bps的吞吐量
- 当有M个节点发送数据时,每个节点吞吐量为R/M bps。不要求每个节点总是有瞬时R/M bps的瞬时速率,保证时间间隔内的平均速率为R/M bps。
- 协议分散,不会因为某个主节点故障而使整个系统奔溃
- 协议简单,使用不昂贵
信道划分协议
信道划分协议分为时分多路复用(TDM)、频分多路复用(FDM)和码分多址(Code Division Multiple Access,CDMA)
-
时分多路复用
TDM将时间划分为时间帧(发送一帧需要的时间),并进一步将时间帧划分为N个时隙或时槽(time slot),然后将每个时隙分给N个节点中的某一个,这样在时间帧内每个节点都可以占用R/N的传输速率,非常公平
缺点:如果只有一个节点需要发送数据,它也需要等到属于自己的时隙时才能发送,效率很低。
-
频分多路复用
FDM将R bps信道划分为多个不同的频段(每个频段享有R/N 宽带),并把每个频带分配给N个节点中的一个。
FDM具有和TDM一样的优点和缺点,可以有效避免碰撞,但当只有一个节点或少量节点发送分组时,效率很低。
-
码分多路复用
CMDA为每个节点分配不同的编码,然后发送方通过各自唯一的编码对数据进行编码,这样不同的节点能够同时传输,接收方也可以正确接收发送方发送的数据比特(接收方知道发送方的编码)
随机接入协议
-
ALOHA
-
时隙ALOHA
特性:- 所有帧由L比特组成
- 时间被划分为L/R 秒的时许(一个时隙等于传输一帧的时间)
- 每个节点只在时隙开始传输帧
- 时隙在每个节点是同步的,都知道时隙何时开始
- 如果在同一个时隙,多个帧碰撞,则所有节点在该时隙结束之前检测到该碰撞事件
时隙ALOHA工作流程:
节点发送分组,如果没有碰撞发生则发送成功,如果发生碰撞,在下一个时隙,每个碰撞的节点抛硬币决定,有p的概率重发,(1-p)的概率不重发,如果该节点在当前时隙没有重发分组,则在下一个时隙继续判断,直到可以无碰撞正确发送。时隙ALOHA优缺点:当需要发送分组的节点比较少时,发生碰撞的概率比较低,效率比较高,当发送分组的节点比较多时,碰撞概率高,很多时隙将被浪费掉,效率变低
时隙ALOHA平均的最大效率=37%
-
纯ALOHA
纯ALOHA不需要在每个时隙开始时才发送分组,什么时候有数据需要发送就什么发送,这样导致了碰撞的概率增加,成功发送的效率更低
i节点数据帧的尾部和j节点帧的头部碰撞
纯ALOHA平均最大效率=17.5%
-
载波监听多路访问(CSMA)
载波监听多路访问(Carrier Sense Multiple Access,CSMA)
载波监听:节点在传输前先监听信道,如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输。
碰撞检测:当一个传输节点在传输时一直监听此信道,如果检测到另一个节点正在传输干扰帧,它就停止传输,重复"侦听-当空闲时传输"循环之前等待一段随机时间。
-
具有碰撞检测的载波侦听多路访问协议(CSMA/CD)
CSMA/CD主要用于有线局域网(以太网)
工作流程:
- 链路层数据帧存放在适配器缓存中,适配器侦听信道空闲(无a信号能量从信道进入适配器),如果侦听到空闲则直接发送数据帧;如果信道正在忙,则继续等待
- 发送过程中,该适配器侦听共用同一信道的其他适配器发送的信号能量,侦听是否有碰撞
- 如果侦听到发生了碰撞,则直接中止传输,中止传输后,等待一个随机的时间量,然后继续侦听信道,重复第一步
等待时间量的选择(二进制指数后退算法):
当传输节点发生了n(n能够取得最大值在10以内)次碰撞后,从{0……2^n-1}中选取一个指K,实际时间等待量=K*512比特时间(即发送512比特进入以太网所需时间量的K倍)
-
具有碰撞避免的载波侦听多路访问协议(CSMA/CA)
CSMA/CA主要用于无线局域网(WLAN),于CSMA/CD的主要区别在于不进行碰撞检测,只进行共享信道的监听和碰撞避免;
WLAN构成:基站(AP)、无线链路、移动主机节点
由于WLAN采用电磁波的作为信号传输的介质,有信号强度递减、其他信号干扰、多径传播等问题使得其传输比特错误率增高,需要在链路层的发送端对其进行可靠性保证(ack响应)
CSMA/CA不进行碰撞检测的原因:隐藏终端问题
隐藏终端问题:由于地理位置的因素,无线信号强度的衰减,使得发送双方无法侦听到对方的传输,但它们又都可以把数据发送到接收方,在接收方发生了碰撞。
解决办法(冲突避免):发送方通过短请求发送(RTS)控制帧和短允许发送(CTS)控制帧来预约对信道的访问。在进行数据帧传输前,先告诉接收方需要传输数据和响应ACK的总时间H,然后接收方将CTS控制帧广播给所有的发送方,当其他发送方接收到来自接收方的CTS控制帧时,在CTS帧中指明的时间内将抑制发送
传输流程:
- 侦听到信道空闲时并不立即发送,而是等待一小段时间,如果仍然是空闲的,则可以开始发送,如果不是空闲,则继续等待
- 接收方准备接收到发送方的数据时,需要给发送方一个ack的响应确认,如果发送方在规定时间内没有收到ack响应消息,则认为刚才发送的数据帧失败了,进行重发
轮流协议
当只有一个节点活跃时,该节点具有R bps的吞吐量,当有M个节点活跃时,每个活跃节点的吞吐量接近R/M bps。
-
轮询协议
在所有发送节点中,其中一个被当作主节点,主节点以循环的方式轮询每个节点,依次告诉每个节点可以发送帧的最多数量M,当该节点有数据帧传输时,发送M个帧后,主节点在告诉下一个节点可以发送帧的数据量,如果有需要发送的数据帧就发送,如果没有,主节点再告诉下一个节点。
缺点:如果主节点挂了,则整个系统都将崩盘
-
令牌传递协议
所有发送方节点连接成一个圆圈,一个称为令牌的特殊帧在节点之间流转,令牌从节点1、节点2……节点N、节点1依次流转,如果节点1需要发送数据,则它持有令牌,发送完最大数量的帧后,将令牌发送给下一个节点,依次类推
最后
以上就是忧伤机器猫为你收集整理的详解网络链路层协议(上)的全部内容,希望文章能够帮你解决详解网络链路层协议(上)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复