Ethernet 概论

作者: 要上班的斌哥 | 来源:发表于2018-01-06 16:12 被阅读154次

Ethernet 简介

Ethernet(以太网) 是过去三十年中最成功的局域网技术,是第一个被广泛应用的局域网技术,它的传输速度范围在 10Mbps - 100Gbps。以太网技术起源于施乐帕洛阿尔托研究中心的先锋技术项目,在 1987 年,DEC 与 Inter 加入 Xerox 共同制定了 10Mbps Ethernet 的标准。这个标准由 IEEE standard 802.3 组成。
对于 Ethernet 来说,一个重要的特点就是不可靠传输,接收端主机网卡不会发送资料接收成功或者接收失败的消息给发送端主机网卡。
另一个重要的特点是无需建立连线。发送端主机网卡在发送资料给接收端主机网卡的时候无需像打电话一样提前建立连线。

Ethernet 拓扑

  1. 总线拓扑(Bus Topology)

总线拓扑流行于 90 年代,它的特点是所有的节点均位于同一个碰撞区域,也就意味着节点同时传送会互相碰撞。

我们以单一网段为例,该网络是 10Base5(10Base5 表示线路材质为同轴电缆,10 表示该网络速度为 10Mbps,Base 表示这类线缆被用于基频系统,5 表示每一个网段最长为 500 米)。

image.png

从图中可以看出
1、为了保证数字信号的强度,以太网同轴电缆最长是 500 米。
2、每个节点都是连接到以太网。
3、收发器用来监测线路是否闲置,并且在负责信号的发送和接收,收发器的另一端直接连接在节点的网卡。
4、终端器可以用来吸收传送到线路末尾的信号,防止信号往回传送。

接下来我们以双网段为例,该网络是 10Base5。


image.png

从图中可以看出
1、多个以太网段可以使用中继器来连接。
2、中继器是一个用来传输数字信号的装置,用来复制信号。
3、为了保证数字信号的强度,规定 2 个节点不能有超过 4 台中继器,而同轴电缆单条线路最长为 500 米,这意味着一个以太网络的最大可达范围为 5 x 500 m = 2500 m 。

接下来我们以五网段为例,该网络是 10Base5。


image.png

从图中可以看出
1、网段 1 到网段 5 之间的线路长度为 2500,为以太网络的最大可达范围。
2、为了保证数字信号的强度,规定 2 个节点不能有超过 4 台中继器,而同轴电缆单条线路最长为 500 米,这意味着一个以太网络的最大可达范围为 5 x 500 m = 2500 m 。但是在这里有另外一种设计,网段 1
到网段 5 的路径使用 2 个 half-repeater 来增强信号,2 个 half-repeater 之间的距离有 1000 米 。

第一代以太网技术 10Base5 使用同轴电缆,第二代以太网新技术使用比较细的缆线称作 10Base2。


image.png

更新一代的以太网技术是 10BaseT,线路材质使用的是双绞线。


image.png

使用 10BaseT 和 集线器的常见网络型态如下图


image.png
  1. 星状拓扑 (Star Topology)
    现在的以太网络拓扑以星状拓扑最为流行,交换机位于星状拓扑最中间,主机与主机之间的 frame 不会互相碰撞。
image.png

交换机位于星状拓扑最中间,使用交换机有如下好处
1、加速以太网络集线器的传输速度
2、每一个以太网络接口都可以同时传输

介绍完了网络的总线拓扑和星状拓扑结构,那么接下来介绍信号是如何在线路传输的。


image.png

如上图所示,线路上的信号传输采用曼切斯特编码,每一个 bit 位都有一个电位变化,便于识别高电位和低电位。 电位变化如同 clocks 一样可以用来让传送端和接收端进行时间同步。

Ethernet Frame 格式

介绍了网络的结构也介绍信号是怎么在线路传输,接下来介绍数据是怎么在网络上传输的。

  1. Frame 封包格式


    image.png

    这是 Ethernet Frame 的格式,这个格式约定了数据包的表示方法。

