数据链路层定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。
数据链路层必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧,帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
1.为网络层提供服务
计算机网络分层结构的基本要求包括要保持下层对上层的独立性,上层单向使用下层提供的服务。
数据链路层的上层是网络层,因此数据链路层需要上上层提供三种服务:
- 无确认的无连接服务。适用于实时通信或误码率较低的通信信道,如以太网服务
- 有确认的无连接服务。适用于误码率较高的通信信道,如无线通信
- 有确认的面向连接服务。适合于通信要求较高的场合
2.链路管理
主要用于面向连接的服务,链路两端的结点要通信,需要进行数据链路层连接的建立、维持和释放等过程。
3.帧定界、帧同步与透明传输
为了把每帧区分开来,一般在一段数据的首尾添加首部和尾部字符串。
帧定界就是指确定帧的界限,帧同步就是让接收方能够区分帧的起始和终止,透明传输就是不管传的数据是怎样的组合都能在链路上正常传送(不被首尾字符串干扰)
怎样实现上述功能?组帧,一般常用的是零比特填充的首尾标志法和违规编码法
组帧的四种方法:
- 字符计数法(头部使用一个技术字段表明帧内字符数,但是无法解决计数字段出错问题)
- 字符填充的首尾定界符法(首部用SOH,尾部用EOT,中间特殊字符用ESC转义)
- 零比特填充的首尾标志法(01111110标志帧开始和结束,中间遇到5个1则填0,接收方收到5个1去0)
- 违规编码法(曼彻斯特编码,使用高-高或低-低用于表示首尾)
4.流量控制与可靠传输
防止发送能力大于接收方的接收能力,对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量。
常见有两种方式:停止-等待协议和滑动窗口协议
停止等待协议:发送方每发送一帧都要等待接收方的应答信号,再发送下一帧;接收方收到就反馈一个应答帧,效率很低;
滑动窗口协议:设置一个发送窗口和一个接收窗口,用于控制哪些帧可以发送或者接收;
发送方在未收到确认的情况下只能发送发送窗口里的帧;接收方只有接收到在接收窗口里的帧时才会手下,其他的全部舍弃。
发送方每收到一个确认帧,发送窗口就向前移动;接收端收到一个数据帧就前移
**可靠传输:**确认和超时重传
某些情况下将确认捎带到一个回复帧中,称为捎带确认
发送某个数据帧后开启一个定时器,如果时间到后没回复,就重新发送直到发送成功,称为超时重传。
自动重传请求:
是指接收方请求发送方重传出错的数据帧,是常用处理差错的方法之一。包括停止-等待ARQ、后退N帧ARQ和选择性重传ARQ。
**停止等待协议:**①计时器满未收到确认重新发送②确认帧被破坏,发送方重新发送数据帧,接收方收到后丢弃重复帧,并重传一个确认帧。缺点:信道利用率低
**后退N帧协议(GBN):**①累积确认。连续收到好几个正确帧后一起确认,确认表明该帧及之前的帧都正确收到
②接收方只按序接收数据帧,不按序的数据帧无情丢弃
③接收方只确认序列号最大的按序发送的帧
④接收窗口长度为1,实现有序接收,发送窗口长度小于2n-1
缺点:重传时必须把原来已经正确传送的数据帧重传
选择重传协议(SR):①对数据帧逐一确认,收一个确认一个
②接收方怀疑出错就会发送NAK帧,要求发送方重传NAK中指定的帧,只重传出错帧
③失序的帧先缓存,有序后一起后移窗口(缓冲区数目等于窗口大小)
④接收窗口和发送窗口的最大长度为2n-1
#5.差错控制
由于信道噪声等因素,传输中可能出现差错
如何实现差错控制的呢?主要是检错编码和纠错编码
检错编码包括奇偶校验码和循环冗余码,其中CRC码只使用检错功能,出错就直接丢弃;循环冗余码使用模2除运算余数即为冗余位。
纠错编码主要是海明码,可以纠正单比特错误,发现双比特错误,海明码纠错d位,需要码距为2d+1的编码方案,检错d位,需要码距为d+1。
介质访问控制
在广播信道中,可能有很多结点之间需要传送数据,但是同一个信道同时如果有多对结点在传送数据且不加处理就会发生冲突,因此就需要介质访问控制。用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制子层。
##信道划分介质访问控制
实质是通过分时、分频、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点间通信的互不干扰的子信道,实际上就是把广播通信转变为点对点通信。
频分多路复用(FDM)
时分多路复用(TDM)
波分多路复用(WDM):利用光纤中信号波长的不同
码分多路复用(CDM):采用不同的编码来区分各路原始信号
码分多址(CDMA Code Division Multiple Access),将每个比特时间再划分为m个短的时间槽,称为码片,发送1时,站点发送它的码片序列;发送0时,站点发送该码片序列的反码,多站点同时发送时,要求各个站点的码片序列相互正交。实质就是让每个站点码片分为不同相互正交的向量,接收端收到后再通过一定计算拆成各个分量。
随机访问介质访问控制
不采用集中控制的方式解决发送信息的次序问题,所有用户能够根据自己的意愿发送信息,占用信道全部速率。又称争用型协议。实质是广播信道转化为点对点信道。
ALOHA协议
纯ALOHA协议:
不进行检测就发送数据,超时没收到确认就是发生了冲突,随机等待一定时间后重新发送,直到发送成功
时隙ALOHA协议:
将时间划分为一段段等长的时隙,只有在每个时隙开始时才能发送一个帧,避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。
CSMA协议(Carrier Sense Multiple Access)
每个站点发送前先侦听一下共用信道,发现信道空闲后再发送。
根据侦听方式和侦听到信道忙后的处理方式不同,CSMA协议分为三种。
信道状态 | 1-坚持 | 非坚持 | p-坚持 |
---|---|---|---|
空闲 | 立即发送数据 | 立即发送数据 | 以p概率发送数据,以1-p概率推迟到下一个时隙 |
忙 | 等待,坚持侦听,直到空闲,冲突则随机等待一段时间后重新开始侦听 | 放弃侦听,等待一个随机时间后再侦听 | 持续侦听,直至信道空闲 |
特点 | 容易冲突,受传播延迟影响大 | 降低了冲突概率,但是增加了平均延迟 | 前面两种的折中方案 |
CSMA/CD协议(Carrier Sense Multiple Access with Collision Dection)
CSMA协议的改进方案,适用于总线型网络或半双工网络环境,如以太网。
先听后发,边听边发,冲突停发,随机重发
经过两倍的传输时延就额可以直到发送的帧没有发生碰撞,2τ称为争用期。
最小帧长=总线传播时延*数据传输速率 *2;
二进制指数退避算法(用于解决碰撞问题):
k=min[重传次数,10],从[0,1,…,2k]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即2rτ,重传16次后说明网络太拥挤,认为此帧无法发出,抛弃此帧并向高层报错
CSMA/CA协议
适用于无线局域网
无线局域网并非所有站点都能听见对方,存在隐蔽站问题,且无线介质上信号强度动态变化范围很大,难以实现碰撞检测。所以把碰撞检测改为碰撞避免。
在发送数据时广播告知其他结点,让其他结点在某段时间内不要发送数据
CSMA/CD与CSMA/CA区别
- CSMA/CD可以检测冲突但无法避免;CA不能检测只能尽量避免
- CSMA/CD用于总线型以太网,CA用于无线局域网等
- 检测方式不同,CD通过电缆中电压的变化来检测,CA采用能量检测、载波检测和能量载波混合检测等
局域网
局域网(LAN)是指在一个很小的地理范围内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质相互连接起来,组成资源和信息共享的计算机互联网络。
局域网特性主要由三个要素决定:拓扑结构、传输介质、介质访问控制方式。
常见的局域网拓扑结构:星形、环形、总线型、星形和总线型结合的复合型结构。
传输介质:双绞线、铜缆、光纤
介质访问控制方法:CSMA/CD、令牌总线和令牌环,前两种用于总线型,令牌环用于环形局域网。
以太网与IEEE 802.3
①无连接工作方式,不编号不要求接收方确认,提供的是不可靠服务,对于差错纠正由高层完成
②发送的数据用曼彻斯特编码信号
以太网的传输介质:
如10BASE-T,传输介质为非屏蔽双绞线,拓部结构为星形,星形网中心为集线器,但逻辑上是总线网,属于一个冲突域。
介质访问控制(MAC)地址:每块网卡出厂自带,唯一,工作在物理层,控制着主机对介质的访问。
MAC帧:8位前导码+6字节地址+2地址类型+45~1500字节数据+0 ~46填充+4字节FCS校验码
IEEE 802.1
有固定基础设施无线局域网:规定无线局域网的最小构件是基本服务集BSS,一个基本服务集包括一个基站和若干移动站。
无基础固定设施移动自组织网络:又称自组网络。各结点之间地位平等,中间结点都为转发结点,都具有路由器的功能
令牌环网
令牌沿着环形总线在入网结点计算机间依次传递,实际上是一个特殊格式的MAC控制帧,不包含信息,确保在同一时刻只有一个结点能够独占信道。
物理上星形拓扑结构,逻辑上环形拓扑结构。
广域网
广域网是指覆盖范围很广的长距离网络。
互联网可以连接不同类型的网络,通常使用路由器来连接
广域网 | 局域网 | |
---|---|---|
覆盖范围 | 很广,通常跨区域 | 较小,通常在一个区域内 |
连接方式 | 结点点对点连接 | 多点接入技术 |
OSI参考模型层次 | 物理层、数据链路层、网络层 | 物理层、数据链路层 |
强调 | 资源共享 | 数据传输 |
PPP协议(Point-to-Point Protocol)
使用串行线路通信的面向字节的协议,应用在点对点连接中。
有三个组成部分:
- 链路控制协议
- 网络控制协议
- 一个将IP数据封装到串行链路的方法
PPP协议有以下特点
- 提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC检验)
- 仅支持点对点的链路通信,不支持多点线路
- PPP只支持全双工链路
- PPP的两端可以运行不同的网络层协议,但仍然可使用同一个PPP进行通信
HDLC协议(High-level Data Link Control)
高级数据链路控制是ISO指定的面向比他的数据链路层协议。采用0比特插入法,全双工通信,采用CRC校验