数据链路层使用的信道主要有以下两种类型:

点对点信道的数据链路层

  这种信道使用一对一的通信方式,最常用的协议就是点对点协议 PPP(Point to Point Protocol)。在通信线路质量较差的年代,在数据链路层使用必须使用可靠的传输协议,比如思科私有协议高级数据链路控制 HDLC(High-level Data Link Control)在当时就比较流行。而随着通信线路质量的提升,对于点对点通信的链路简单的PPP协议就是更好的选择了。现在互联网的数据链路层使用的最多的就是PPP协议CSMA/CD协议(也就是使用拨号入网或者使用以太网入网)。

用户到ISP的链路使用PPP协议

PPP 协议应满足的需求

  • 简单 国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)在设计互联网体系结构时把其中最复杂的部分放在TCP协议中,而网际协议IP则相对简单提供不可靠的数据报服务,这种情况下数据链路层没有必要提供比IP协议更多的功能,因此简单首要的要求。总之接收方每收到一个帧就进行CRC校验,如果正确就收下这个帧,反之就丢弃这个帧,其他什么也不做。
  • 封装成帧 必须规定特殊的字符作为帧定界符,以便接收端从收到的比特流中能准确的找出帧的开始和结束位置。
  • 透明性 必须保证数据传输的透明性,也就是说如果数据中碰巧出现和帧定界符一样的比特组合要采取有效措施解决,不管什么形式的比特组合都必须能正确传送。
  • 多种网络层协议 必须能够在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。
  • 多种类型链路 能够在多种类型的链路上运行,例如串行的或并行的、同步的或异步的、低速的或高速的、电或者光通信、交换的(动态的)和非交换的(静态的)点对点链路。
  • 差错检测(CRC) 必须能够对接收方收到的帧进行检测,并立即丢弃有差错的帧。在链路层进行差错检测不是为了保证可靠传输,而是防止已出现差错的无用帧浪费网络资源。
  • 检测连接状态 能够及时(不超过几分钟)检测出一条链路是处于正常工作状态,还是已经出了故障。
  • 最大传送单元 必须对每一种类型的点对点链路设置MTU的标准默认值,这样做是为了促进各种实现间的互操作性,如果高层协议发送的分组过长超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是MTU是数据链路层可以载荷的数据部分的的最大长度,而不是帧的总长度。
  • 网络层地址协商 PPP协议必须提供一种机制使通信的两纥网络层(例如两个IP层)的实体能够通过协商知道或能配置彼此的网络层地址。
  • 数据压缩协商

在TCP/IP协议簇中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路,只支持点对点的链路通信,此外PPP协议只支持全双工链路。

PPP协议的组成

PPP协议有三个组成部分:

  • 封装方法 PPP协议要包含一个将IP数据报封装成串行链路的方法。既要支持异步链路(无奇偶校验的8比特数据),也要支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元MTU的限制。

  • 链路控制协议(LCP,Link Control Protocol)用来定义建立、配置和测试数据链路链接的协议。通信双方可以协商一些选项。

  • 网络控制协议(NCP,Network Control Protocol)PPP包含了一套NCP,每个NCP协议支持不同的网络层协议,例如IP、OSI的网络层、DECnet、AppleTalk等,实现向上兼容。

PPP协议的帧格式

PPP协议的帧格式
PPP帧的首部和尾部分别为四个字段和两个字段。
F字段:标志字段,规定为0x7E(十六进制下的7E),二进制表示为01111110,表示PPP数据帧的开始和结束。
A字段:规定为0xFF,二进制表示为11111111,没有任何意义,预留使用。
C字段:规定为0x03,二进制表示为00000011,没有任何意义,预留使用。
协议字段:
0x0021:信息字段为IP数据报。
0xC021:信息字段为PPP链路控制数据 LCP。
0x8021:信息字段为网络控制数据 NCP。
信息字段:长度可变,但不超过 1500 字节。
FCS字段:2 个字节,使用 CRC 的帧检验序列。

如果在信息字段中出现和标志字段一样的比特组合时(0x7E-F字段),就需要采取一些措施使像标志字段一样的比特组合不能出现在信息字段中,一般有异步传输和同步传输两种方法:

  • 异步传输:字节填充
    对信息字段内出现标志字段的组合时,使用转义字符(0x7D)进行字节填充。
    (0x7E) -> (0x7D,0x5E)
    (0x7D) -> (0x7D,0x5D)
    ASCII码的控制字符,即数值小于(0x20)的字符,在字符前前增加0x7D,并对该字符的编码加以改变。如:
    (0x03) -> (0x7D,0x23)
    由于在发送端进行了字节填充,因此链路上传送的信息字节数就超过了原来的信息字节数,接收端在收到数据后再进行与发送端字节填充相反的变换就可以正确地恢复出原来信息。
  • 同步传输:零比特填充
    PPP协议在用SONET/SDH链路时使用同步传输,这种情况下使用零比特填充的方法实现透明传输(通常硬件实现,但也可以软件实现,只是会慢些)
    在发送端,同步传输通过硬件或者软件扫描整个信息字段。对于五个连续的1,在后面填入一个0,避免六个连续的1的出现。在接收端,先找到标志字段 F 以确定一个帧的边界,再用硬件扫描整个信息字段,每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除,以还原成原来的信息比特流。
    零比特填充