1、Preamble:用于信号同步(101010...1010)
2、SFD:Frame 的 分隔符,表示 Frame 要开始了(10101011)
3、DA:目的主机的网卡地址
4、SA:来源主机的网卡地址
5、Type:标明这个数据包应该被送到哪个上层协议,比如 IP,TCP/UDP
6、LLC:数据内容,最大数据量为 1500 bytes
7、PAD:当 LLC 的容量少于 46 bytes, 该栏位填充数据,直到数据量大于 46 bytes
8、FCS:用于错误检查
对于 Ethernet Frame 来说,最小封包为 64 bytes,最大封包为 1518 bytes。为什么要设计最大和最小封包呢?最小封包用来确定封包的传送是否发生了碰撞,最大封包是避免占用大量频宽,不符合网络设计的公平原则。

  1. 以太网网络地址
    在网络中,每台主机都有一个唯一的以太网网络地址,不是 IP 地址,而是 MAC 地址。MAC 地址属于网卡,在网卡出场的时候就被烧录在网卡里面。MAC地址的形式是由冒号隔开的 6 个数字组成的序列号码,每个数字是由 8 个 bit 组成,以十六进制形式呈现。如 MAC 地址是十六进制 8:0:2b:e4:b1:2 ,转成二进制则是 00001000 00000000 00101011 11100100 10110001 00000010 。

既然 MAC 地址在网卡出场的时候就被烧录在网卡里面,那又是怎么保证每个网卡的 MAC 地址唯一呢?涉及到这个唯一性的问题,对于以太网来说,应该有一个网卡地址的集中管理机构,各个网卡制造商都会被分配或者购买得到不同的前缀地址,接下来各个网卡制造商所制造出来的网卡必须用其前缀地址来给自己制造的网卡分配地址。例如 AMD 被指定的 24 bit 的前缀为 8:0:20 。

  1. 以太网 Frame 传输特点
    1、网卡会收到网络线路上经过的所有的 Frame,但是仅仅会接受目的地址是自己网卡地址的 Frame 。举个例子局域网内有 A,B,C,D,E 五台连接在同一个网段的主机,A 和 E 分别在网段的 2 端,假如 A 发送了一个 Frame 给 E,那么网段上的 B,C,D 三台主机同样可以接收到这个 Frame,而 E 主机的网卡辨认出这个 Frame 的目的地址是指向它自己的时候,E主机网卡会收下这个 Frame,并把这个 Frame 向上传送给主机。(在使用 Wireshark 这个抓包工具进行抓包的时候,我们就可以感受到这个以太网 Frame 传输特点)
    2、网卡除了接受目的地址是自己网卡地址的 Frame,还会接受目的地址为广播地址的 Frame 。所有 bit 均为 1 的目的地址被用作广播地址,所有的网卡都会将目的地址为广播地址的 Frame 收下,然后上传给主机。
    3、网卡除了接受目的地址是自己网卡地址的 Frame,还会接受目的地址为广播地址的 Frame ,也会接受目的地址为群播地址的 Frame,网卡接受群播地址的 Frame 的前提是网卡加入了该群组。群播地址是第一个 bit 为 1 但不是广播地址的地址。

Ethernet MAC 协议 -- CSMA/CD

如下图所示,任何传送到以太网的信号都会被广播到整个网络上,信号会往网段的 2 边端点方向传播,中继器会将信号转送到所有连接的网段,每一个网段的终端器会将信号吸收,以避免信号反弹回网段上。


image.png

既然信号有可能在网络上发生碰撞,那么网络要通过什么方式来尽量避免信号发生碰撞呢?以太网设计者设计了一个叫做 CSMA(Carrier Sense Multiple Access,载波侦听多路访问)的协议来尽量避免这种情况。

1.CSMA 运作

CSMA 是传输前先听。假如听到线路是空闲的,那么传输整个 Frame。假如听到线路是忙碌的,那么延后传输时间。

2.CSMA 碰撞问题

image.png

