《以太网权威指南》第三章:以太网系统
本文直接转载自图灵社区:第 3 章 以太网系统
以太网系统由硬件和软件组成,通过软硬件的协作在计算机间传递电子数据。为了完成这项任务,以太网包含了一些基本的元素。熟知这些元素会帮助我们更好地使用以太网。因此,本章将介绍这些元素,也将探讨高层网络协议是如何通过以太网进行计算机间的数据传递的。
本章讲述最初的半双工操作模式,这是最早期的以太网系统采用的模式。半双工是指在任意时间,只有一台计算机可以在以太网信道传递数据。在半双工模式下,多台计算机使用带有冲突检测的载波侦听多路访问(CSMA/CD)介质访问控制(MAC)协议共享单个以太网信道。在以太网交换机出现前,半双工一直是以太网设备的典型操作模型。
不过,现今几乎所有以太网设备都直接连接到一个全双工模式以太网交换机端口上,不与其他设备共享以太网单信道。当以太网设备连接到交换机端口时,自动协商协议会自动选择全双工模式,同时关闭 CSMA/CD 协议,使得链路中的两台设备都可以随时发送数据。半双工模式和全双工模式是两种形式的介质访问控制,第 4 章将详细介绍这两种模式。
3.1 以太网的四个基本元素
以太网系统包括四个基本块,这四块组合成一个正常运行的以太网。
-
帧:系统中用来传递数据的一组标准化的数据位。
-
介质访问控制协议:由一组嵌在各个以太网接口的协议组成,允许以太网基站通过半双工或全双工模式访问以太网信道。
-
信号组件:可以在以太网信道发送或接收信号的标准化电子设备。
-
物理介质:在联网的计算机间传递数字以太网信号的电缆或者其他硬件。
3.1.1 以太网帧
以太网系统的核心是帧。以太网接口、介质电缆等网络硬件负责在计算机间或基站间传递以太网帧。连接到网络的设备可以是台式机、打印机,或者任何有以太网接口的硬件。因此,以太网标准采用更通用的术语“基站”来描述网络硬件,我们在本书中也使用这个术语。
以太网帧的各比特形成于特定的域。图 3-1 展示了一个基本帧的域。第 4 章将对这些域作更详细的描述。
图 3-1:一个以太网帧
图 3-1 展示了一个基本的以太网帧,一帧以一组 64 位的帧头开始。帧头给 10 Mbit/s 以太网系统的硬件和电子设备一些启动时间来意识到有帧正在被传输,提醒它们做好接收数据的准备。10 Mbit/s 网络正是通过这种方式清清嗓子,准备开唱的。较新的以太网系统运行速度更快,使用恒定信号,不再需要帧头。不过,为了避免帧结构改变,这些系统中的帧依旧保留了帧头。
帧头后是目的地址和源地址。IEEE 标准协会(IEEE-SA)控制地址分配。在分配供应商使用的地址块时,IEEE-SA 提供了 24 位的组织唯一标识符(OUI)①。 每个以太网接口制造商都有一个 OUI。以太网接口制造商为每个接口分配了一个独特的 48 位地址,前 24 位地址是制造商的 OUI,后 24 位用于确保每个 48 位地址都是独一无二的。
这个 48 位的地址通常叫作硬件(或物理)地址,以表明地址是分配给以太网接口的。这个地址也叫作介质访问控制(MAC)地址,这是因为以太网介质访问控制系统包括帧和帧的地址。
因此,以太网设备制造商能够为其生产的每个接口分配一个独一无二的地址。在接口生产时就进行唯一地址的分配,避免了同一个网络中不同接口存在地址重复。同时,也省去了本地监管以太网地址的麻烦。
地址域之后是一个 16 位的类型或长度域。通常,这个域用来标识数据域采用的是哪一种高级网络协议(如 TCP/IP)。这个域也可能用来携带长度信息,第 4 章将对此进行介绍。
类型域之后便是长度为 46 到 1500 字节的数据。数据必须不短于 46 字节。这个长度保证帧信号在网络中停留的时间足以让最早的 10 Mbit/s 半双工系统识别出来。如果数据域携带的高层协议数据短于 46 字节,系统将使用填充数据将空余部分填满。
最后,在帧的末尾是 32 位的帧校验序列(FCS)域。FCS 包括一个循环冗余检验(CRC),用来对整帧数据的完整性进行检测。通过对组成帧的位模式应用一个多项式,可以得到一个独一无二的 CRC 值。接收端采用同样的多项式生成一个检验码。之后对比发送端的检验码和接收端的检验码。通过这种方式,接收端以太网接口可以判断该帧各位是否完整传输。
以上基本上是一个以太网帧的所有内容。现在你已经对以太网帧结构有所了解,你还需要懂得帧是如何传输的。现在,管理基站何时传输帧的规则该登场了。下面我们来看看它们是怎样运作的。
3.1.2 介质访问控制协议
本节我们将简要介绍半双工操作模式,这种模式是早期 10 Mbit/s 以太网系统的基础。最初的系统基于 CSMA/CD 协议,该协议用来对共享一个信道的基站进行访问动作管理。不过,当今大部分基站采用的都是全双工模式,该模式为基站和交换机端口提供一个专用信道。但想要真正理解以太网标准和以太网操作,我们需要先了解早期的半双工系统。
当今使用双绞线连接交换机端口、传输速度为 10 Mbit/s 和 100 Mbit/s 的基站可能还在采用半双工模式。但是,更高速度的介质系统只支持全双工模式。
MAC 协议工作原理很简单。网络中所有的以太网设备都独立于其他基站工作,没有中心控制器。连接以太网电缆并采用半双工模式的基站连接了一个信道。因为这个信道是共享的,所以需要使用 CSMA/CD 协议进行基站访问控制。
全双工模式中,基站间采用专用链路,链路两端可同时工作,因此也不再需要控制对链路的访问。
以太网采用一种广播传输机制,共享信道的每一帧都会被所有基站收听。这种方式看似没有效率,但好处在于,在基站接口处完成地址匹配的工作能够使物理介质尽可能简化。在以太网系统中,物理信号和介质系统只需将每一位数据准确地传输给基站,基站的以太网接口将完成剩下的工作。
来自接口的信号通过一个共享的信道传输给每个联网基站。半双工模式下,每个基站都需要对信道进行提前监听,只有信道空闲的情况下,基站才会以帧的形式传输数据。
以太网标准采用了“帧”作为术语描述传输的数据,不甚求精确的情况下也有人称之为“包”。为了区别第 2 层和第 3 层,也有人把在第 3 层(网络层)上传输的数据用“包”来指代。
所有的以太网帧都通过共享信道或介质进行传输,因此,所有连接到信道的以太网接口都会读取全部信号并分析帧的第二域——目的地址(如图 3-1)。接口会将目的地址与该接口的 48 位物理地址及其所有能识别的多播地址进行比较。只有地址匹配的情况下接口才会继续读取该帧,并将其传递至计算机上运行的网络软件。一旦发现目的地址与自己的单播地址或启用的多播地址不匹配,联网的其他接口便会停止读取该帧。
1. 多播和广播地址
以太网传递机制也支持多播,相较于将相同的帧传递给多个接收者,多播效率更高。通过一个多播地址,单个以太网帧可被多个基站接收。例如,一个提供流媒体服务的应用程序通过设置基站的以太网接口,使其不仅可以监听内置的单播地址,还可以监听指定的多播地址。这样,多个基站可以被配置为一个多播组,有一个特定的多播地址。一个传递给该组多播地址的音频流包将被组内所有基站接收。
广播地址有 48 位,是一种特殊的多播地址。所有以太网接口识别出这种地址后都会阅读该帧剩余内容,并将帧传递给计算机的网络软件。
每帧传输完成后,共享半双工信道的所有有传递信息任务的基站都有同等的机会进行下一帧的传输。这确保了各基站有同等机会访问信道,单个基站不会阻碍其他基站的访问。为了实现对信道的合理访问,各基站的以太网接口都嵌入了 MAC 算法。共享信道半双工以太网采用 CSMA/CD 协议作为介质访问控制机制。
2. CSMA/CD协议
打个比方来描述 CSMA/CD 协议的工作原理,就像是在一个黑暗的房间举行晚宴,人们可以听见别人说话,但是看不见人。围绕在桌前的每个人在发言前都要确保当下是安静的(载波侦听)。一旦全场安静下来,每个人都有机会发言(多路访问)。如果有两个人同时发言,这两个人意识到这一状况后都会停止发言(冲突检测)。
若要用以太网术语来描述此过程,那么协议中的载波侦听部分就是指每个接口在进行信息传输前要确保共享信道中没有信号传输。如果另一个接口在传输信息,那么信道中将有一个信号,这种情况被称为载波。
在过去,载波信号的定义是一个连续的恒定频率信号,如 AM、FM 无线电系统中用来携带已调信号的载波。不过,以太网中没有这种连续载波信号,相反地,以太网中的“载波”指的只是网络流量。这个术语来自 Aloha 无线电系统,我们在第 1 章介绍过这个系统,它是以太网的前身。
除了正在传输信号的接口外,其他接口必须等载波消失、信道空闲时才能再次尝试传输,这个过程叫延迟。通过多路访问,所有的以太网接口在网络中进行帧传输时具有同等优先级,所有的接口在信道空闲时都可进行访问。
协议的下一部分是冲突检测。因为每个以太网接口都有同等机会访问以太网,所以很有可能多个接口监听到网络空闲,并同时开始帧传输。在这种情况下,连接到共享信道的以太网信号设备会检测到信号的冲突,令接口停止传输。之后,每个接口会随机选择一个等待时间,之后再次进行传输,该过程称为“退避”。
CSMA/CD 协议旨在提供一种公平高效地访问共享信道的方式。通过协议,每个基站都有机会使用网络,不会因为某些基站霸占网络而丧失对网络的访问。每个数据包传输结束后,由 CSMA/CD 协议决定下一个使用以太网信道的基站。
3. 冲突
如果信道中不止一个基站在传输信息,此时我们称信号冲突了。发送信息的基站发现冲突事件后,会通过一个特定的退避算法得到一个随机的时间间隔,并在该时间间隔后再次进行传输。随机时间有助于防止这些基站在再次传输时再次冲突。
很遗憾,最初的以太网设计将以太网介质访问机制的这部分称为冲突。如果这部分不叫冲突而是叫别的名称,例如分布式总线仲裁(DBA)事件,那么就不会有人担心冲突的出现了。听到“冲突”一词,大多数人都会觉得有坏事发生,导致很多人错误地认为冲突说明以太网要出故障了,大量的冲突肯定意味着以太网崩溃了。
事实上,在半双工共享信道以太网中,冲突是非常正常的事件,这只能说明 CSMA/CD 协议在正常工作。随着越来越多的计算机入网,网络中的流量增大,自然会有越来越多的冲突,这只是半双工以太网系统正常运作的一部分。系统处理冲突很快。比如,CSMA/CD 协议保证在一个 10 Mbit/s 的以太网中,大部分冲突将在微秒级的时间内,也就是百万分之几秒内被解决。正常的冲突也不会造成数据的丢失。发生冲突时,以太网接口会退避(等待)几微秒,然后自动重新发送帧。
负载大的半双工模式网络在尝试传输帧时可能会遇到多次冲突,这是意料之中的情况。一个数据包遇到多次冲突说明当下网络繁忙。如果产生了反复冲突,基站将会延长再次发送的退避时间。延长退避时间的正式名称叫截断二进制指数退避,通过这一方法,基站可根据网络负载状况进行自动调整。只有连续遭遇 16 次冲突后接口才会丢弃帧。这种情况只有在以太网信道长时间超载或者网络崩溃时才会发生。
3.1.3 硬件
至此我们介绍了以太网帧结构,介绍了 CSMA/CD 协议是如何保障多个基站合理访问公共信道的。各种以太网的帧结构和 CSMA/CD 协议都是相同的。不管以太网信号是在同轴电缆、双绞线还是光纤上进行传输,数据都采用同一种帧结构,系统也采用同一种 CSMA/CD 协议保证半双工共享信道模式的操作。全双工模式采用了同一种帧结构,但没有采用 CSMA/CD 协议。
现在我们已经了解了以太网帧和 MAC 协议的工作原理,下面来看一看以太网硬件。以太网硬件组件大致可以分为两类:通过物理介质发送和接收信号的信号组件和组成传递以太网信号的物理介质的组件。自然,具体硬件组件跟以太网的速度、采用的电缆有关。为了更清晰地描述硬件构建块,我们来看一个双绞线以太网介质系统的例子。
1. 信号组件
双绞线系统的信号组件包括位于计算机内部的以太网接口、收发器和双绞线电缆。一个以太网可能由通过单个双绞线段连接的一对基站组成,也可能由通过以太网交换机和多个双绞线段连接的多个基站组成。在最初的 CSMA/CD 半双工以太网系统中,双绞线段通过信号中继器(也称为集线器)连接。现代以太网系统则基于只能在全双工模式下运行的以太网交换机。
图 3-2 描述了两个通过双绞线连接到交换机的计算机(基站)。每个计算机都包含以太网接口,以太网接口连接以太网系统。以太网接口包括用于形成、发送、接收以太网帧和提取数据的电子设备。以太网接口通常是一组嵌在计算机主板的芯片,因此,一般我们见到的只是计算机后壳上的以太网连接器。你也可以购买外接接口,插入计算机卡槽,或如 USB 端口类的外部接口。
图 3-2:双绞线以太网连接示例图
以太网接口通过与双绞线介质协作的收发器电子设备连接介质系统。“收发器”一词是“发送器”和“接收器”的结合体。当下,大部分台式机和笔记本都内置用于连接双绞线的收发器。一个收发器包括从基站接口接收信号并传输给双绞线电缆段的电子设备和从双绞线电缆段接收信息并传递给接口的电子设备。
在以太网电子设备整合到笔记本和台式机之前,人们通常在以太网接口上的收发器端口上接入外接收发器,再通过它连接到双绞线和光纤介质系统。本书附录 C 对外接收发器进行了介绍。
图 3-2 中,因为基站 A 内置了以太网收发器,所以它直接连接双绞线电缆段。双绞线电缆使用的是名叫 RJ45 的 8 针插头。
2. 介质组件
用于构建以太网信道信号传载部分的电缆和信号组件属于物理介质。物理电缆组件和采用的介质系统有关。例如,双绞线电缆系统使用的组件不同于光纤电缆系统。更有趣的是,一个以太网系统可能包括好几种不同的介质系统,它们通过以太网交换机连接到一起。
以太网的设计和操作要求任何两个基站之间只有一条传输线路。以太网通过网络拓扑增加分支的方式进行增长,其网络拓扑为树结构。事实上,一个典型的网络设计通常不那么像树,它更像一组复杂的网络段,连接着楼内的各种交换机。
连接到电缆段的系统可以沿任何方向增长,并且不需要有明确的根段。不过一定要避免将以太网段连接成一个循环,因为这种情况下的每一帧都会循环传输直到网络负载饱和。在一个由连接到交换机的电缆段组成的以太网中,交换机可以运行自动检测和关闭循环路径的生成树协议。生成树的操作见第 18 章。
在最早的半双工系统中,以太网 LAN 包括连接一个或多个信号中继器的网络电缆段。如今,以太网系统使用交换机连接多个网络段,其网络段通常采用全双工模式。在全双工模式下,每个基站到交换机端口都有一个专门的连接,而且在这个连接上,基站不会和其他基站共享以太网信道带宽。
3.2 网络协议和以太网
现在我们已经介绍了帧是如何在以太网系统中传输的,下面来看看帧携带的数据。以太网帧的数据域承载要传递的数据,数据的结构由高层网络协议定义。以太网帧数据域携带高层网络协议信息,建立网络中不同计算机间应用程序的通信。使用最广泛的高级网络协议是传输控制协议 / 网际协议(TCP/IP)组。
务必牢记,高层协议是独立于以太网系统的。实际上,以太网 LAN 硬件和以太网帧只是为这些高层网络协议数据提供传递服务。以太网 LAN 本身并不关心以太网帧数据域中的高层网络协议包的内容。
3.2.1 尽力传递
以太网 MAC 协议并不能保证万无一失地传递数据。以太网不严格保证所有的数据都被接收。但以太网 MAC 协议会“尽全力”正确无误地传递每一帧。如果在传递中出现了位错误,那么整帧都会被丢弃。不在链路层搭建复杂的接收保证机制,使得基本帧传递系统能够尽可能保持简单、廉价。
即使如 TCP/IP 这样的高层网络操作提供了构建和保证可靠数据连接所需的机制,大多数以太网操作还是会存在位错误和丢帧现象。因此,人们设计了物理信号系统来实现低位错误率。
网络协议功能细节和以太网系统工作原理是两个独立的话题,前者不在本书的讨论范围内。不过,以太网最常见的作用是在计算机间传递高层网络协议包,因此我们举个简单的例子介绍高层网络协议和以太网系统是如何协作的。
3.2.2 网络协议设计
因为日常生活中我们常常使用各种协议,所以网络协议很容易理解。例如,我们寄信就会用到一系列的协议。下面通过比较寄信和网络协议来分别说明两者是如何工作的。发信有一个众所周知的标准化“协议”。信包括要给收件人的信息和发件人姓名。写完信后,信将被封装到一个信封里,信封上要写上收件人的姓名、地址和发件人的姓名、地址。随后信封被交给一个传递系统,如邮局,由它来处理把信封和内容传递给收件人地址的一系列细节工作。地址的书写位置和信封的大小也是由“邮寄协议”所标准化的,这点和网络协议很像。
网络协议和上述的发信协议非常类似。为了在应用程序间传递数据,计算机上的网络软件在其数据域创建和发送网络协议包,就像在信里写内容一样。添加了发件人和收件人姓名(或协议地址)后,协议包才算完成。高层网络软件创建包之后,整个网络协议包都会写入以太网帧的数据域。随后写入帧的是 48 位的目的地址和源地址。之后,以太网系统将帧传递给目标计算机。
图 3-3 展示了从基站 A 到基站 B 的网络协议数据传输。数据被就像是信封(即高级协议包)中的信,信封上写有网络协议地址。“信件”被放入以太网帧的数据域,图中用邮包表示。这个比喻并不确切,因为每个以太网帧每次只携带一个高级协议“信件”,并非整个邮包的信件,但是这并不影响我们理解该过程。之后,以太网帧通过以太网介质系统传递到基站 B。
图 3-3:以太网和网络协议
3.2.3 协议封装
独立于以太网系统的高层协议包有自己的地址和数据。以太网帧的数据域传递高层协议包。这种方式叫封装。网络世界中,封装很常见。封装机制确保独立系统之间可以良好地协作,比如网络协议和以太网。
封装过程中,以太网帧将网络协议包看作未知数据,仅仅将其写入帧内数据域,不作其他处理。帧传递给目的地址后,运行在基站的网络软件将提取分析帧数据域的协议包。
如同生活中一个运输包裹的物流系统,以太网系统并不知道它传输的高级协议包里究竟写入了什么内容。因此,以太网可以传输各种网络协议,但不需要考虑它们的工作原理。
然而为了将网络协议包传递给目的地址,高层网络协议软件和以太网系统必须协作以确保以太网帧写入正确的目的地址。在使用 TCP/IP 时,IP 包的目的地址被用来寻找以太网上目标基站的地址。下面我们对此进行简要介绍。
3.2.4 IP协议和以太网地址
高层网络协议拥有自己的地址系统,如当下最流行的 IP 协议 IPv4 使用 32 位地址。
之后的 IPv6 采用更长的地址,与现有的 IPv4 系统并行。
计算机中的 IP 协议网络软件可以识别计算机的 32 位 IP 地址和以太网接口的 48 位地址。不过,首次尝试通过以太网发送 TCP/IP 包时,计算机并不会知道网络中其他基站的以太网地址。
为了完成传输工作,计算机需要有其他方式来获取本地网络中其他 IP 计算机的以太网地址。TCP/IP 网络协议通过一个独立的地址解析协议(ARP)来完成这项任务。
- ARP协议的操作
ARP 协议十分简单。图 3-4 描述了基站 A 和基站 B 通过以太网发送、接收 ARP 的过程。
图 3-4:在以太网上使用 ARP 协议
基站 A 的 32 位 IP 地址是 192.0.2.1,基站 A 要通过以太网系统将数据传递给基站 B,而基站 B 的 IP 地址是 192.0.2.2。首先,基站 A 给广播地址传递一个包含 ARP 请求的包。ARP 请求的基本内容是:“IP 地址为 192.0.2.2 的基站请注意,可否把 48 位的以太网接口物理地址发送给我?”
因为基站 A 采用广播帧发送 ARP 请求,所以所有以太网中的基站都会收到这个请求,并将此请求传递给基站上运行的网络软件。
当然,采用指定多播地址会是一个更好的办法,只有 IP 计算机才会接收 IP ARP 包,其他计算机不会受到打扰。因此 IPv6 的地址解析系统采用的就是多播传输。不过 ARP 是早期发明之一,当时很多高层协议开发者还不清楚多播地址方法的优势。
基站 A 完成广播后,只有 IP 地址为 192.0.2.2 的基站 B 才会回应这个信息。作为回应,基站 B 将一个包括基站以太网地址的包传递给基站 A。在基站 A 获得了基站 B 的以太网地址后,可以与基站 B 进行高层协议通信。
如果没有基站回应,基站 A 会丢掉要发送给 192.0.2.2 地址的包。基站 A 会再次尝试 ARP 请求,如果收不到回应,基站 A 除了丢包之外也没有什么解决办法。
参与传输的计算机需要在内存中新建一个名叫 ARP 缓存的表,用来存储 IP 地址和相关的以太网地址。ARP 协议创建此表后,网络软件可以通过查询 ARP 表中的 IP 地址,确定给网络中指定 IP 机器发送数据所需的以太网地址。
- 访问另一个网络中的基站
为了访问不同 IP 网络的基站,高层网络软件需要传递包给网络路由器。网络路由器通过高层网络协议地址结构将不同网段连接在一起。在 TCP/IP 中,每个单独的网络都有一组 IP 地址。通常,各个以太网 LAN 相应的 IP 网络在指定的基站连接路由器。
计算机上的高层网络软件可以获取本地 IP 网段和至少一个路由器的地址。如果要传递的包的目的地址不属于当前网段,软件将需要通过路由器将包传递给远程网络。此时,软件会发出 ARP 请求路由器的以太网地址,如同之前其请求基站地址一样。计算机将携带包的以太网帧传递给路由器,路由器再将此包传递给远程设备。
以上便是关于 ARP 协议的所有内容。可以看到,ARP 协议提供了 32 位 IP 网络协议地址和 48 位以太网接口地址之间的映射。IP 协议和以太网协议独立工作,需要地址解析时又相互协作。
3.3 展望
本章简要介绍了以太网系统的基本元素及其工作原理。本章的介绍是基于最初的半双工共享信道系统,很多年来,这个系统都是主流的操作模式。
不过,全双工以太网和以太网交换机的发明改变了这一状况,现在最流行的操作模式是全双工链路段。
下一章我们将介绍全双工以太网操作,我们也会对以太网帧进行详细介绍。这些内容是你搭建和管理以太网系统所需的背景知识。
①:想了解更多关于 OUI 的信息,请查阅附录 A。
本文来自博客园,作者:GPL-技术沉思录,转载请注明原文链接:https://www.cnblogs.com/polin/p/17185938.html