PPP协议的工作状态

  • 用户拨号接入 ISP 后,就建立了一条从用户PCISP物理连接
  • 用户PC向ISP发送一系列的链路控制协议LCP分组(封装成多个 PPP 帧)
  • LCP连接鉴别成功后这些分组及其响应选择了将要使用的一些 PPP 参数进行NCP配置协商,网络控制协议NCP给新接入的用户PC分配一个临时IP,建立NCP链路,可以开始通信,使PC机称为因特网上的一个主机。
  • 用户通信完毕,NCP 释放网络层连接,收回临时IP。然后LCP释放数据链路层连接。最后释放物理层连接

由上可见,从设备无链路开始,到先建立物理链路,再建立链路控制协议 LCP 链路,经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据
PPP不再是纯粹的数据链路层协议,还包含了物理层网络层的内容。

PPP协议状态图

PPP协议的应用

家庭拨号上网就是通过PPP在用户端和运营商的接入服务器之间建立通信链路。目前,宽带接入正在成为取代拨号上网的趋势,在宽带接入技术日新月异的今天,PPP也衍生出新的应用。典型的应用是在ADSL接入方式当中,PPP与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE(PPP over Ethernet),PPPoA(PPP over ATM)。

广播信道的数据链路层

  这种信道使用一对多的广播通信方式,广播信道上连接的主机很多必须使用专用的共享通信协议来协调这些主机的数据发送,局域网技术使用的就是广播信道,可以从一个站点可很方便地访问全网,局域网上的主机可共享连接局域网上的各种硬件和软件资源。而且局域网技术便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。提高了系统的可靠性、可用性和生存性。局域网技术在计算机网络中占有非常重要的地位。
局域网的主要优点:

  1. 具有广播功能,从一个站点可以很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源
  2. 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变
  3. 提高了系统的可靠性,可用性和生存性

  共享信道要着重考虑的一个问题是如何使众多用户能合理而方便的共享通信媒体资源。若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。在技术上有两种解决方法:

  • 静态划分信道
    频分复用,时分复用,波分复用,码分复用等。用户只要分配到了信道就不会和其他用户发生冲突,但划分信道的方法代价较高,不适合局域网使用。

  • 动态媒体接入控制(多点接入)
    随机接入(主要被以太网采用CSMA/CD)
    受控接入,如多点线路探寻,或轮询(如令牌环目前已不被采用)

以太网(Ethernet)

  以太网是应用最广泛的局域网通讯方式,同时也是一种协议,取代了其他局域网技术如令牌环FDDIARCNET。以太网协议定义了一系列软件和硬件标准,从而将不同的计算机设备连接在一起。以太网设备组网的基本元素有交换机、路由器、集线器、光纤和普通网线以及以太网协议和通讯规则。

起源

来源参考自 Ethernet: The Definitive Guide (O’Reilly Media, 2014) 、计算机网络(第6版)谢希仁和相关百科。

  1972年末在哈佛大学获得博士学位的Bob Metcalfe毕业后前往美国施乐(Xerox)公司的Palo Alto研究中心工作,当他到研究中心时看到那里的研究人员已经设计并建造出后来称为个人计算机的机器,但这些机器都是孤零零的,他便运用帮助Abramson工作获得的知识与同事David Boggs 设计并实现了第一个局域网。也就是以太网的原型,在当时被称为Alto Aloha Network,该网络将实验中心的服务器激光打印机等设备连接在了一起,网络接口的信号时钟来自Alto的系统时钟,并使用无源电缆作为总线传送数据帧,当时的局域网数据传输速率达到了 2.94 Mb/s。
  1973年Metcalfe 将名称改为以太网(Ethernet),意在明确指出不只是研究中心的Altos该系统可以支持任何计算机,并且性能远超世界上第一个无线资料网络ALOHA系统,并选择曾在历史上亚里士多德假想的传播电磁波的物质以太(Ether)来命名。
  1976年Metcalfe和Boggs发表了他们的以太网里程碑论文[METC76],直到1980年9月DEC公司、英特尔(Intel)公司和施乐(Xerox)公司联合提出了10 Mb/s以太网规约的第一个版本 DIX V1(DIX是三个公司名称的缩写)。1982年又修改为第二版规约也就是最后的版本,即DIX Ethernet V2,并将其提交给IEEE 802工作组,成为世界上第一个局域网产品的规约。
  1983年经IEEEE成员修改并通过后,IEEE 802委员会的802.3工作组制定了第一个IEEE的以太网标准 IEEE 802.3[W-IEEE802.3]成为了正式标准,虽然Ethernet规范和IEEE 802.3规范并不完全相同有很小的差别,但一般认为Ethernet和正IEEE 802.3是兼容的。但在当时有关厂商在商业上的激烈竞争,IEEE 802委员会并未形成一个统一的“最佳的”局域网标准,而是被迫制定了几个不同的局域网标准,如IEEE 802.4令牌总线网(Token-Bus)IEEE 802.5令牌环网(Token-Ring)等。为了使数据链路层能更好地适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层:

  • 逻辑链路控制LLC(Logical Link Control) 子层
  • 媒体接入控制MAC(Medium Access Control )子层
    局域网对LLC子层使透明的
    与接入到传输媒体有关的内容都放在MAC子层,而LLC子层与传输媒体无关。
      到了20世纪90年底啊后,以太网在局域网市场中已取得了垄断地位,并且几乎成为了局域网的代名词。由于TCP/IP体系经常使用的局域网是DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路子层LLC(即802.2标准)的作用已经不大了,后面很多厂商生产的网络适配器上就仅装有MAC协议而没有LLC协议。
