首页 第二章 数据连接层

第二章 数据连接层

举报
开通vip

第二章 数据连接层 下载 第2章 数据链路层 本章讨论影响网桥和路由器的数据链路层的问题。问题之一是数据链路层提供的服务应 该是可靠的还是面向数据报的。另一个问题是如何使多种网络层协议并存在同一链路上。当 节点收到一个数据包时,它怎么知道这个数据包是由什么协议产生的?尽管本章也讨论了很 多L A N技术这个令人入迷的话题,但并不意味着本章是对 L A N技术的详尽介绍。更准确地说, 这里解释了一般 L A N的一些技术,和那些影响桥接和网络层协议的特定 L A N技术。 2.1 一般的LAN 2.1.1 什么是...

第二章 数据连接层
下载 第2章 数据链路层 本章讨论影响网桥和路由器的数据链路层的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。问题之一是数据链路层提供的服务应 该是可靠的还是面向数据报的。另一个问题是如何使多种网络层协议并存在同一链路上。当 节点收到一个数据包时,它怎么知道这个数据包是由什么协议产生的?尽管本章也讨论了很 多L A N技术这个令人入迷的话题,但并不意味着本章是对 L A N技术的详尽介绍。更准确地说, 这里解释了一般 L A N的一些技术,和那些影响桥接和网络层协议的特定 L A N技术。 2.1 一般的LAN 2.1.1 什么是局域网 当人们使用“ L A N”一词的时候,他们可能指的是某些拥有和 L A N联系在一起的特性的技 术。下面就是其中的一些特性: • 多个系统连接到同一个共享媒体上。 • 高带宽(由所有站点共享的全部带宽 )。 • 低时延。 • 低差错率。 • 广播能力,也被称为组播(m u l t i c a s t)能力(传送单个消息给多个接收点的能力)。 • 有限的地理区域(几公里内)。 • 有限数量的站点(数百个 ); • 各站点之间的对等性(与多个终端和一台主机的情况相对)。在对等情况下,所有连接的 站点都是等同的。在主从情况中,一个特殊的节点叫做 m a s t e r,其余的则是s l a v e。 • 被限制成私用的,不使用公共电话电报网络。 注意“低”、“高”、“有限”等词都是相对 的,随时间而变化。根据本 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 的目的,我们并 没有必要去严格区分局域网( L A N)、城域网 (M A N)和广域网( WA N)(幸运的是 ,现在 L A N技术的提高扩展了地域,而广域网技术的 发展增加了带宽,使 L A N和广域网之间的区别 越来越不明显,而且要指出哪些是城域网是徒 劳的)。 基本上,一个 L A N(或者广域网)可被看 做是各个站点能连接到的“云”(图2 - 1)。如果 图2-1 网络云图 一个站点连接到这个“云”,它就可以向其他所有连接的站点发送和接收数据包。 2.1.2 轮转 在共享的媒体上,一次只有一个站点能成功地进行传输。必须存在某种在站点间分配带宽 的机制,使得 • 每个站点都能公平地共享带宽。 • 每个站点在合理的时间内都能获得访问媒体的权利。 • 由于仲裁机制而浪费的带宽必须最小化。 L A N上最流行的两种仲裁机制是令牌 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 和竞争方式。 在令牌方案中,每个站点按某种循环的方式被准许传输。 在令牌环(token ring)中,一个特殊的位序列—令牌(t o k e n) 在环上循环(图 2 - 2),当一个站点得到令牌的时候才被允许进 行传输。 在令牌总线(token bus)中,令牌是从站点发送到站点的一个特殊的包(图 2 - 3 )。每个站点 都需要知道它将把令牌传送给的那个站点。 图2-3 令牌总线 在竞争方式中,站点按照自己的意愿进行发送,如果两个站点同时进行传输,冲突 (c o l l i s i o n)就发生了,而且它们的传输都不会成功。竞争机制是为了最大可能地减少冲突而建 立的。竞争方式是“概率上公平的”,这就是说理论上有些站点将永远也不能进行传输,因为每 次它进行传输时都有其他节点同时传输。但竞争方式的 L A N是经过小心设计的,使得这种情形 不太可能出现。 依赖于可能性而非一个能保证所期望结果的方案,看起来很令人不安。但是你必须认识到 我们每天都是依赖于可能性的。房间里有足够你呼吸的氧气存在其实也是一种可能性,理论上 第2章 数据链路层 1 5 下载 图2-2 令牌环 数据 1 6网络互连(第2版)网桥·路由器·交换机和互连协议 存在着所有氧气分子都通过随机运动离开这个房间而使你窒息的可能。 甚至能提供保证的方案实际上也是一种可能性。令牌仅仅是位序列,很可能被破坏。在令 牌方案中,理论上存在着这种可能性:某个站点永远也无法成功地传输,因为在它能访问前令 牌总是丢失了;或者每次站点都成功获得了令牌,但是传输的数据却经常丢失。 2.2 IEEE 802 LAN I E E E有一个8 0 2委员会,目的就是标准化L A N。它已经标准化了不止一个 L A N。 L A N技术覆盖了O S I模型的下两层(物理层和数据链路层)。8 0 2委员会将数据链路层划分为 两个子层: 1) 媒体访问控制(M A C)处理与特定类型的 L A N相关的问题,例如处理信道管理算法,如 令牌传递(8 0 2 . 5和8 0 2 . 4)、冲突检测后的二进制退避( 8 0 2 . 3)、优先权(8 0 2 . 5和8 0 2 . 4)、 差错检测和成帧。 2) 逻辑链路控制( L L C)定义了一些字段,使多个上层协议能共享数据链路层。因为有些 人认为数据链路层只提供简单的数据报服务是不够的,他们要求有更多的功能。于是决 定提供一些逻辑链路控制的风格。以下是两种广泛使用的类型。 a. L L C类型1是简单的数据报协议,即包被数据链路层以最大努力( b e s t - e ff o r t)传递。在 数据链路层没有一种协议用来通知源站点是否数据已被成功接收了,而是在需要的时 候,认为在更高层完成了那种差错控制。注意 L L C类型1实际上不做任何事,因为 L A N 已经提供了最大努力的服务(这并不是对 L L C类型1的批评。协议不起作用总比协议起 着你不需要的作用要好,更好的当然是不需要的时候就完全不要那个协议)。 b. L L C类型2是基本数据报服务之上的可靠的面向连接的协议。这意味着除了 L L C类型1 需要的字段外,还有对包进行编号的字段,也提供一个捎带确认字段,还用来区分数 据包和控制包(如确认和重新同步消息)。L L C类型2本质上是运行面向连接的数据链 路协议H D L C的,H D L C用于L A N的面向数据报的协议之上的点到点链路。 其他类型的L L C试图提供更多的可靠性而无须 L L C类型2的开销。为揭示不同类型的 L L C可 能提供的特性,本书详尽介绍了 L L C类型1和类型2,但所有L L C类型的细节与网桥和路由器实际 上并无关系。 与本书相关的 IEEE 802委员会如下: • 802.1:处理所有802 LAN共同的问题,包括编址、管理和网桥。 • 802.2:定义L L C。特定类型L A N的M A C和物理层,由定义该类L A N的委员会定义。 • 802.3:处理CSMA/CD LAN,这是由以太网发展而来的。 • 802.4:处理令牌总线L A N。 • 802.5:处理令牌环L A N。 其他8 0 2委员会处理M A N和安全性等问题。 另一种类型的 L A N是F D D I,它是100 Mb的令牌环。它不只是 8 0 2 . 5的更快版本,而是与 8 0 2 . 5有很大的不同(虽然这种技术上的不同是很吸引人的,但与本书无关)。F D D I由A N S I标准 化而非I E E E。 下载 2.3 名字、地址与路由 在“名字”、“地址”、“路由”之间存在很多混淆,S h o c h是这样定义的: • 名字:这是什么? • 地址:在哪里? • 路由:怎样到达那里? 只要提到“名字”、“地址”、“路由”的时候都会提到S h o c h的文章。但我从来没有发现这些定义 有何帮助,因为根据前面的分类法,并不能在看到一串字符的时候,就能确定它到底是属于名 字、地址还是路由。 定义这三个概念的另一种有用的方法如下。假设一个特定的字符串指代一个特定的站点, 我们希望判断这个字符串是属于名字、地址还是路由。在下面的定义中,目标是指该字符串指 代的站点,源是指使用指出目标站点的字符串的站点。 1) 名字:对源和目标而言,名字是与位置无关的。如果目标的名字确定了,即使目标移动 了,名字也不会改变,并且不管哪个源想到达这个目标。“名字”的一个例子是社会保险 号,它不随号码拥有者的迁移而改变。名字字段有时被称为“标识符”或 I D。 2) 地址:地址的有效性与源的位置无关,但目标移动时它也可能相应改变。“地址”的一个 例子是邮政系统的地址,不管信是从哪儿寄出的,都可使用相同的目的地址。但如果目 标移动了,就赋予它一个新的地址。 3) 路由:路由同时依赖于源和目标的位置。换言之,如果两个源确定到某个目标的路由, 那么两条路由可能是不同的。如果目标移动了,那么所有去往它的路由都可能改变。路 径的描述类似于“从这儿到我家,要先往西走三英里,然后在第一个路口向右转。我家 就是左面的最后那个房子”。 注意,根据前面的描述, 8 0 2系列中的“地址”应归为“名字”而非“地址”。尤其是全球 统一分配的4 8位“L A N地址”,这个L A N地址并不因站点移动到另一个 L A N而改变。之所以要把 它们称为地址,可能是以下的原因: • 人们通常更喜欢把界面友好的字符串而不是位序列称作“名字”。因为4 8位的数值实在不 容易输入、记忆或查看,因而将“名字”等同于界面友好的字符串的人们就把它们称为 “地址”。我倒是更倾向于把这种不甚友好的、独立于位置的数值称作“标识符”或 I D。 • 从可以在站点间移动的高层进程来看,它的“ L A N地址”确实是地址,因为当高层进程移 动到其他节点时,“L A N地址”也改变了。 • 如果4 8位的“L A N地址”存放在到L A N的接口上而不在节点上,则有到 L A N的多个连接的 节点就有多个L A N地址。但4 8位的数值不是节点的编址,而是节点的某个接口的编址,因 此我认为这个4 8位数值是接口的标识符。 因为业界中的每个人都把这个4 8位的东西叫做“地址”,在本书中也是如此。但应该注意到, 大多数的术语都是含糊定义的,且不同的体系使用术语的方式是相互冲突的。 第2章 数据链路层 1 7 下载 J. Shoch,“Internetwork Naming, Addressing, and Routing”,Compcon(1978年秋),72~79。 1 8网络互连(第2版)网桥·路由器·交换机和互连协议 2.4 局域网地址 在很多 L A N技术中,每个站点都可以“听”到每一个包传输,所以在每个包中必须包含 “目的”字段。为使目的站点能够知道是哪个站点发送了包,“源”字段也是必需的。为防止每 个包都产生软件中断,L A N适配器会过滤掉那些不是给该站点的包。 8 0 2委员会需要为它的 L A N标准化地址。第一个决定就是设置地址字段的长度。委员会显然 认为如果标准定在一个固定的长度是好的,标准化为几个长度则会更好。 8 0 2委员会给出了L A N (除了8 0 2 . 6)使用4 8位或1 6位地址的建议。在 8 0 2 . 6上给出的建议是使用 1 6、4 8或6 0位的地址。 幸运的是,1 6位地址并没有流行起来,所以完全可以忽略。 1 6位地址的观点认为这个长度足够任何 L A N管理员为一个单独的 L A N分配地址。8 0 2 . 4使用 地址来解决初始竞争状态以建立一个逻辑环,而使用 1 6位地址会使启用或重启更快。 4 8位地址观点认为它们可以使设备在出厂时就获得一个全球唯一的标识符。这就使网络是 真正即插即用的,因为用户买回设备后,并不需要人为分配地址,直接就可以接入到网络上。 全球唯一的地址之所以可行,是因为有一个全球的机构负责分发地址块。起初是施乐公司,现 在是 I E E E。每个设备厂商想要制造即插即用的 L A N设备时,都要先和该机构联系并获得地址。 现在22 4个地址的价格是 $1 250。换言之,厂商得到了固定的 3个八位组的值,而其余的 3个八位 组则由厂商自行分配。地址的固定值部分往往被称为“厂商代号”或 O U I(o rg a n i z a t i o n a l l y unique identifier,组织唯一性标识),但这实际是个误称,因为厂商可以购买多于一个的地址块, 也可以把地址转赠给其他厂商。 有固定值的3个八位组实际上有另外的结构 (见图2 - 4 )。其中有一位表示“组 /个体”,如果该 位是0,则地址指一个特定的站点;如果该位是 1,则地址是指站点的一个逻辑组。因此,全球 机构并没有真正给出 2 4位固定值,而只是固定值中的 2 3位,剩下的一位是组 /个体位。一个完整 的地址是6个八位组长,3个八位组的值是常数,另外 3个八位组(2 4位)由厂商分配。因此,当 厂商购得一个地址块时,他得到了 22 4个站点地址和22 4个组地址。 图2-4 IEEE地址 8 0 2委员会并不能肯定每个人都愿意去花费精力(和金钱)从全球机构获取地址块,因此就 指定了4 8位中的另外一位来标识地址是全球还是本地分配的。当厂商是从全球机构购得地址块 时,全球 /本地标志位将被设为0。如果全球 /本地标志位设为1,人们就可以随便使用地址。当使 用本地地址时,应由网管人员进行地址分配,并确保没有地址冲突(即两个站点使用了相同的 地址)。当两个网络合并时,地址冲突就是一个重要的问题。 组地址有时也称作“组播地址”(multicast address)。组播地址常用来发现适当的邻居(同 第1个八位组 第2个八位组 第3个八位组 (组/个体)位 (全球/局域)位 第4个八位组 第5个八位组 第6个八位组 下载 一链路上的节点),可用下列两种方法中的一种: 1) 请求:假设网络上有一个或几个某种特定类型的站点,例如域名服务器、路由器、文件 服务器等等,站点A希望访问到这些服务器。可以给站点 A配上所有这些节点的地址,但 如果站点A不需要事先知道特定的服务器会更好,它只需要知道单个组地址 Z服务器(这 里Z指任何一种服务,比如上面提到的那些)。 当站点A想要访问一个Z服务器时,它就传送目的地址为 Z服务器的包。所有的Z服务器都 会接收并回应针对这个地址的包。 2) 广告:另一种使用组地址的方式是为站点侦听服务定义一个地址。 Z服务器的客户不需要 发送给Z服务器以请求帮助,而由 Z服务器定期向Z客户这个地址发送包。 Z客户将接收所 有地址为Z客户的包,然后根据包的源地址或数据部分中明确包含的其他某些字段, Z客 户就能知道一个Z服务器的地址。 这种方法和人类社会的商业广告一样。广告商总是希望它所发出的广告仅能被那些感兴 趣的人收到,而广告商所能用的最好办法是在其观众对特定产品感兴趣的媒体上做广告。 2.5 组播地址与单播地址 为什么组播地址和单个的地址看起来不同?如果一个特殊的地址被用来表示“所有的 Z服务 器”,而所有的Z服务器除侦听它们自己的地址之外,还应侦听这个地址,那为什么不把任何一 个地址作为组播地址呢? 问题在于L A N上有很多的包,如果每次有包在网上传输时,站点上的软件就不得不处理中 断,站点的性能就会非常低。硬件会收到每一个包,而且很可能还要求它再传递这些包。这称 为“混杂侦听( listening promiscuously)”。 有时(比如对于网桥或 L A N监测工具),需要硬件来发送每一个收到的包。但是对大多数应 用而言,“混杂”都是没有必要的。硬件应该能查看这个包的足够信息,从而判断这个站点是否 需要这个包。如果需要,它就把包交给软件进程处理,否则就丢弃(过滤掉)。 理论上,不需要在地址中保留一位来区包播地址和个体地址。理想情况下,软件会告诉硬 件处理芯片它所感兴趣的所有地址,而硬件仅把那些数据链路报头中“目的地址”字段与上述 某个地址匹配的包传给软件进行处理。 但是如果让软件提出它所感兴趣的地址,芯片设计者就需要选取一个可能被要求的最多地 址数目。这个值如果取得过大,芯片的造价就会太高;如果过小,则当软件进程要求的地址数 超过这个范围时,芯片就会变得无效。 很多芯片按下述规则来设计: • 地址中用一位来表示是组地址还是个体地址。 • 站点告诉硬件它所感兴趣的个体地址。 • 芯片把一套组地址分为若干个组(技术上称为“散列漏桶( hash bucket)”)。如果站点想 要接收一个特定的组地址,它必须选择该组播地址所散列变换到的漏桶。然后。芯片将发 送所有目的地址散列变换进那个漏桶的包。 这种做法的理论依据是一个站点可能只对单个个体地址(即它自己的地址)和某些组地址 第2章 数据链路层 1 9 下载 2 0网络互连(第2版)网桥·路由器·交换机和互连协议 感兴趣。硬件应该允许由软件来指定它所感兴趣的组播地址,但这又会出现上面说到的最大地 址值的问题。所以芯片用几个散列漏桶对组播地址进行排序来代替确切指出具体的组地址,而 软件只把散列漏桶的一个子集告诉给硬件。这样的芯片设计使站点无法避免那些它不感兴趣的 组地址引起的软件中断,因为芯片会把这个漏桶所对应的所有组播地址的包都传递给软件处理 进程。 另外一种芯片设计提供了 • 一些固定数目的确切地址(包括组地址和个体地址)。 • 几个地址散列漏桶,站点可以请求这些散列漏桶的任何子集。 有了这种设计,如果一个站点希望接收的地址数不超过芯片所允许的地址数目,就可以实现完 全的过滤(不会有不感兴趣的地址所引起的软件中断)。当站点需要接收的地址数超过了所限定 的数目,就只能依靠散列漏桶的方案,并且希望有很大通信量的不感兴趣的地址不会恰好散列 变换到所选取的漏桶。 2.6 广播地址 一种特殊的组地址称为“广播地址”,用全1表示,表示所有的站点。理论上,所有的站点 都应该能接收到发给广播地址的包。如果 L A N中有一种协议需要被所有的站点实现,则它应采 用广播地址,但实际上,这种协议是不存在的,或许永远也不会有。 因而没有必要让协议使用广播地址,因为它实际并不表示“所有的站点”,而是指“实现了 这种特殊协议的所有站点”。不幸的是,确实有协议采用了这种广播地址。由于早期 L A N适配器 采取的一些“捷径”,使得在一定程度上不得不使用广播地址,比如,除非站点混杂侦听,否则 它们无法收到任意的组播地址。由于硬件是根据目的地址而不是复用信息(见 2 . 7节)来进行过 滤的,这就意味着用广播地址发送的每个包都会引起站点的软件中断,即使该站点并没有实现 这个协议。 2.7 复用字段 可能在同一个站点上需要实现多种高层协议。当一个发送给该站点的包到达时,需要有方 法来判断由哪个协议来接收此包。类似地,多个不同的协议会发送包给广播地址。当一个站点 收到包时,它必须决定如何解释这个包(即判断这个包是由什么协议创建的)。 例如,它可能检查这个包,判断是不是一个合法的 I P包,如果不是,则肯定是从其他网络层 协议来的。但是由于大多数协议在设计的时候,没有特别注意到与其他协议的包之间的区分, 因此不能只根据数据来判断接收者是谁。 在人类的语言中也有同样的问题,我们基本上是靠一系列声音来表达我们的意思的。当你 在街上拦住一个人并用英语问他“请问你知道最近的一个地铁站在哪里吗?”,很有可能那人只 懂火星语,而听不懂你说的英语。更糟糕的是,你的话在火星语中可能表示粗鲁的东西,以至 那人非但没有告诉你怎么去地铁站,而是直接掏出放射枪把你给熔化了。 为了解决这个问题,需要定义一个通用的规则,即在发送信息之前,先申明你使用的是何 种语言。虽然现在人们还没有为自然语言定义一套这样的规则,但对于 L A N来说,这套规则已 下载 经制定好了(见图 2 - 5)。在L A N报头中有一个字段指出了所使用的协议。在最初的以太网设计 中,有一个称为“协议类型”的 2字节长的字段,这个字段由施乐公司进行全球化管理,任何想 制定协议的人都需要与施乐公司协商以获取一个表示该协议的数字标识。 图2-5 协议类型复用技术 当8 0 2委员会制定L A N标准时,他们认为,为源端和目的端分别保留字段的方案是更灵活的 (见图2 - 6)。这些字段被称为“服务访问点”(S A P)。在8 0 2协议的报头中包括了 S S A P(源端服 务访问点)和D S A P(目的端服务访问点)。这种安排使得不同机器中协议的数字表示更为灵活。 图2-6 SAP复用技术 S A P字段的长度为8位。和L A N地址一样,其中有2位是保留位。一位用于表示“全球 /本地” (G l o b a l / L o c a l),和L A N地址字段中的类似位一样,它表明是由 8 0 2委员会分配了这个 S A P数字 (确保它的唯一性),还是由本地网络管理员管理这个数字。 另外一个保留位用来表明“组 /个体”,它使你可以发送一个被系统中多个高层协议接收的包。 在L A N地址中保留一位是为了制造芯片时更方便,但由于基于 S A P的过滤不是由硬件完成的, 因而这个原因不适用于S A P。这一位在L A N地址中有意义而在S A P中没有太大意义的另一个原因, 是因为同一L A N中的多个不同站点可能实现相同的协议,因而要接收相同的消息。而在一个站 点中不太可能出现多个高层进程同时实现一个共同协议。但是,既然有整个 8位可用,为什么不 保留一位(即使这一位起的作用很小)呢?(提示:前面说的是气话,实际上, 8位不足以使这 种方案可用。在下面几段中,我们会看到,只是因为发明了 S N A PS A P,才可能使除了 I S O或者 I E E E以外的协议也可以使用8 0 2定义的L L C)。 全“1”的S A P是保留的,表示“所有的S A P”,类似于广播地址。全“0”(除“G / L”位外) 的S A P保留用来表示数据链路层本身,而不是数据链路层的用户。S A P的结构如图2 - 7所示。 图2-7 SAP的结构 除去上述两位保留位,全球分配的 S A P编号只有6位,因而8 0 2委员会无法保证提供给每一个 希望定义协议的组织一个 S A P编号。为此,8 0 2制定了严格的规则来分配 S A P编号,而且不是采 取“先申请先服务”直到分配完的办法。只有那些经 8 0 2委员会批准的标准组织制定的协议才可 第2章 数据链路层 2 1 下载 八位组数目 目的 源 DSAP SSAP 数据 组/个体位 G/L全球/本地位 八位组数目 目的 源 协议类型 数据 得到S A P编号。 对那些可以获得全球 S A P编号的协议来说, S A P字段就像一个单一协议类型字段,因为 S S A P和D S A P是相同的(它们都等于分配给该协议的全球 S A P值)。 其他协议(没有全球S A P编号的协议)可以使用本地分配的 S A P编号,系统管理员可以为每 个协议指定本系统中唯一的一个编号。但这种方式使会话的开始很困难,因为在不知道对方机 器的S A P编号的情况下,很难给它发送一个协议消息。 8 0 2提出了一个让 S A P系统可行的办法,它由请求一个单一的全球指定的 S A P值组成。当 D S A P被设为那个值时,表明报头被扩展而包括了一个“协议类型”字段。这个字段要求足够大, 以使每个协议都能得到一个唯一的编号。 最初,协议类型字段是 2个八位组,因为最初的以太网上协议类型占 2个八位组,且施乐公 司知道它表示什么。但后来有人注意到, 8 0 2的报头包含了奇数个八位组,而如果协议类型占奇 数个八位组,则可以使整个报头为偶数个八位组,从而提高那些希望字段是按 1 6位对齐的机器 的性能。 然后有人注意到,如果协议类型字段超过了 3个八位组,则这个字段可以通过和地址的管理 联系在一起,从而进行“免费的”管理。也就是说,当一个设备厂商买下一个地址块时,他得 到了一个3个八位组长的常数(包括组 /个体位),而其余的3个八位组可由厂商自由分配。厂商可 以将那个3个八位组长的常数作为协议类型的高位部分,然后分配协议类型。例如,如果协议类 型字段是4个八位组长,则当设备厂商买下一块地址时,他也就可以定义 2 5 6种协议类型。 最后人们达成了一致,把协议类型字段设为 5个八位组长,因为5是大于3的最小奇数。 那个指出存在协议类型字段的全球范围内定义的 S A P值,称为S N A P(子网访问协议)S A P。 它等于1 0 1 0 1 0 1 0(二进制)或者a a(十六进制)。当使用了SNAP SAP时,D S A P和S S A P都被设 为a a(十六进制)。拥有全球分配的 S A P值的协议把D S A P和S S A P设为相同的值,即全球分配的 S A P值。而那些没有全球分配的 S A P值的协议,也把D S A P和S S A P设为相同的值,即SNAP SAP (a a(十六进制))(在我看来,8 0 2定义的字段,即S A P和L L C,纯粹是浪费报头的空间,也增加 了规范说明的长度和理解的难度。实际上只需要一个协议类型字段)。 地址和协议类型字段的结构如图 2 - 8所示。 图2-8 IEEE802的地址和协议类型结构 当一个组织购买了一块地址时,它得到了一个 3个八位组的数值,如 X Y Z,地址格式为 X Y Z * * *。这个组织可以指定站点的地址为 X Y Z * * *,组播地址为X’Y Z * * *,这里X’表示设置 2 2网络互连(第2版)网桥·路由器·交换机和互连协议 下载 地址块 协议类型 由IEEE定义 由IEEE定义 由厂商指定 由厂商指定 了G / I位的X。它还可以指定协议类型为X Y Z * *。 注意,当一个协议类型被指定后,就与指定它的组织无关了。为协议指定一个类型值只是 为了让它不和其他的协议发生冲突。由拥有 O U I = X Y Z的组织指定的类型为 X Y Z A B的协议,可 以被任何组织使用且总有类型值 X Y Z A B。 2.8 位序 对地址而言,需要解决的一个问题是它们该如何表示和传输,因为不同机器存储比特和字 节的方式也不同。8 0 2 . 1委员会制定了一个地址书写的标准格式,即用连字符分隔的 6个八位组, 每个八位组用2个1 6进制数表示。例如,某个地址可被写成 a 2 - 4 1 - 4 2 - 5 9 - 3 1 - 5 1。 8 0 2 . 3和8 0 2 . 4规定,最低位最先传输;而 8 0 2 . 5(及F D D I)规定,最高位最先传输。这不是 个问题(因为某个特定L A N上的发送方和接收方的适配器应是对称的,发送的顺序是不要紧的), 除非地址中的组位 (group bit)没有被定义成“最高位”或“最低位”,而被定义成“线路上的第 一位”。因而8 0 2 . 3上的组地址在8 0 2 . 5上传输时,可能看起来就不像是一个组地址了,因为首先 传输的位不同。 地址的标准格式采用最低位在前的顺序。因而,地址 a 2 - 4 1 - 4 2 - 5 9 - 3 1 - 5 1不是一个组地址,因 为它的第1个八位组(a 2,1 0 1 0 0 0 1 0)的最低位是0。 在8 0 2 . 5或F D D I上传输的地址,由于有最高位最先传输的要求,因而需要被存储成其他的格 式。 图2 - 9说明了地址a 2 - 4 1 - 4 2 - 5 9 - 3 1 - 5 1被存储为最低位最先传输的格式。 图2-9 地址a2-41-42-59-31-51,不重要的位排前面 图2 - 1 0说明了地址a 2 - 4 1 - 4 2 - 5 9 - 3 1 - 5 1被存储为最高位最先传输的格式。 图2-10 地址a2-41-42-59-31-51,最重要的位排前面 因此,在8 0 2 . 5(或F D D I)与其他L A N之间转发数据的时候,网桥需要先对地址进行重新排 列。 一个更困难的问题是如何在高层协议消息(如管理消息或 A R P(地址解析协议,将在第 11 章中讨论)消息)中包含 L A N地址。如果高层协议的实现在把 L A N地址放入协议消息前没有将 其转换成规范的格式,则目的站点若不判断产生此协议消息的 L A N类型,就不能解释包含了 L A N地址的字段。而高层协议一般不知道 L A N的类型,因为它是与高层协议无关的。 8 0 2委员会在所有L A N的位序上没有统一,导致了大量的混淆和互操作性问题。例如,至少 会有一个协议是这样实现的:若数据链路层报头中的地址与高层报头中表示的地址不一致,则 协议失败。因此,如果网桥在 8 0 2 . 3和8 0 2 . 5之间转发数据时作恰当的地址重排,这个协议就会失 第2章 数据链路层 2 3 下载 败。网桥厂商被迫采取的方法是:特别检查这种特殊的协议类型,并且对该协议类型的包的数 据链路层报头地址不做重排。这样,该协议的桥接包的地址与实际应该有的地址表示不同,这 会引发下面两个主要问题: 1) 站点地址——若位序是翻转的(在 L A N上可能作为组播地址出现),就会引起源路由网桥 错误地解析这个包,也会使透明网桥拒绝转发这个包。 2) 翻转位序的站点地址可能是另外一个站点使用的地址。 2.9 逻辑链路控制 L L C子层在规范中好像是与 M A C子层分离的。如果人们能对 L A N的数据报服务达成一致, 那么8 0 2委员会也就没有必要把L A N的数据链路层再划分为这两个子层了。 在本章的开始已经提到,目前定义了多种 L L C类型。类型1是数据报服务,类型 2是面向连 接的服务。其他几种类型不常用,可以忽略。 L L C层中的数据链路层字段只有 D S A P、S S A P和C T L。源地址和目的地址是 M A C子层考虑 的部分。这意味着技术上每个 L A N委员会(8 0 2 . 3、8 0 2 . 5等)都可以自己定义地址,幸运的是 不同L A N的地址是相当一致的。但不幸的是,正如我们在本章后面将介绍的,它们并不相同, 因为有地址的位序问题和8 0 2 . 5中的任意组播地址问题。实际上,对 8 0 2 . 5来说,地址一开始就是 不同的:它们最初是层次型的, 6个字节中的一部分表示站点所在的环号,地址的其余部分表示 相应于那个环的站点号。现在那已经改变成 6字节的站点地址,和其他的 L A N一样。 L L C类型1中的C T L(“控制”)字段占一个字节,为以下三个值之一: 1) UI:“未编号的信息”(表示是个数据报)。 2) X I D:“交换身份标识”。有两种类型:“响应”和“命令”。“命令”将命令发送者的身份 及所支持的L L C类型告知接收者。“响应”是对X I D命令消息的回答。它包含了与 X I D命 令相同的信息:X I D响应发送者的身份及所支持的 L L C类型。 3) T E S T:和X I D一样,也有两种 T E S T消息:命令与响应。 T E S T用于检测一个包是否能发 送给接收者并返回。 T E S T命令中包含了任意的数据,而 T E S T响应中包含的数据是从相 应的T E S T命令中复制的。 在X I D和T E S T中,命令与响应包是根据 S S A P字段中的一位来区分的。 8 0 2委员会认为没有 人会从一个组S A P发送包,所以S S A P中的G / I(组/个体)位被用来区分命令 /响应。 在L L C类型2中,C T L字段可以是1个或2个字节长,这取决于包的类型。 C T L字段为2个字节 长的包类型包含了一个序列号,这些包如下: 1) I(信息)是一个数据包。此时, C T L为2个字节,其中的7位是由源端S到目的端D的数据 包的序列号,再加上从D到S的7位确认包序列号。 2) R R(接收就绪)是一个确认包。它包含一个序列号,表明所有小于这个序列号的数据包 都已经收到,也表明接收者现在可以接收更多的数据。 3) R N R(接收未就绪),和R R一样,是一个对早先发送的数据包(序列号小于 R N R中序列 号的那些数据包)的确认。但 R N R表明的是目前接收方处于繁忙状态,发送方在接到 R R 以前,应不再发送新的数据包。 2 4网络互连(第2版)网桥·路由器·交换机和互连协议 下载 4) R E J(拒绝)表明接收方要求重传从所指定序列号开始的数据包。 C T L字段为1个字节长的其他L L C类型2的包类型如下: 1) S A B M E(设置扩展的异步平衡模式)请求建立连接。这个怪名字的来源有历史的原因。 2) DISC(释放连接)请求终止连接。 3) DM(断开连接模式)是对D I S C的响应,表明接收方已经收到D I S C。 4) FRMR(帧拒绝)表明收到了一个无效帧,如一个序列号出错的帧。 5) UA(非编号的确认)确认一个D I S C或者S A B M E消息。 2.10 802.3中的问题 802.3 LAN的访问是竞争式的,这种技术称为C S M A / C D(带冲突检测的载波侦听多路访问)。 “载波侦听”表示希望发送的站点先要侦听线路,如果其他站点正在发送,则等待到线路空闲为 止。“多路访问”是指多个站点共享媒体。“冲突检测”是指站点在发送时要监测媒体,从而知 道是否有冲突发生—即有其他站点同时在发送。 当线路空闲时,如果有 2个站点同时企图开始传输数据,就会导致冲突的发生。而且,即便 不是同时开始传输,也有可能导致冲突。当一个站点开始传输时,它的信号被其他站点检测到 需要一段时间的延迟,特别是对于另一个位置比较远的站点。因此,线路越短,冲突的可能性 就越小(见图2 - 11)。 最初的CSMA/CD LAN是由施乐公司设计的,称为以太网。它的设计目的是为了让发送方能 知道它所发送的数据是否因为发生了冲突而失败。为了达到这个要求,不得不限制线路的长度, 包也有最小长度的限制。在最坏的情况下,线路一端的站点发送了数据后,在其第一个字节刚 要到达另一端前,另一端的站点开始发送数据。这样,第一个站点要等待信号从一端发送到另 一端所需时间的2倍后,才能检测到冲突的发生。 这段时间被称为“时间槽( slot time)”。假定线路的最大长度为2 . 5公里,给定线路上的电子 传输速率,并假定按 10 Mb/s的速率进行数据发送,这就需要化 5 1 2 b i t的倍数才能检测到冲突。 因而,每个包至少应为 5 1 2位长,因为如果站点完成了包的发送,且在这期间没有检测到冲突, 它就会认为传送成功了。有些协议可能想发送更短的包,但这些包必须填充以达到所要求的最 小长度。 802.3 LAN特有的一个问题是:委员会并不是仅仅规范了以太网,实际上还做了某些修改。 虽然8 0 2 . 3标准的硬件能与以太网的硬件兼容(即两种类型的站点可以共存于一段线路上),但报 头格式稍有不同。 以太网和8 0 2 . 3的报头如图2 - 1 2所示。 有必要采取 措施 《全国民用建筑工程设计技术措施》规划•建筑•景观全国民用建筑工程设计技术措施》规划•建筑•景观软件质量保证措施下载工地伤害及预防措施下载关于贯彻落实的具体措施 使一个站点可以同时接收这两种格式的包。幸好这两种格式是可以区分的, 因为8 0 2 . 3中2字节的“长度”字段正好对应以太网中的“协议类型”字段。 8 0 2 . 3最大的合法包 长度为1 50 0字 个人自传范文3000字为中华之崛起而读书的故事100字新时代好少年事迹1500字绑架的故事5000字个人自传范文2000字 节,而施乐公司保证了在以太网上使用的协议类型的值肯定不小于 1 500。实际上, 8 0 2 . 3标准之前的一些协议类型所分配的值是小于 1 500的,因此它们必须重新分配(使其大于 1 5 0 0)。因而,当一个站点收到一个包时,如果源地址之后的字段的值小于 1 500,则认为该包是 8 0 2 . 3格式的,否则是以太网格式的。 第2章 数据链路层 2 5 下载 2 6网络互连(第2版)网桥·路由器·交换机和互连协议 图2-11 最糟的冲突检测情况,需要往返时间 这两种格式间的另外一个不同是,在以太网中使用协议类型,而在 8 0 2 . 3中使用2个S A P字段。 目前,8 0 2 . 3中的S A P字段按下面两种方式之一(除去 X I D和T E S T)使用: • 使用8 0 2批准的协议,此时D S A P = S S A P,且等于全球分配的S A P值; • 或者D S A P = S S A P,等于全球分配的SNAP SAP值,且在C T L字段后面是5字节的协议类型 字段。 时间t 0 在时间t 0 +X之前 时间t 0 +X 时间t 0 +2X 时间t 0 + 3- 2 X S1开始传输 比特流未到达S2 S2开始传输 检测到冲突发生 中间位置的站点检测到 冲突的发生 S1检测到冲突的发生 下载 图2-12 以太网和802.3的报头 2.11 802.5中的问题 是的,但是我宁可坐大巴士去,世界上没有什么比大巴士更好的了。 —当威尔士王子查尔斯被问到他乘坐豪华游轮到托布鲁克访问的感受时,王 子如是说(摘自1 9 5 4年5月2 1日的新闻)。 令牌环具有一个很好的特性—每个包都要经过每个站点,源站点在接收到它发出的包后 就可以将其从环上删除。这样,目标站点可以在包上作标记以告知源站点该包已经被接收到 (至少已被硬件接收到,因为即使硬件已接收了包,目标站点上的拥塞还是可能使包被丢弃的)。 在8 0 2 . 5标准中,每个包的最后有两位被目标站点用做确认。其中一位是 A标志位,表明在 令牌环中存在包中地址所指定的目标站点。另一位是 C标志位,表明目标站点已经将包复制进自 己的缓存中。如果A标志被设置而C标志被清除,说明目标站点暂时正忙:虽然目标站点知道应 该复制该包,但是由于拥塞而无法复制。从理论上说,如果源站点发送一个包,且该包环绕后 回到源站点,则源站点可以通过检查 A和C标志作出如下推测: 1) 如果A标志是清除的,说明目标站点不存在或不活动,所以不必重传该包。 2) 如果A标志和C标志都被置位,说明目标站点已成功接收了该包,所以也不必重传该包。 3) 如果A标志被置位而C标志清除,说明目标站点暂时正拥塞,立刻重传很可能会成功。 4) A标志清除而C标志置位,这种组合被认为是无意义的,不少实现中都会把这种情况当作 一个错误。 尽管这两个标志位对于令牌环来说是很好的,但是对于网桥而言这两个标志却不太有意义。 网桥对它们的处理有很多种选择,下面是其中的几种: 1) 总是清除这两个标志位。 2) 对这两个标志位不做任何修改。 3) 在转发包时设置A位,清除C位。 4) 在转发包时清除A位,设置C位。 实际应用中使用第四种方法。 A标志和C标志还有其他的用途,这两个标志可以帮助令牌环上的站点确定它们之间的物理 顺序。一个站点发出一个目的地址是所有站点( a l l s t a t i o n s)的包。环上的下一个站点将接收到一 个A位未置位的包,所以它知道自己是源站点的邻接站点并将 A置位。而其他下游站点不能得出 第2章 数据链路层 2 7 下载 以太网 目的 源 协议 数据 数据目的 源 长度 2 8网络互连(第2版)网桥·路由器·交换机和互连协议 这个结论。每个站点依次发出这种特殊的包,向下游的直接邻接站点表明自己。不过, A和C标 志的这些用法对于网桥和路由器是没有意义的。 8 0 2 . 5的另一个问题是,所使用的芯片并不支持真正的组播地址。相反,它们支持“功能地 址”(functional address),只有3 1位,因为有1 7位是常数,之后才是 3 1位,而8 0 2 . 5类型的组播 地址只设了一个标志位(注意:从技术的准确性角度说,我希望称它们为“无功能”地址,但 我想市场营销人员会认为功能地址听起来更好)。由于8 0 2 . 5的芯片不支持接收真正的组播地址, 原来被指定为使用某个组播地址的协议,必须转而要求得到一个 3 1位的功能地址。另外,连接 8 0 2 . 5和其他L A N的网桥还必须注意两件事情:一是某个协议在非 802.5 LAN上的组播地址与该 协议在8 0 2 . 5上的功能地址之间的映射关系;二是如果使用了多于 23 1个组播地址,则需要有一个 复用机制,使得几个组播地址可以映射到同一个功能地址上。实际上, 23 1个功能地址要比组播 地址(24 7个,超过1 0 0万亿)少得多。 即使新的8 0 2 . 5芯片开始支持真正的组播地址,与现有设备的向后兼容性也会使 8 0 2 . 5和其他 L A N间的桥接变得很复杂,因为需要在组播地址和功能地址间作转换。 2.12 包的突发性 许多站点都不能长时间地以 L A N中的传输速率来处理包。这基于如下假设:如果 L A N的总 带宽(比方说)是10 Mb,则单个站点并不需要那么快地处理包,因为给某个站点的通信量远低 于10 Mb。但包有可能突发性地到达,而超出了站点的接收能力。虽然每个站点通常都有一定大 小的缓冲区,但是只要处理包的速度跟不上包到达的速度,缓冲区就迟早会溢出。如果发生这 种情况,最早到达的那些包能够得到处理,而后来的包都将丢失。 理解这种情形非常重要,因为有些协议在这种情况下可能永远无法工作。假设有一个“申 请─回复”协议,站点通过它从另一个站点请求数据。如果有一部分数据没有接收到,则站点 会重新提出同样的申请。假设数据需要用 1 0个包来传输,发送方同时发送所有这 1 0个包,而请 求方只能缓存2个包,那么这个传输就永远无法实现,因为每次请求者接收回复时,它的硬件只 能接受头2个包而其余的包被丢弃。 2.13 需要网桥的理由 前面几节所讨论的技术都有某些限制: 1) 站点数的限制:在令牌环网中,每加入一个站点到环中,都会增加时延,即使它不发送 数据。 2) 大小的限制:在8 0 2 . 3中,线路需要充分的短,以便让站点在传输一个合法的最小的包时, 能够检测到冲突。 3) 通信量的限制:在所有的 L A N中,多个站点共享带宽。 L A N上的站点越多,以及希望传 输数据的站点越多,每个站点能够分配到的带宽就越小。 由于这些原因,单一的 L A N很难适合一个组织的需求。如果一个站点需要通过路由器把包 发送给另外一个地区的站点,则这个站点需要实现能和路由器协作的网络层协议。这样,就可 以通过路由器把多个L A N连接在一起。 下载 但是,如果一个站点只是在一个单一的 L A N里接收/发送数据,那么它们一般都没有实现网 络层,因而不能使用路由器。因为很多的站点没有设计网络层,但确实需要有一个“盒子”来 连接L A N,使得包可以在 L A N间转发,而不需要站点间的协作。这样的“盒子”称为网桥,我 们将在第3章讨论。虽然最初设计网桥的目的是为了适应那些没有网络层的站点,但实际上,网 桥非常有用,它可以支持所有的网络层协议,这样不少组织同时运行了很多网络层协议。多协 议路由器还没有被广泛应用的时候,网桥可以起到相同的作用,在不同网络层协议之间传递数 据。现在多协议路由器使用得越来越多了,而且人们厌倦了各种各样的网络层协议,开始慢慢 地汇集到 I P上来。但是网桥始终很受欢迎,因为它简单、性能高,且允许 I P站点在网桥的拓扑结 构里移动而保留它的网络地址。 2.14 点对点链路 有两个问题和L A N及点对点链路都相关: 1) 服务:传统上,为点对点链路设计的数据链路层协议是提供可靠服务的。如果每条链路 上的出错率都比较高,则逐跳的可靠服务是非常重要的。否则,通过多跳成功传输一个 包的可能性会变得非常小,意味着源端需要重发无数次。 H D L C 和D D C M P 是数据链 路层提供可靠服务的例子。 技术改进后,数据链路层上的数据报服务不但更易于接受,而且性能也提高了。 P P P(点 对点协议 )是由T C P / I P体系为点对点链路开发的提供数据报服务的数据链路层协议。 它本质上就是一个简化的 H D L C。P P P与H D L C之间的关系类似于 L L C的类型1与类型2之 间的关系。 图2 - 1 3显示了H D L C的格式。 图2-13 HDLC格式 F l a g是个特殊的位模式,表示数据包的开始和结束。当一条链路上有多于 2个站点时,地 址是必需的。在一个 L A N中,有2个地址是必需的:一个是源地址,另一个是目的地址。 但是,H D L C并不是为L A N设计的,而是为有一个主机( m a s t e r)和多个分机( t r i b u t a r y) 的多点访问链路设计的。这种链路上的分机之间并不传送包,包只能在主机与分机之间 传输。包从主机传给分机时,地址字段指出将要接收包的分机;由分机传给主机时,地 址字段指出发送这个包的源。控制字段的含义与 L L C类型2中的含义相同。数据字段和校 验和字段的意义是明显的。 第2章 数据链路层 2 9 下载 标志 地址 控制 数据 校验和 标志 国际标准化组织,I S O标准3 3 0 9 - 1 9 7 9。“Data Communication—Highlevel Data Link Control Procedures— Frame Structure,”1979. DNA数字数据通信信息协议(DDCMP)功能规范,4.1.0版,序号AA-K175A-TK.,数字设备公司。 W. Simpson,编辑,“The Point-to-Point Protocol”RFC1661,1994年7月。 2) 复用:和L A N一样,多个高层协议可以复用在同一条链路上。除非所有协议的设计使得 所有的包都不会发生混淆,否则必须有一些字段来澄清包所属的协议类型。在 L A N中, 有一个协议类型字段。传统的数据链路层协议并没有一个协议类型字段, P P P为此增加了 一个1 6位的“协议”字段,其格式如图 2 - 1 4所示。 图2-14 PPP格式 地址字段被设为全1,控制字段是个单字节,设为 3(H D L C将其视为“未编号的信息”)。 协议字段长为2个字节,它所定义的值见“assigned numbers”R F C(RFC 1700)。 习题 1. 地址5 3 - 2 1 - a b - 4 1 - 9 9 - b b是个组地址吗?它是全球分配的还是本地分配的?分别写出它在 8 0 2 . 3和8 0 2 . 5中传输时的比特表示。 2. 举行会议有两种方式。一种是有一人主持会议,当人们需要发言时,先举手,然后等待 会议主持人允许他们发言。另一种是竞争式的,只要参加过这种会议的人都知道,有些 人在会上滔滔不绝,另外有些人则一言不发。假定 8 0 2 . 3是公平的(任何想发送数据的站 点都能得到发送的机会),8 0 2 . 3协议在哪些方面跟人类会议不同? 3. 假定有个协议类型字段(或 S A P字段),理论上可以不需要组地址。所有想发送组播包的 协议,可以将包发送给广播地址,并且根据协议类型字段来与其他协议的包相区分。一 个特别的协议使用一个特定的组地址,与用广播地址及靠协议类型字段来区分协议相比, 前者有什么优势? 4. 假定每个协议在发送组播包时,针对的组地址都不同,为什么还需要在包的报头中包括 一个协议类型字段? 5. 假定某站点中的缓冲是有限的,
本文档为【第二章 数据连接层】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_672074
暂无简介~
格式:pdf
大小:495KB
软件:PDF阅读器
页数:18
分类:互联网
上传时间:2010-11-15
浏览量:4