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

3.4 使用广播信道的以太网

3.4.1 使用集线器的星形拓扑

传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心则增加了一个叫做集线器(hub)的设备(见图3-10)。双绞线以太网总是和集线器配合使用的。每个站需要用两对无屏蔽双绞线(做在一根电缆内),分别用于发送和接收。双绞线的两端使用RJ-45插头。由于集线器使用了大规模集成电路芯片,因此集线器的可靠性很高。1990年IEEE制定出星形以太网10BASE-T的标准802.3i。“10”代表10Mb/s的数据率,BASE表示连接线上的信号是基带信号,T代表双绞线。实践证明,这比使用具有大量机械接头的无源电缆要可靠得多。由于双绞线电缆的以太网价格便宜而使用方便,使粗缆以太网和细缆以太网都已成为历史,并已从市场上消失了。

图3-10 使用集线器的双绞线以太网

10BASE-T以太网的通信距离稍短,每个站到集线器的距离不超过100m。这种性价比很高的10BASE-T双绞线以太网的出现,为以太网在局域网中的统治地位奠定了牢固的基础。

使双绞线能够传送高速数据的主要措施是,把双绞线的绞合度做得非常精确。这样不仅可使特性阻抗均匀以减小失真,而且大大减小了电磁波辐射和无线电频率的干扰。在多对双绞线的电缆中,还要使用更加复杂的绞合方法。

集线器的特点如下。

(1)从表面上看,使用集线器的局域网在物理上是一个星形网,但由于集线器是使用电子器件来模拟实际电缆线的工作的,因此整个系统仍像一个传统以太网那样运行。也就是说,使用集线器的以太网在逻辑上仍是一个总线形网,各站点共享逻辑上的总线。各站点使用的还是CSMA/CD协议(更具体些说,是各站点中的适配器执行CSMA/CD协议)。网络中的各站点必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站点发送数据。因此这种10BASE-T以太网又称为星形总线(star-shaped bus)或盒中总线(bus in a box)。

(2)一个集线器有许多接口,例如,8至16个,每个接口通过RJ-45插头(与电话机使用的插头RJ-11相似,但略大一些)用两对双绞线与一个工作站上的适配器相连(这种插座可连接4对双绞线,实际上只用2对,即发送和接收各使用1对双绞线)。因此,一个集线器很像一个多接口的转发器。

(3)集线器工作在物理层,它的每个接口仅仅简单地转发比特——收到1就转发1,收到0就转发0,不进行碰撞检测。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧。

注:① 集线器的接口又称为端口(port)。在运输层要经常使用软件端口(port),它和集线器的端口是两回事。由于集线器的端口就是一个接口,为了避免混淆,我们就使用集线器接口这个名词。

(4)集线器采用了专门的芯片,进行自适应串音回波抵消。这样就可使接口转发出去的较强信号不致对该接口接收到的较弱信号产生干扰(这种干扰即近端串音)。每个比特在转发之前还要进行再生整形并重新定时。

集线器本身必须非常可靠。现在的堆叠式(stackable)集线器由4~8个集线器堆叠起来使用。一般都有少量的容错能力和网络管理功能。例如,假定在以太网中有一个适配器出了故障,不停地发送以太网帧。这时,集线器可以检测到这个问题,在内部断开与出故障的适配器的连线,使整个以太网仍然能够正常工作。模块化的机箱式智能集线器有很高的可靠性。它全部的网络功能都以模块方式实现。各模块均可进行热插拔,出故障时不断电即可更换或增加新模块。集线器上的指示灯还可显示网络上的故障情况,给网络的管理带来了很大的方便。

802.3标准还可使用光纤作为传输媒体,相应的标准是10BASE-F系列,F代表光纤。它主要用做集线器之间的远程连接。

3.4.2 以太网的MAC层

1.MAC层的硬件地址

大家知道,在所有计算机系统的设计中,标识系统(identification system)名词identification原来的标准译名是“标识”(见《计算机科学技术名词》)。《现代汉语词典》给出“标识”的读音是“biaozhi”而不是“biaoshi”,并且说明这个词的意思是:同“标志”。现在教育部国家语言文字工作委员会发布“第一批异形词整理表”规定今后不再使用“标识”而应当用“标志”。但《计算机科学技术名词》又将flag译为“标志”。这样,若identification和flag均译为“标志”就会引起混乱。因此,本书采取这样的做法:作为动词用时,我们使用“标志”,但作为名词使用时,我们用“标识(identification)”和“标志(flag)”。请读者注意。都是一个核心问题。在标识系统中,地址就是为识别某个系统的一个非常重要的标识符。