简化通信的两种措施

为了通信的简便,以太网采取了两种重要的措施:

  1. 第一是采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据,适配器对发送的数据帧不进行编号,也不要求对方发回确认。这样做可以使以太网工作起来非常简单,而局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付。当目的站收到有差错的帧(例如CRC查出差错),就把帧抛弃,其他什么也不做。对有差错的帧是否需要重传则由高层决定。例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定时间后,TCP就把这些数据重新给以太网进行重传。但以太网并不知道这是帧重传,而是当做新的数据帧来发送。
  2. 第二是以太网发送的数据都使用曼彻斯特(Manchester)编码的信号,我们知道,二进制基带数字信号通常就是高低电压交替出现的信号,使用这种信号的最大问题就是当出现一长串的连1或者连0时,接收端就无法从收到的比特流中提取比特同步信号,而曼彻斯特编码方法就是把每一个码元再分成两个相等的间隔。码元1是在前一个间隔为低电压而后一个为高电压,码元0正相反(也可采用相反的约定),但是曼彻斯特编码也有缺点,就是所占的频带宽度比原始的基带信号增加了一倍(每秒传送的码元数加倍了)
    曼彻斯特(Manchester)编码
计算机如何连接到局域网

  计算机与外界局域网的连接是通过通信适配器(adapter),适配器包含了数据链路层和物理层两层的功能,原本适配器本来是插在主板上的一块网络接口板,这种接口板又称为网络接口卡NIC(Network Interface Card)或简称为网卡。由于现在计算机主板上都已经嵌入了这种适配器,已经不再使用单独的网卡了(除非主板集成的网卡不满足使用需求加装PEIE等接口的扩展网卡),因此多使用适配器这个更准确的术语。
  适配器上装有处理器和储存器(包括RAM和ROM)。适配器和局域网之间的通信是通过电缆或者双绞线以串行的方式进行的,而适配器和计算机之间通信则是通过计算机主板上的I/O总线以并行方式进行的。因此适配器的一个重要功能就是进行数据串行传输和并行传输的转换。还由于网络上的数据率和计算机总线上的数据率不同,因此适配器中还必须有对数据进行缓存的存储芯片。在主板上插入适配器后还应该把该适配器的驱动程序安装在计算机的操作系统中,驱动程序会告诉适配器从存储器上的什么位置把多长的数据块发送到局域网,或者应当在存储器的什么位置上把局域送过来的数据块存储下来。另外适配器还要实现以太网的协议
  适配器接收和发送各种帧时不使用计算机的CPU,这时CPU可以处理其他任务,如果接收到了有差错的帧,那么直接丢弃;如果接收到了正确的帧,那么会通过中断通知CPU,并交付协议栈中的网络层。当计算机发送IP数据报时,就由协议栈把IP数据报交给适配器封装成帧,然后发送到局域网中。
计算机通过适配器和局域网进行通信

这里要注意计算机的硬件地址(MAC地址)就在适配器的ROM中,而计算机的软件地址(IP地址)在计算机的存储器中。

  局域网中硬件地址又称物理地址MAC地址(因为这种地址用在MAC帧中)。IEEE 802标准为局域网规定了一种48位的全球标识符,就是写在在通信适配器(网卡)ROM中的地址,严格来说应该叫局域网中每个站的”名字”或标识符,如果局域网上的主机或者路由器安装有多个适配器,那这样的主机就有多个”地址”,这种48位的”地址”应当是每个接口的标识符。
  最早在指定局域网地址标准时为了减少不必要的开销人们觉得用两个字节(16位)表示地址就够了,但是由于局域网的飞速发展很快16位就不够了,于是IEEE 802规定MAC地址段可采用6字节(48位)或2字节(16位)这两种中的一种,现在IEEE的注册管理机构RA(Registration Authority)是局域网全球地址的法定管理机构,负责向厂家分配地址字段的前三个字节(即高位24位),凡事要生产局域网适配器的厂家都必须向IEEE购买这三个字节构成的组织唯一标识符OUI(Organizationally Unique Identifier),通常也叫做公司标识符。地址字段中的后三个字节(地位24位)由厂家自行指派,称为扩展标识符(Extended Identifier),必须保证生产出的适配器没有重复地址。一个地址块可以生成2^24个不同的地址。这种48位地址称为MAC-48,它的通用名称是EUI-48。EUI表示Extended Unique Identifier即扩展的唯一标识符,MAC地址实际上就是适配器地址或适配器标识符EUI-48。当适配器嵌入或插入每台计算机后也就成为了这台计算机的MAC地址了。