如上图,对于同一个网段上的主机 B 和主机 D 来说,主机 B 在 t0 时刻侦听线路是否空闲,此时线路空闲,那么主机 B 的网卡开始传输 Frame。主机 D 在 t1 时刻侦听线路是否空闲,此时主机 B 发送的信号还没有传输到主机 D,主机 D 侦听到线路空闲,那么主机 D 的网卡开始传输 Frame。那如上图所示,过一段时间后主机 B 和主机 D 的信号必然发生碰撞,但是主机 B 和主机 D 不管信号是否发生了碰撞,仍然继续传输。也就是说 CSMA 虽然规定了传输延迟的特点,但是碰撞仍然可能会发生,因为 主机 B 和主机 D 可能不会听到互相正在传输资料。若是发生了碰撞,那么 Frame 的传输时间都会浪费掉,Frame
无法传输成功,造成网络资源浪费。

  1. CSMA/CD (冲突检测)
    CSMA/CD(Carrier Sense Multiple Access/collision detection,带有冲突检测的载波侦听多路存取)是多个节点在一条共用的线路上传输和接收 Frame ,载波侦听表示所有的节点可以侦听到线路是空闲还是忙碌,冲突检测表示一个节点在传输信号的时候会持续检测它发送的信号是否与其他节点发送的信号发生碰撞。
    CSMA/CD 与 CSMA 的特点相同,都是传输前先听。假如听到线路是空闲的,那么传输整个 Frame。假如听到线路是忙碌的,那么延后传输时间。不同之处在于 CSMA/CD 可以再短时间内就可以侦测到信号发生碰撞而且碰撞发生后立即终端信号传输,降低网络资源的浪费。
image.png

CSMA/CD 与 CSMA 协议不同的是,在信号发生碰撞之后,CSMA/CD 协议可以侦测到信号发生碰撞,然后立即停止信号传输。所以从上图中可以看出信号碰撞的区域明显较小。

  1. CSMA/CD 的问题
    MAC 协议都是直接作用在网卡上面的,对于使用 CSMA/CD 协议的网卡来说,它传输 Frame 的过程是怎么样呢?
    1、当网卡有一个 Frame 要传送且线路闲置,那么网卡会立即将 Frame 传送出去。
    2、当网卡有一个 Frame 要传送且线路忙碌时,会等到线路闲置时再立即传输
    3、由于以太网使用 1-persistent 协议,也就意味着每当线路从忙碌到闲置,网卡立马传送 Frame 的概率为 1,p-persistent 表示每当线路从忙碌到闲置时,网卡传送 Frame 的概率为 p (0 <= p <= 1)

正是因为 MAC 协议都是直接作用在网卡上面的,因此 CSMA/CD 协议是没有集中管理机制的。所以有可能发生同一个时间内有多个网卡同时传送 Frame 。同一个网络上的多个网卡可能同时侦测到线路是空闲状态,或者同时都在等待线路从忙碌到空闲状态。当遇到多个网卡同时传送 Frame 的时候,传送出去的 Frame 会在网络中发生碰撞。

  1. CSMA/CD 碰撞处理
    CSMA/CD 支持冲突检测,每一个传送端都有能力知道传送过程中信号是否发生了碰撞。当网卡检测到 Frame 和其他网卡的 Frame 发生碰撞的时候,网卡会先发送一段 32 bit 的干扰信号(jamming sequence)并且停止传输信号。发送干扰信号是让碰撞信号扰乱的更加彻底,使其他网卡能够轻易了解网络上有信号发生了碰撞。
    在信号发生碰撞的时候,主机网卡发出的 Frame 最少有 96 bit , 96 bit = 64 bit preamble + 32 bit jamming sequence 。当网卡只有传送 96 bit 的 Frame 就发生了碰撞,这表示 2 台发生信号碰撞的主机距离非常近。
    当 2 台主机距离比较远的时候,信号传输需要比较长的时间,所以在检测出碰撞之前,主机已经传送了比较多的数据量。

  2. Collision Window (碰撞窗口)
    冲突检测需要的最长时间会发生在 2 台主机分别位于网络的 2 端。为了确认 Frame 在传输时候是否和其他 Frame 发生碰撞,主机在传送 Frame 的时候最少需要发送 512 bit。


    image.png

为什么需要 512 bit 呢?


image.png

1、 假设主机 A 开始传送 Frame 的时间点为 t
2、 a 表示信号从线路的开始一端传送到另一端所需要的时间
3、主机 A 传送的 Frame 的第一个 bit 到达 主机 B 的时间为 t+a
4、假设主机 A 的 Frame 到达主机 B 的之前的一个无限短的时间内,主机 B 开始传送 Frame
5、主机 B 的 Frame 会和主机 A 的 Frame 发生碰撞,这个碰撞会立即被主机 B 侦测到,
6、主机 B 发送一端 32 bit 的干扰信号
7、主机 A 不会马上侦测到信号碰撞,直到收到主机 B 的 Frame,此时时间为 t + 2a
8、主机 A 为了能够侦测到碰撞,必须持续发送 Frame 直到时间点 t +2a,主机 A必须持续传送 2a 的时间,才能确认所有可能发生的碰撞

