第5章底层通信网络与应用 物理层完成基于信号的比特传输,着眼于信号处理与传输;数据链路层实现了数据通 信,着眼于带有校验和流量控制的块数据处理,实现了数据通信的基本功能。至此,基于 物理层、数据链路层就可实现基本的数据通信,组成数据通信网络,即我们常用的局域网、 广域网、城域网等,这些网是当年网络研发的基本网络产品,也是当今承载Internet互联 的底层主体,或者称作Internet的底层网络。历史上,局域网、广域网、城域网等产品有很 多,目前社会上广泛应用的是以太网和无线局域网。 本章以局域网诞生时代的各种问题追寻为主线,对以太网的原理和技术进行剖析,揭 示发明人精准地解决难题的智慧。技术创新也直接推动以太网演变升级,在产品市场上 呈现出强大的生命力。在内容呈现上,力图让读者置身于工匠环境思考问题,亲历问题, 体验创新,体会创新的价值。底层网络路线图如图5-1所示。 图5-1 底层网络路线图 5.以太网的构成及原理 1 5.1 以太网及其构成 1. 以太网的研发主要解决本地计算机间的数据通信问题。以太网是一种基带总线局域 网,用无源电缆作为总线传送数据帧,以最简单的方式实现本地计算机的可靠互联。 当初提出以太网的方案是基于下面的思路:要寻找很简单的方法把一些相距不太远 的计算机互相连接起来,使它们可以很方便和很可靠地进行较高速率的数据通信。 最早的以太网采用总线结构,将许多计算机都连接到一根总线上构成网络,如图5-2 所示。当初认为这种连接方法既简单又可靠,因为在那个时代普遍认为:“ 有源器件不可 靠,而无源的电缆线才是最可靠的。” 计算机是通过网卡接到总线上的。网卡又称作网络适配器(适配器的概念更一般化, 我们称之为网卡,以适应大众习惯), 现在大多数计算机主板上都集成有以太网网卡。网 卡是计算机与网络的接口设备,负责网络主机数据的收发,实现以太网协议。网卡功能结 构图如图5-3所示。由图可见,网卡实现了网络体系中的数据链路层和物理层。 图5-2 总线型以太网图5-3 网卡功能结构图 网卡接收和发送各种帧时不使用计算机的CPU,这时CPU 可以处理其他任务。当 网卡收到有差错的帧时,就把这个帧丢弃,而不必通知计算机。网络层及高层协议是在主 机中运行的。当网卡收到正确的帧时,它就使用中断通知该计算机并交付给协议栈中的 网络层。当计算机要发送数据时,就由网络层把IP 数据报向下交给网卡,组装成帧后发 送到局域网。计算机的硬件地址就存储在网卡的ROM 中。 网卡到局域网的通信是通过电缆或双绞线以串行传输方式进行的,而网卡和计算机 之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,网卡的一 个重要功能就是进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总 线上的数据率并不相同,因此在网卡中装有对数据进行缓存的存储芯片。 5.2 以太网的帧传输方式 1. 人们常把局域网上的计算机称为“主机”“工作站”“站点”或“站”。 总线型结构的以太网上,当一台计算机发送数据时,总线上的所有计算机都能检测到 这个数据。这种方式就是广播通信方式。但我们并不总是要在局域网上进行一对多的广 播通信。发给某主机的数据帧,其他主机没有必要接收。为了在总线上实现一对一的通 信,每台计算机网卡上都拥有一个代表本主机的地址,该地址具有全球唯一性。发送数据 106 帧时,须在帧的头部写明接收站的地址。现在的电子技术可以很容易地做到:仅当数据 帧中的目的地址与本网卡ROM 中的硬件地址一致时,网卡才能接收这个帧。不是发送 给自己的帧,网卡不予接收。这样,具有广播特性的总线上就实现了一对一的通信。 考虑到是近距离通信,以太网没有采用可靠传输,帧传输控制简单,主要特点为: 第一,采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。 第二,网卡发送数据时不给帧编号,也不要求对方确认,但有帧的校验机制。这样做 的理由是局域网信道的质量很好,产生差错的概率很小。 因此,以太网提供的服务是不可靠的交付,即尽最大努力地交付。目的站收数据帧 时,进行差错检测,一旦检测到有差错的帧就丢弃,其他什么也不做。在因特网上,出错的 帧是否需要重传由高层决定。如果高层使用TCP,那么TCP 就会发现丢失了一些数据。 经过一定的时间后,TCP 就把这些数据传递给以太网进行重传。但以太网并不知道这是 重传帧,而是将其当作新的数据帧发送。 初期,以太网发送数据都使用曼彻斯特(Manchester)编码。但是,曼彻斯特编码有缺 点,不能有效利用带宽提高数据速率,其频带宽度比原始的基带信号增加了一倍(因为每 秒传送的码元数加倍了), 所以在以后的高速以太网中改用其他形式的编码。 综上所述,以太网是无连接、无确认的不可靠交付。以太网上,各站点共享总线,以广 播方式发送数据帧,以地址区分用户,对帧进行选择性接收。因此,没有差错控制、流量控 制等可靠机制,传输控制非常简单。在以太网上需要重点解决的是信道争用问题,如 图5-4所示。 图5-4 以太网的特点示意图 5.以太网的数据链路技术 2 5.1 介质访问控制协议CSMA/CD 2. 为何介质访问控制构成了以太网的核心问题? 以太网介质访问控制协议是以太网工作的基础,决定了以太网的特性,继而决定了以 太网的应用。介质访问控制技术集中体现了以太网研发的创新智慧,挖掘分析、深刻理解 其原理技术对创新应用至关重要。下面探讨和体验以太网中要面对的一系列问题及解决 107 思路。 以太网的总线型结构如图5-2所示,各站点共享传输介质,同时发送数据就会在总线 上发生信号冲突,导致主机不能正确接收数据帧。这就要求各站点不能同时发送数据,必 须互斥地使用信道。因此,必须使用一个策略,为站点合理分配信道的使用权,对介质访 问进行控制。 1. 介质访问控制协议及原理 以太网采用的介质访问控制策略是载波监听多路访问/冲突检测,即CSMA/CD (CarierSenseMultipleAceswithColisionDetection)协议。也就是说,每个站点在发 送数据时先运行CSMA/CD算法,按其规则申请总线,得到总线的控制权才能发送数据。 (1)策略分布在各主机上,由各主机自觉实施,发送数据帧前执行,属于“自主遵守规 则,保证系统顺畅”。 (2)CSMA/CD协议的规则,可简单地概括为“先听后发,边发边听,冲突立止,延时 重发”。 “先听后发”的意思是“发送前先监听”,即每一个站在发送数据之前先要检测一下总 线上是否有其他站在发送数据,如果有,则暂时不发送数据,要等待信道变为空闲时再发 送。如果信道空闲,则立即发送。其实,总线上并没有什么“载波”,“载波监听”就是用电 子技术检测总线上有没有其他计算机发送的数据信号。 “边发边听”即“边发送边监听”,监听的目的是“冲突检测”,是一个冲突发现机制。冲 突后,总线上传输的信号产生了严重的失真,接收站点无法从中恢复出有用的信息。因 此,一旦发现冲突,网卡就要立即停止发送,让出总线,然后等待一段随机时间后重发,这 就是“冲突立止,延时重发”的含义。 “先听后发”机制保证了拿到总线使用权的站点可以完整地发送完数据帧,站点一旦 确定无疑地抓住了信道,冲突就不会再发生。发送过程中不会再有其他站点的冲撞,这降 低了系统的冲突概率。 (3)CSMA/CD策略意图。CSMA/CD是分布式地控制,就像开车上路,忙就等,闲 就行,既不碰撞,又不空路。 2.CSMA/CD 机制分析 CSMA/CD的前身是CSMA,是由其改进而来,冲突检测的意义在哪里? 冲突检测的目的是发现冲突,以便站点发现冲突之后立即停止帧的后续数据的发送, 让出信道,以提高信道利用率;而CSMA机制下,即使冲突了,也不知道,会把帧发完。 “先听后发”还会冲突吗? 哪种情况下会冲突? “先听后发”,站点听到信道忙就不会再去打扰,如图5-5(a)所示;如果两个站点都先 后“同时”听到信道为“空闲”而“同时”发数据帧,导致冲突出现,如图5-5(b)所示。这种 同时发送导致冲突,看起来是小概率事件,但当网络上主机很多,很繁忙时,可能就小事变 大事,成为大概率事件了。 上述情形出现是因为电信号在总线上传输是有时延的。传输时延的存在意味着站点 108 图5-5 导致冲突的情形 发出的信号不能立即传遍总线,此时,总线另一端的站点没检测到信号,误认为信道空闲 而发送数据,从而造成冲突。当然,由于电磁波在电缆上的传输速率接近光速(约 230000km/s), 因此在局域网上的这个传输时延很小。但这段时间内的冲突概率不一定 小,因为网络繁忙时等待发数据的站点可能很多,所以还要“边发边听”地检测冲突。 冲突有什么现象? 站点怎么检测冲突? 冲突检测的原理是:当几个站同时向总线上发送数据时,总线上的信号就会叠加,信 号电压变化幅度将会增大。当网卡检测到的信号电压变化幅度超过一定的门限值时,就 说明有信号叠加,表明产生了冲突。 注意,检测是在网卡处进行的,即网卡边发送数据、边检测总线上的信号电压的变化 情况,以便判断自己在发送数据时其他站是否也在发送数据。 如前所述,冲突检测是有意义的,但冲突检测也是有开销的。 主机发送后多久才会知道有冲突? 有最晚的冲突吗? 检测到最晚的冲突需要多久? 在图5-6中,信号叠加(冲突)最早出现在总线中间的某个位置,但此时主机并不知道 发生冲突。因为发送者进行冲突检测时,监听的是本网卡处的信号,所以只有当造成冲突 的另一路信号到达检测者的网卡时,才会检测出冲突,这是需要时间的。从主机发送数据 开始到主机检测到冲突的这段时间不妨记为Tcd,Tcd=2Lac/C,其中 C 为信号在总线上 的传播速率,如图5-6所示。显然,对不同的冲突,Tcd大小是不同的,对主机A来说,冲突 发生得越晚,检测到冲突也会越晚,有没有一个最晚的冲突呢? 检测到最晚的冲突需要 多久? 图5-6 信号冲突示意图 因为是局域网,总线长度不限,所以答案是肯定的。应该是在总线上最远处、最晚发 生的冲突将最晚检测出来。因此,如图5-7所示的情形是合理的。 109 设图5-7中的站A和站B是局域网两端相距最远的两个站点,A、B间总线长度为 L,单程端到端传播时延记为τ,则τ=L/C( C 为电磁波在电缆中的传输速率)。 图5-7 冲突检测示例 假设A、B要相继发送数据 。 在t=0时,A检测到信道空闲,开始发送数据 。 τ-这里 , 在t= σ 时( σ 远小于τ,趋于0),A发送的信号即将到达B但还没有到达B 时,B检测到信道为空闲,因此B开始发送数据。 经过时间σ/2后,即在t=τ-σ/2时,A的信号和B的信号在总线上相遇,发生冲突。 但这时A和B都不能检测到此冲突,尚不知道发生了冲突。 在t= τ 时,A的信号到达主机B,B检测到了冲突,于是停止发送数据。此时A仍然 检测不到这个冲突。 在t=2τ- σ 时,B发出的信号到达了A主机,A检测到了冲突,因而也停止发送 数据。 σ 趋于0时,τ。由假设知, 当冲突发生处离B很近,A主机发现冲突的时间即为2这 是最晚到达A的冲突。所以,A主机从发送数据开始,经历2τ 的检测时间就会检测到所 有的冲突。也就是说,A主机如果在2τ的时间内没有检测到冲突,以后也就不会有冲突 发生了。这意味着,A主机的这次发送成功了,也意味着站点发数据时要边发送边监听, 这种小心翼翼的过程是有限的,不需要全程监听,从而减少开销。从另一方面理解,因为 一旦信号传遍总线,其他站点就会监听到总线忙而放弃发送,导致冲突的时间阈是有限 的,可以找到一个最晚的冲突。 从图5-7可看出,最先发送数据帧的A站在发送数据帧后经过时间2τ 检测不到冲 突,就说明A站真正抢到了信道,此帧能成功发送。否则,在时间2τ 内A随时都可能因 检测到冲突而放弃信道。也就是说,在2τ 时间内还不能说A拿到了总线使用权,只有通 过争用期的“考验”才能肯定争得了信道。因此,以太网的端到端往返时间2τ 称为争用期 (contentionperiod),它是一个很重要的参数,又称为冲突窗口(colisionwindow),因为 110 冲突都发生在这个时段。信道空闲后,可能要经过多个这样的冲突窗口,才能被某站点争 到,完成一个帧的传输。 研究最晚冲突的意义在于发现了数据发送过程中的有限检测,而不必全程检测。冲 突的有限检测减少了系统开销,但也导致后来以太网的诸多局限性。 3. 以太网的局限性 以太网为什么是局域的 ? 以太网帧长有什么限制 ? 以太网把争用期定为51.s。这个参数的确定,实际上也同时确定了以太网的最 大 2μ跨度(即总线的最大长度)。换句话说,以太网的最大跨度是有限的。 为了简化问题,我们不考虑中继器的转发时延, L/C,6μs,所以总线长 取τ= τ 为25. 度L=Cτ,其值是确定的。也就是说,如果两台计算机间的距离超过这个值,将导致这个 最晚的冲突不能在2τ 时间内被检测到,从而使冲突检测失效,局域网不能正常工作。另 外,这个单程时延 τ 还包括中继器的转发时延,因此,实际应用以太网的总线长度比这个 计算值要小很多。 思考:故意加长总线,接入PC,通信会怎么样 ? 看似一马平川,实则陷阱重重 。 其实,导致冲突检测失效的情况还不止这些,如图5-8所示。当B的信号到达A时 , A早已完成了帧的发送,从而在A处的总线上不会出现两路信号叠加的情况,这也导致 A检测不到冲突,冲突检测失效,局域网不能正常工作。 图5-8 短帧导致冲突检测失效 这个问题也必须解决,不能让这种情况出现。导致这种情况出现的根本原因是A主 机要发送的数据太少,没能坚持到B的信号到来,即没能坚持2τ 的时间。坚持2τ 的时间 需要有多少数据呢? 不难计算,对于10Mb/s的以太网,在2τ(即51.s)的时间,发送了 2μ512b 的数据,即64B 。综上我们规定,以太网的帧最小不能低于64B,也就是说,以太网有 一个最小帧的要求。或者说,在以太网上,小于64B 的帧一定是坏帧。 以太网上有小于64B 的帧吗? 事实上,在竞争窗口中因冲突停止导致以太网上有大量小于64B 的帧片段,这些都 是坏帧,习惯上称为碎片。 可见,冲突的处理是以太网中核心的问题,饱含学问。冲突的问题处理好了,剩下算 法中的最后一个问题———延时重发。 为何延时重发,立即重发不行吗? 111 首先,因冲突停止了发送,但主机交给网卡的数据发送任务并没有完成,所以,网卡需 要试图重发数据帧,以完成主机的托付。 为什么不立即重发呢? 发生冲突了,说明总线上要发数据的站点不止一个,如果都立 即重发,肯定会再次冲突。所以,延时重发是必要的。 怎么延时,如果各站点都延时相同的间隔,会有效吗? 读者自明。延时的目的是各站 点在冲突后相互避让,避开冲突,至于如何避让,还有很多学问需要讨论。 4. 冲突避让算法 发生冲突后,站点停止发送,并试图重发。假如规定各主机都立即重发,肯定会发生 第二次冲突、第三次冲突……,永远不止,使系统死锁。所以,在重发时为了相互避让,要 延迟一定的时间间隔再重发,能不能延时相同的时间呢? 显然不行,只有延迟不同的时 间,才能实现相互避让。 tuctdbnrxoetaakf) 以太网使用截断二进制指数退避(rnaeiayepnnilbco算法避让冲 突。在这种算法中,以争用期2τ 为退避时间间隔,各站点的退避时间 T 是2τ 的整数倍, 即T=n(2τ)。如果 n 不同,各站点的退避时间 T 就不同。 n 的取值与冲突的次数有关, 设冲突的次数为k, n 就在整数集合[0,2,…,( k -1)] n 取到3, 1,2中随机取值。例如,则 站点就要延时6τ 后重发。例如,对于一个主机来说,如果是 第一次冲突。k=1,2k =2, n 从[0,1]中随机取一个值。重发可能会出现第二次 冲突。 24,0,2,中随机取一个值。 第二次冲突后。k=2, k = n 从[1,3] 第三次冲突后。k=3, k =8,0,2,4,6,中随机取一个值。 2n 从[1,3,5,7] …… 显然,冲突的次数越多,各重发站延时取值越分散,越容易相互避让开,因而减小发生 冲突的概率,有利于整个系统的稳定。考虑到冲突的次数超过10次以后,取值范围已经 足够大,故让 k 值都取10并不再增大(截断指数)。工作站如果重发16次还不能成功,就 要放弃发送。 明白了算法原理,请思考算法中 n 取值的学问。 n 的取值范围是大点好,还是小点好? 这需要主机考虑群体特性进行抉择。退避算法是在各主机上执行的,遇到冲突,以太 网上有多少个站点等待发送,参与信道竞争,主机是不知道、不明确的。 n 的取值范围越 大,各站点重发的时机越分散,避让效果越好,尤其是在站点多、网络忙的时候;但在网络 负载小、较清闲时可能出现总线空闲,站点还迟迟傻等的状况,系统效率低。 主机如何知道此时网络忙、闲,合理选取 n 的取值范围呢? 退避算法中采用了一种模糊处理方式,根据冲突次数逐步增加 n 的取值范围,兼顾 了退让和效率,实现双赢。这让我们再次体会到研发人员在技术创新中的心思和处理问 题的智慧。 至此,如果认为算法已经非常圆满,那么请看算法中的最后一条:工作站如果重发16 次还不能成功,就要放弃发送。 112 请问,为什么要放弃? CSMA/CD 算法看似简单,但一路走来,倍感陷阱重重。研发者缜密的思维、智慧的 处理让我们的思想生花,对当初的研发创新由衷敬佩。 根据以上所讨论的,可以把CSMA/CD 协议的要点归纳如下。 (1)网卡从网络层获得一个分组,加上以太网的头部和尾部,组成以太网帧,放入网 卡的缓存中,准备发送。 (2)若网卡检测到信道空闲(即在96 比特时间内没有检测到信道上有信号), 就立即 发送这个帧。若检测到信道忙,则继续检测并等待信道转为空闲(加上96 比特时间), 然 后发送这个帧。 (3)在发送过程中继续检测信道,若一直未检测到冲突,就顺利把这个帧成功发送完 毕。若检测到冲突,则中止数据的发送,并发送人为干扰信号。 (4)在中止发送后,网卡就执行指数退避算法,等待 n 倍51.s后,返回到步骤(2)。 以太网还规定,帧间最小间隔为9.s。这样做是为了使刚刚收到数据帧的站来得及 2μ 6μ 清理接收缓存,做好接收下一帧的准备 。 5.CSMA/CD 以太网的特性 由CSMA/CD 算法可见,以太网站点在总线使用权分配上是一种竞争机制,哪个站 点能够获得总线使用权限是随机的。以太网具有随机性。 每一个站在自己发送数据之后的一小段时间内,存在遭遇冲突的可能性。并且在以 后的冲突重发中,也不能保证什么时候会得到信道完成发送,甚至最后因重发不成功而不 得不放弃发送。也就是说,在以太网中,各主机共同竞争信道,想发送数据的主机什么时 候获得总线的使用权,完成数据发送具有不可预期性、不确定性。这一特点称为以太网发 送的不确定性。 以太网的随机性和不确定性决定了以太网应用的局限性,尤其不适合实时性要求高 的网络控制传输。但现实社会中,以太网的确太普遍、太廉价,以至于后期有大量的人员 研究如何对以太网进行改造,以便能用于网络控制领域。 同时可见,以太网是以半双工、无连接的方式提供不可靠的传输服务。在CSMA/CD 控制下,每个时刻总线上只能有一路传输,所以,发送站点不能同时接收数据。后来,在 IEEE802.x标准中又定义了全双工以太网。全双工以太网能够同时发送和接收数据, 3 可以提供两倍带宽;它不再使用CSMA/CD,网络长度不受冲突域的限制;使用和半双工 以太网一样的帧格式。全双工以太网使用交换 机通过点对点链路连接计算机,传输链路、网络 接口和交换机也必须支持全双工模式。 冲突的存在,决定了以太网上站点数量的上 限。随着以太网上发送数据的用户增多,以太网 的工作效率是变化的,如图5-9所示。为了克服 这些缺点,以太网后期的研发、改进从未间断,一 系列的创新持续赋予以太网强大的生命力。本 图5-9 以太网的效率 113 章后续将探讨网桥等系列设备的研发是如何持续改进以太网性能的。 扩展阅读:CSMA/CD 算法探源 CSMA/CD技术的产生不是一蹴而就的,它最早来源于Aloha,为了提高效率,后来 对Aloha进行改进形成CSMA算法,以太网研发者加上冲突检测之后用于以太网总线控 制。Aloha是美国夏威夷大学20世纪70年代初研制成功的一种使用无线广播技术的分 组交换网络,目的是解决夏威夷群岛之间的通信问题;Aloha是最早、最基本的无线数据 通信协议,其控制算法比较简单、原始,站点“想说就说”,繁忙时冲突多;CSMA的主要思 想是“先听后说”,以减少相互干扰;CSMA/CD的高明之处是加入了冲突检测机制,目的 是“冲突立止”。请查找和搜索Aloha无线分组网,了解更多关于Aloha、CSMA算法的细 节,并结合CSMA/CD原理分析解决以下问题。 (1)Aloha无线分组网的背景应用,Aloha控制算法。 (2)了解CSMA种类及算法,体会它的改进是如何利于效率提升的。 (3)冲突检测的意义是什么? 从Aloha到CSMA/CD是如何一步步进行技术改进, 提高网络效率的? (4)体会技术进步的过程、规律,体验技术创新中的智慧与思维。 2.以太网物理地址 5.2 CSMA/CD解决了介质访问控制问题,以太网的传输还要解决用户标识和帧构建等 问题。以 太网中有众多站点用户,要区分和寻址用户,首先要标识用户。以太网中用MAC 层的硬件地址标识工作站,同时在以太网帧中指明接收站。 以太网中使用的硬件地址是6B的网卡编号,具有全球唯一性。它在网卡生产时固 化在网卡的ROM里,又称为物理地址,因为在MAC帧中也用这种地址,故也称为MAC 地址。确切地说,每个网卡都有一个局域网地址。如果连接在局域网上的主机或路由器 安装有多个网卡适配器,那么这样的主机或路由器就有多个“地址”,这种“地址”是网络接 口的标识符。 现在IEEE的注册管理机构(RegistrationAuthority,RA)是局域网全球地址的法定 管理机构,它负责分配地址字段的6B中的前三个字节(即高24位)。世界上凡要生产局 域网网卡的厂家,都必须向IEEE购买由这三个字节构成的这个号(即地址块),这个号的 正式名称是组织唯一标识符(OrganizationalyUniqueIdentifier,OUI),通常叫作公司标 识符(companyid)。例如,3Com公司生产的网卡的MAC地址的前三个字节是02-608C 。地址字段中的后三个字节(即低24位)则由厂家自行指派,称为扩展标识符 (extendedidentifier),只要保证生产出的网卡没有重复地址即可,如图5-10所示。可见, 一个地址块有224个不同的地址。用这种方式得到的48位地址称为MAC-48,它的通用 名称是EUI-48 。 114