MAC地址
IEEE规定地址字段的第一字节的最低位为I/G (Individual / Group)位,I/G 位为0时地址字段表示单个站地址,I/G 位为1时表示组地址,用来进行多播,但是IEEE制订的二进制EUI-48地址就有两种不同的记法:一种记法是802.5和802.6采用的标准,这种记法将最高位写在最左边。另外一种记法是802.3和802.4采用的标准。这种记法将每一个字节的高比特位写在最右边。同时考虑到并不是所有的厂商都愿意向IEEE的RA购买机构唯一标志符OUI,因此,IEEE将地址字段的第一字节的最低第2位规定成为G/L(Global/Local)位,0表示这个地址为全球管理(即可以保证全球没有重复的地址),值为1表示为本地管理,这时用户可以任意分配网络上的地址。但是应当指出的是,以太网几乎不理会这个G/L位。

  适配器有过滤功能,当适配器每从网络上收到一个MAC帧后就先用硬件检查MAC帧中的目的地址,如果是发往本站的帧就收下,否则就将此帧丢弃,这样做就不浪费主机的资源,这里“发往本站的帧”包括以下三种:

  1. 单播 (unicast) 帧(一对一),即收到的帧的MAC地址与本站的硬件地址相同。
  2. 广播 (broadcast) 帧(一对全体),即发送给本局域网上所有站点的帧(MAC地址全为1)。
  3. 多播 (multicast) 帧(一对多),即发送给本局域网上一部分站点的帧。

  以太网适配器还可以设置一种特殊的工作方式,即混杂方式(promiscuous mode)。工作在这种方式的适配器只要”听到”有帧在以太网上传输就都悄悄接收下来,不管这些帧是要发往那个站。这样做实际上是“窃听”其他站点的通信而不中断其他站点的通信,网络上的黑客常利用这种方法非法获取用户的口令。同时网络维护管理人员也需要用这种方法监视分析以太网流量,找出提高网络性能的具体措施,嗅探器(sniffer)就是用了设置为混杂方式的适配器。
  常见的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种则是IEEE的802.3标准。实际上使用最多的也是下图的以太网V2标准,图中假定网络层使用额是IP协议,实际上使用其他协议也是可以的。
以太网V2的MAC帧格式
  以太网V2的MAC帧由五个字段组成,前两个字段是6个字节长的目的地址和源地址,第三个字段是2字节长的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议,例如当此字段的指为0x0800时就表示上层使用的时IP数据报。第四个字段是数据字段,其长度在46到1500字节之间。最后一个字段是4字节的帧校验序列FCS(使用CRC检验)。这里要指出,在帧首部并没有一个帧长度,那么MAC子层又怎样知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?曼彻斯特编码的一个重要特点就是:在曼彻斯特编码的每一个码元(不管码元是0还是1)的正中间一定有一次电压的转换,当发送方把一个以太网帧发送完毕后,就不再发送其他码元了。因此,发送方网络适配器的接口上的电压也就不再变化了,这样接收方就可以很容易地找到以太网帧的结束位置,在这个位置往前数4字节(FCS),就能确定数据字段的结束位置。
  当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长度不少于64字节,我们应当注意到,MAC帧的首部并没有指出数据字段的长度是多少。在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起交给上层协议。现在的问题是上层协议如何知道填充字段的长度呢?(IP协议应当丢弃没有用处的填充字段)。可见,上层协议必须具有识别有效的数据长度的功能。我们知道,上层使用IP协议时,其首部有一个总长度字段,因此总长度加上填充字段的长度,应当等于MAC数据帧数据字段的长度。例如,当IP数据报的总长度为42字节时,填充字段共有4字节。当MAC帧把46字节的数据上交给IP层后,IP层就把其中最后4字节的填充字段丢弃。
  从上面的MAC帧图片看出,在传输媒体上实际传输的要比MAC帧还多8个字节。这是因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧最前面的若干位就无法接收,结果使整个MAC帧变成无用的帧。为了接收端迅速实现位同步,由MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成),它由两个字段构成。第一个字段是7个字节的前同步码(1和0交替码),用来迅速实现MAC帧的比特同步使接收端的适配器能迅速调整其时钟频率,第二个字段是帧开始定界符,定义为10101011,前6位的作用和前同步码一样,最后两个连续的1告诉接收端适配器后面的信息就是MAC帧,MAC帧的FCS字段检验范围不包括前同步码和帧开始定界符。
  还需注意,在以太网上传送数据时是以帧为单位传输,以太网在传输帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。
