学习两种截然不同的链路层信道:
第一种类型是广播信道,这种信道用于连接有线局域网,卫星网和混合光纤同轴电缆接入网中的多台主机
第二种类型的链路层信道是点对点通信链路,在诸如长距离链路连接的两台路由器之间,或用户办公室计算机与它们所连接的邻近以太网交换机等场合常被使用
6.1 链路层概述
节点:将运行链路层协议的任何设备称为节点。节点包括主机,路由器,交换机和WiFi接入点
链路:把沿着通信路径连接相邻节点的通信信道称为链路。为了将一个数据报从源主机传输到目的主机,数据报必须通过沿端到端路径上的各段链路传输。在通过特定的链路时,传输节点将数据报封装在链路层帧中,并将该帧传送到链路中
6.1.1 链路层提供的服务
尽管任一链路层的基本服务都是将数据报通过单一通信链路从一个节点移动到相邻节点,但所提供的服务细节能够随着链路层协议的不同而变化,链路层协议可能提供的服务:
成帧:在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。
一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中,帧的结构由链路层协议规定
链路接入:媒体访问控制 MAC协议规定了帧在链路上传输的规则
在点对点链路时,MAC协议比较简单。当多个节点共享单个广播链路时,即所谓的多路访问问题,这里MAC协议用于协调多个节点的帧传输
差错检测和纠正:当帧中的一个比特作为1传输时,接收方节点中的链路层硬件可能将其判断为0。这种比特差错是由信号衰减和电磁噪声导致的。为了避免这种状况,许多链路层协议提供一种机制来检测这种比特差错
链路层的差错检测用硬件实现,差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能准确地确定帧中差错出现的位置
6.1.2 链路层在何处实现
链路层的主体部分是在网络适配器中实现的,网络适配器有时也称为网络接口卡 NIC,位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务的专用芯片
尽管大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现的,链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件
链路层是硬件和软件的结合体
6.2 差错检测和纠正技术
比特级差错检测和纠正,即对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正,它们通常是链路层提供的两种服务
即使采用了差错检测比特,也还是可能有未检出比特差错,接收方可能无法知道接收的信息中包含比特差错,或者不知道该帧首部的某个字段的内容已经损伤
传输数据中检测差错的3种技术,奇偶校验(用来描述差错检测和纠正背后的隐藏思想),检验和方法(通常更多用于运输层),循环冗余检测(通常更多地应用于适配器中的链路层)
6.2.1 奇偶校验
差错检测最简单的方式就是用单个奇偶校验位。在偶校验中,发送方只需包含一个附加的比特,选择它的值,使得这d+1比特(初始信息加一个检验比特)中1的总数为偶数。对于奇校验方案,选择校验比特值使得有奇数个1
接收方只需要数一数接收的d+1比特中出现1的数目即可,如果在采用偶校验方案中发现了奇数个值为1的比特,接收方知道至少出现了一个比特差错,更准确的说,出现了奇数个比特差错
二维奇偶校验:
使用二维奇偶校验方案,包含比特值改变的列和行的校验值都将会出现差错。因此接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶校验差错的列和行的索引来识别发生的差错并纠正
6.2.2 检验和方法
将d比特数据作为一个k比特数据整数的序列处理,一个简单检验和方法就是将这k比特整数加起来,并且用得到的和作为差错检验比特。因特网检验和就使用的这种方法
6.2.3 循环冗余检测
现今的计算机中广泛应用的差错检测技术基于循环冗余检测 CRC编码。CRC编码也称为多项式编码,因为该编码能够将要发送的比特串看作为系数是1和0的一个多项式,对比特串的操作被解释为多项式算数
6.3 多路访问链路和协议
有两种类型的网络链路: 点对点链路和广播链路
点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成
许多链路层协议都是为点对点链路设计的,如点对点协议 PPP和高级数据链路控制 HDLC。
广播链路:能够让多个发送方和接收节点都连接到相同的,单一的,共享的广播信道上。当任何一个节点传输一个帧时,信道广播该帧,每个其它节点都收到一个副本,以太网和无线局域网就是广播链路层技术的例子
传统的电视是一种一个方向的广播(即一个固定的节点向许多接收节点传输),而计算机网络广播信道上的节点既能发送也能接收。为了协调多个发送和接收节点对一个共享广播信道的访问,需要研究多路访问问题
多路访问协议:即节点通过这些协议来规范这些它们在共享的广播信道上的传输行为。在各种各样的网络环境下需要多路访问协议,包括有限和无线接入网,以及卫星网络。
因为所有的节点都能传输帧,所以多个节点可能会同时传输帧。当发生这种情况时,所有节点同时接到多个帧,这就是说,传输的帧在所有的接收方处碰撞。通常,当碰撞开始时,没有一个接收节点能够有效地获得任何传输的帧。在某种意义下,碰撞帧的信号纠缠在一起,因此涉及此次碰撞的帧都丢失了。
多路访问协议为了确保广播信道执行有用的工作划分为3种类型,信道划分协议,随机接入协议,轮流协议
6.3.1 信道划分协议
TDM:在一个采用TDM的聚会中,允许每个人在的固定的时间段发言,然后再允许另一个聚会客人发言同样时常。以此类推,一旦每个人都有了说话机会,将不断重复这种模式
TDM是有吸引力的,因为它消除了碰撞而且非常公平,每个节点在每个时间帧内得到了专用的传输速率。
FDM:FDM将信道划分为不同的频段,把每个频率分配给N个节点种的一个,它避免了碰撞,在N个节点之间公平地划分了带宽
CDMA:CDMA对每个结点分配一种不同地编码,然后每个结点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,CDMA网络具有一种奇妙的特性,即不同的结点能同时传输,并且它们各自相应的接收方仍能正确接收发送方的数据
6.3.2 随机接入协议
一个传输节点总是以信道的全部速率进行发送。当有碰撞时,涉及碰撞的每个节点反复地重复发它地帧(分组),到该帧无碰撞地通过为止。但是当一个节点经历一次碰撞时,它不必立刻重发帧。相反,它在重发该帧之前等待一个随机时延,涉及碰撞的每个节点独立地选择随机时延
6.3.3 轮流协议
轮询协议:轮询协议要求这些节点之一被指定为主节点,主节点以循环的方式轮询每个节点
令牌传递协议:在这种协议中没有主节点,一个称为令牌的小的特殊帧在节点之间以某种固定的次序进行交换
6.3.4 DOCSIS
DOCSIS是用于电缆因特网接入的链路层协议
一个电缆接入网通常在电缆网头端将几千个住宅电缆调制解调器与一个电缆调制解调器端接系统 CMTS连接,数据经电缆服务接口规范 DOCSIS定义了电缆数据网络体系结构与及其协议,DOCSIS使用FDM将下行(CMTS到调职解调器)和上行(调制解调器到CMTS)网络段划分为多个频率信道,每个上行和下行信道均为广播信道
6.4 交换局域网
交换机运行在链路层,它们交换的是链路层帧而不是网络层数据报,它们不识别网络地址,不使用OSPF或RIP这样的路由选择算法来确定通过第二层交换机网络的路径。它们使用的是链路层地址而不是IP地址来转发链路层帧通过交换网络
6.4.1 链路层寻址和ARP
主机和路由器除了有网络层地址外均有链路层地址,这些地址是不可缺少的。地址解析协议 ARP提供了将IP地址转换成链路层地址的机制
MAC地址:事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(网络接口)具有链路层地址,因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像它也具有与之相关联的多个IP地址一样
链路层地址有多种不同的称呼,LAN地址,物理地址或MAC地址。这里统称为MAC地址,MAC地址长度为6个字节,共有2^48个可能的MAC地址。这些6个字节的地址通常用十六进制来表示,地址的每一个字节被表示为一对十六进制数。尽管MAC地址被设计为永久的,但使用软件改变一块适配器的MAC地址是可能的
MAC地址另一个特性是没有两块适配器具有相同的地址,是因为IEEE在管理着MAC地址空间,IEEE分配一块2^24个地址,前24个比特固定,再让使用方自己为每个适配器生成后24比特的唯一组合
适配器的MAC地址具有扁平结构,且不论适配器到哪里用都不会发生变化。带有以太网接口的便携智能机总具有相同的MAC地址。适配器的MAC地址与人的社会保险号相似,后者也具有扁平结构,而且无论人到哪里都不会发生改变。而IP地址则与一个人的邮政地址相似,它是有层次的,无论何时当主人搬家时,该地址都必须变化。
当某适配器要向目标适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入到该帧中,并将该帧发送到局域网上。当适配器收到一个帧时,将检查该帧中的目的MAC地址是否与它的MAC地址相匹配,如果匹配,该适配器提取出封装的数据报,并将该数据报沿协议栈向上传递。如果不匹配,适配器丢弃该帧,而不会向上传递该网络层数据报。所以,仅当收到该帧时,才会中断目的地
地址解析协议 ARP:由于存在网络层地址和链路层地址,所以需要在它们之间进行转换,对于因特网而言,这就是地址解析协议 ARP的任务,每台主机都具有一个单一的IP和MAC地址
在发送主机中的ARP模块将取在相同局域网上的任何IP地址作为输入,然后返回对应的MAC地址。ARP将一个IP地址解析为一个MAC地址,在很多方面它和DNS类似,DNS将主机名解析为IP地址,然而这两种解析器之间的一个重要区别是,DNS为在因特网中的任何地方的主机名解析为IP地址,而ARP只能为在同一个子网中主机和路由器接口解析IP。
每台主机或路由器在其内存中具有一个ARP表,这张表包含IP地址到MAC地址的映射关系。如果ARP表中没有当前目的主机的表项,这种情况下,发送方构建一个ARP分组,一个ARP分组有几个字段,包括发送和接收IP地址和MAC地址。ARP查询分组和响应分组都需要具有相同的格式。ARP查询分组的目的是询问子网上所有其他的主机和路由器,以确定对应要解析的IP地址的那个MAC地址
一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上,然而,一个ARP分组具有包含链路层地址的字段,因而也可看作链路层协议,但它也包含网络层地址,也可看作网络层协议。所以最好将ARP看成跨越链路层和网络层边界两边的复杂协议
发送数据到子网以外: 当子网中某台主机要向子网之外的主机发送网络层数据报时,发送主机向它的适配器传递数据报,发送主机还必须向它的适配器指示一个适当的目的MAC地址。如果发送适配器要使用另一个子网中目的地的MAC地址,那么发送方子网中的所有适配器都不会费心地将该IP数据报传递到它的网络层,因为该帧的目的地址与发送主机的子网上所有的适配器的MAC地址都不匹配,这个数据只有死亡
发送主机的数据报必须先发送给路由器的入端口,通过使用ARP,一旦发送适配器有了目的MAC地址,它将创建一个帧,并把该帧发送到发送子网中,发送子网将该帧传递到路由器的网络层,此时IP数据报终于从源主机移动到路由器。路由器通过查询转发表将这个数据报传递给目的地适配器
6.4.2 以太网
以太网是目前为止最流行的有线局域网技术,以太网对本地区域联网的重要性就像因特网对全球联网所具有的地位一样
现今以太网继续使用星形拓扑,位于中心的集线器被交换机替代。交换机不仅是无碰撞的,而且也是名副其实的存储转发分组交换机,交换机运行在运输层,路由器运行在网络层
以太网帧结构:从一台主机向另一台主机发送一个IP数据报,且这两台主机在相同的以太局域网上,发送适配器在一个以太网帧中封装了一个IP数据报,并将该帧传递到物理层。接受适配器从物理层收到这个帧,提取出IP数据报,并将该IP数据报传递给网络层
数据字段:这个字段承载了IP数据报,以太网的最大传输单元(MTU)是1500字节,如果IP数据报超过了1500字节,则主机必须将该数据报分片。数据字段最小长度为46字节,如果IP数据报小于46字节,则数据报必须被填充到46字节,传递到网络层的数据包括IP数据报和填充部分,网络层使用IP数据报首部中的长度字段来去除填充部分
目的地址:这个字段包含目的适配器的MAC地址
源地址:这个字段包含了传输该帧到局域网上的适配器的MAC地址
类型字段:类型字段允许以太网复用多种网络层协议,当以太网帧到达接收适配器时,适配器需要知道它应该将数据字段的内容传递到哪个网络层协议(分解)。类型字段和网络层数据报中的协议字段,运输层报文段的端口号字段类似,所有这些字段都是为了把一层中的某协议与上一层的某协议结合起来
CRC:循环冗余检测 CRC字段的目的是使得接收适配器检测帧中是否产生了差错
前同步码:以太网帧以一个8字节的前同步码字段开始,前7个字节的值都是10101010,最后一个字节是10101011。前7个字节用于‘唤醒’接收适配器,并且将它们的时钟和发送方的时钟同步。接收适配器只需要锁定前同步码的前7个字节的比特,就可以锁定发送适配器的时钟。第8个字节的最后两个比特警告接收适配器重要的数据要来了
以太网技术都向网络层提供不可靠服务
所有的以太网技术都向网络层提供无连接服务,即当发送适配器向接收适配器发送一个数据报时,发送适配器在一个以太网帧中封装该数据报,并把该帧发送到局域网上,没有先与接收适配器握手
以太网技术:以太网具有许多不同的特色,具有某种令人眼花缭乱的首字母缩写词,如 10BASE-T,10BASE-2, 100BASE-T, 1000BASE-LX和 10GBASE-T。首字母缩写的第一部分指速率, 10Mbps,100Mbps,10Gbps以太网。BASE指基带以太网,这意味着该物理媒体仅承载以太网流量,以太网是链路层也是物理层的规范,并且能够经各种物理媒体(同轴电缆,铜线,光纤)承载,一般 T 指双绞铜线
今天广为使用的以太网是基于交换机的星形拓扑,采用的是存储转发分组交换。交换机协调其运输,在任何时候决不会向相同的接口转发超过一个帧。此外,现代交换机是全双工的,这使得一台交换机和一个节点能够在同时向对方发送帧而没有干扰,换句话说,在基于交换机的以太局域网中,不会有碰撞,因此没必要使用MAC协议
6.4.3 链路层交换机
交换机的作用是接收入链路层帧并将它们转发到出链路,交换机自身对子网中的主机和路由器是透明的,即某主机或路由器向另一个主机/路由器寻址一个帧,顺利将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个节点。这些帧到达该交换机的任何输出接口之一的速率可能暂会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这类似于路由器接口为数据报设有缓存
交换机转发和过滤:过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于交换机表完成,交换机表一个表项包括:1,一个MAC地址,2,通向该MAC 地址的交换机接口,3,表项放置在表中的时间
自学习:交换机表是自动,动态和自治地建立的,即没有来自网络管理员或来自配置协议的任何干预,即交换机是自学习的
交换机的自学习通过三点完成,1,交换机表初始为空,2,对于每个接口接收到的每个帧,该交换机在表中存储表项中的三要素,3,如果在一段时间(老化期)后,交换机没有接收以到该地址作为源地址的帧,就在表中删除这个地址
交换机是即插即用设备,因为它们不需要网络管理员或用户的干预,交换机也是双工的,这意味着任何交换机接口能同时发送和接收
链路层交换机的性质:1,消除碰撞:在使用交换机构建的局域网时,没有碰撞而浪费的带宽 2,异质的链路:交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行且能在不同的媒体上运行 3,管理:如果一个适配器工作异常并持续发送以太网帧,交换机能够检测到该问题,并在内部断开异常适配器
交换机和路由器比较:交换机是第二层的分组交换机,路由器是第三层的分组交换机。通常,由几百台主机组成的小网络通常有几个局域网网段,对于这些小网络,交换机就够了,因为它们不要求IP地址的任何配置就能使流量局部化并增加总计的路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更‘智能’的路由
6.4.4 虚拟局域网
现代机构的局域网常常是配置为等级结构的,每个部门有自己的交换局域网,经过一个交换机等级结构与其他工作组的交换局域网互联,但实际应用中,存在三个缺点
1,缺乏流量隔离:尽管该等级结构把组流量区域化到一个单一交换机中,但广播流量仍然必须跨越整个机构网络。限制这些广播流量的范围将改善局域网的性能,同时限制局域网广播流量也更好地保护了安全及隐私
2,交换机的无效使用:如果某机构不止有三个组,而是有10个组,那么要求有10个第一级交换机
3,管理用户:如果一个雇员在不同的组间进行移动,必须改变物理布线,以将该雇员连接到不同的交换机上
为了解决这些问题,可以使用支持虚拟局域网 VLAN的交换机来处理,支持VLAN的交换机允许经一个单一的物理局域网设施定义多个虚拟局域网,在一个VLAN内的主机彼此通信,仿佛它们与交换机连接
6.5 链路虚拟化:网络作为链路层
互联媒体实际上是一种相当复杂的交换基础设施,只是连接两台或多台主机的链路层信道。例如,一台以太网主机不知道它是通过单一短局域网网段还是通过地理上分布的交换局域网或通过VLAN与其他局域网主机进行连接
在两台主机之间由拨号调制解调器连接的场合,连接这两台主机的链路实际上是电话网,这是一个逻辑上分离的,全球性的电信网络,它有着自己的用于数据传输和信令的交换机,链路和协议栈。从因特网链路层的观点看,通过电话网的链路连接被看作一条简单的线路,即因特网虚拟化了电话网,将电话网看成两台因特网主机之间提供的链路层连接的链路层技术
多协议标签交换 MPLS:MPLS客观上讲是一种分组交换的虚电路(VC)网络,它们有自己的分组格式和转发行为。用来改善IP路由器的转发速度。
MPLS采用来自虚电路网络中的一个关键概念‘ 固定长度标签’,其目标是:对于基于固定长度标签和虚电路的技术,在不放弃基于目的地IP数据报转发的基础设施的前提下,当可能时通过选择性地标识数据报并允许路由器基于固定长度的标签转发数据报来增强其功能
6.6 数据中心网络
每个数据中心容纳了数万至数十万台主机,并且同时支持着很多不同的云应用(搜索,电子邮件,社交网络),每个数据中心有着自己的数据中心网络,这些数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联
主机就像是数据中心内的工蜂,它们负责提供内容(网页,视频等),存储邮件和文档,并共同执行大规模分布式计算(如为搜索引擎提供分布式索引计算),数据中心内的主机称为刀片。
主机被堆叠在机架上,每个机架一般堆放20~40台刀片。在每一个机架顶部有一个交换机,被称为机架顶部(TOR)交换机,它们与机架上的主机互联,并于数据中心的其他交换机互联。机架上的每台主机都有一块与TOR交换机连接的网卡,每台TOR交换机有额外的端口能够和其他TOR交换机连接
数据中心网络支持两种类型的流量,在外部客户和内部主机之间的流量,以及内部主机之间流动的流量。为了处理外部客户和内部主机之间的流量,数据中心网络包括了一台或多台边界路由器,它们将数据中心与公共因特网相连
负载均衡:一个云数据中心,能够同时提供诸如搜索,电子邮件和视频等应用。为了支持来自外部客户的请求,每一个应用都与一个公开可见的IP地址关联,外部用户向该地址发送其请求并从该地址接收响应。在数据中心内部,外部请求首先被定向到一个负载均衡器。
负载均衡器的任务是向主机分发请求,以主机当前的负载作为函数来在主机之间均衡负载。一旦接收到一个对于特定应用程序的请求,负载均衡器将该请求分发到处理该应用的某一台主机上。当主矩处理完该请求后,向负载均衡器回送响应,再由负载均衡器将其中继发回给外部客户。
负载均衡器的存在不仅平衡了主机间的工作负载,而且防止客户直接接触主机,从而具有隐藏网络内部结构和防止客户直接与主机交互等安全性益处
等级体系结构:当主机规模扩展到几万至几十万的时候,数据中心通常应用路由器和交换机等级结构。因为云应用提供商持续地提供高可用性的应用是至关重要的,所以数据中心在它们的设计中也包含了冗余网络设备和冗余链路。
数据中心网络发展趋势:为了降低数据中心的高昂费用,同时提高其在时延和吞吐量上的的性能,谷歌,微软等不断地部署新的数据中心网络设计方案
6.7 Web页面请求的过程
准备:DHCP,UDP,IP和以太网
准备 DNS和ARP
准备:域内路由选择到DNS服务器
Web客户-服务器交互:TCP和HTTP