链路层重点:组帧,流量控制与可靠传输机制,介质访问控制
- 数据链路层是在物理层提供服务的基础上为网络层提供相关服务,它能够加强物理层中比特流的传输,也能将物理层上可能会出错的物理链路改造为逻辑上无差错的数据链路,然后为网络层提供对应服务。
为网络层提供的连接服务
- 无确认,无连接服务。
- 有确认,无连接服务。
- 有确认,有连接服务。
- 需要注意的是:只要是能够连接,则一定会有确认,即不存在无确认,有连接的服务。
帧定界
数据帧的长度由首部,尾部,以及数据三者决定,而首部和尾部包含了许多控制信息,其中就包含了帧边界的标识,这就是所谓的帧定界。(注意:链路层封装的数据帧也称为组帧,它的作用就是解决帧定界,帧同步,透明传输等问题)
- 透明传输:接受方能够正确识别帧尾部,而不会因为数据段有和尾部相同的标识而提前结束帧识别。
下面列举几种帧定界的方法。
- 字符计数法。
- 字符填充的首位定界符法。
- 零比特填充的首位标志法。
- 违规编码法。
MTU(最大传输单元):帧数据部分长度的上线(IP数据包)
差错控制
- 比特传输过程中难免会遇到差错,比如1变为0,0变为1,这种差错也称为比特差错,于是需要通过编码方式对传输的比特实现差错控制,减少或避免误差。
检错编码 => 检验传输的比特是否出错
- 奇偶校验法
- 循环冗余码(CRC:Cycle Redundancy Code)
纠错编码 => 对出错的比特进行纠错 => 海明校验
流量控制
- 为了防止发送方的速度过于快而导致接受方来不及接收从而造成的丢帧现象出现,需要对发送方的发送数据速率作一定的限制,而流量控制的常见方法是通过接收方来控制发送方的速率(由接收方感知,如果速率过快,则返回特定的信息)。
常见的两种流量控制方法
- 停止-等待协议 : 发送方发送一帧后,必须等待这一帧的回复才能继续发送下一帧。
- 滑动窗口协议:发送方维持一组能够发送帧的集合,称为发送窗口,同理接收方也维持一组预接收帧的集合,称为接受窗口。发送窗口外的帧不会发送,接收窗口外的帧不会接收。
可靠传输机制
- 可靠传输同时使用确认和超时传输这两种机制来完成。
- 确认是指发送方发送帧后,为了确保该帧顺利到达接收方且没有出错,应该要收到对应的帧回复。
- 超时传输指发送方发送帧后,会启动一个定时器,如果超过一定时间还没有收到回复帧,则认为帧丢失,需要重传。
自动重传请求(ARQ:Auto Repeat reQuest)
- 接收方通过请求发送方重传出错的帧来恢复出错的帧。它是处理信道所带来差错的办法之一。
ARQ分类
- 停止-等待ARQ
- 后退N帧ARQ(Go-Back-N:GBN)
- 选择性重传(Selective Repeat:SR) => 接收方需具备缓存器,缓存出错帧之后已经到达接收方的帧。
介质访问控制(Medium Access Control: MAC)
- 为使用介质的每个设备与使用同一个介质的其它设备的通信隔离开来,简而言之,就是要保证各个通信设备在使用同一介质时互不干扰,这就是介质访问控制的作用。
- 常见的介质访问控制分为信道划分MAC(静态划分),随机访问MAC(动态分配),轮询访问MAC(动态分配)。
信道划分介质访问控制
- 顾名思义,按照某种标准,将信道划分为多个部分以供给多个通信设备使用,由于划分是固定的,所以也是静态划分信道的方法。
- 频分多路复用(FDM)
- 时分多路复用(TDM)
- 波分多路复用(WDM)
- 码分多路复用(CDM) => 也叫做码分多址(CDMA:Code Division Multiple Access)
随机访问介质访问控制
ALOHA协议 => 不检测,直接传,如果一段时间没收到确认,则重传。
时隙ALOHA协议 => 时间被划分为一段段等长的时隙(Slot),只能在每个时隙开始的时候才能发送。
CSMA协议(Carrier Sense Multiple Access:载波侦听多路访问):基于ALOHA的改进协议,主要是多了一个载波侦听装置。
- 1-坚持CSMA => 监听到信道空闲,就一定会发送(概率为1)
- 非坚持CSMA => 监听到信道忙,放弃监听,过一段时间再监听
- p-坚持CSMA => 监听到信道空闲,概率p会发送数据,1-p概率推迟到下一个时隙(并不是下一个时隙发送)
CSMA/CD协议(CD => 碰撞检测) -> 一边发送一边监听 -> 适用于有线连接的局域网
- 检测到碰撞后,实行指数退避算法
- 引出了最小帧长的概念(注意和MTU区别):保证发送端在发送帧时能够接收到本次发送帧的数据(接收端回复),所以有最小帧长的概念。 => 最小帧长 = 传播时延(单向) * 2 * 传输速率
CSMA/CA协议(CA => 碰撞避免) => 不能完全避免,只是降低碰撞的概率
也有退避算法,但是和CSMA/CD不同,CD是只有碰撞时才会触发,而CA则是遵循除非站点第一次传输数据,否则都要执行对应的退避算法的原则
隐藏站的解决方法 => 预约信道
RTS控制帧 => 在发送前广播的特殊帧,请求预约
CTS控制帧 => AP广播的特殊帧,给源站允许发送的许可,同时抑制其他站点的发送。