IEEE规定凡是出现下列情况之一的即为无效的MAC帧:

  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列FCS查出有差错;
  • 数据字段的长度不在46 - 1500字节之间(MAC帧首尾部共有18字节所以有效的MAC帧长度为64 - 1518字节之间);
    对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧。
    循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
标准以太网(传统以太网)

  标准以太网即早期的以太网,其传输速率为10Mb/s,最初使用同轴电缆作为传输介质(总线拓扑)将许多计算机都连接到一根总线上,当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件(那个时代普遍认为有源器件不可靠,无源的电缆线才是最可靠的)。后来又开发了基于双绞线的以太网规范(这个时段一般使用集线器作为连接设备),再后来为了提高传输距离又诞生了光纤以太网规范。此种以太网的组网方式非常灵活,既可以使用粗、细缆组成总线网络,也可以使用双绞线组成星状网络,还可以同时使用同轴电缆和双绞线组成混合网络。这些网络都符合IEEE 802.3标准。
  总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据,这就是广播通信方式。但我们并不总是要在局域网上进行一对多的广播通信,为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址,在发送数据帧时,在帧首部写明接收站的地址,仅当数据帧中的目的地址与适配器ROM中的存放的硬件地址一致时,该适配器才能接收这个帧,对于不是发送给自己的就丢弃,就实现了一对一通信。

总线传输
50Ω的匹配电阻吸收信号,防止信号反射干扰,在总线上的每一个工作的计算机都能检测到B发送的数据信号,但由于只有计算机D的地址与数据帧首部写入的地址一致,因此只有D才接收这个数据帧,其他所有计算机都检测到不是发送给他们的数据帧,因此就丢弃这个数据帧而不能够接受下来,在具有广播特性的总线上实现了一对一的通信。

  经典以太网是采用CSMA/CD的方式来传输数据,所谓CSMA/CD(Carrier Sense Multiple Access/collision detection,带有冲突检测的载波侦听多路存取)协议是IEEE 802.3使用的一种媒体访问控制方法,它基本思想是:所有节点都共享网络传输信道,节点在发送数据之前,首先检测信道是否空闲,如果信道空闲则发送,否则就等待;在发送出信息后,再对冲突进行检测,当发现冲突时,则取消发送。这样做的优点是:原理比较简单,技术上易实现,网络中各工作站处于平等地位,不需集中控制,不提供优先级控制。但在网络负载增大时,发送时间增长,发送效率急剧下降。
  碰撞检测就是计算机边发送数据边检测信道上的信号大小,当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加),当检测到信号电压摆动值超过一定门限值时就认为总线上至少有两个站在同时发送数据,表明发生了碰撞。所谓碰撞就是发生了冲突,因此碰撞检测也称为冲突检测。每一个正在发送数据的站一旦发现总线上出现了碰撞,就要立即停止发送,免得浪费网络资源,然后等待一段随机时间(二进制指数类型退避算法)后再次发送。发生碰撞之后,发送端需发送干扰信号强化碰撞通知其他所有节点。

二进制指数类型退避算法

  以太网端到端往返时延RTT或2τ(传统10Mbit/s以太网采用51.2μs为争用期长度)称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。对于10Mbit/s以太网,在争用期内可发送512bit,也即64字节,也就是以太网在发送数据时,若前64字节没有发生冲突,则后续的数据就不会发生冲突。因此以太网最小有效帧长度为64字节,小于64字节的帧一般都是由于冲突而异常的无效帧。

求最小帧长:
求最小帧长

使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替(半双工)通信,每个站在发送数据后的一小段时间内都存在着遭遇碰撞的可能性,这种发送的不确定性使整个以太网的平均数据量远小于以太网的最高数据率。

以太网MAC帧发送流程图
以太网MAC帧发送流程图

IEEE 802.3中规定的一些传统以太网物理层标准如下。

  • 10 Base-2(802.3a)、10Base-5(802.3):这两个规范都是在使用阻抗为50Ω同轴电缆作为传输介质的总线型拓扑结构网络,基于CSMA / CD流程,且采用基调传输模式的曼彻斯特编码。两者主要区别在于10Base-5使用粗同轴电缆,而10Base-2使用细同轴电缆,它们之间的最大单段距离为500m和185m。
  • 10Broad36(802.3b):这是在IEEE 802.3中唯一针对宽带系统(如有线广播,有线电视)的规范,在采用阻抗为75Ω同轴电缆的总线型拓扑结构网络中使用,它也采用几代传输模式的曼彻斯特编码,最大的段距离为3.6km。
  • 10Base-T(802.3i):该规范应用于使用双绞线作为传输介质的星型拓扑网络中,是当时以太局域网中应用最广泛的以太网规范。它也采用基带传输模式的曼彻斯特编码,最大段距离为100m。
  • 10Base-F(IEEE 802.3j):该规范使用光纤作为传输介质,包括10Base-FL、10Base-FB和10Base-FP三种字规范,均采用基带传输模式的曼彻斯特编码,但设计用途上各不相同。
  • 10Base-FL:设计用于当时的光纤中继器间连接(FOIRL, Fiober OpticInterRepeater Link)协议协同工作,其目的就是替代FOIRL,与FOIRL协同时单段光纤段距离为1000m,纯10Base-FL段距离为2000m。
  • 10Base-FB:用于光纤骨干网(Fiber-Backbone)中同步信令的传输,用于将其他网段通过中继器连接到本地网络,单段光纤段距离为2000m。这个协议是用于集线器、交换机、光纤中继器间的连接的。
  • 10Base-FP:用于连接无源光纤(Fiber-Passive)器件的以太网子规范,可以无需中继器即可连接大量用户(通过集线器、交换机)组成星型拓扑网络,单段光纤段距离为500m。该协议用于用户与集线器和交换机间的链接。

