计算机网络 - 数据链路层
1、 封装成帧
封装成帧:是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧;帧头和帧尾中包含有重要的控制信息。帧头和帧尾的作用之一就是帧定界
透明传输:是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样;面向字节的物理链路使用字节填充(或字符填充)的方法实现透明传输;面向比特的物理链路使用比特填充的方法实现透明传输
为了提高帧的传输速率,应当使帧的数据部分的长度尽可能的大些
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上线,即最大传送单元MTU(Maximum Transfer Unit)
2、 差错检测
检错码只能检测出帧在传输过程中出现了差错,但不能定位错误,因此无法纠正错误。要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行向前纠错,但纠错码的开销比较大,在计算机中比较少使用
奇偶校验:在末尾添加0或1 使得比特流中1的个数为奇数或偶数 在接收方在进行检测奇偶,但如果遇到奇偶性没有更改则无法正确判断
循环冗余校验(CRC):收发双方约定好一个生成多项式G(X),发送方基于待发送数据和生成多项式计算出差错检测码(冗余码),将其添加到带传输数据的后面一起传输,接收方通过生成多项式来计算收到的数据是否产生了误码。(余数不为0产生了误码)
3、 可靠传输-停止等待协议SW(Stop-and-Wait)(ARQ协议)
接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传,但对于误码率较高的点对点的链路,为使其发送方尽早重传,也可给发送方发送NAK分组,为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等性,只需要使用1比特编号就够了,即0或1。为了让发送方能够判断所收到的ACK分组是否重复,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样,数据链路一般不会出现ACK分组迟到的情况,因此在数据层实现停止-等待协议可以不用给ACK发组编号
超时计时器设置的重传时间应仔细选择。一般选择将重传时间选为略大于”从发送方到接收方的平均往返时间“;在数据链路层点对点的往返时间比较确定,重传时间比较好设定,然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易
当往返时间RTT远大于数据帧发送时延Td时(例如使用卫星链路),信道利用率极低
若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低
4、 可靠传输-回退N帧协议GBN(Go-Back-N)
接收方的接收窗口尺寸Wr的取值范围Wr = 1,因此接收方只能按序接收数据分组
接收方只接受序号落在接收窗口内且无误码的数据分组,并且将滑动窗口向前滑动一个位置,与此同时给发送方发回相应的确认分组,为了减少开销。接收方不一定每收到一个按序到达且无误码的数据分组就给发送方发回一个1确认分组。而是可以连续收到好几个按序到达的且无误码的数据分组后(有具体实现决定),才针对最后一个数据分组发送确认分组,这称为累计确认。或者可以在自己有数据分组要发送时才对之前按序接收且无误码的数据分组进行捎带确认
接收方收到未按序到达的数据分组,除丢弃外,还要对最近按序接收的数据分组进行确认。
回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议
在协议的工作过程中发送窗口不断向前滑动,因此这类协议又称为滑动窗口协议
由于回退N帧协议的特性,当通信的质量不好时,其信道利用率并不比停止-等待协议高。
5、 可靠传输-选择重传协议SR(Selective Request)
发送方:发送窗口尺寸Wt的取值范围是1 < Wt < 2^(n-1),其中n是构成分组序号的比特数量,Wt = 1 与停止-等待协议相同。Wt > 2^(n-1) 接收方无法分辨新旧数据分组
发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去
发送方只有按序接收到对己方发送的数据分组确认时,发送窗口才向相应的滑动,若收到未按序到达的确认分组时,对其进行记录,以防止其相应的数据分组的超时重发,但发送窗口不能向前滑动
接收方:接收窗口尺寸Wr的取值范围是 1 < Wr <= Wt, We = 1 与停止等待协议相同,Wr > Wt 无意义
接收方可接收未按序到达但没有误码并且序号落在接收窗口内的数据分组,为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,需要对每个正确接收到的数据分组进行逐一确认
接收方只有在按序接收数据分组后,接收窗口才能向前相应滑动。
6、 媒体接入控制-动态接入控制-随机接入-CSMA/CD
CSMA/CD协议的工作原理:多点接入MA:多个主机连接在一条总线上,竞争使用总线。载波监听CS:发送帧前先检测总线,若总线空闲96比特时间则立即发送,若总线忙,则持续检测总线直到空闲时间9比特时间后在重新发送。碰撞检测CD:边发送边检测碰撞,若检测到碰撞则立即停止发送,退避一段时间后在重新发送。上述过程可比喻为:先听后说、边听边说、一旦冲突、立即停说、等待时机、重新再说
使用CSMA/CD协议的以太网争用期(碰撞窗口):发送帧的主机最多经过以太网端到端往返传播时延2t这么长时间,就可检测到本次传输是否发生了碰撞,2t称为争用期。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。以太网规定2t的取值为512比特时间,对于10Mbps的以太网,2t为51.2us
使用CSMA/CD协议的以太网的最小帧长和最大帧长:最下帧长=争用期信道带宽(数据发送率),对于10Mbps的传统以太网其争用期为51.2us,因此最小帧为512b,即64字节
以太网的最小帧长确保了主机可在帧发送完成之前就检测到帧的发送过程中是否遭遇了碰撞,如果检测到碰撞则停止发送帧的剩余部分退避一段随机事件后再重新发送该帧
为了防止主机长时间占用总线,以太网的帧也不能太长,以太网v2的MAC帧最长为1518字节,插入VLAN标记的802.1Q帧最大长度为1522字节
CSMA/CD协议使用的截断二进制指数退避算法:随即退避时间=争用期2t随机数r,妻子r从离散的整数集合(0,1,...(2^k - 1)中随机取出一个,k= min[重传次数,10]
当重传次数16此仍不能成功时,这表明同时打算发送的数据的主机太多以至于连续发生碰撞,则丢弃该帧并向高层报告
以太网信道利用率:S = 1/(1+a), a = t/T 参数a的值尽量小,以提高信道利用率,以太网端到端的距离受到限制,以太网帧长度应尽量长些
7、 媒体接入控制-动态接入控制-随机接入 载波监听多址接入/碰撞避免 CSMA/CA
802.11无线局域网在MAC层使用CSMA/CA协议,以尽量减小碰撞发送的概率。不能使用CSMA/CD协议的原因在于无线局域网中无法实现碰撞检测在使用停止等待协议来实现可靠传输
为了尽可能的比卖你各种可能的碰撞,CSMA/CA协议采用了一种不同于CSMA/CD协议的退避算法。当要发送帧的站点检测到信息从忙态转为空闲时,都要执行退避算法
802.11标准规定,在所有的站在完成发送后,必须在等待一段时间间隔才能发送下一帧。帧间间隔的长短取决于该站要发送的帧的优先级
在802.11无线局域网MAC帧首部中有一个持续期字段,用来填入在本帧结束后还要占用信道多久的时间,其他站点通过该字段可实现虚拟载波监听
802.11标准允许要发送数据的站点对信道进行预约,在即将发送帧之前先发送请求发送RTS帧。在收到响应允许发送CTS帧后,就可以发送数据帧。