两台主机之间,数据报跨越一系列通信链路传输,一些是有线链路一些是无线链路,从源主机起,通过一些了分组交换机在目的主机结束。在链路层中有两种不同的链路层信道,
第一种是广播信道,这种信道用于有线局域网、卫星网、和混合光纤同轴电缆接入网中的主机。因为许多主机与相同的广播信道连接,所以需要所谓的媒体访问协议来协调帧传输。在一些情况下可以使用中心控制器来协调传输。
第二种是链路层信道是点对点通信链路,在长距离链路连接的两台路由器之间,或用户办公室计算机与他们所连接的邻近以太网交换机之间等场合。适用范围从经电话线拨号服务到经光纤链路的高速点到点帧传输。
通过学习链路层,我们将知道链路层的基本服务是将网络层的数据报从一个节点(主机、交换机、路由器、WiFi接入点)移动到另一个节点。在通过链路向相邻节点传输之前,所有链路层写都是通过将网络层数据报封装成帧。然而,除了这个共同的成帧功能之外,我们知道不同的链路层协议提供截然不同的链路接入、交付 和传输服务。造成这些差异的部分原因是因为链路层协议必须工作在很多种链路类型上。一个简单的点对点链路具有单个发送方和接收方,并通过单一的链路通信。一个多路访问链路在许多发送方和接收方之间共享。因此,对对多路访问信道的链路层协议有一个协调链路接入的协议(多路访问协议)。在MPLS情况下,连接两个相邻节点的链路,其本身就是一个网络。
节点:运行链路层协议的任何设备称为节点,包括:主机、路由器、交换机、WiFi接入点。
链路:沿着通信路径连接相邻节点的通信信道称为链路。
1.链路层提供的服务
成帧:在网络层数据报经链路传输之前,几乎所有的链路层协议都要将其用链路层封装成帧。一个帧由一个数据字段和若干首部字段组成,网络层数据报就在数据字段中。
链路接入:媒体访问控制(MAC)协议规定了帧在链路上传输规则,对于链路的一端仅有一个发送方和链路的另一端仅有一个接收方的点对点链路,MAC协议比较简单,即只要链路空闲,发送方都可以发送帧。MAC也可以协调广播中的多个节点的帧传输。
可靠交付:当链路层协议提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。与运输层协议(TCP)可靠交付相比,链路层的可靠交付服务通常是通过却和重传取得的。通常用于易于产生高差错率的链路(无线),其目的是纠正一个差错而不是重传数据。对于低比特差错的链路,包括光纤、同轴电缆等链路层的可靠交付会被认为是一种不必的开销。因此许多链路层协议不提供可靠交付服务。
差错检测和纠正:当帧中一个比特作为1发送时,接收方节点中可能因为链路层硬件不正确地将其判断为0,这种比特差错是由信号衰减和电磁噪声导致的。通过发送节点在帧中包括差错检测比特,让接收节点进行差错检查。链路层差错检查通常由硬件实现。接收方不仅可以检测出比特差错,还可以检测出出错的位置
2.链路层在何处实现
下图显示了一个典型的主机体系结构。链路层主体部分是在网络层适配器中实现的,网络适配器有时也称为网络接口卡。位于网络适配器核心的是链路层控制器。该控制器一般是实现许多链路层服务的专用芯片。
在发送端,控制器取的了由协议栈较高层生成并存储在主机存储中的数据报,在链路层帧中封装该数据报,然后遵循链路接入协议将该帧传进通信链路中,在接收端,控制器接收了整个镇,抽取出网络层数据报没如果链路层执行差错检测,需要发送控制器在该帧的首部设置差错检测比特,由控制器执行差错检测。
图中显示了主机总线和连接的网络适配器,尽管大部分链路层是在硬件中实现的,但是部分链路层是运行于主机CPU上软件实现的。如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断。处理差错条件和将数据报上报给网络层。
比特级差错检测和纠正:从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正。要保护的数据不仅包括从网络层传输下来的数据报,而且包括链路帧首部中的链路级的寻址信息、序号和其他字段。差错检测和纠正技术使接收方有时但并不总是检测出已经出现的比特差错,即总有未检测出的比特差错。因此我们需要一个差错检测方案来减小这种事件的概率。
1. 奇偶校验:最简单的差错检测,在偶校验方案中,假设要发送多个比特数据,发送方只需要包含一个附加的比特,选择他的值,是的d+1比特中的1总数是偶数,对于奇校验方案,选择校验比特值有奇数个1。但是如果分组中多个比特同时出错的话简单的奇偶校验就会有50%的概率未检测出。那么需要将奇偶校验升级一下:二维奇偶校验。
二维奇偶校验:将d个比特分为i行j列,如果出现单个比特比特差错,这时候包含比特的行和列都会出现差错,这时候接收方不仅可以检测出比特差错,还可以利用行和列来找到实际位置并纠正。
2.检验和方法:在检验和技术中,d比特数据被作为一个康比特整数的序列处理。一个简单检验和方法就是将这k比特整数加起来,并且用得到的和作为差错检测比特。因特网检验和就是基于这种方法的。即数据的字节作为16比特的整数对待并求和。这和的反码形成了携带在报文段首部的因特网检验和。
3.循环冗余检测(CRC)
当今计算机中广泛使用的差错检测技术基于循环冗余检测(CRC)编码。CRC编码也成为多项式编码,因为该编码能够将要发送的比特串看做为系数是0和1一个多项式,对比特串的操作被解释为多项式算是。编码操作如下:考虑d比特数据D,发送节点要将它发送给接收节点,发送方和接收方首先必须协商一个r+1比特模式,称为生成多项式。我们将其表示为G。我们将要求G的最高有效位的比特是1.CRC编码关键思想如图所示。对于一个给定的数据段D,发送方要选择r个附加比特R,并将它们附加到D上。使得得到d+r比特模式,用模2算术恰好能被G整除。用CRC进行差错检测的过程很简单:接收方用G去除接受到的d+r比特,如果余数为非零,接收方知道出现了差错;否则认为数据正确被接收。
国际标准已经定义了8、12、16、32比特生成多项式G,CRC-32 32比特的标准被多种链路级IEEEE协议采用,使用的一个生成多项式是:
G(CRC-32) = 100000100110000010001110110110111
每个CRC标准都能检测小于r+1比特的突发差错。这意味着所有连续的r比特或者更少的差错都可以检测到。
点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。许多链路层协议都是点对点链路设计的,如点对点协议(PPP)和高级数据链路控制(DHLC)。
广播链路:让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。当任何一个节点传输一个帧时,信道广播该帧,其他每个节点都收到一个副本。如以太网和局域网。
多路访问问题:即多个发送和接收节点对一个共享广播信道的访问。计算机网络中通过协议来规范他们在共享广播信道上的传输行为,也就是多路访问协议。目前多路访问协议划分为三种类型:信道划分协议,随机接入协议,轮流协议。他们有以下特征:
当仅有一个节点发送数据时,该节点具有R bps的吞吐量。
当有M个节点发送数据时,每个节点吞吐量为R/M bps。这不比要求M个节点中的每一个节点总是有R/M的瞬间速率,而是每个节点在一些适当定义的时间间隔内应该有R/M的平均传输速率。
协议是分散的,这就是说不会因某节点故障而使整个系统崩溃。
协议是简单的,实现并不昂贵
碰撞:多个节点同时传输帧的时候,帧在所有接收方处将会碰撞,当发生碰撞时候,没有一个接收方节点可以接收到有效帧。
时分多路复用(TDM)和频分多路复用(FDM)是两种能够用于在所有共享信道节点之间划分广播信道的带宽技术。
在随机接入协议中,一个传输节点总是以信道的全部速率发送。当有碰撞时,涉及碰撞的节点反复重发它的帧,直到该帧无碰撞通过为止。但是当每个节点经历一次碰撞时,他不是立刻重发,而是等待一个延时再法。
1.时隙ALOHA
时隙是一个简单的协议,当某个节点是唯一活跃的节点时,时隙ALOHA允许该节点以全速R连续传输,时隙ALOHA也是高度分散的,因为每个节点检测碰撞并独立地决定什么时候重传。当有大量活跃节点且每个节点总有大量帧要发送时,长期运行中成功时隙的份额。最多会有37%的时隙在做有用工作,速率仅为0.37R。时隙ALOHA要求每个节点同步他们额传输,以在每个时隙开始时开始传输,第一个ALOHA协议时间是一个非时隙、完全分散的协议。在纯ALOHA 中,当第一帧到达,节点立刻将该帧传输完整地传输到广播信道。如果一个帧与多个传输经历了碰撞,那么这个节点将立即以概率p重传该帧。否则该节点等待一个帧传输时间再以概率p进行重传。
2.载波帧听多路访问CSMA
载波帧听:一个节点在传输前先听信道,如果有来自另一个节点的帧正向信道发送,则等待知道检测到一小段时间没有传输,然后开始传输。
碰撞检测:当一个传输节点在传输时一直侦听此信道,如果检测到另一个节点正在传输干扰帧免责停止传输。
在广播信道的端到端信道传播时延决定其性能方面起着关键作用。该传播时延越长,载波侦听节点不能侦听到网络中另一个节点已经开始传输的几率就越大。
3.具碰撞检测的载波侦听多路访问CSMA/CD
我们从广播信道相连的适配器角度总结它的运行
适配置器从网络层获得一条数据报,准备链路层帧,并将其放入帧适配器缓冲中
如果适配器侦听到信道空闲,则开始传输帧,如果侦听到信道在忙,则等待,知道侦听到信道空闲才开始传输帧。
在传输过程中,适配器监视来自其他使用广播信道的适配器信号能量的存在。
如果是配置传输整个镇而未检测到来自其他适配器的信号能量,该适配器就完成了该帧。另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,则停止传输。
停止之后,适配器等待一个随机时间量,然后返回第二步。
1.轮询协议:轮询协议要求这些节点之一被指定为主节点,主节点以循环的方式轮询每个节点,主节点首先向节点1发送一个报文,告诉节点1能够传输多少帧的数量,在节点1传输某些帧之后,告诉节点2可以传输多少数量的帧,以此循环方式轮询每个节点。轮询协议消除了随机接入协议的碰撞和空时隙,使得效率提高,但是也引入了轮询时延,以及如果主节点有故障,则整个信道都会瘫痪。
2.令牌传递协议:一个称谓令牌的小的特殊帧在节点之间以某种固定的次序进行交互。如:节点1把令牌发送给节点2,节点2把令牌发送给节点3,以此类推,当节点收到令牌时,仅当他有帧要发送时才会持有令牌,否则把令牌传送给下一个节点。令牌传递是分散的效率很高,但是如果一个节点瘫痪会导致整个信道崩溃。
CMTS: 电缆调制解调器端接系统
DOCSIS: 数据经电缆服务接口,它定义了电缆数据网络体系结构机器协议,DOCSIS使用FDN将下行(CMTS到调制解调器)和上行(调制解调器到CMTS)网络段划分为多个频率信道,每个信道6MHz。每个信道大约40Mbps吞吐量。每个上行信道具有6.4MHz,最大吞吐量是30Mbps。每个上行和下行信道均为广播信道。CMTS在下行信道中传输的帧被所有在信道上做信道接收的电缆调制解调器接收。因为仅有单一的CMTS在下行信道上传输,所以不存在多路访问问题,但是在上行方向,多个电缆调制解调器共享到CMTS的相同上行信道。因此能够潜在地出现碰撞。
ARP:地址解析协议:该协议提供了将IP转换为链路层地址的机制
1.MAC地址
我们知道主机和路由器并不具有链路层地址,而是他们的适配器具有链路层地址,因此具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址。但是交换机并不具有相关的链路层地址,因为交换机的任务是在主机和路由器之前承载数据报。
MAC地址又称为LAN地址,、物理地址。MAC地址长度为6个字节,通常用16禁止表示,地址的每个字节被一对十六进制数表示。没有两个适配器的MAC地址是相同的。适配器的MAC地址具有扁平结构,而且不论适配器到哪里都不会变化,带有以太网的便携机总具有相同的MAC地址。
当一个适配器向另一个适配器发送帧时,发送适配器将目的适配器的MAC地址插入到该帧中,并将该帧发送到局域网上。一台交换机偶尔将帧广播到它所在的接口,这样一个适配器会接收到并非向他寻址的帧,这时候适配器收到帧就会进行MAC匹配,成功就接收,并提取出封装的数据然后传递给上层。不匹配则丢弃。MAC广播地址:如果适配器要让局域网上的所有的适配器接收并处理他们发送的帧,则这时候在发送适配器的该帧的目的地址插入MAC广播地址。该地址是48个连续1组成的字符串。
2.地址解析协议
ARP:网络层地址(IP)和链路层地址(MAC)之间进行转换的任务。
每台主机都有一个单一的IP地址和一个单一的MAC地址。IP地址用以点分十进制法表示,MAC地址以十六进制表示法表示。发送主机通过将目的主机的IP地址作为输入通过发送主机的ARP模块返回相应的MAC地址。它有点类似DNS。但是DNS为因特网中任何地方的主机解析主机名,而ARP只为在同一个子网的主机和路由器解析IP地址。
ARP工作原理:每台主机或路由器在其内存中有一个ARP表,这张表包含IP地址到MAC地址映射关系。该表也包含了一个寿命(TTL)值,它表示了一个从表中删除每个映射的时间。如下表
如果主机要向222.222.222.220发送一个数据报,此时ARP表中没有该主机的表项,该怎么办呢?这种情况下,发送方用ARP协议来解析这个地址,首先发送方构造一个称为ARP分组的特殊分组。一个ARP分组有几个字段,包括发送和接收的IP地址、MAC地址,ARP查询分组和响应分组都有相同的格式。ARP查询分组的目的是询问子网上的所有主机和路由,以确定对应的IP地址的MAC地址。
ARP属于链路层协议还是网络层协议?
一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上,然而,一个ARP分组同样具有包含链路层地址的字段,所有也可以认为是链路层协议。但它同样包含网络层的地址,所有也可以认为是网络层协议。
3.数据报发送到子网以外
当两台主机在两个不同子网时数据是如何传输的呢?假设主机111.111.111.111向主机222.222.222.222发送一个数据报。首先111的主机先将数据报发送给110的路由器(通过ARP解析到110的IP地址)。此时该帧传递给路由器由链路层到达网络层。路由器通过路由器中的转发表告诉这台路由器该数据报要通过路由接口到达220.然后该接口把数据报传递给适配器。适配器把数据报封装成帧发送到220的子网中,最后到达222主机。
集线器:是一种物理设备,它的作用用于各个比特而不是帧。当表示一个0或一个1到达接口时,集线器重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去。
数据字段:46-1500字节。该字段承载了IP数据报,以太网最大传输单元(MTU)是1500字节。如果超出1500字节必将该数据报分片。IP数据报最小字段46字节,小于46字节则填充到46字节。
目的地址:6字节。目的适配器的MAC地址。
源地址:6字节。传输该帧到局域网上的适配器的MAC地址。
类型字段:允许以太网复用多种网络层协议。当帧到达目的适配器时候,目的适配器需要知道该数据字段的内容需要哪些网络层协议进行分解。
CRC:4字节。差错检测
前同步码:以太网帧时一个以8字节的前同步码开始的,前7个字节的值都是10101010,最后一个字节是10101011.前7个字节用于唤醒接收适配器,并将时钟与发送适配器时钟同步。第8个字节的最后两个比特警告目的适配器有内容要来。
所有以太网技术都是向网络层提供无连接的服务,不需要进行握手。而且也不提供可靠的服务。当CRC校验完之后不论该帧是否通过都不会不发送确认帧。不通过的直接丢弃。
转发器:一种物理设备,它能在输入端接收信号并在输出端在生该信号。
2.链路层交换机
交换机:接收入链路层帧并将它们转发到出链路。交换机自身对子网中的主机和路由是透明的,也就是说局域网中的主机和路由器并不知道交换机的存在。
1.交换机转发和过滤
过滤:决定将一个帧转发到某个接口还是应将该帧丢弃的交换机功能。
转发:决定一个帧应该被导向那个接口,并把该帧移动到那些接口的交换功能。
交换机表:包含局域网上的主机和路由器的表项。其中包含:一个MAC地址;一个通向该MAC地址的交换机接口;表项放置在表中的时间,下图是交换机表
交换机转发和过滤过程:
如果交换机表项中没有目的地址,则交换机广播该帧
表项将目的地址和接口联系起来,这种情况下该帧从包括适配器目的地址的局域网网段到来,无需将该帧进行转发到其他接口,交换机通过丢弃该帧进行过滤。
表项没有将目的地址与接口联系起来,这种情况下,该帧需要被转发到与接口相连的局域网网段,交换机通过将该帧放到接口前面的输出缓冲完成转发功能。
2.自学习
交换机表是自动、动态和自治地建立的。所有交换机是自学习的。自学习实现方式:
交换机表初始为空
对于在每个接口接收到的每个入帧。该交换机在其表中存储:1.该帧源地址字段中的MAC地址;2.该帧到达的接口;3.当前时间。交换机以这种方式在表中记录了发送节点所在局域网网段。如果局域网肿么诶个主机都发送了帧,则都会在表中留有记录。
如果一段时间后,交换机没有接收到以该地址作为源地址的帧,则删除表中的记录。
交换机是一个即插即用的设备,不需要人为配置,安装交换机只需要将局域网网段与交换机接口相连即可。
3.链路层交换机的性质
交换机不同于总线或基于集线器的星行拓扑那样的广播链路,他们有以下优点:
清除碰撞:使用交换机构建的局域网中,没有因碰撞而浪费带宽,交换机缓冲帧并且绝不会在网段上同时传输多余一个帧。交换机最大聚合带宽是该交换机所有接口速率只和,因此交换机提供了比广播链路的局域网高的多的性能改善。
异质的链路:交换机将链路彼此隔离,因此局域网中的不同链路能够以不同速率运行,并且在不同的媒体上运行。
3.管理:易于网络管理。交换机可以检测到异常的适配器,并且在内部断开异常的适配器。也可以收集带宽使用的统计数据、碰撞率和流量类型便于管理者使用。
4.交换机和路由器的区别
路由器是使用网络层地址转发分组的存储转发分组交换机。交换机是用MAC地址转发分组。交换机的第二层是分组交换机,而路由器的第三层是分组交换机。
交换机的优缺点:
交换机是即插即用的,
交换机具有相对高的分组过滤和转发速率
交换机对广播风暴不提供任何保护措施。
路由器的优缺点:
当网络中存在冗余路径时,分组不会通过路由器循环。
对广播风暴提供了防火墙保护
缺点是不是即插即用,需要人为配置IP地址。
比交换机处理分组时间长。
通常,几百台主机组成的小网络通常有几个局域网网段,对于这些小网段使用交换机足够。在更大型的网络中除了交换机还需要路由器。
3.虚拟局域网
现代机构的局域网常常是配置为等级结构的,每个部门有自己的交换局域网,经过一台交换机等级结构与其他工作组的交换局域网互联。但是他们有几个缺点:
缺乏流量隔离:尽管该等级结构把组流量局域化到一个单一交换机中,但广播流量仍然必须跨越整个机构网络。限制这些广播流量的范围将会改善局域网的性能。
交换机的无效使用:单台交换机无法提高流量隔离。
管理用户:如果一台主机在不同组之间移动,则必须改变物理布线。
虚拟局域网(VLAN):支持VLAN的交换机允许一个单一的物理局域网基础设施定义多个虚拟局域网。在一个VLAN内的主机彼此通信,交换机的分组由网络管理划分为组。每组构成一个VLAN,每个VLAN中的端口形成一个广播域。
VLAN交换机配置和操作方法:网络管理员使用交换机管理软件声明一个端口属于某个给定的VLAN,在交换机中维护一张端口到VLAN的映射表;交换机软件在属于相同VLAN的端口之间交付帧。
两台完全隔离的VLAN如何通信:将VLAN交换机的一个端口与一台外部的路由器相连,并且将该端口配置为属于EE VLAN 和 CS VLAN,当一台主机的数据报跨域EE VLAN 到达路由器,如何由路由器转发跨越CS VLAN 到达CS 主机。
VLAN干线连接:一种更具扩展性互联VLAN交换机的方法。VLAN方法中,每台交换机上的一个特殊端口被配置为干线端口,以互联了两台VLAN交换机,该干线端口属于所有VLAN,发送任何VLAN的帧经过干线链路转发到其他交换机。那么如何到达指定的VLAN呢?
VLAN标签:4字节,以太网帧首部中。VLAN标签承载着该帧所属的VLAN标识符。VLAN标签由在VLAN干线发送侧的交换机加进帧中,解析后并由在VLAN干线接收测的交换机删除。VLAN标签由一个2字节的标签标识符字段、一个2字节的标签控制信息字段和一个3比特优先权字段组成。
在基于MAC的VLAN中,网络管理员指定于每个VLAN的MAC地址集合;无论何时一个设备与一个端口连接时,端口基于设备的MAC地址将其连接适当的VLAN,VLAN也能够基于网络层协议和其他准则进行定义。VLAN跨越IP路由器扩展也是可能的,这使得多个LAN孤岛能够被连接在一起,形成能够跨越全局的单一LAN。
最初时候我们以为链路是连接两台通信主机的物理线路,在学习多路访问协议时,我们看到多台主机能够通过一条共享的线路连接起来,并且连接主机的这种线路能够是无线电频谱或其他媒体。为此我们将该链路更多地抽象为一条信道,而不是一条线路。
多标签协议交换网络(MPLS):一种分组交换的虚电路网络,有自己的分组格式和转发行为。基于固定长度标签和虚电路的技术,在不放弃基于目的IP数据报转发的基础设施的前提下,当可能时通过选择性地表示数据报并允许路由器基于固定长度的标签转发数据报来增强其功能。与IP协调工作,使用IP寻址和路由选择。
数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联。
刀片:数据中心的主机被称为刀片。一般是包括CPU、内存和磁盘存储的商用主机。主机被堆在机架上,每个机架一般堆放几十台刀片。在每个机架顶部有一台交换机,这台交换机被称为机架顶部交换机。它与机架上的刀片相连,并与数据中心的其他交换机互联。
数据中心支持两种类型的流量:外部客户与内部主机之间流动的流量和内部主机之间流动的流量。数据中心网络包括一台或多台边界路由器。他们将数据中心网络与公共因特网相连。数据中心网络因此需要将所有机架相连,并且机架与边界路由器互联。
1.负载均衡
负载均衡路由器:负载均衡的任务是向主机分发请求,以主机当前的负载作为函数来在主机之间均衡负载。负载均衡器不仅平衡主机间的工作负载,而且还提供类型NAT的功能,将外部IP地址转换为内部适当的IP地址,然后将反方向流向客户的分组安装相反的转化进行处理。从而提高安全性。
2.等级结构
对于数千台主机的小型数据中心,一台边界路由器和一台负载均衡器和几十个机架组成就够了。但是当有几十万台主机时候,数据中心通常应用路由器和交换机等级结构。如图所示:每台接入路由器下面,有三层交换机。每台接入路由器与一台第一层交换机相连,每台第一层交换机与多台第二层交换机相连。每台第二层交换机又通过与TOR交换机与多个机架相连。