这些规范名称是有含义的,其名称格式:<传输速率(Mbps)><传输模式(Base表示基带传输 Broad表示宽带传输)><最大段长度(基准单位为100m)>。
如10Base-5,即使10Mbps速率,基带传输,介质最长为500米。

快速以太网

  速率达到或超过100Mb/s的以太网称为高速以太网(即1Gb/s),100Mb/s的快速以太网(Fast Ethernet)是由10Mbps标准发展而来的,其协议标准为1995年4月发布的IEEE 802.3u(100Base-T)。IEEE 802.3u标准基本保持了标准局域网的规定,包括帧格式、接口、介质访问控制方法,在MAC子层仍采用了在IEEE 802.3标准中的CSMA/CD作为介质访问控制协议,并保留了MAC和LLC帧格式。但是为了实现100Mbps的传输速率,在物理层做了一些重要的改进:如采用更高效的4B/5B编码而不是曼彻斯特编码。
快速以太网也定义了几种因介质不同的规范,有100Base-TX、100Base-T4、100Base-FX。其命名和上述提到的也类似,不同在于TX表示两对芯线双绞线、T4表示四对芯线双绞线,FX表示两条光纤,具体如下:

  • 100 Base-TX(802.3u):该规范采用两对芯线的双绞线电缆(5类、超5类屏蔽或非屏蔽双绞线对于非屏蔽双绞线,规范只使用四对芯线中的两对,另外两对没有使用),其中一对用于发送,另一对用于接收。该标准直接取代10Base-T和10Base-2规范。使用RJ-45或DB9接口,节点与集线器的最大距离为100m,支持全双工,线缆又有直通线和交叉线,直通线(级间连接,如PC到集线器、交换机,交换机到路由器等)两端同时使用TIA/EIA-568B标准,而交叉线(同级连接,如PC到PC)则是两端各使用A和B标准。
  • 100 Base-T4(802.3u):该标准是用来向下兼容早前安装的3类、4类非屏蔽双绞线(当然也支持5类及以上线)的,但它要使用双绞线中所有的8根芯线,这也就是T4的含义。它采用半双工交换方式,在4对芯线中,3对用于一起发送数据,第4对用于冲突检测(为了实现100Mbps传输速率),使用R-45连接器,最大网段长度为100m,在100Base-T4中,原来的1、3和2、6两对芯线与100Base-TX一样,仍只能采用半双工传输,但另外两对芯线可以全双工传输。另外,100Base-T4规范采用的是8B/6T编码法,而不是其他快速以太网规范的4B/5B编码。
  • 100Base-FX(802.3u):使用一对单模或多模光纤,一路用于发送数据,一路用于接收数据;最大网段长度为200m(使用单模光纤时可达2000m),支持全双工。此种网络主要用于搭建主千网,以提升主干网络传输速率。
    1. 多模光纤,纤芯为62.5/125μm,采用基于LED的收发器将波长为820nm的光信号发送到光线上。当连在两个设置为全双工模式的交换机端口之间时,最大段距离有2km。
    2. 单模光纤,纤芯为9/125μm,采用基于激光的收发器将波长1300nm的光信号发送到光线上。单模光纤损耗小,较多模而言能传输更远的距离。
