计算机网络简明教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 使用广播信道的数据链路层

广播信道可以进行一对多的通信。下面要讨论的局域网使用的就是广播信道。局域网是在20世纪70年代末发展起来的。局域网技术在计算机网络中占有非常重要的地位。

3.3.1 局域网的数据链路层

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。在局域网刚刚出现时,局域网比广域网具有较高的数据率、较低的时延和较小的误码率。但随着光纤技术在广域网中普遍使用,现在广域网也具有很高的数据率和很低的误码率。

局域网最初都是使用有线信道。但随着无线手机和笔记本电脑的普及,使用无线信道的无线局域网也逐渐成为局域网的一个重要类型。本章只讨论有线局域网。无线局域网在后面的第9章中介绍。下面凡提到“局域网”都是指有线局域网。

局域网具有如下的一些主要优点:

① 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。

② 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。

③ 提高了系统的可靠性、可用性和生存性。

局域网可按网络拓扑进行分类。图3-7(a)是星形网。由于集线器(hub)的出现和双绞线大量用于局域网中,星形以太网及多级星形结构的以太网获得了非常广泛的应用。图3-7(b)是环形网。图3-7(c)为总线形网,各站直接连在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产生有害的电磁波反射。图3-7(d)是树形网,它是总线形网的变型,都属于使用广播信道的网络,但它主要用于频分复用的宽带局域网。

图3-7 局域网的拓扑结构

局域网经过了近30年的发展,尤其是吉比特以太网(1Gb/s)、10吉比特以太网(10Gb/s)进入市场后,以太网已经在局域网市场中占据了绝对优势。现在以太网几乎成为了局域网的同义词,因此本章后面的部分主要讨论以太网技术。

局域网可使用多种传输媒体。双绞线最便宜,原来只用于低速(1~2 Mb/s)基带局域网。现在10Mb/s、100Mb/s乃至1Gb/s的局域网也可使用双绞线。双绞线已成为局域网中的主流传输媒体。50Ω同轴电缆可用到10Mb/s,而75Ω同轴电缆可用到几百Mb/s。光纤具有很好的抗电磁干扰特性和很宽的频带,其数据率可达若干Gb/s,甚至达到40 ~100Gb/s。

必须指出,局域网工作的层次跨越了数据链路层和物理层。由于局域网技术中有关数据链路层的内容比较丰富,因此我们就把局域网的内容放在数据链路层这一章中讨论。但这并不表示局域网仅仅和数据链路层有关。

共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。这在技术上有两种方法:

(1)静态划分信道,如在2.4节中已经介绍过的频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适合于局域网使用。

(2)动态媒体接入控制,它又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类:① 随机接入,其特点是所有的用户可随机地发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。② 受控接入,其特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或称为轮询。

属于随机接入的以太网将在本章的后面部分重点讨论。受控接入则由于目前在局域网中使用得较少,本书不再讨论。

由于以太网的数据率已演进到千兆比特(吉比特)/秒或甚至100吉比特/秒,因此通常就用“传统以太网”来表示最早流行的10Mb/s速率的以太网。下面我们先介绍传统以太网。

1.以太网的两个标准

以太网是由美国施乐(Xerox)公司的Palo Alto研究中心(简称为PARC)于1975年研制成功的。那时,以太网是一种基带总线形局域网,当时的数据率为2.94 Mb/s。以太网用无源电缆作为总线来传送数据帧,并以曾经在历史上表示传播电磁波的以太(Ether)来命名。1980年9月,DEC公司、英特尔(Intel)公司和施乐公司联合提出了10Mb/s以太网规约的第一个版本DIX V1(DIX是这三个公司名称的缩写)。1982年又修改为第二版规约(实际上也就是最后的版本),即DIX Ethernet V2,成为世界上第一个局域网产品的规约。

在此基础上,IEEE802委员会的802.3工作组于1983年制定了第一个IEEE的以太网标准IEEE802.3,数据率为10Mb/s。802.3局域网对以太网标准中的帧格式做了很小的一点更动,但允许基于这两种标准的硬件实现可以在同一个局域网上互操作。以太网的两个标准DIX Ethernet V2与IEEE的802.3标准只有很小的差别,因此很多人也常把802.3局域网简称为“以太网”(本书也经常不严格区分它们,虽然严格说来,“以太网”应当是指符合DIX Ethernet V2标准的局域网)。

出于有关厂商在商业上的激烈竞争,IEEE的802委员会当时无法形成一个统一的、“最佳的”局域网标准,而是被迫制定了几个不同的局域网标准,如802.4令牌总线形网、802.5令牌环网等。为了使数据链路层能更好地适应多种局域网标准,802委员会就把局域网的数据链路层拆成两个子层,即逻辑链路控制LLC(Logical Link Control)子层和媒体接入控制MAC(Medium Access Control)子层。与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的(见图3-8)。

图3-8 局域网对LLC子层是透明的

20世纪90年代后,激烈竞争的局域网市场逐渐明朗。以太网在局域网市场中已取得了垄断地位,并且几乎成为了局域网的代名词。由于因特网发展很快而TCP/IP体系经常使用的局域网只剩下DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路控制子层LLC(即802.2标准)的作用已经消失了,很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议。本章在介绍以太网时就不再考虑LLC子层。这样对以太网工作原理的讨论会更加简洁。

