数据链路层
数据在主机之间的流动: 主机->路由器->主机 路由器只需要具有3层结构:链路层,物理层,网络层。
可以想象,数据只在数据链路层中传输。
链路:一个节点到相邻节点的一段物理线路。中间没有其他任何交换节点。
数据链路层的三个重要问题:封装成帧 差错检测 可靠传输
封装成帧的过程:应用层 ->应用层协议数据单元。 运输层->运输层协议首部 。 网络层->网络层协议首部。 数据链路层->帧头和帧尾。
最后一个过程,称作为 封装成帧。目的是为了以帧的单元传输数据。
差错检测:帧在传送过程中出现误码
接收方主机如何判断?检错码
可靠传输:收到错误信息后,如果向上提供的是不可靠服务,那么就会丢弃该帧,不做其他任何操作。如果向上提供的是可靠服务,那么就会确保接收方主机接收到这个帧的正确副本。
尽管误码不能完全避免,但是如果能够实现发送方发送什么,接收方就能收到什么,那么就称为可靠传输。
使用广播信道的数据链路层
将帧的目的地址封装在帧中一起传输。
在共享式局域网中,以太网中传输的帧会不可避免地发生碰撞,那么就需要一种特殊的协议:CSMA/CD 载波监听多点接入/碰撞检测。
交换式局域网
封装成帧
对于一个比特流,如何判断哪些地方是一个帧?
A:帧头和帧尾的一个作用就是帧定界
PPP帧的格式中,帧头和帧尾中各有一个字节的标志位
MAC帧格式中,并没有包含帧定界标志。接收方要提取出以太网帧,物理层会添加8个字节的前导码。同时,MAC地址会有96比特帧间间隔时间。因此MAC帧不需要帧结束定界符。
前导码构成:7字节的前同步码以及1字节的帧开始定界符。
透明传输
数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
有时候会碰到数据和帧定界符相同的问题:
转义字符是一种特殊的字符,十进制值为27,通常写作ESC
解决方案:数据链路层会对发送过来的数据进行扫描,每发现一个帧定界符,就会加上一个转义字符。
面向字节的物理链路使用字节填充进行透明传输。面向比特的物理链路使用比特填充的方法进行透明传输。
例题:HDLC协议对0111110001111110组帧后对应的比特串为:011111000011111010
该题采用比特填充的方式进行透明传输,在5个连续的1后填充0。
为了提升帧的传输效率,应该使得帧的数据部分的长度尽可能大一些。考虑到差错因素,有最大传送单元MTU
差错检测
比特差错:0变成1,1变成0
BER误码率:传输错误的比特的比例。
差错检测码:检测是否出现比特差错,例如MAC帧的帧尾4字节FCS,和PPP帧的2字节FCS字段。
奇偶校验:1为奇校验,2为偶校验
传输过程中产生一位误码,可以检测,若2位不能检测。 因为漏检率比较高,所以一般不用这种方法。
循环冗余校验 CRC 1.构造被除数。 2.构造除数 3.做除法 4.检查余数 余数的位数应该与生成多项式的最高位数相同,不同的话就应该在前面补0 将余数添加在待发送信息的后面就可以发送了。
例如:给出待发送信息101001,生成多项式为1101,计算得到被除数是101001000,除数是1101,然后做除法,得到余数1,并且补余数得到001,最后得到发送信息101001001。
例如:给出接收信息为101101001,生成多项式1101,判断是否误码
A:将接收信息删除校验位得到101101,余数为001。将110101加上三个0得到110101000,与1101做除法,得到余数101。发送信息应该是1101101101,有错误。
第二种方法:接收到的信息除以生成多项式系数得到余数,为0则正确。
可靠传输
使用差错检测计数,可以检测是否出现了误码。
不可靠传输服务:仅仅丢弃。可靠传输:想办法实现发送端发送什么,接受端就收到什么。
可靠传输不仅仅局限于数据链路层,其他各层均可实现可靠传输。
分组丢失,分组重复,分组失序是三种非数据链路层的错误
可靠传输实现机制
停止等待协议SW:
发送方发送数据分组,接收方进行接受并且确认没有误码,发送回确认分组,简称为ACK。发送方接受完ACK后,才能发送data。若接收方收到的分组产生误码,那么就会发回否认分组,简称NAK。发送方接收到否认分组后,会立刻重传该数据分组。发送方每次发送完一个分组后,不能直接删除,直到收到确认分组和否认分组才能决定是否删除。
但是,如果data在传输过程中丢失了,那么就会死机。为了解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器,若到了重传时间,而仍然没有收到NAK或ACK,那么就重传数据分组,称为超时重传。
如果确认分组在发送过程中丢失了,那么发送方会重新发送原来的data,为了防止分组重复这种传输错误,必须给每个分组带上序号。要保证每个数据和上个数据是逻辑不同的两组数据,就要加上一个bit的序号0或者1,就可以判断了。 接收方收到重复的数据后,会把该数据丢弃,同时重新发送ACK。
确认分组也应该进行编号,具体理由过于复杂。是确认迟到导致的重复确认的问题。数据链路层实现停止等待协议不需要给ACK分组编号。
超时计时器设置的重传时间应仔细选择。一般可以设置为略大于从发送方到接收方的平均往返时间。
数据链路层中,比较容易确定,而在传输层中不容易。
信道利用率:T=td+rtt+ta U=Td/td+rtt+ta。rtt计算:给出信道长度2000km,那么rtt计算就是2000000/2*10^8 *2=20ms。2x10^8为光线内光速。一般忽略ta
当rtt远大于td时,信道利用率非常低,例如卫星链路。
回退N帧协议GBN
采用流水线传输可以提高信道利用率
假设采用三个bit给分组编号,即0~7 发送窗口尺寸设置为WT,对于本例,尺寸为(1~7] 若WT为1,那么是停止等待协议。接收窗口Wr的取值wr=1。
累加确认:即使确认分组丢失,也可能不必重传。
有差错的情况:发送方收到了重复的确认,就知道之前发送的数据分组出现了差错,于是就可以不等超时计时器立刻重传。
为什么wt不取8?例如将wt取为8时,接收方发送回ack7,ack7在过程中丢失,那么超时重新输入后,发送方会重新发送这8个数据包,接收方无法判断这是新的数据包还是旧的。
回退N帧协议的工作过程中包括滑动窗口,因此也能称为是滑动窗口协议。
信道质量不好时,速度不比停止等待协议高。
选择重传协议SR
发送窗口尺寸wt大小范围(1,2^(n-1)] 接收窗口尺寸wr必须满足 1<wr<=wt 若wr=1,与GBN相同
发送方每收到一个按序ack就会往后滑动一次。收到一个非按序确认,那么不进行滑动。当发送方滑动窗口内的数据有超时时,发送方发送该数据,直到收到全ack后向后滑动n个位置。
若范围不正确,就会发生分组重复这种传输差错。
点对点协议PPP point to point protocol
目前使用最广泛的点对点数据链路层协议。
主要包括三部分:封装成帧,链路控制协议LCP,网络控制协议NCPs
帧格式
首部4个字段,尾部2个字段。
透明传输
面向字节的异步链路:插入转义字符。 面向比特的同步链路:比特填充法
媒体接入控制
共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,即媒体介入控制MAC
媒体接入控制分为2类分别为静态和动态。静态分为频分多址,时分多址,码分多址。动态接入控制分为受控接入,随机接入。受控接入分为集中控制和分散控制。
静态通常在无线网络的物理层中使用,而不是在数据链路层。
静态划分信道
信道复用
信道复用是一种重要的概念,复用就是通过一条物理线路同时传输多路用户的信号。具有复用器和分用器之分。复用器负责将不同路的信号集成,分用器负责将它们分开。
分类:频分复用FDM 时分复用TDM 波分复用WDM 码分复用CDM
听不懂
动态接入控制
随机接入
载波监听多址接入/碰撞检测 CSMA/CD
多址接入MA 多个站连接在一个总线上,竞争使用总线。
载波监听CS 每个站在发送帧之前要先检测一下总线上是否有其他站点在发送帧。
碰撞检测CD 每个正在发送真的站点边发送边检测碰撞。
一个站点要发送帧 首先进行载波监听,发现有96bit的空闲时间后 就可以发送帧了。假设另一个站点也要发送帧,发现总线忙,要一直监听,发现空闲后发送帧,一边发送帧一边还要检测碰撞。假设主机C此时也发送了信号,那么就会发生碰撞,C会因为检测到碰撞,规避一段随机事件。
争用期(碰撞窗口)
最小帧长:以太网规定 10Mpbs最小帧长是64字节 即512比特。如果发送的数据非常少,那么必须加入填充字节。最小帧长计算公式:争用期*数据传播速率。
最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇碰撞。 如果在争用期内没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞。如果争用期内(发送64字节)检测到碰撞,就立即停止发送,此时已经发送出去的数据一定小于64字节,因此凡是小于64字节的帧都是由于碰撞而异常终止的无效帧。
最大帧长:MAC帧最大长度是1518字节。 802.1Q帧(插入vlan标记)为1522字节
退避时间计算方法:截断二进制指数退避算法
退避时间=基本退避时间2tao*随机数r r从(0~2^k-1随机取一个数)k 从重传次数和10中取小者。
当重传达到16次仍然不成功,就丢弃该帧并且报告。
tao为端到端传播时延。
极限信道利用率的计算公式:t0/to+tao。
无线局域网使用的协议:CSMA/CA
无线局域网仍然可以使用CSMA,但是不能使用CD。因为无线信道的传输条件特殊,无线网卡上接收到的信号强度往往会远远小于发送信号。同时,存在隐蔽站问题。
CA 碰撞避免功能 802.11标准还使用了数据链路层确认机制停止等待协议来保证正确接收。不同于CSMA/CD协议的退避算法,当要发送帧的站点检测到信道从忙态转变为空闲时,都要执行退避算法。
规定所有的站在发送完成后,必须再等待一段帧间间隔时间才能发送下一帧。
CSMA/CA协议的信道预约和虚拟载波监:CSMA/CA进行信道预约的方法是交换RTS和CTS帧
MAC地址 IP地址 以及ARP协议
mac地址
mac地址时以太网的mac子层使用的地址。->数据链路层。
点对点信道的数据链路层不需要使用地址。使用广播信道的数据链路层必须使用地址来区分各主机。
每个主机发送的帧中必须携带标识发送主机和接收主机的地址。
·因为MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。有时候 MAC地址也被称为物理地址,但是不属于物理层的范畴。
严格来说,MAC地址是对网络上各个接口的唯一标识,而不是对设备的唯一标识。
MAC地址的表示方法:四个比特为一组组成16进制,共6组 例如windows系统MAC地址表示方法: 00-0C-CF-93-8C-92
单播MAC地址:发送目标为目的MAC地址 广播MAC地址:发送目标为全F(广播帧) 多播MAC地址:若该16进制数不能整除2,那么就是多播地址。每个机器都具有一个多播组列表,每当收到多播帧时,都会进行对比校验从而确认自己是否接收该数据。
IP地址
IP地址属于网络层的范畴。在此声明是因为大多数网络应用中 MAC地址和IP地址都在使用。他们之间有很多关系。
MAC地址不能区分不同网络,而IP地址可以。MAC地址在发送的过程中一定要相邻转发。源IP地址和目的IP地址传送数据过程中全程不变。
ARP协议
如何通过IP地址找到MAC地址?ARP协议 地址解析协议ARP
每台主机都会有一个ARP高速缓存表。ARP请求报文:封装在MAC帧中,目的地址为广播地址。其他主机都能收到该广播帧,交给上层处理。上层解析ARP请求报文后,发现询问的IP地址时自己的IP地址,那么会把B的IP地址和MAC地址记录到自己的ARP高速缓存表中,会往回发送单播帧。
ARP协议只能在一个网络中使用。
集线器和交换机的区别
·使用集线器的以太网在逻辑上仍是一个总线站,各站共享总线资源,使用的还是CSMA/CD协议。
·集线器只工作在物理层。
·集线器一般都有少量的容错能力和网络管理功能。