一个以太网的网络最大长度为 2500 m,任意 2 台主机之间最多有 4 个中继器,在这个网络架构之下,信号往返 2 端之间的时间被协议设定为 51.2 us ,那么在 10Mbps 的以太网络中,10 Mbps x 51.2 us = 512 bit。

  1. Exponential Backoff Algorithm(指数退避算法)
    在 CSMA/CD 协议中,主机网卡检测到碰撞了,也停止了 Frame 的传送。那么接下来主机网卡该做什么呢?接下来主机网卡等待一段时间后重新发送 Frame 。每次主机网卡重新发送 Frame 失败后,就要加倍等待时间然后再重新发送 Frame。将每次重新发送之间的延迟时间加倍的策略称作指数退避(Exponential Backoff)。
    在使用指数退避算法中,
    1、网卡第一次等待的时间不是为 0 就是 51.2 us,这 2 个值随机。
    2、假如传送失败,再次重新传送前,需要等待 0,51.2us,102.4us,153.6us,这 4 个值随机。计算公式为 k * 51.2us (k = 0,1,2,3)
    3、假如再发生第三次碰撞后,需要等待 k * 51.2us (k = 0 ... 2^3 -1,k 值随机选择)
    4、一般来说,指数退避算法会随机在 0 到 2^n -1 之间选择一个 k 值,然后等待 k * 51.2 us,其中 n 是 Frame 的连续碰撞次数

  2. CSMA/CD 协议总结
    1、Frame 传送之前需要先进行载波侦听
    2、传送 Frame 时需要继续侦听
    3、如果同时有多个主机同时传送,那么会发生信号碰撞
    4、在发生碰撞后使用指数退避算法产生随机延迟
    5、如果线路侦测到忙碌,则延迟传送
    6、Collision Window 时间被设定为 51.2 us

  3. CSMA/CD 碰撞处理机制
    1、干扰信号是由网卡产生的
    2、Jam signal 是为了让所有参与碰撞的主机能够侦听到碰撞
    3、碰撞后指数退避及重送机制(Truncated Binary Exponential Backoff Algorithm,BEBA)。随机延迟时间为 r * 51.2 us,其中 0<= r <= 2^k, k = MIN(n,10), n 是连续发生碰撞的次数, n<= 16
    4、BEBA的缺点,后送先到。相对于因碰撞而等待时间比较长的主机,没有发生碰撞或者碰撞次数少的主机有比较高的机会可以成功传送 Frame

Ethernet 效率

image.png

以太网在负载较轻的情况下运行效率较好,在负载较重的情况下,会有比较多的网络频宽资源因为碰撞而浪费掉。

802.3 Ethernet 标准

image.png

以太网标准虽然有不同的网速,如 2 Mbps,10Mbps,100Mbps,1Gbps,10Gbps,100Gbps等,不同的硬件媒介,如光纤,同轴电缆等,但是有共同的 MAC 协议 (CSMA/CD)和 Frame 数据格式。

总结

1、MAC 协议作用于网卡,网卡使用的MAC协议是 CSMA/CD
2、Ethernet 传输前无须建立连线,是不可靠传输
3、网络拓扑从 Bus Topology 到有交换机的 Star Topology
4、 Bus Topology 是半双工传输
5、Ethernet 在负载轻的状况下效率较好,负载重的状况下由于较多的碰撞导致效率较差
6、交换机可以实现全双工,点对点连接,不会产生碰撞

文章主要是介绍 Ethernet 的简单知识,作为网络方面的简单入门内容。这篇博客内容总结于黄能富教授的《CS01060 2017-秋季-計算機網路概論》课程,博客截图来源于课程 PPT。

参考

  1. https://zh.wikipedia.org/wiki/%E4%BB%A5%E5%A4%AA%E7%BD%91
  2. http://www.sharecourse.net/sharecourse/course/view/courseInfo/1246

相关文章

网友评论

    本文标题:Ethernet 概论

    本文链接:https://www.haomeiwen.com/subject/awqagxtx.html