2.适配器的作用

首先我们从一般的概念上讨论一下计算机是怎样连接到局域网上的。

计算机与外界局域网的连接是通过通信适配器(adapter)完成的。适配器本来是在主机箱内插入的一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。这种接口板又称为网络接口卡NIC(Network Interface Card)或简称为“网卡”。用户必须另外购买这种网卡,并把它插入到计算机中才能是计算机有网络通信的电脑。但现在为了方便用户,计算机主板上已经都嵌入了这种适配器,用户已经不需要再购买单独的网卡了。后面我们都使用适配器这个更准确的术语。在适配器上面装有处理器和存储器(包括RAM和ROM)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。适配器还要能够实现以太网协议。由于宽带上网已相当普及,因此现在的计算机上的适配器都使用RJ-45的接口,而老式的用RJ-11进行低速上网的接口已很少使用。

适配器接收和发送各种帧时不使用计算机的CPU,这时计算机的CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机并交付协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。图3-9示意了适配器的作用。我们特别要注意,计算机的硬件地址(在后面的3.4.2节讨论)就在适配器的ROM中,而计算机的软件地址—IP地址(将在4.1.3节讨论),则在计算机的存储器中。

图3-9 计算机通过适配器和局域网进行通信

3.3.2 CSMA/CD协议

CSMA/CD协议是本章所要讲述的最重要的一个协议。

当初提出以太网的方案是基于下面的思路:要寻找很简单的方法把一些相距不太远的计算机互相连接起来,使它们可以很方便和很可靠地进行较高速率的数据通信。

最早的以太网是将许多计算机都连接到一根总线上。当初认为这种连接方法既简单又可靠,因为在那个时代普遍认为:“有源器件不可靠,而无源的电缆线才是最可靠的”。

总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通信方式。但我们并不总是要在局域网上进行一对多的广播通信。为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的地址。现在的电子技术可以很容易做到:仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。这样,具有广播特性的总线上就实现了一对一的通信。于是这种局域网既有一对多的广播通信功能,也有一对一通信的功能。

人们也常把局域网上的计算机称为“主机”、“工作站”、“站点”或“站”。

为了通信的简便,以太网采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。这样做的理由是局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。因此,以太网提供的服务是不可靠的交付,即尽最大努力的交付。但是当目的站收到有差错的数据帧时(例如,用CRC查出有差错),就把帧丢弃,其他什么也不做。对有差错帧是否需要重传则由高层来决定。例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定的时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网并不知道这是重传帧,而是当做新的数据帧来发送。

重要的问题就是如何协调总线上各计算机的工作。我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送信息,否则各计算机之间就会互相干扰,结果是大家都无法正常发送数据。

以太网采用的协调方法是,使用一种特殊的协议CSMA/CD,它是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)的缩写。下面是CSMA/CD协议的要点。

“多点接入”就是说明这是总线形网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。

“载波监听”就是“发送前先监听”,即每一个站在发送数据之前先要检测一下总线上是否有其他站在发送数据,如果有,则暂时不要发送数据,要等待信道变为空闲时再发送。其实总线上并没有什么“载波”,以太网只是借用了过去大家都很熟悉的名词而已。所谓“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。

“碰撞检测”就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。当适配器检测到信号电压的变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。这时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。因此,每一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

既然每一个站在发送数据之前已经监听到信道为“空闲”,那么为什么还会出现数据在总线上的碰撞呢?这是因为电磁波在总线上总是以有限的速率传播的。因此,当A站监听到总线是空闲时,也许有另一个B站也正好在发送数据,不过这时B站所发送的信号还没有从总线上传播到A站,因此A以为总线是空闲的。等到B站发送的信号传播到A站时(这段时间是很短的),A才检测出碰撞的发生,于是中止发送数据。当然,B也会在发送数据后不久检测出碰撞的发生,因而也中止发送数据。

由此可见,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此,以太网不能保证某一段时间之内一定能够把自己的数据帧成功地发送出去(因为存在产生碰撞的可能)。以太网的这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。

总之,以太网上各站的关系是:所有站点都平等地争用以太网信道——谁先接入到总线信道,谁就占用这个信道。但所有站点都必须遵守以太网的CSMA/CD协议的规则:第一,发送之前先检测信道,只有信道空闲时才允许发送数据。第二,边发送边监听,发送过程中一旦发现碰撞,就立即停止发送。实际上,协议还规定在检测出碰撞时,还应当继续发送几十个比特的强化碰撞信号,以便让以太网上所有站点更加清楚地知道现在网络上出现了碰撞,使大家都暂时不要发送数据了。

为了减小碰撞之后再次发生碰撞的概率,CSMA/CD协议还规定,当发生碰撞而停止发送数据时,不是等待信道变为空闲后就立即再发送数据,而是推迟(这叫做退避)一个随机选择的时间。如果两个站同时监听到信道空闲就都立即发送数据,那么就肯定要发生碰撞。因此发现信道空闲后各自推迟一段随机的时间在发送,就可以使再次发生冲突的概率减小(因为不同的站点选择的随机推迟时间正好又相同的概率是很小的)。

在使用CSMA/CD协议时,由于边发送边监听,因此一个站不可能同时进行发送和接收。,即不能进行全双工通信,而只能进行半双工通信,即双向交替通信。