小白笔记
链路层和局域网目标:
·理解数据链路层服务的原理:
·检错和纠错
·共享广播信道
·链路层寻址
·LAN:以太网、VLANs
·可靠数据传输,流控制:done!
·实例和各种链路层技术的实现
从网络层到达链路层,我们自然而然地知道分组时时然后通过构成端到端通信路径的各段链路的。为了在单段链路上传输,网络层的数据报是怎样被封装进链路层帧的呢?沿次通信路径,不同的链路能够采用不同的链路层协议吗?在广播链路中传输碰撞是如何解决的?在链路层存在编址吗?链路层编址域网络层编址如何一起运行呢?交换机和路由器之间到底有哪些差异?
在链路层中有两种截然不同类型的链路层信道。第一种类型是广播信道,这种信道用于连接有线局域网、卫星网和混合光纤同轴电缆接入网中的多台主机。因为许多主机与相同的广播信道连接,需要所谓的媒体访问协议来协调帧传输。在某些场合中,可以使用中心控制器来协议传输。第二种类型的链路层信道是点对点通信链路,这在诸如长距离链路连接的两台路由器之间。
多点连接的链路存在着问题,我发所有人都可以收,那他发所有人也可以收,那就存在一个问题,如果你发他也发的话可能会发生碰撞,那碰撞了怎么办,即存在介质访问控制问题。我发那谁收呢?就是编址问题,区分不同的网卡嘛。
网络节点的连接方式
·一个子网中的若干节点是如何连接到一起的:
·点到点连接
·多点连接:·共享型介质 ·通过网络交换机
数据链路层和局域网
·WAN:网络形式采用点到点链路
·带宽大、距离远(延迟大)>带宽延迟积大
·如果采用多点连接方式
·竞争方式:一旦冲突代价大
·令牌等协调方式:在其中协调节点的发送代价大
·点到点链路的链路层服务实现非常简单,封装和节封装
·LAN一般采用多点连接方式
·连接节点非常方便
·接到共享介质上(或网络交换机),就可以连接所有其它节点
·多点连接方式网络的链路层功能实现相当复杂
·多点接入:协调各节点对共享性介质的访问和使用
·竞争方式:冲突之后的协调
·令牌方式:令牌产生,占有和释放等
广域网一般采用点到点的连接方式,局域网一般采用多点连接的方式。
链路层:导论
链路层解决的是什么问题呢?解决节点在一个子网的内部怎么样把分组封装的帧传到另外一个节点
一些术语:
·主机和路由器是节点(网桥和交换机也是):nodes
·沿着通信路径,连接个相邻节点通信信道的是链路:links
·有线链路
·无线链路
·局域网,共享性链路
·第二层协议数据单元帧,封装数据报。(帧即链路层的数据单元)
数据链路层负责从一个节点通过链路将(帧中的)数据报发送到物理相邻节点
链路层:上下文
·数据报(分组)在不同的链路上以不同的链路协议传达:
·第一跳链路:以太网
·中间链路:帧中继链路
·最后一跳802.11
·不同的链路协议提供不同的服务
·比如在链路层上提供(或没有)可靠数据传达
比如一个人从深圳去北京故宫,先坐高铁去广州,再坐飞机去北京,再打车去故宫。
这个人就相当于数据报,交通段就相当于通信链路,交通模式就相当于链路层协议,票务代理就相当于路由算法。
链路层服务
·成帧,链路接入:
·将数据报封装在帧中,加上帧头帧尾部
·如果采用的是共享性介质,通信接入获得信道访问权
·在帧头使用“MAC”(物理)地址来标示源和目的,不同于IP地址
·在相邻两个节点完成可靠数据传递
·已经学过了(在第三章)
·在低出错率的链路上(光纤和双绞线电缆)很少使用
·在无线链路经常使用:出错率高
·为什么在链路层和传输层都实现了可靠性
·在相邻节点间进行可靠的转发
·我们已经学过(见第三章)
·在低差错链路上很少使用(光纤,一些双绞线)
·出错率低,没有必要在每一个帧中做差错控制的工作,协议复杂
发送端对每一帧进行差错控制编码,根据反馈做相应的动作
接收端进行差错控制解码,反馈给发送端(ACK,NAK)
·在本层放弃可靠控制的工作,在网络层或者是传输层做可靠控制的工作,或者根本就不做可靠控制的工作
·在高差错链路上需要进行可靠的数据传达
·高差错链路:无线链路:
·为什么要在采用无线链路的网络上,链路层做可靠数据传输工作:还要在传输层做端到端的可靠性工作?
·原因:出错率高,如果在链路层不做差错控制工作,漏出去的错误比较高,到了上层如果需要可靠控制的数据传输代价会很大
我们现在讲的是一般的链路层服务,不是所有的链路层都提供这些服务,一个特定的链路层只是提供其中一部分的服务。
有的链路层提供的是可靠服务,有的链路层不提供可靠的服务,那么在哪些网络中提供可靠服务?哪些网络中提供不可靠服务?是这样的,在网络当中,链路本身就比较可靠,出错率比较低,链路层基本上就不实现可靠服务,可靠服务你还得每一帧做差错控制编码,对方还要差错控制解码,还要谢谢我,我这边谢谢后还要相应的处理机制要缓存,而出错率比较低,出错的可能性比较小,我为什么要为了这种非常非常小的可能性而发送每一帧我都要付出那么大的可靠传输代价,没有必要嘛,如以太网的就是不可靠。
链路层服务(续)
·链路控制:
·使得相邻的发送和接收方节点的速度匹配
·错误检测:
·差错由信号衰减和噪声引起
·接收方检测出的错误:通知发送端进行重传或丢弃帧
·差错纠正:
·接收端检查和纠正bit错误,不提供重传来纠正错误
·半双工和全双工:
·半双工:链路可以双向传输,但一次只有一个方向
(全双工指的是两个方向可以同时那边发这边收,而且发的同时还可以收)
链路层在哪里实现?
·在每一个主机上(也在每个路由器上,交换机的每个端口上)
·链路层功能在“适配器”上实现或者在一个芯片组上
·以太网卡,802.11网卡;以太网芯片组
·实现链路层和相应的物理层功能
·接到主机的系统总线上
·图中显示了尽管大部分链路层是在硬件中实现的,但部分链路层是在运行与主机CPU上的软件中实现的,所以链路层是软件和硬件的结合体,即此处是协议栈中软件与硬件交接的地方。
适配器通信:
·发送方:·在帧中封装数据报 ·加上差错控制编码,实现RDT和流量控制功能等
·接收方:·检查有无出错,执行rdt和流量控制功能等 ·解封装数据报,将至交给上层
错误检测
EDC=差错检测和纠正位(冗余位)
D=数据由差错检测保护,可以包含头部字段
错误检测本身100%可靠的!
·协议会漏检一些错误,但是很少
·更长的EDC字段可以得到更好的检测和纠正效果
奇偶校验
加个校验位,使得整个出现1的个数是奇数还是偶数,是奇数则奇校验,出现偶数则偶校验。
·单bit奇偶校验:检测单个bit级错误
·2维奇偶校验:检测和纠正单个bit错误
校验和:CRC(循环冗余校验)
·强大的差错检测码
·将数据比特D看成是二进制的数据
·生成多项式G:栓发协商r+1位模式(r次方)
·生成和检查所使用的位模式
·目标:现在r位CRC附加位R,使得
·<D,R>正好被G整除
·接收方知道G,将<D,R>除以G,如果非0余数:检查出错误!
·能检出所有少于r+1位的突发错误
·实际中广泛使用(以太网、802.11WIFI、ATM)
CRC性能分析
·突发错误和突发长度
·CR检错性能描述
·能够检查出所有的1bit错误
·能够检查出所有的双bits错误
·能够检查出所有长度=r或者<r位的错误
·出现长度为r+1的突发式错误,检查不出的概率是2的r-1次方分之一
·出现长度大于r+1的突发错误,检查不出的概率2的r次方分之一