千兆以太网

  吉比特以太网,千兆以太网(GigabitEthernet)也称为吉比特以太网。1995年11月,IEEE 802.3工作组委任一个高速研究组,以研究将快速以太网速率增至1000Mb/s的可行性和方法。1996年6月,IEEE标准委员会批准了千兆以太网方案授权申请,随后IEE 802.3工作组成立了EEE 802.3z工作委员会,1997年IEEE通过了吉比特以太网的标准802.3z,目前售出的各种计算机的以太网接口基本都是1Gb/s的,传统的10Mb/s和100Mb/s都已经退出了舞台,该规范基本保留了原有的以太网帧结构,同时也支持CSMA/CD介质访问控制技术,所以完全向下兼容,原有的以太网可以方便的升级到千兆以太网。该标准的主要规定如下:

  1. 速率为1Gb/s下的全双工/半双工两种工作方式。

  2. 使用802.3规定的以太网帧格式、CSMA/CD技术。

  3. 在半双工方式下使用CSMA/CD协议(全双工方式不需要使用)。

  4. 向下兼容10Base-T和100Base-T技术。
    工作组为千兆以太网制定了一系列物理层标准,其中常用的标准如下(吉比特以太网物理层使用两种成熟技术,一种来自现有以太网,另一种则是美国国家标准协会ANSI制定的光纤通道FC (Fibre Channel))。

  • 1000 Base-SX (802.3z):波长为850nm,使用芯径62.5/125μm多模光纤、50/125μm多模光纤。其中使用62.5/125μm多模光纤的最大传输距离为220m,使用50/125μm多模光纤的最大传输距离为500米。采用8B/10B编码方式。此标准主要应用于建筑物中同一层的短距离主于网。

  • 1000 Base-LX (802.3z):LX代表长波长,波长为1270nm-1355nm,使用芯径62.5μm多模光纤、50μm多模光纤和9μm单模光纤。其中使用多模光纤的最大传输距离为550m,使用单模光纤的最大传输距离为3千米,采用8B/10B编码方式,此标准主要应用于校园主干网。

  • 1000 Base-CX (802.3z):采用150Ω平衡屏蔽双绞线(STP)为传输介质,9芯D型连接器连接电缆(DB-9连接器),最大传输距离为25m,数据编码法为8B/10B,适用于数据中心主干交换机和主服务器之间的短距离连接。

  • 1000 Base-T (802.3ab):采用5类、超5类、6类、7类双绞线的全部四对芯线作为传输介质,采用PAM5编码方式,最大传输距离为100m。全部四对芯线都可以同时进行全双工数据收发,所以同级设备也无需制作交叉线。这是企业局域网最常用的千兆以太网标准,这种被最广泛安装的LAN(Local Area Network)结构上提供1000Mbps的速度。

  千兆以太网采用光纤作为上行链路,用于楼宇间的连接,原本被作为一种交换技术设计,之后被广泛应用于服务器的连接和主干网中。如今,千兆以太网已成为主流的网络技术,无论是大型企业还是中小型企业,在组建网络时都会把千兆以太网作为首选高速网络技术。除了上述提到的IEEE发布的规范,在工业应用里还有非正式标准形式但广泛应用的千兆以太网规范:1000Base-LH、1000Base-ZX、1000Base-LX10、1000Base-BX10、1000Base-TX。因此,在千兆以太网中加起来一共有“九”种规范,根据采用的传输介质类型,总体上分为基于光纤和基于双绞线的两大类。

