数据链路层在物理层所提供服务的基础上向网络层提供服务,即将原始的、有差错的物理线路改进成逻辑上无差错的数据链路,从而向网络层提供高质量的服务。
3种基本服务:无确认的无连接服务、有确认的无连接服务和有确认的有连接服务。
主要功能:
帧定界:当两个主机互相传送信息时,网络层的分组必须封装成顿,并以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。首部和尾部中含有很多控制信息,这些信息的重要作用之一是确定帧的界限,即帧定界。
万一传送比特流出错了呢?那就得重传全部的比特流。而组帧的优点是,如果出错了,只需发送出错的帧即可,这相对于增加了帧同步、帧定界、透明传输问题是值得的。组帧也不能随意组合,要让接收方看得懂才可以,所以就需要依据一定的规则将网络层递交下来的分组组装成帧。
因为在网络中帧是以为最小单位进行传输的,所以接收端要正确地收到帧,必须要清楚该帧在一串比特流中是从哪里开始到哪里结束的=(因为接收端收到的是一串比特流有首部和尾部是不能正确区分的)。而分组(也称IP数据报)仅仅时包含在帧的数据部分,所以不需要加尾部来定界。
用一个特殊的字符来表示一帧的开始,然后用一个计数字段来表明该帧包含的字节数。当目的主机接收到该帧时,根据此字段提供的字节数,便可知道该帧的结束位和下一帧的开始位.
计数字段提供的字节数包含自身所占的一个字节。
缺点:如果计数字段在传输中出现差错,接收方就无法判断所传输帧的结束位,当然也无法知道下一帧的开始位,这样就无法帧同步了。由于此原因,字符计数法很少被使用。
比特填充的首尾标志法是使用01111110作为的开始和结束标志,似乎定界又解决了,但是如果顿数据部分出现了 01111110 怎么办?透明传输仍然是个问题。
不难发现01111110中有6个连续的“1”,只要数据检测到有5个连续的“1”,马上在其后插入“0”,而接收方做该过程的逆操作,即每收到5个连续的“1”,自动删除后面紧跟的“0”,以恢复原始数据。
物理编码违例法利用物理介质上编码的违法标志来区分帧的开始与结束,例如,在曼彻斯特编码中,码元1编码成高-低电平,码元0编码成低-高电平,而高-高和低-低电平的编码方式是无效的,可以分别用来作为帧的起始标志和结束标志。
通过一定的编码和解码,能够在接收端解码时检查出传输的错误,但不能纠正错误。常见的检错编码有奇偶校验码和循环冗余码(CRC)。
奇偶校验码就是在信息码后面加一位校验码
可见,当数据中有一位数据发生改变时,通过奇偶校验能够检测出来,但并不知道是哪一位出错了,如果数据中同时有两位数据发生了改变,此时奇偶校验是检测不到数据出错的,所以它的查错能力有限。
检错率极高、开销小、易实现
重要特性
设G(x)=1101(即r=3),待传送数据为M=101001(即m=6),写出发送的数据。
经除法运算后,得到商Q=110101,余数R=001(FCS),所以发送出去的数据为101001001(即M+FCS)
解题技巧
在接收端不但能检查错误,而且能纠正检查出来的错误
又称为汉明码,它是在信息字段中插入若干位数据,用于监督码字里的哪一位数据发生了变化,具有一位纠错能力。
假设信息位有 k 位,整个码的长度就是 k+r位;每一位的数据只有两种状态,不是1就是0,有r位数据就能表示出2r种状。如果每一种状态代表一个码元发生了错误,有 k+r 位码元,就要有 k 种状态来表示,另外还要有一种状态来表示数据正确的情况,所以2r-1>=k+r 才能检查一位错误,即**2r>=k+r+1**。例如,信息数据有4位,由2r>=k+r+1得r>=3也就是至少需要3 位监督数据才能发现并改正1位错
控制发送方发送数据的速率,使接收方来得及接收。
一个基本的方法是由接收方控制发送方的数据流。常见的有两种方式:停止-等待流量控制和滑动窗口流量控制
计算机网络的设计者采用了一种策略,这就是==“端到端的可靠传输”==。更具体些,就是在传输层使用面向连接的 TCP,它可保证端到端的可靠传输。只要主机B的TCP发现数据传输有差错,就告诉主机A将出现差错的那部分数据重传,直到这部分数据正确传送到主机B为止。而 TCP 发现不了数据有差错的概率是很小的。既可以使网络部分价格便宜和灵活可靠,又能够保证端到端的可靠传输。
只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
可靠传输机制包括停止-等待协议、后退 N 协议和选择重传协议。这3 种协议只是在发送窗口和接收窗口大小上有所差别
当接收窗口的大小为1时,一定可保证帧按序接收。
因为接收窗口为1,所以里面有一个唯一的序号,不管发送窗口一次性可以发送多少字节,接收窗口只选择接收窗口里的帧序号接收,只有等到该帧,接收窗口才往后移动,所以按照这样的顺序接收的帧一定是有序的。
如何实现可靠传输?
可靠传输是指发送方发送什么,接收方就收到什么。
可靠传输的方式:
使用确认和超时重传两种机制实现可靠传输的策略又称为自动请求重发(ARO)。
停止-等待协议的基本思想:发送方传输一个帧后,必须等待对方的确认才能发送下一帧。若在规定时间内没有收到确认,则发送方超时,并重传原始帧。
协议=技术+考虑不利因素——>停止-等待协议=停止-等待流量控制技术+不利因素
停止-等待协议中会出现的差错:
帧一般被分为数据帧和确认帧
若采用 n个比特对进行编号,其**发送窗口尺寸WT必须满足1
基本原理:发送方发送完一个数据后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。如果这时收到了接收方的确认帧,那么还可以接着发送数据帧。如果某个帧出错了,接收方只能简单地丢弃该帧及其所有的后续帧。发送方超时后需重发该出错帧及其后续的所有帧。由于减少了等待时间,后退N 协议使得整个通信的吞吐量得到提高。但接收方一发现错误帧,就不再接收后续的帧,造成了一定的浪费。
只要收到ACKn就认为前面n-1帧一定全部收到
WT≤ 2n-1,WR≤2n-1
当发送窗口取最大值时,WR=WT=2n-1(分情况都是发送窗口等于接收窗口,且等于 2n-1,因为这样可达到最大效率,记住就好)。此时,若 WT取大于2n-1的值,可能造成新、旧接收窗口重叠。
选择重传协议的基本思想:若一帧出错,则其后续帧先存入接收方的缓冲区中,同时要求发送方重传出错帧,一旦收到重传帧后,就和原先存在缓冲区的其余帧一起按正确的顺序送至主机。选择=重传协议避免了重复传输那些本来已经正确到达接收方的数据帧,进一步提高了信道利用率,但代价是增加了缓冲空间。
按序到达且没有被交付给主机的被放在接收缓存(接收窗口外的那一部分接收缓存,以下讲的接收缓存都是指这部分)里面(因为已经发送过确认了仅仅是等主机的应用程序来取),而不是接收窗口里面。那些不是按序到达的数据且没有错误的帧一定是要放在接收窗口里面,因为这些帧不能直接给主机,而放在接收缓存的帧是要给主机的,等到缺少的帧收到后,再一起放到接收缓存。
在计算机进程之间的通信过程中,广泛使用缓存。缓存就是在计算机的存储器中设置的一个临时存放数据的空间。发送进程将欲发送的数据先写入缓存,然后接收进程在合适的时机读出这些数据。
介质访问控制是为了解决——当共用信道的使用产生竞争,怎么能够更好地分配信道的使用权的问题。
多路复用技术:是实现信道划分介质访问控制的途径。多路复用技术能把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,从而提高了信道的利用率。
将一条信道分割成多条不同频率的信道,如果复用数增加,那么信道的带宽必须得增加。
每个子信道分配的带宽可以不相同(可联想人行道和机动车道是不一样宽的),但它们的总和一定不能超过信道的总带宽。在实际应用中,为防止子信道之间的于扰,相邻信道之间要加入“保护频带”(可联想人行道与机动车道、机动车道与机动车道之间的栏杆的作用)。
假设现在只有一个玩具,却有 10个小孩要玩,这时只能将一个固定的时间分割成10份10个小孩轮流玩这个玩具,即时分多路复用。
将一个固定的时间分割为数份,如果复用数增加,不需要加大信道带宽,只需将每个信道得到的时间缩小即可。
如果恰好某个时间轮到一个小孩玩了,但是这个小孩现在睡着了,这段时间岂不是就浪费了吗?没错,是浪费了,这时就需要改进时分复用,于是引入了统计时分复用。
如果现在该玩具轮到某个小孩玩,但是也睡着了,立刻跳过他,给下一个小孩玩,这样就基本可以保证玩具没有空闲时刻。可见每孩子下次轮到自己玩的时间都是不确定的,如果睡觉的人多了,很快就轮到了;如果睡觉为人少,就很慢。
统计时分复用是一种动态的时间分配,同时又是异步的(每个孩子玩玩具的时间周期是不固定的),所以统计时分复用又称为异步时分复用。而普通的时分复用就是同步时分复用(因为每个孩子都在一个固定的周期才能得到玩具,即使中间有孩子睡觉也要等)。
波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同频率(长)的信号,由于各路光的频率(波长)不同,因此各路光信号互相不干扰。最后,再用分波器将路波长不一样的光分解出来。
码分多路复用又称为码分多址(CDMA),它既共享信道的频率,又共享时间,是一种真正的动态复用技术。
每个站点都维持一个属于该站点的芯片序列,并且是固定的。假如站点 A 的片序列为00011011,则A站点发送00011011 表示发送比特1;而将 00011011 每位取反,即发送11100100表示发送比特0。习惯将芯片序列中的0写为-1,1写为+1,所以A站的芯片序列就是(-1 -1 -1 +1 +1 -1 +1 +1),一般将该向量称为该站的码片向量。
码分多路复用技术具有抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。CDMA 手机就使用了此技术。
随机接入的四种协议:ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议。
以上 4 种协议的核心思想是通过争用,胜利者才可以获得信道,从而获得信息的发送权。正因为这种思想,随机访问介质访问控制又多了一个绰号:争用型协议。
ALOHA协议
CSMA协议:每个节点发送数据之前都使用载波侦听技术来判定通信信道是否空闲。
CSMA/CD协议:带冲突检测的载波侦听多路访问协议
原理:在CSMA机制中,由于可能存在多个节点听到信道空闲并同时开始传送数据,从而造成冲突,但是即使冲突了,CSMA 协议也要将已破坏的发送完,使总线的利用率降低。种CSMA的改进方案是在发送站点传输的过程中仍继续监听信道,以检测是否存在冲突。如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在,那么就立即停止发送(推迟一个随机的时间再发送),并向总线上发一串阻塞信号用以通知总线上其他各有关站点,各有关站点接收到该阻塞信号,就不再发送数据了。
工作流程:每个站在发送之要先测一下总上是否有其他算机在发送数据,若有,则暂时不发送数据,以免发生冲突;若没有,则发送数据。计算机在发送数据的同时检测信道上是否有冲突发生,若有,则采用截断二进制指数类型退避算法来等待一段随机时间后再次重发。总体来说,可概括为“先听后发,边听边发,冲突停发,随机重发”。
争用期:以太网端到端的往返时延(用
表示,又称为冲突窗口或者碰窗口。只有经过争用期这段时间还没有检测到冲突,才能肯定这次发送不会发生冲突。
二进制指数后退算法解决了站点检测到冲突后继续等待的时间问题。
CSMA/CA协议:CSMA/CA 主要用在无线局域网中。它在CSMA 的基础上增加了冲突避免的功能。冲突避免要求每个节点在发送数据之前监听信道。如果信道空闲,则发送数据。发送节点在发送完一个后,必须等待一段时间(称为间间隔,检查接方是否发回帧的确认(说明CSMA/CA 协议对正确接收到的据进行确认)。收到确认,则表明无冲突发生;在规定时间内没有收到确认,表明出现冲突,重发该帧。
主要用在令牌环局域网中,目前使用得很少。
用户不能随机地发送信息,而是通过一个集中控制的监控站经过轮询过程后再决定信道的分配。典型的轮询访问介质访问控制协议就是令牌传递协议。
局域网(LocalAreaNetwork,LAN)是指一个较小范围(如一个公司)内的多台计算机或者其他通信设备,通过双绞线、同轴电缆等连接介质互连起来,以达到资源和信息共享目的的互联网络。
以太网是迄今为止世界上最为成功的局域网产品。
以太网采用总线拓扑结构,所有计算机都共享一条总线,信息以广播方式发送。为了保证数据通信的方便性和可靠性,以太网使用了 CSMA/CD 技术对总线进行访问控制。
考虑到局域网信道质量好,以太网采取了以下两项重要的措施以使通信更加简便。
以太网提供的服务是不可靠的服务,即尽最大努力交付,差错的纠正由传输层的TCP完成。
以太网有重传机制
局域网中的每台计算机都有一个唯一的号码,称为 MAC 地址或物理地址、硬件地址。
由于总线上使用的是广播通信,因此网卡从网络上每收到一个 MAC ,先要用硬件检查 MAC 中的MAC 地址,如果是发往本站的就收下,否则丢弃。
MAC帧组成部分
前导码:在的前面插入 8B,使接收端与发送端进行时钟同步。这8B 又可分为前同步码(7B)和开始定界符(1B)两部分。
MAC 不需要结束符,因为以太网在传送帧时,各之间必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面连续到达的比特流就都属于同一个MAC
目的地址、源地址:均使用48bit (6B)的MAC 地址。
地址字段包括目的地址和源地址两部分。处于前面的地址字段为目的地址,处于后面的地址字段为源地址。
目的地址字段有较多的规定,原因是一个帧有可能发送给某一个工作站,也有可能发送给一组工作站,还有可能发送给所有工作站。因此,将后面两种情况分别称为组播帧和广播帧。
类型:占 2B,指出数据域中携带的数据应交给哪个协议实体处理。
数据:占46~1500B。46 和1500 是怎么来的?首先,由CSMA/CD 算法可知,以太网帧的最短顿长为64B,而MAC 的首部和尾部的长度为18B,所以数据最短为64B-18B=46B。其次,最大的1500B 是规定的,没有为什么。
填充:前面讲过,由于CSMA/CD 算法的限制,最短长为 64B,因此除去首部18B如果数据长度小于 46B,那么就得填充,使得顿长不小于 64B。当数据字段长度小于 46B 时需要填充至46B;当数据字段长度大于或等于 46B 时,则无需填充。因此,填充数据长度的范围为0~46B。
校验码(FCS):占4B,采用循环余码,不但需要校验 MAC 的数据部分,还要校验目的地址、源地址和类型字段,但是不校验前导码。
802.3格式与DIX以太帧格式的不同之处:
一般,数据传输速率达到或超过100Mbit/s的以太网称为高速以太网。
以太网的特点
IEEE 802.11 是无线局域网的协议标准,包括IEEE 802.11a 和IEEE 802.11b 等 。
IEEE802.11标准中的物理层有以下3种实现方法。
MAC层在物理层的上面,包括两个子层,从下往上依次为:
由于用CSMA/CD 协议对无线局域网进行冲突检测花费过大,并且冲突检测到信道空闲后仍可能发生冲突,因此在无线局域网的 MAC 层中,使用的是带有碰撞避免功能的CSMA/CA 协议,同时还增加了确认机制。
在Token Ring中,节点通过环接口连接成物理环形。令牌是一种特殊的MAC 控制帧,帧中有一位标志令牌(忙/闲)。令牌总是沿着物理环单向逐站传送,传送顺序与节点在环中的排列顺序相同。
令牌环网中令牌和数据的传递过程:
指覆盖范围很广(远远超出一个城市的范围)的长距离网络。广域网由一些节点交换机以及连接这些交换机的链路组成。节点交换机将完成分组存储转发的功能。
互联网虽然覆盖范围也很广,但一般不称它为广域网。因为在这种网络中,不同网络(可以为局域网也可以为广域网)的“互连”才是其最主要的特征,它们之间通常采用路由器来连接。
广域网只是一个单一的网络,它使用节点交换机连接各主机而不是用路由器连接各网络。
局域网使用的协议主要在数据链路层,而广域网使用的协议主要在网络层。
PPP主要由以下3个部分组成:
一个将IP 数据报封装到串行链路的方法。
一个链路控制协议(LCP)。其用于建立、配置和测试数据链路连接,并在不需要时将它们释放。
一套网络控制协议 (NCP)。其中每个协议支持不同的网络层协议,用来建立和配置不同的网络层协议。
标志字段(F):首部和尾部各占1个字节,规定为Ox7E.
地址字段(A):占1个字节,规定为0xFF。
控制字段(C):占1个字节,规定为Ox03。
协议字段:占2个字节。例如,当协议字段为 0x0021 时,PPP 的信息字段就是 IP数据报:若为0xC021,则信息字段是 PPP 链路控制数据:若为0x8021,则表示这是网络控
制数据。
信息部分:占0-1500个字节。为什么不是46~1500 个字节?因为 PPP 是点对点的并不是总线型,所以无需采用 CSMA/CD 协议,自然就没有最短。另外,当数据部分出现和标志位一样的比特组合时,就需要采用一些措施来实现透明传输(字节填充法)。
检验序列(FCS):占 2个字节,即循环余码检验中的余码。检验区间包括地址字段、控制字段、协议字段和信息字段。
总结:
基本特点:
PPP帧和HDLC协议帧的区别
在物理层扩展局域网使用的是中继器和集线器。
缺点如下:
- 扩大了冲突域且总的吞吐量未提高。
- 不能互连使用不同以太网技术的局域网
在数据链路层扩展局域网使用的是网桥
网桥工作在数据链路层,其特点是具有过滤帧的功能。网桥至少有两个端口,每个端口与一个网段相连。网桥每从一个端口接收到一个帧就先暂存到缓存中。若该帧未出现差错,且欲发往的目的站 MAC 地址属于另一个网段(同一个网段无需转发,应该丢弃),则通过查找转发表,将该帧从对应的端口发出。因此,仅在同一个网段中通信的帧,不会被网桥转发到另一个网段中,因而不会加重整个网络的负担。
网桥的优点:
网桥的缺点:
透明网桥(选择的不是最佳路由)
“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。透明网桥是一种即插即用设备,意思是只要把网桥接入局域网,不用人工配置转发表,网桥就可以开始工作。
网桥如何进行自我学习?
源选径网桥(选择的是最佳路由)
在源选径网桥中,路由选择由发送数据帧的源站负责,网桥只根据数据帧中的路由信息对帧进行接收和转发。
为了发现合适的路由,源站先以广播方式向欲通信目的站发送一个发送帧。发送帧将在整个局域网中沿着所有可能的路由传送,并记录所经过的路由。当发送帧到达目的站时,就沿原来的路径返回源站。源站在得知这些路由后,再从所有可能的路由中选择一个最佳路由。
发送帧除了可以用来确定最佳路由,还可以用来确定整个网络可以通过的帧的最大长度。
透明网桥和源选径网桥中提到的最佳路由并不一定是经过路由器最少的路由,也可以是发送帧往返时间最短的路由,这样才能真正地进行负载平衡。因为往返时间长,说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走。
局域网交换机实质上是多端口网桥,它工作在数据链路层。局域网交换机的每个端口都直接与主机或集线器相连,并且一般都工作在全双工方式。当主机需要通信时,交换机能同时连通许多对的端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据,通信完成后断开连接。
交换机总容量计算方式:
交换机的两种交换模式:
局域网交换机的工作原理
与网桥类似,检测从某端口进入交换机的帧的源MAC 地址和目的 MAC 地址,然后与系统内部的动态查找表进行比较,若数据报的 MAC 地址不在查找表中,则将该地址加入查找表中,并将数据报发送给相应的目的端口。
当一块网卡发送信息时,只要有可能和另一块网卡冲突,则这些可能冲突的网卡就构成冲突域。
一块网卡发出一个广播,能收到这个广播的所有网卡的集合称为一个广播域。
一般来说,一个网段就是一个冲突域,一个局域网就是一个广播域。