从概念上讲,计算机的名字应当与系统的所在地无关。这就像我们每一个人的名字一样,不随我们所处的地点而改变。但是802标准为局域网规定了一种48位的全球地址(一般都简称为“地址”),是指局域网上的每一台计算机中固化在适配器的ROM中的地址。这种48位地址可以保证全球各地所使用的适配器中的地址都是全球唯一的。这种地址又称为硬件地址或物理地址,它具有下面两个特点:

(1)假定连接在局域网上的一台计算机的适配器坏了并更换了一个新的适配器,那么这台计算机的局域网的“地址”也就改变了,虽然这台计算机的地理位置一点也没有变化,所接入的局域网也没有任何改变。

(2)假定我们把位于南京的某局域网上的一台笔记本电脑携带到北京,并连接在北京的某局域网上。虽然这台电脑的地理位置改变了,但只要电脑中的适配器不变,那么该电脑在北京的局域网中的“地址”仍然和它在南京的局域网中的“地址”一样。

由此可见,准确地讲,局域网的“地址”应当是每一个站的“名字”或标识符。不过计算机的名字通常都是比较适合人记忆的不太长的字符串,而这种48位二进制的“地址”却很不像一般计算机的名字。现在人们还是习惯于把这种48位的“名字”称为“地址”。本书也采用这种习惯用法,尽管这种说法并不太严格。

请注意,如果连接在局域网上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个“地址”。更准确些,这种48位“地址”应当是某个接口的标识符。

由于以太网的这种48位地址使用在MAC帧中,因此这种地址常常叫做MAC地址。可见“MAC地址”实际上就是适配器地址或适配器标识符。

当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。

我们知道适配器有过滤功能。但适配器从网络上每收到一个MAC帧,就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这样做就不浪费主机的处理机和内存资源。这里“发往本站的帧”包括以下三种帧:

(1)单播(unicast)帧(一对一),即收到的帧的MAC地址与本站的硬件地址相同。

(2)广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址)。

(3)多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。

所有的适配器都至少应当能够识别前两种帧,即能够识别单播和广播地址。有的适配器可用编程方法识别多播地址。当操作系统启动时,它就把适配器初始化,使适配器能够识别某些多播地址。显然,只有目的地址才能使用广播地址和多播地址,源地址只能使用单播。

以太网适配器还可设置为一种特殊的工作方式,即混杂方式(promiscuous mode)。工作在混杂方式的适配器只要“听到”有帧在以太网上传输就都悄悄地接收下来,而不管这些帧是发往哪个站的。请注意,这样做实际上是“窃听”其他站点的通信而并不中断其他站点的通信。现在网络上的黑客(hacker或cracker)常利用这种方法非法获取网上用户的口令。因此以太网上的用户不愿意网络上有工作在混杂方式的适配器。

但混杂方式有时却非常有用。例如,网络维护和管理人员需要用这种方式来监视和分析以太网上的流量,以便找出提高网络性能的具体措施。有一种很有用的网络工具叫做嗅探器(Sniffer),它就使用了设置为混杂方式的网络适配器。此外,这种嗅探器还可帮助学习网络的人员更好地理解各种网络协议的工作原理。因此,混杂方式就像一把双刃剑,是利是弊要看你怎样使用它。

2.MAC帧格式

常用以太网的MAC帧格式有两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的802.3标准。这里只介绍使用得最多的以太网V2的MAC帧格式(见图3-11)。图中假定网络层使用的是IP协议。实际上使用其他的协议也是可以的。

图3-11 以太网V2的MAC帧格式

以太网V2的MAC帧比较简单,由五个字段组成。前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,当类型字段的值是0000100000000000时,就表示上层使用的是IP数据报。第四个字段是数据字段,其长度在46~1500字节之间(这就表明,以太网的帧长在64~1518字节之间)。最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。当传输媒体的误码率为1×10-8时,MAC子层可使未检测到的差错小于1×10-14

为什么以太网要设置一个最小帧长呢?前面已经讲过,CSMA/CD规定,正在发送数据的站一旦检测出碰撞,就必须立即停止发送。这时,已发送出去的数据就构成了一个非常短的帧。由于这种异常中止的短帧都小于64字节,因此CSMA/CD规定,长度小于64字节的短帧都是无效帧,任何站收到无效帧时就丢弃它,其他什么也不做。因此,当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。应当指出,从MAC帧的首部无法看出数据字段的长度是多少。在有填充字段的情况下,接收方的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起交给上层协议。现在的问题是:上层协议如何知道填充字段的长度呢?在4.2节将会讲到,IP数据报的首部有一个“总长度”字段。例如,当IP数据报的总长度为42字节时,填充字段共有4字节。当MAC帧把46字节的数据上交给IP层后,IP层一查到总长度是42字节,就把46个字节中的最后4个字节的填充字段丢弃。

在以太网上是以帧为单位传送数据的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此接收方只要找到帧开始定界符,其后面的连续到达的比特流都属于同一个MAC帧。以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。