11.1 以太网的类型
11.1.1 共享总线式以太网
1.连起来
- “连”这个动作,包括了OSI的物理层和数据链路层。首先要找一种连接方式将所有节点连接起来。连接多个节点最简单的办法就是总线技术。总线就是一个公共的媒介。要交流,就必须提供交流所需的场所,这个场所就是总线。将总线想象成一根铜导线,每个节点都连接到这条线上。这样每个节点的信号,在总线上所有的其他节点都会感知到,因为良导体上的电位处处相等。
- 基于这个总线模型,早期的以太网是使用集线器(HUB)将每台PC都连接到它的一个接口上,所有这些接口通过集线器内的中继电路连接在一起。为什么需要中继器,第一:信号在总线上传输时受到干扰可能会迅速衰减,加了中继器后集线器将从一个接口收到的bit流复制到每个接口,这样就避免了信号衰减;第二,中继器可以防止由于不可知的原因,造成两个节点同时向总线上放置信号所造成的短路。
- 在数据链路层,以太网使用帧的形式来发送数据流。上层的数据流被封装成一个个的以太网帧,在总线上传播。
2.找目标
- 为了区分总线上的每个节点,节点都必须具有一个唯一的身份标志。以太网中,称之为MAC地址,介质访问地址,即只有数据帧中包含这个地址,总线介质山拥有这个地址的接收方才知道这个数据帧是给自己的,从而才会将其保存到缓冲区内。实际上,每个以太网帧中都包含源MAC地址和目的MAC地址。
- MAC地址是一个6字节(48b)长的字段,每个节点的网卡都有一个全球唯一的MAC地址,这个地址在网卡出厂时被固化在芯片中。
- 以太网就是利用MAC地址来区分每个节点的。
3.发数据
- 既然是总线方式联网,那么每个节点发出的信号,总线上的所有节点都会感知到,并且,同一时刻只能由一个节点的信号在总线上传递,如果同时有多个节点都向总线上传递信号,则各路信号之间就会发生冲突。在任何情况下,都不能让多个节点同时向总线上放置信号。
- 有如下两种措施可以防止这种情况的发生:
- 集线器中的中继电路,会防止由于恶意破坏或者其他不可知的程序bug所导致的信号冲突;
- 在协议角度,从根本上杜绝这种情况的发生。
- 在总线上,每个节点利用
载波侦听机制(CSMA)
来检测当前总线上是否有其他节点的信号正在传播,一旦检测到信号,则暂时不发送缓冲区内的数据帧,并不断地侦听电路上的信号,一旦发现总线空闲,则立即向总线上放置信号,声明要使用总线,如果在完全相同的时刻,另一个节点也放置了信号,则两路信号会发生冲突,两个节点检测到冲突后,会撤销声明,继续回到侦听状态,这个过程叫做冲突检测(CD)
。 - 但两个节点在同一时刻同时发出信号的几率很小,即使本轮声明失败,在下一轮争抢声明中,某个节点胜利的几率是很大的,而且以太网中的所有节点的优先权都是一样的,或者可以说以太网内没有优先权的概念,包括网关设备在内。而SCSI总线的优先级最高,因为SCSI协议本身就是一个Poll-Response型的协议,SCSI控制器要顺序寻找总线上的除自身之外的所有其他节点&#