万兆以太网

  万兆以太网(10 Gigabit Ethernet)也称为10吉比特以太网,是继千兆以太网之后产生的高速以太网。在千兆以太网的IEEE 802.3z规范通过后不久,IEEEE成立了高速研究组(High Speed Study Group,HssG),主要致力于10GE的研究。10GE的帧格式与之前的10Mb/s、100Mb/s和1000Mb/s以太网的帧格式完全相同,并保留了802.3标准规定的以太网最小帧长和最大帧长,使用户将已有以太网进行升级时仍能和较低速率的以太网方便的通信。但由于10GE仅工作在全双工方式,因此不存在争用的问题,当然也不需要使用CSMA/CD协议,这就使10GE的传输距离大大提高了(因为不再受必须进行碰撞检测的限制)。常用的物理层规范如下:

  • 10G Base-SR (802.3ae):SR表示” Short Reach”(短距离),10GBae-SR仅用于短距离连接,该规范支持编码方式为64B/66B的短波(850nm)多模光纤,有效传输距离为2m~300m。10GBase-SR具有最低成本、最低电源消耗和最小的光纤模块等优势。
  • 10G Base-LR (802.3ae):LR表示“Long Reach”(长距离),10 G Base-LR主要用于长距离连接,该规范支持编码方式为64B/66B的长波(1310nm)单模光纤,有效传输距离为2m~10km,最高可达25km。
  • 10G Base-ER (802.3ae):ER表示“ Extended Reach”(超长距离,10G Base-ER支持超长波(1550nm)单模光纤,有效传输距离为2m~40km。
  • 10G Base-CX4 (802.3ak):10GBase-CX4规范不是利用单个铜线链路传送万兆数据,而是使用4台发送器和4台接收器用4对双芯同轴电缆来传送万兆数据,并以差分方式运行在同轴电缆上,每台设备利用8B/10B编码,以每信道3.125GHz的波特率传送2.5Gb/s的数据。这需要在每条电缆组的总共8条双同轴信道的每个方向上有4组差分线缆对。另外,与可在现场端接的5类、超5类双绞线不同,CX4线缆需要在工厂端接,因此客户必须指定线缆长度。线缆越长一般直径就越大。10GBase-CX4的主要优势就是低电源消耗、低成本、低响应延时,但是接口模块比SPF+的大。
  • 10G Base-T (802.3an):10GBase-T沿用1000Base-T的传输方式,仍然采用四个差分对同时双向传输,全双工,但传输的总速率高达10Gbps,每对线的速率高达2.5Gbps。在编码方面,不是采用原来1000Base-T的PAM-5,而是采用了PAM-16编码方式。使用6类双绞线最大传输距离位55m,使用6a类双绞线时最大传输距离为100m。
扩展的以太网
使用集线器在物理层扩展以太网

集线器扩展以太网
优点:

  • 使原来属于不同碰撞域的以太网能跨碰撞域通信;
  • 扩大了以太网覆盖的物理范围;

缺点:

  • 碰撞域增大了,但总的吞吐量并未提高;
  • 如果不同的碰撞域使用不同的数据率就不能用集线器将他们互连起来。
    集线器在物理层上扩展以太网后是同一个冲突域,同一个广播域。
在数据链路层扩展以太网

扩展以太网更常用的方法是在数据链路层进行,早期使用网桥,现在使用以太网交换机。

  • 网桥和交换机工作在数据链路层可以识别帧;
  • 他根据MAC帧的目的地址对收到的帧进行转发和过滤;
  • 网桥收到一个帧不是向所有的接口转发此帧,而是先检查此帧的目的mac地址,然后再确定转发到哪个接口或丢弃;
  • 可以隔离碰撞域。

以太网交换机的特点:

  • 接口数量多
  • 全双工工作 接口与一台主机或另一个交换机相连,工作在全双工模式
  • 具有并行性 能同时连接多对接口,使多对主机能同时通信
  • 传输无冲突 相互通信的主机都是独占传输媒体,无碰撞的传输数据
  • 接口存储器 接口有存储器,能在输出端口繁忙时把到来的帧进行缓存
  • 能即插即用 其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
  • 转发速率高 采用专用的交换结构芯片,采用硬件方式转发,转发效率比采用软件转发的网桥快很多。

交换机的交换方式

  • 存储转发方式: 数据帧先缓存,验证正确性(CRC),正确转发,错误丢弃。延迟大,可靠性高,支持不同速率的端口交换。
  • 直通方式: 检查数据帧的目的MAC地址后立即转发,延迟小,可靠性低,不支持不同速率的端口交换,有可能转发一些无效的帧。

交换机自学习和转发帧的流程图
交换机自学习和转发帧的流程图
交换机每个接口都是一个冲突域,但所有端口是同一个广播域。

虚拟局域网

  虚拟局域网将单一的广播域隔离出来增加网络的安全性,虚拟局域网VLAN(Virtual LAN)是一些局域网网段构成的与物理位置无关的逻辑组,这些组有共需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪个VLAN。虚拟局域网技术由以太网交换机实现,该技术其实只是给局域网用户提供的一种服务,而不是一种新型局域网。
IEEE 802.3ac标准定义了以太网的帧格式的拓展,以支持虚拟局域网,该协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标记,用来指明发送该帧的计算机属于哪一个虚拟局域网。插入VLAN标记的帧称为802.1Q帧带标记的以太网帧

802.1Q帧

VLAN的优点:

  • 便于网络管理,具有相似需求的用户共享一个VLAN;
  • 增强网络的安全性,敏感用户与普通用户隔离;
  • 减少了不必要的网络流量;
  • 限制了广播报文的洪泛,抑制广播风暴;
  • 减少网络拓扑变更成本;
  • 减低计算机CPU的开销;

虚拟局域网划分方法:

  • 基于交换机端口划分 最简单、也是最常用的方法。属于在第一层划分局域网的方法。缺点是用户移动位置固定。
  • 基于计算机的MAC地址划分 属于在第二层划分局域网的方法,用户位置可以改变。缺点是需要输入和管理大量的MAC地址。
  • 基于协议划分 根据以太网帧的第三个字段类型字段确定该类型的协议属于哪一个虚拟互联网,也属于在第二层划分虚拟互联网的方法。
  • 基于IP地址划分 属于在第三层划分虚拟互联网的方法,根据以太网帧的第三个字段类型和IP分组首部中的源IP地址字段确定该IP分组属于哪一个虚拟局域网。
  • 基于应用层划分 根据高层应用或者服务、或者他们的组合划分虚拟局域网。
使用以太网进行宽带接入

  现在人们也在使用以太网进行宽带接入因特网,为此IEEE在2001年初成立了802.3EFM(EFM表示“Ethernet in the First mile”)工作组,专门研究高速以太网的宽带接入问题。然而以太网的帧格式中并没有用户名字段,也没有让用户键入密码来鉴别用户身份的过程,于是就有人想法子把数据链路层的两个成功的协议结合起来,即把PPP协议中的PPP帧再封装到以太网中来运输,这就是1999年公布的PPPoE(PPP over Ethernet),现在的光纤宽带接入FTTx都要使用PPPoE的方式。
PPPoE协议报文结构图