任一链路层的基本服务都是将数据报通过单一通信链路从一个结点移动到相邻结点,但所提供的服务细节能够随着链路层协议的不同而变化。
链路层协议能够提供的可能服务
1、成帧。在每个网络层数据报经链路传送之前,几乎所有链路层协议都要将其用链路层帧封装起来。
2、链路接入。媒体访问控制(Medium Access Control, MAC)协议规定了帧在链路上传输的规则。
3、可靠交付。保证无差错地经链路层移动每个网络层数据报。链路层可靠交付服务通常用于易于产生高差错率的链路,例如无线链路,其目的是本地(也就是在差错发生的链路上)纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传。对于低比特差错的链路,包括光纤、同轴电缆和许多双绞铜线链路,链路层可靠交付被认为是一种不必要的开销,所以许多有线的链路层协议不提供可靠交付服务。
4、差错检测和纠正。当帧中的一个比特作为1传输时,接收方结点中的链路层硬件可能不正确地将其判断为0,反之亦然。这种比特差错是由信号衰减和电磁噪声导致的。因特网的运输层和网络层也提供了有限形式的差错检测,即因特网检验和。链路层的差错检测通常更复杂,并且用硬件实现。
链路层的主体部分是在网络适配器(network adapter)中实现的,网络适配器有时也称为网络接口卡(Network Interface Card, NIC)。位于网络适配器核心的是链路层控制器,它通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。所以说,链路层控制器的许多功能是用硬件实现的。
差错检测和纠正技术
差错检测和纠错技术越复杂,导致的开销就越大,这就是意味着需要更多的计算量及更多的差错检测和纠错比特。
三种检测差错的技术:
1、奇偶校验(一维奇偶校验十分简单,但未检出差错的几率较高;二维奇偶校验可检测差错,还可以纠正差错)
2、检验和方法(与运输层的检验和方法类似)
3、循环冗余检测(Cyclic Redundancy Check, CRC)
两种类型的网络链路
1、点对点链路。由链路一端的单个发送方和链路另一端的单个接收方组成。许多链路层协议都为点对点链路设计,如点对点协议(point-to-point protocol, PPP)和高级数据链路控制(high-level data link control, HDLC)协议。
2、广播链路。能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。广播信道通常用于局域网中。
多路访问问题
多路访问问题是如何协调多个发送和接收结点对一个共享广播信道的访问。多路访问协议用于解决这个问题。
在各种各样的网络环境下需要多路访问协议,包括有线和无线接入网,以及卫星网络。
因为所有结点都能够传输帧,所以多个结点可能会同时传输帧。当发生这种情况时,所有结点同时接到多个帧;这就是说,传输的帧在所有的接收方处碰撞了。通常,当发送碰撞时,没有一个接收结点能够有效地获得任何传输的帧。所以,涉及此次碰撞的所有帧都丢失了,在碰撞时间间隔中的广播信道被浪费了。如果许多结点频繁地传输帧,许多传输将导致碰撞,广播信道的大量带宽将被浪费掉。
所以,当多个结点处于活跃状态时,为了确保广播信道执行有用的工作,以某种方式协调活跃结点的传输是必要的。这种协调工作由多路访问协议负责。
为了共享计算机网络的广播信道,一个中心问题是确定哪个结点以及在什么时候获得向信道传输的权利。与人类活动的类比是:在一个会议上,确定谁以及在什么时候获得说话的权利。
多路访问协议
1、信道划分协议。采用时分多路复用(TDM)和频分多路复用(FDM),在所有共享信道的结点之间划分广播信道带宽的技术。
2、随机接入协议。一个传输结点总是以信道的全部速率进行发送、当有碰撞时,涉及碰撞的每个结点反复地重发它的帧(也就是分组),到该帧无碰撞地通过为止。在重发涉及碰撞的帧之前,会等待一个随机时延。涉及碰撞的每个结点独立地选择随机时延。随机接入协议又有以下几种:
- 时隙ALOHA。如果发送碰撞,该结点以p概率在后续的每个时隙中重传它的帧。缺点:有大量结点有很多帧要传输时,效率低,碰撞较高。
- ALOHA。如果发送碰撞,与“时隙ALOHA”处理相同;如果没发送碰撞,结点会等待一个帧传输时间后,以p概率传输该帧。缺点:效率比“时隙ALOHA”还差。
- 载波侦听多路访问(CSMA)。在“时隙ALOHA”和纯ALOHA中,一个结点传输的决定独立于连接到这个广播信道上的其他结点的活动,即一个结点不关心在它开始传输时是否有其他结点碰巧在创术,而且即使有另一个结点开始干扰它的传输也不会停止传输。载波侦听改善了以上的情况,实现了“说话之前先听”的规则——一个结点在传输前先听信达,如果来自另一个结点的帧正向信道上发送,结点则等待直到检测到一小段时间没有传输,然后开始传输。虽然能在传输前侦听信道是否空闲,但依然会发生碰撞。因为有信道传播时延,所以侦听信道是否空闲也未必准确。
- 具有碰撞检测的载波侦听多路访问(CSMA/CD)。在传输过程中,适配器(结点)会监视来自其他使用该广播信道的适配器的信号能量的存在。如果检测到有其他适配器的信号能量,中止传输,再等待一个随机时间量后重新传输。
3、轮流协议。有两种重要的轮流协议:
- 轮询协议。指定其中一个结点为主结点,主结点以循环方式轮询每个结点,每次轮询一个结点,主结点会向该结点发送一个报文,告诉它能够传输的帧的最多数量。优点:消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得高得多的效率。缺点:有轮询时延;如果主结点故障,整个信道变得不可操作。
- 令牌传递协议。有一个称为令牌的小的特殊帧在结点之间以某种固定的次序进行交换。就好像一群人围坐着,传递一个麦克风一样的场景,手里拿到麦克风的人有发言的机会。当一个结点收到令牌时,仅当它有一些帧需要发送时,它才持有这个令牌;否则,它立即把令牌转发给下一个结点。优点:效率高;缺点:一个结点故障可能使整个信道崩溃;或者一个结点偶然网际释放令牌,则必须调用某些恢复步骤使令牌返回到循环中。
链路层地址
为什么我们在网络层和链路层都需要地址呢?
1、局域网是为任意网络层协议而设计,而不只是用于IP和因特网。
2、如果适配器使用网络层地址而不是MAC地址,网络层地址必须存储在适配器的RAM中,并且在每次适配器移动(或加电)时要重新配置。
主机和路由器中的适配器(即网络接口)具有链路层地址。要注意的是,链路层交换机没有链路层地址,因为它的任务是在主机与路由器之间承载数据报,它透明地执行该项任务,主机或路由器不必明确地将帧寻址到其间的交换机。
链路层地址有几种不同的称呼:
1、LAN地址
2、物理地址
3、MAC地址
大多数局域网,MAC地址长度为6字节。尽管MAC地址被设计为永久,但可以做到用软件改变一块适配器的MAC地址。没有两块适配器具有相同的MAC地址。
地址解析协议(Address Resolution Protocol, ARP)
ARP将一个IP地址解析为一个MAC地址。在很多方面它和DNS类似,DNS将主机名解析为IP地址。
它们之间的重要区别是:DNS为在因特网中任何地方的主机解析主机名,而ARP只为在同一个子网上的主机和路由器接口解析IP地址。
每台主机或路由器在其内存中有一个ARP表,包含IP地址到MAC地址的映射关系。如果一台主机要发送一个数据报到子网中的另一台主机,发送方需要获得给定IP地址的目的主机的MAC地址,如果发送方ARP表具有该目的结点的表项,这个任务很容易完成了如果没有,发送方会向它的适配器传递一个ARP查询分组,并且指示适配器应该用MAC广播地址(即FF-FF-FF-FF-FF-FF)来发送这个分组。
ARP协议需要注意的两件事
1、查询ARP报文是在广播帧中发送的,而响应ARP报文在一个标准帧中发送
2、ARP是即插即用的,意思是一个ARP表是自动建立的,它不需要系统管理员来配置。并且如果某主机与子网断开连接,它的表项最终会从留在子网中的结点的表中删除掉。
一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上。然而,一个ARP分组具有包含链路层地址的字段,因而可认为是链路层协议,但它也包含网络层地址,因而也可以认为是网络层协议。所以,可能最好把ARP看成是跨越链路层和网络层边界两边的协议。
以太网
以太网帧结构
- 前同步码(8字节)。前同步码的前7个字节值都为10101010,最后一个字节为10101011。前7个字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步。
- 目的地址(6字节)。目的适配器的MAC地址。
- 源地址(6字节)。源适配器的MAC地址。
- 类型(2字节)。该字段允许以太网复用多种网络层协议。要记住主机能够使用除了IP以外的其他网络层协议。
- 数据(46~1500字节)。承载IP数据报。以太网最大传输单元(MTU)为1500字节,如果超过1500字节,主机必须将该数据报分片。数据字段的最小长度为46字节,少于则被填充到46字节。
- CRC(4字节)。循环冗余检测字段,检测帧是否引入了差错。
所以以太网技术都向网络层提供无连接服务。即适配器A向适配器B发送数据报时不需要先与适配器B“握手”。这种无连接服务类似于IP的第三层数据报服务和UDP的第四层无连接服务。
以太网技术都向网络层提供不可靠服务。比如,适配器B收到一个来自适配器A的帧,它对该帧执行CRC校验,当该帧通过CRC校验时,它不会发送确认帧;帧没有通过CRC校验时,它也不会发送否定确认帧,只会把该帧丢弃。所以适配器A不知道它传输的帧是否到达了B并通过了CRC校验。
在总线拓扑和基于集线器的星形拓扑技术时代,以太网是一种广播链路,其中多个结点同时传输时会出现帧碰撞。为了处理这些碰撞,以太网标准包括了CSMA/CD协议。该协议对于跨越小的地里半径的有线广播局域网特别有效。但对于今天广为使用的基于交换机的星形拓扑的以太网,它采用存储转发分组交换,就不需要这种MAC协议了。以太网的交换器协调其传输,在任何时候决不会向相同的接口转发超过一个帧;此外,现代交换机是全双工的,这使得一台交换机和一个结点能够在同时向对方发送帧而没有干扰。也就是基于交换机的以太局域网中,不会有碰撞,所以没必要使用MAC协议。
链路层交换机
交换机的过滤和转发
1、过滤是决定一个帧应该转发到某个接口还是应当将其丢弃
2、转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口
链路层交换机的过滤和转发功能借助于交换机表。转发分组基于MAC地址。
假设目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机用MAC地址DD-DD-DD-DD-DD-DD索引它的表,有3种可能情况:
1、表中没有DD-DD-DD-DD-DD-DD的表项。交换机向除接口x外所有接口前面的输出缓存转发该帧的副本,即交换机广播该帧。
2、表中有DD-DD-DD-DD-DD-DD与接口x联系起来。这时该帧从包括适配器DD-DD-DD-DD-DD-DD的局域网网段到来。无需将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可。
3、表中又DD-DD-DD-DD-DD-DD与接口y(y≠x)联系起来。这时该帧需要被转发到与接口y相连的局域网网段。交换机通过将该帧放到接口y前面的输出缓存完成转发功能。
链路层交换机的自学习
1、交换机表初始为空
2、当在每个接口接收到的每个入帧,该交换机在其表中存储:(1)在该帧源地址字段中的MAC地址(2)该帧到达的接口(3)当前时间。
3、如果在一段时间内,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。
链路层交换机是全双工的,任何交换机接口能够同时发送和接收。
链路层交换机的性质(优点)
使用交换机不同于如总线或基于集线器的星形拓扑那样的广播链路。
1、消除碰撞。在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽。交换机缓存帧并且决不会在网段上同时传输多于一个帧。因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
2、异质的链路。交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。因此,对于原有的设备与新设备混用,交换机是理想的。
3、管理。除了提供强化的安全性,交换机也易于进行网络管理。
链路层交换机和路由器的比较
1、交换机
优点:
(1)即插即用
(2)相对高的分组过滤和转发速率
缺点:
(1)为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树
(2)一个大型交换网络要求在主机和路由器中有大的ARP表,这将生成可观的ARP流量和处理量
(3)对广播风暴不提供任何保护措施,如果某主机出了故障并传输出没完没了的以太网广播帧流,该交换机将转发所有这些帧,使得整个以太网崩溃
2、路由器
优点:
(1)网络寻址通常是分层次的(不像MAC寻址是扁平的)。即使网络中存在冗余路径时,分组通常也不会通过路由器循环。所以,分组不会被限制到一棵生成树上,并可以使用源和目的地之间的最佳路径。因为没有生成树的限制,所以它们允许以丰富的拓扑结构构件因特网,如包括欧洲和北美之间的多条活跃链路
(2)对第二层的广播风暴提供了防火墙保护
缺点:
(1)不是即插即用
(2)对每个分组的处理时间通常比交换机更长
通常,由几百台主机组成的小网络通常有几个局域网网段,对于这些小网络,交换机就足够了,因为她们不要求IP地址的任何配置就能使流量局部化并增加总计吞吐量。
但是在由几千台主机组成的更大网络中,通常在网络中(除了交换机之外)还包括路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更“智能的”路由。
虚拟局域网
上述的局域网有三个缺点
1、缺乏流量隔离
2、交换机的无效使用
3、不方便管理用户
支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在一个VLAN内的主机彼此通信,仿佛它们与交换机相连。
在一个基于端口的VLAN中,交换机的端口(接口)由网络管理员划分为组。每个组构成一个VLAN,在每个VLAN中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。不同的VLAN之间采用VLAN干线连接互联,两个VLAN中的端口之间通过干线链路(两个VLAN都分配一个端口用于干线链路)通信。