数据链路层
数据链路层主要使用以下信道:
(1)点对点信道
(2)广播信道
点对点信道
点对点信道的数据链路层协议数据单元:帧。把网络层下发的IP 数据报封装成帧。
数据链路层的三个基本问题:(1)封装成帧 (2)透明传输 (3)差错检测
(1)封装成帧
帧由帧首部SOH,IP数据报,帧尾部EOT组成。IP数据报受最大传送单元MTU控制
(2)透明传输
IP数据报中如果出现用于表示帧首部或尾部的控制字符时,使用转义字符ESC解决。该方法称为字节填充或字符填充。
(3)差错检测
循环冗余校验(CRC)
在数据链路层仅仅使用CRC循环冗余校验,能够实现无比特差错传输,但这不是可靠的传输。因为依然会出现帧丢失,帧重复和帧失序等问题。
在通信质量较差的无线网络中,数据链路层使用确认和重传机制可以实现可靠的传输。
在通信质量较高的有线网络中,不再要求数据链路层向上层提供可靠的传输服务。差错控制由上层协议解决(比如传输层的TCP协议)
点对点协议PPP
PPP协议组成
(1)一个将IP数据报封装到串行链路的方法。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP
(3)一套网络控制协议NCP,其中的每个协议支持不同的网络层协议。
各字段的意义
PPP的帧首部有四个字段,尾部有两个字段。
A和C分别表示地址字段和控制字段,为固定值,不承载任何信息。
当协议字段为0x0021时,PPP帧的信息字段就是IP数据报,若为0xC021时,则是PPP链路控制协议LCP的数据,0x8021表示网络层的控制数据。
尾部的第一个字段是使用CRC的帧检验序列FCS。
字节填充
当信息字段出现和标志字段一样的比特(0x7E)时,需要使用一些措施解决。
PPP使用异步传输时,转义字符定为0x7D,并使用字节填充。
(1)将信息字段的0x7E转为2字节序列(0x7D,0x5E)
(2)将信息字段的0x7D转为2字节序列(0x7D,0x5D)
(3)若信息段出现ASCII控制字符,则其前面加入0x7D,并改变该字符的编码。比如0x03变为(0x7D,0x23)
零比特填充
PPP协议在同步传输时,使用零比特填充来解决透明传输的问题。
在发送端,扫描整个信息段,只要发现5个连续的1,就在5个1后面插入9,这可以保证整个信息段不会出现6个连续的1。接收端收到一个帧时,先找到标志字段F以确定帧边界,接着对比特流进行扫描,如果发现连续的5个1,就把5个1后面的0删除,以此还原原来的信息段。
PPP协议的工作状态
(1)建立物理层连接
(2)LCP协商配置选项:发送LCP的配置请求帧。这是一个PPP帧,协议字段设为LCP对应代码,信息字段包含特定配置请求。
LCP选项包括链路的最大帧长、使用的鉴别协议(如果有),以及不传送PPP帧的地址和控制字段(这两个字段没有信息量)
链路另一端的响应有以下几种:
1 配置确认帧:所有选项都接收
2 配置否认帧:所有选项都理解但不接受
3 配置拒绝帧:选项有的无法识别或不能接受,需要协商
(3)协商结束后,就建立了LCP链路,进入鉴别状态。该状态只允许传送LCP协议的分组、鉴别协议的分组以及检测链路质量的分组。鉴别协议包括口令鉴别协议PAP和握手鉴别协议(CHAP)。鉴别成功后进入网络层协议。
(4)网络层协议状态下,PPP链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。
如果PPP链路运行的是IP协议,则对PPP链路的每一端配置IP协议模块(如分配IP地址)时就要使用NCP中支持的IP协议。
(5)网络层配置完成后,进入“链路打开状态”,此时PPP链路的两端可以向彼此发送分组。
使用广播信道的数据链路层
局域网的数据链路层
局域网的特点:网络为一个单位所有,地理范围小,站点数目有限。
局域网有如下优点:
(1)具有广播功能,一个站点可以方便的访问整个网络
(2)便于系统的扩展和逐渐演变
(3)提高了系统的可靠性、可用性和生存性
共享信道需要考虑如何使多用户能够合理地共享通信媒体资源。技术上有两个方法:
(1)静态划分信道:如频分复用,用户只要分配了信道就不会产生冲突。但这中方式代价高,不适合局域网。
(2)动态媒体接入:又称多点接入,信道并非在用户通信时固定分配给用户。这里分为以下两类:
(1)随机接入:所有用户随机的发送信息,但如果多个用户同时发送信息,会产生碰撞,因此比如有可以解决碰撞的网络协议。(后面重点讲这个)
(2)受控接入:用户发送信息受到一定控制,不能随机的发送信息。(用的少,后面不讲)
以太网
现在把局域网简称为“以太网”,以太网包含MAC(媒体接入控制)和LLC(逻辑链路控制)两个子层,如今的以太网只有MAC,不再考虑LLC。
适配器
适配器包含处理器和存储器。适配器和局域网以电缆等通过串行传输数据,和计算机通过主板的I/O并行传输数据。故适配器的主要功能是进行串行数据和并行数据的转换。网络速率和计算机总线速率并不相同,因此需要适配器将数据暂时缓存在存储器中。适配器接收到有差错的帧时并不通知CPU,只有正确帧时才通知CPU,并交付给协议栈中的网络层。
注意:计算机的硬件地址存储在适配器的ROM,IP地址存储在计算机的存储器中。
CSMA/CD(载波监听多点接入/碰撞检测)
针对前面提到的共享信道的随机接入中会出现的碰撞问题,提出CSMA/CD方案,具体如下:
(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧(见后面),放入适配器的缓存。发送前先检测信道。
(2)检测信道:若检测到信道忙,则不停的检测。若检测到信道空闲,并在96比特时间内信道保持空闲(保证帧间最小间隔),就发送这个帧。
(3)发送过称仍不断检测信道。这时会有两种情况:
1 发送成功:发送帧期间未检测到碰撞。
2 发送失败:发送帧期间检测到碰撞。这时立即停止发送数据,并按规定发送干扰信号。适配器接着执行指数退避算法,等待r倍的512比特时间后,返回到步骤2继续检测信道。但若重传达16次仍不能成功,则停止重传向上报错。
以太网每发送完一帧,一定要把已发送的帧保存,若检测到碰撞,下一次还需要把保存的帧重传一次。
使用广播信道的以太网
使用集线器的星型拓扑
集线器的特点如下:
(1)使用电子器件模拟电缆的工作,因此整个系统仍像以太网那样运行。使用集线器的以太网在逻辑上仍是一个总线网,使用的还是CSMA/CD协议。也就是说网络中的各站必须竞争对传输媒体的控制。
(2)一个集线器有许多接口,像一个多接口的转发器。
(3)集线器工作在物理层,它的每一个接口仅仅简单的转发比特,不进行碰撞检测。
以太网的MAC层
MAC层的硬件地址
又称为物理地址,是固化在适配器中的48位全球唯一地址。
适配器具有过滤功能。适配器从网络收到一个MAC帧后,先用硬件检查MAC帧中的目的地址,如果是发往本站的则收下,否则丢弃。发往本站的帧包含以下三种:
(1)单播:即收到的帧的MAC地址与本站的硬件地址相同。
(2)广播:即发送给本局域网上所有的站点的帧(全1地址)
(3)多播:即发送给本局域网上一部分站点的帧
MAC帧的格式
MAC帧由5个字段构成。第三个字段用来标志上一层使用的是什么协议。当类型是0x0800时,表示上一层使用的是IP数据报。FCS为帧校验序列。MAC帧中并没有指明数据的长度,这是因为数据采用曼彻斯特编码,每个码元之间都有一次电压的转换,因此当电压不再变化时说明到达帧的尾部了。当数据长度小于46时,会填充使其达到46。那么IP层如何知道填充的数据数目呢?IP数据报中包含了数据的长度,因此IP层根据IP数据报指定的数据长度很容易丢弃填充的数据。
在传输媒体上实际传输时,要比MAC帧多8个字节。前7个字节是前同步码,使接收端的适配器在接收MAC帧时能够迅速调整其频率,使其和发送端时钟同步。
下列情况定义为无效的MAC帧:
(1)帧的长度不是整数字节
(2)FCS校验有差错
(3)收到的帧的MAC数据字段长度范围不在46~1500之间
扩展的以太网
在物理层扩展以太网
使用多级结构的集线器。缺点如下:
(1)扩大了碰撞域,当某个系的两个站通信时数据会通过所有的集线器进行转发,使得其他系的内部都不能通信。
(2)如果不同的系使用不同的以太网技术(如数据速率不同),那集线器不能将它们连接起来。因为集线器没有缓存功能。
在数据链路层扩展以太网
在数据链路层扩展以太网要使用网桥。网桥工作在数据链路层。它根据MAC帧的目的地址(MAC地址)对收到的帧进行转发和过滤。
网桥的内部结构
如上图,两个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网。原来的每一个以太网可以称为网段。上图接口1和接口2各连接到一个网段。
网桥依靠转发表来转发帧,转发帧之前必须执行CSMA/CD算法。
网桥的优点:
(1)过滤通信量,增大吞吐率
(2)扩大了物理范围
(3)可互连不同物理层、不同MAC子层和不同速率
网桥的缺点:
(1)网桥对接收的帧先存储再转发,转发之前还必须执行CSMA/CD算法,因此增大了延迟
(2)网桥的缓存可能溢出导致帧丢失
(3)网桥适用于用户数不太多和通信量不太大的以太网,否则有时由于传播过多的广播信息导致网络拥塞
透明网桥
目前最常用的就是透明网桥,是一种即插即用设备。只要把网桥接入局域网,不需要人工配置转发表就可以工作。
当网桥刚刚接入以太网时,转发表是空的,接收到一个帧时会通过以下“自学习”算法处理该帧:
若从某个站点A发出的帧从接口x进入某网桥,那么从这个接口出发沿着相反的方向一定可把一个帧传送到A。所有网桥只要每收到一个帧,就记下其源地址和进入网桥的接口,存入转发表即转发表的地址栏记录帧的源地址。
网桥的自学习和转发帧的一般步骤如下:
(1)网桥接收到一帧后先进行自学习。查找转发表中与收到的帧的源地址有无匹配的,若没有就在转发表中新增一项。如有,则更新原来的项。
(2)转发帧。查找转发表中与收到的帧的目的地址匹配的项。如没有,则通过所有其他接口(进入网桥的接口除外)。如有,则按转发表给出的接口进行转发,应该注意若转发表给出的接口还是该帧进入网桥的接口的话,则丢弃该帧。(比如帧通过A从接口1进入网桥,想要发给B,网桥的转发表发现B也在接口1中,则不应该转发该帧,因为A和B处在同一个以太网,不需要该网桥就可以通信)
透明网桥还使用了一个生成树:互连在一起的网桥彼此通信后,找到原来网络拓扑的一个子集。在这个子集里,整个网络不存在回路。这样就可以避免帧在整个网络中不停的兜圈子。
源路由网桥
由发送帧的源站负责路由选择的网桥。
源路由网桥在发送帧时,把详细的路由信息放在帧的首部。
为了发现合适的路由,源站以广播的形式向欲通信的目的站发送一个发现帧。发现帧在整个扩展的以太网中沿着所有可能的路由传送。每个发现帧都会记录所经过的路由。当发现帧到达目的站时沿着各自的路由返回。源站得知这些路由以后,从中选择一个最佳路由。
多接口网桥——以太网交换机
实质是一个多接口网桥,与普通网桥区别的是其每一个接口都直接与一个单个主机或集线器相连(普通的网桥的一个接口往往是连接到以太网的一个网段),并且工作在全双工模式。交换机能够同时连接多对接口,使每一对相互通信的主机能够独占传输媒体,无碰撞的传输数据。