azwcl
azwcl
Published on 2024-11-19 / 92 Visits
0
0

计算机网络-第三章-数据链路层

image-20241108221943518

image-20241108222002845

1. 数据链路层的几个共同问题

1.1. 数据链路和帧

  1. 链路 link

      链路就是说从一个节点到相邻节点的一段物理线路,中间并没有任何其他的交换节点;

  2. 数据链路 data link

      当在一条线路上传输数据,除了必须要有物理线路之外,还需要一些必要的通信协议来控制这些数据的传输;而把实现这些协议的硬件和软件加载链路上,就构成了数据链路;

  3. 数据链路层作用

      把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中数据去除并上交给网络层;

      为了通俗易懂,可以采用三层模型;在此处,不论哪一段链路上通信,都看成是节点与节点之间的通信,而每个节点都只有下三层;

    image-20241109200253356

  4. 点对点信道的数据链路层在进行通信时主要步骤如下:

    1. 节点 A 的数据链路层将网络层交下来的 IP 数据包添加首部和尾部封装成帧;
    2. 节点 A 把封装好的帧发送给节点 B 的数据链路层;
    3. 如节点 B 的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据包交给上面的网络层;否则丢弃这个真;

1.2. 三个基本问题

1.2.1. 封装成帧

  封装成帧(framing) 就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧;其中首部和尾部的一个重要作用就是进行帧定界;每一种链路层协议也都规定了所能传送的帧的数据部分长度上限,即最大传送单元 MTU (Maximum Transfer Unit);

image-20241109202340818

  当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以用特殊的帧定界符;(ASCII 中控制字符)

image-20241109202547266

1.2.2. 透明传输

  因为帧开始和结束使用专门指明的控制字符,那么所传输的数据中,不能出现任何 8 比特组合与其一致,否则会出现帧定界错误;

  当传送的帧是文本文件的帧,即 ASCII 输入的可打印字符的;那么不会出现 SOH 和 EOT 这种控制字符,当然就不会出现错误,这么传输自然就是透明传输了;

  但是当数据部分是非 ASCII 码的文本文件的时候,那么可能某个子节的二进制代码刚好和这种控制字符一样,那么错误出现;

image-20241109203536004

  这个透明其实是一个很重要的术语,他表示的含义是:某一个实际存在的事物看起来却好像不存在一样;那么为了达到透明传输,我们必须要设法使接收端可以识别;具体解决方法:发送端数据链路层在数据中出现控制字符 SOH 和 EOT 的前面插入一个转义字符 ESC;而在接收端的数据链路层在把数据送给网络层之前删除这个转义字符;该方法成为字节填充字符填充

image-20241109220752517

1.2.3. 差错检测

  1. 比特差错

    在现实中,传输可能会差生差错;1 变成 0,0 变成 1;这种就是比特差错;

  2. 误码率 BER (Bit Error Rate)

    传输错误的比特占所传输比特总数的比率;

  3. 循环冗余校验 CRC (Cyclic Redundancy Check)

      在发送端,将数据划分成组,假定为每组为 k 个比特;现假定传输数据 M = 101001 即 k = 6;CRC 运算就是在数据 M 的后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去,一共发送 (k+n) 位;

      用二进制的 模2运算 进行 2n 乘 M 的运算;相当于在 M 后面添加 n 个 0 (即冗余码几位,你添加几个0);得到 (k+n) 位的数除以收发双方实现商定的长度 (n+1) 为的除数 P ,得出商是 Q 而 余数是 R(n 位,比 P 少一位);在示例中 M = 101001,约定 P = 1101(即设定 n = 3);这个时候经过模 2 除法运算,得到一个商;当然,商没啥用,主要为了余数 R,其为 001,这个余数 R 即作为冗余码来拼接传递;

    image-20241110195544959

      这种为了校验而添加的冗余码称为帧检验序列 FCS (Frame Check Sequence)


  这样在接收端接受到的数据,以帧为单位进行 CRC 校验,除以相同的除数 P ,得到其余数;如果传输校验中没有差错,这个余数势必为 0 (因为你开始后缀是 n 个0 进行模 2 运算,然后又加上余数,把 n 位 0 变成 n 位冗余码,相当于加上了这个除数,那么除起来势必为 0 );如果出错,那么除以除数还为 0 的概率是非常小的;

  这个时候,接收端接收到 每一帧经过 CRC 校验之后,只会存在两种情况:1. R = 0,无错,接受;2. R != 0 ,有差错,但无法判定几位差错,丢弃;

  还有一种即生成多项式,用多项式来表达;P = 1101 即可表达为:P(X) = X3 + X2 + 1;(最高位对应 X3 依次类推;)多项式 P(X) 称为生成多项式;目前广泛使用的生成多项式 P(X) 有以下几种:

  • CRC-16 = X16+X15+X2+1
  • CRC-CCITT = X16+X15+X5+1
  • CRC-32=X32 + X26 + X23 + X22 + X16 + X12 + X16 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1

  在数据链路层如果仅仅用 CRC ,那么只能做到无差错接受,以非常接近于 1 的概率认为这些帧在传输过程中没有出现差错;近似的可以认为:凡是接收端数据链路层接受的帧均无差错;

  1. 可靠传输

      上面的叙述,仍未要求,数据链路层向网络层提供可靠传输的服务;传输差错不仅仅是上面说的比特差错,还有**帧丢失、帧重复、帧失序;**对于 OSI 的观点是:数据链路层必须要向上提供可靠传输服务,因此在 CRC 的基础上,增加了帧编号、确认和重传机制;在历史上起到不错的作用;但目前通信线路的质量提高了,因为通信线路导致的差错概率大大降低;因此互连网采用区别对待的方法:对于通信线路好的优先传输链路,数据链路层不采用确认和重传机制,纠正差错任务交由上层协议来完成;对于通信质量较差的线路,仍使用确认和重传机制,数据链路层向上提供可靠传输服务(这个可以见第九章);这样会提高通信的效率;

      对于可靠传输协议,将会在第五章进行;这里介绍的关于数据链路层的协议都不是可靠传输的协议;

2. 点对点 PPP 协议

  在以往通信线路较差的年代,数据链路层使用可靠传输协议曾经是一种好方法,因此,能够实现可靠传输的高级数据链路控制 HDLC (High-level Data Link Control) 就成为当时比较流行的数据链路层协议;但目前 HDLC 很少进行使用,对于点对点的链路,其 简单的多的 点对点协议 PPP (Point to Point Protocol) 则是目前使用得最广泛的数据链路层协议;

2.1. PPP 协议的特点

image-20241110205624736

2.1.1. PPP 协议应满足的需求

  1. 简单;IETF 在设计的时候,将最复杂的部分放在 TCP 协议中,而网际协议 IP 则相对简单,它提供的事不可靠数据报服务;这种气矿下,数据链路层没有必要提供比 IP 协议更多的功能;因此,不需要纠错,不需要序号,不需要流量控制;除 CRC 外,啥也不做;

  2. 封装成帧

  3. 透明性

  4. 多层网络层协议;必须要在同一条物理链路上支持多种网络层协议(IP 和 IPX 等协议)的运行;当点对点链路所连接的事局域网或路由器,必须要同时支持链路上对应的各种网络层协议;

  5. 多种类型链路;电的要支持,光的也要…等;

  6. 差错检测;检测,丢弃有差错的帧;(如果不见测,差错帧还在中转继续,那么浪费啊)

  7. 检测连接状态;

  8. 最大传送单元;MTU;

  9. 网络层地址协商;必须提供一种机制使通信的两个网络层实体能够通过协商知道或配置彼此的网络层地址;协商算法应尽可能简单且可以在所有情况下得到协商结果;这对拨号连接的链路特别重要,因为如果仅在数据链路层建立连接但是不知道对方网络层地址,那么网络层无法传送分组了;

  10. 数据压缩协商;提供方法协商使用数据压缩算法;但 PPP 协议并不要求数据压缩算法进行标准化;

  在 TCP/IP 协议之中,可靠传输由运输层 TCP 协议负责;PPP 不支持 多点线路(即一个主站和多个从站进行通信),只支持点对点链路通信,此外,PPP 协议只支持全双工链路;

2.1.2. PPP 协议的组成

  1. 一个将 IP 数据报封装到串行链路的方法;PPP 既支持异步链路(无奇偶校验的 8 比特数据),也支持面向比特的同步链路;IP 数据报在 PPP 帧中就是其信息部分,受 MTU 限制;
  2. 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP;
  3. 一套网络控制协议 NCP;其中每一个协议支持不同的网络层协议,如 IP 、OSI 的网络层、DECnet、AppleTalk等;

2.2. PPP 协议的帧格式

2.2.1. 各字段的意义

image-20241111224555421

  • 协议字段为 0x0021 时,ppp 帧信息字段就是 IP 数据包;为 0xC021 就是 LCP 数据,0x8021 就是网络层控制数据;
  • 信息字段的长度是可变的,但是不超过 1500 字节;
  • 尾字段中第一个字段是 CRC 的帧检验序列 FCS ;

2.2.2. 字节填充(异步)

  当信息字段中出现和标志字段一样的比特(0x7E),必须要采用特定措施;使用异步传输时,把转译字符定义为 0x7D ,并使用字节填充,RFC1662 规定如下填充方法:

  1. 将信息字段出现的每一个 0x7E 转译成 2 字节序列:0x7D,0x5E
  2. 若信息字段中出现一个 0x7D 的字节(即与转义字符一样的),则将 0x7D 转义成:0x7D,0x5D
  3. 若信息字段出现 ASCII 码的控制字符,则在字符前加入一个 0x7D 字节,同事将该字符的编码加以改变;例如,出现 0x03,则变成 0x7D,0x23;

image-20241111230109034

2.2.3. 零比特填充

  ppp 协议在 SONET/SDH 的链路上,使用同步传输(一连串的比特连续传输),而非异步传输(逐个字符传送);这种情况下采用 零比特填充 来实现透明传输;

  零比特填充的具体做法是:在发送端,先扫描整个信息字段(即可硬件,也可以软件实现);发现五个连续的 1,则立刻插入一个 0 ;因此该信息字段,就不会出现 6 个连续的 1 ;接收端在收到一个帧,先找到标志字段 F 以确定一个帧边界,再用硬件对其中的比特流进行扫描;还原;这样即可保证透明传输;

image-20241111230655798

2.3. PPP 协议的工作状态

image-20241111230847575

  当用户拨号接入 ISP 之后,就建立了一条从用户到 ISP 的物理连接;这个时候,用户电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装乘多个 PPP 帧),以便建立 LCP 连接;这些分组及其相应选择了将要使用的 PPP 参数;接着,网络控制协议 NCP 给其分一个临时 IP 地址;

  当通信完毕时,NCP 释放网络层连接,收回分配出去的 IP 地址;接着 LCP 释放数据链路层连接;最后释放的是物理层的连接;

  当用户通过调制解调器呼叫路由器时,路由器能够检测到调制解调器的载波信号,双方建立了物理层的连接后,PPP 就进入了 链路建立(Link Establish)状态,其目的是建立链路层的 LCP 连接;

  这个时候 LCP 开始协商一些配置选项,即发送 LCP 的配置请求帧(Configure-Request);这个 PPP 帧,其协议字段置为 LCP 对应代码,而信息字段包含特定的配置请求;链路另一端可以发送以下几种响应:

  1. 配置确认帧(Configure-Ack):所有选项都接受
  2. 配置否认帧(Configure-Nak):所有选项都理解但不能接受;
  3. 配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商;

  LCP 配置选项包括链路上最大帧长,所使用的鉴别协议规约(如果有),以及不使用 PPP帧中地址和控制字段(因为这两字段是固定的,没信息量,可以在 PPP 帧的首部中省略这两个字节);协商之后,进入鉴别状态,在这个时候,只允许传送 LCP 协议的分组、鉴别协议的分组以及检测链路质量的分组;若使用 口令鉴别协议PAP(Password Authentication Protocol),可以重试若干次;如果要更好安全,可以使用口令我瘦鉴别协议 CHAP(Challenge-Handshake Authentication Protocol);鉴别失败,直接链路终止,成功,进入网络层;

3. 使用广播信道的数据链路层

3.1. 局域网的数据链路层

image-20241112231044913

  共享信道要着重考虑的一个问题就是如何使众多的用户可以合理而方便地共享通信媒体资源;技术上有两种:

  1. 静态划分信道;频分复用、时分、波分之类的;但是代价高,不适合局域网;
  2. 动态媒体接入控制(多点接入);其特点:信道并非用户通信时固定分配给用户,这里又分为两类:
    1. 随机接入:所有用户可随机发送信息,如果多个同一时刻发送,则产生碰撞,要有可以解决的协议;
    2. 受控接入:用户不可随机发送信息而必须服从一定控制;典型代表:分散控制的令牌环局域网和集中控制的多点线路探询或称为轮询;

3.1.1. 以太网的两个主要标准

  1. 逻辑链路控制 LLC 子层
  2. 媒体接入控制 MAC 子层

image-20241112231919805

  LLC 子层与传输媒体无关,不管何种传输媒体和 MAC 子层的局域网对 LLC 子层来说都是透明的;但是在 20 世纪 90 年代后,以太网在其中基本垄断;目前使用最多的局域网只剩下 DIX Ethernet V2 (简称 以太网),而不是 IEEE 802 委员会制定的几种局域网了;其制定的 LLC 作用已经消失;很多厂商生产的适配器没有 LLC 协议,仅有 MAC 协议;故不介绍 LLC 子层了;

3.1.2. 适配器的作用

image-20241112232306518

3.2. CSMA/CD 协议

3.2.1. 以太网的两种措施

  1. 采用较为灵活的无连接工作方式,即不必先建立连接,就可直接发送数据;适配器对发送的数据帧不编号,也不要回复确认;(简单,局域网通信质量好,差错概率小);因此,以太网提供的服务是尽最大努力的交付,即不可靠交付;(是否重传,由高层决定);在同一时间仅允许一台计算机发送数据;(否则计算机之间相互干扰;)采用 CSMA/CD 协议;
  2. 以太网使用 曼彻斯特编码

3.2.2. CSMA/CD 要点 (载波监听多点接入/碰撞检测)(Carrier Sense Multiple Access with Collision Detection)

  1. 多点接入:代表这是总线型网络,许多计算机以多点接入方式连接在一根总线上;协议的实质:载波监听碰撞检测

  2. 载波监听:即边发送边监听;不管在发送前,还是发送中,每个站都要不停地检测信道;

  3. 碰撞检测:检测信道电压变化情况,发现是否发生冲突;

image-20241116231147778

显然:在使用 CSMA / CD 协议的时候,是个半双工通信;

争用期:端到端的一个往返的事件;经过争用期后,未检测到,肯定不会碰撞;

3.2.3. 截断二进制指数退避算法

  当发生碰撞,肯定不能立刻再重发,如果仅仅是退避随机事件,又很容易碰撞;故有一套标准规定:

  1. 基本退避时间为:争用期 ,具体的争用期时间为 51.2us;对于 10Mbit/s 的以太网,在争用期之内可以发送 512 比特;也可以说争用期为 512 比特时间;1 比特时间就是发送 1 比特所需要时间;为了方便,可以直接使用比特为争用期单位;
  2. 从离散的整数集合之中:[0,1,…(2k-1)] 之类随机选择一个数字,记为 r0;重传推后时间就是 r 倍的争用期;上面参数 k 按照公式:k = Min(重传次数, 10) 进行计算;(动态退避)
  3. 重传 16 次之后,仍不能成功,丢弃,报告高层;

问:这里争用期为 51.2 us 是个确定的值;怎么来的?

答:电缆的时延特性为 5us/km;(因为电磁波的速度在这个时间;)在极限的条件下面:一个局域网中两个收发器之间(允许接 4 个中继器)最大距离是 2500m;往返为 5km;端到端的往返时延为 25us;但这个是理想状态的,还要考虑中继器的额外时延,最坏情况下估计为 45us;再加上强化冲突需要发送 48bit;接收方要接收到 48 bit 后才可以确认冲突;又加上了 4.8us;共计 49.8us;所以通常取 51.2us 作为争用期;(这个在 10Mbit/s 的以太网速率下的);

参考链接:https://www.cnblogs.com/guge-94/p/14518976.html

  当没发送一个新的帧,就要执行一次 CSMA/CD 算法;适配器对过去碰撞无记忆;因此几个适配器执行指数退避算法时,可能某个适配器发送新帧会插入得到发生权,而推迟几次的确可能继续等待;

  现在有另一种情况:某站发送一个很短帧,发送完毕之前未检测到碰撞;在继续向前传播的时候,和别地站碰撞,目的站收到差错帧,故丢弃;但发送站不知道,故不重传;为避免这种情况,以太网规定一个最短帧长 64 字节,即 512 比特;如果发送数据太小,必须填充字节;使帧长不小于 64 字节;对于 10Mbit/s 以太网,发送 512 比特时间需要 51.2us,也就是争用期;

  综上,以太网在发送数据的时候,如果**在争用期没有发生碰撞,那么后续发送数据一定不会冲突;**所以,凡是长度小于 64 字节的帧都是由于冲突而异常终止的无效帧;

3.2.4. 强化碰撞

  当发送数据的站一旦发现碰撞,除了停止发送,还要继续发送 32bit 或 48bit 的人为干扰信号(jamming signal);以便让所有用户都知道现在已经发生了碰撞;

image-20241117163520227

3.2.5. 总结

  1. 准备发送:适配器从网络层获得分组,加上以太网首部和尾部,组成以太网帧放入适配器缓存中,但是发送前需要检测信道;
  2. 检测信道:信道忙,则继续不停检测直到空闲;若转为空闲,在 96 比特时间内仍然保持空闲,则发送;(以太网规定帧间最小间隔为 9.6us);
  3. 在发送过程中仍然不断检测,边发送边检测:
    1. 发送成功,争用期内一直未检测到碰撞,就认为发送成功;
    2. 发送失败,争用期内检测到碰撞,立即停止;按规定发送人为干扰信号;接着执行指数退避算法;
  4. 在以太网发送一帧后,还要将已发送帧暂时保留下;如果在争用期内检测出碰撞,推迟一段时间重传;

3.3. 使用集线器的星形拓扑

image-20241117201106209

集线器特点:

  1. 表面看,是个星形网,在逻辑上仍是**总线网;**各站共享逻辑上的总线,使用的还是 CSMA/CD 协议;

  2. 一个集线器有多个端口,像一个多端口转发器;

  3. 工作在物理层,简单地转发比特不进行碰撞检测

  4. 采用专门芯片,进行自适应串音回波抵消;

3.4. 以太网的信道利用率

image-20241117201643228

  • τ 为以太网单程端到端的传播时延;T0 为帧的发送时间;

  • 在以太网中,我们定义参数 a ;其为:a = τ / T0

    • a -> 0 时,标识一发生碰撞就可以检测,并且立即停止;因此浪费时间少;反之亦然;
    • 故,我们要求 a 的值要尽可能小,那么,同时 T0 要尽可能大;即数据率一定的时候,以太网的长度受到限制,同时以太网的帧不能太短
  • 考虑一种极端理想化,即不会发生碰撞,可以有效利用传输资源,一旦空闲就有站发送数据;这样发送一帧占用时间为:T0+τ;帧本身发送的时间为:T0 ;于是我们可以计算出极限信道利用率:S_{max} = \frac{T_0}{T_0+τ} = \frac{1}{1+a};虽然实际上不可能有这么高的利用率,但是指出 a 远小于 1 才可以得到尽可能高的极限信道利用率;据统计,30% 利用率就已经处于重载的情况,很多网络容量被网上碰撞消耗了;

3.5. 以太网的 MAC 层

3.5.1. MAC 层的硬件地址

  • 硬件地址,又称为物理地址或 MAC 地址;

  • 标识系统 是一个核心的问题;IEEE 802 标准,为局域网规定了一种 48 位全球地址;这就是局域网上的每一台计算机中固化在适配器的 ROM 中的地址

  • 前 24 位为公司标识符,后 24 位为厂家自行指派,称为扩展标识符;第一字节的最低有效位为 I/G 位,打表是单个,还是组播;1 为组地址,用来多播;最低第二位规定为 G/L 位,即 G 为全球,L 为本地;

  • 适配器如果连接两个网络,则有两个 MAC 地址;同时适配器有过滤功能,故当收到一个 MAC 帧时,先用硬件检查目的地址,看是否发往本站的;如果是,则收,否则丢弃;

    • 单播:即 MAC 地址 与 目的 MAC 地址相同;
    • 广播:发送本局域网所有站点的帧;
    • 多播:一部分的站点的帧;
  • 混杂方式:即只要听到,无论是否是我要收的,我都收;这种实际上是窃听了;网络黑客往往通过这种非法获取网络用户口令;因此,以太网上用户不愿意网络上有工作在混杂方式的适配器;但是有时很有用,比如说维护人员,有一种很有用的网络工具叫:嗅探器;

3.5.2. MAC 帧的格式

  • 这里,其实有两个标准,一种是 DIX Ethernet V2 标准,即以太网 V2 标准;另一种是 IEEE 的 802.3 标准;这里只说用的最多的 以太网 V2的标准;

    image-20241117212350166

3.5.2.1. MAC 帧的组成
  1. 目的地址;
  2. 源地址;
  3. 类型字段:标志上一层使用什么协议;
  4. 数据字段:46 - 1500 字节;(46 = 64 字节减去18首尾字节;)
  5. 帧检查序列 FCS:CRC校验;检查范围:目的地址开始,数据结尾;即整个 MAC 地址;当传输媒体误码率为 10-8 时,MAC 子层为检查到的差错小于:10-14;检查范围不包括物理层插入的 8 字节的前同步码和帧开始定界符;
3.5.2.2. 无帧长度,如何界定结束;

  对于 MAC 帧,首部无帧长度,如何知道提取多少字节给上层协议?这就是利用 曼彻斯特编码的一个重要特点,曼彻斯特编码每一个码元正中间必然有一次电压转换;故发送方发送完毕后,不再发送,电压就不会变化,所以可以找到 以太网帧的结束位置;故往前四个字节就是 数据字段的结束位置;

3.5.2.3. 填充字段

  当数据字段长度小于 46 字节时,MAC 子层会在里面加入一个整数字节的填充字段,保证 MAC 帧长度不小于 64 字节;MAC 子层并未指明是否有填充,这个由上层决定;接收端剥去 MAC 首部和尾部后,搞只上层;上面 IP层首部会有一个总长度;例如总长度 42 字节,那么填充 4 字节,会在 IP 层丢弃;

3.5.2.4. 前同步码和帧定界

  当一个站开始接受,适配器时钟尚未与到达的比特流达成同步;因此前面若干位就无法接受,导致整个 MAC 成为无用的帧;为了接收端迅速实现位同步;故插入前同步码;帧开始定界符,为了告诉他 MAC 帧的信息要来勒;注:FCS 不校验这部分;

3.5.2.5. 无效 MAC 帧;

  1. 帧的长度不是整数个字节;
  2. 用收到的帧校验序列 FCS 查出有差错;
  3. 收到的 MAC 客户数据字段不再 46-1500 字节之间;考虑 MAC 帧首尾,故有效 MAC 帧长度在:64-1518 字节之间;

4. 扩展的以太网

4.1. 物理层扩展以太网

  以太网距离不能太远,否则主机信号衰减,以至于 CSMA/CD 协议无法正常工作;

  以前,使用粗缆或细缆时,常用转发器来扩展地理覆盖范围;(因此 IEEE 802.3 标准还规定,任意两个站最多可以经过三个电缆网段;)但是随着双绞线流行,很少使用转发器;

  目前来说,扩展主机和集线器之间的距离最简单的方法之一就是使用光纤;

image-20241117222001754

  使用集线器,可以组成更大的以太网;

image-20241117222243940

  • 多个集线器有很大的缺点:
    • 当 一系 最大吞吐为 10Mbit/s,那么三个系最大为 30Mbit/s;但是最后三个系连在一起后,三个碰撞域变为一个,那么此时最大的吞吐量为一个系的 10Mbit/s;即,某个系两个站在通信所传送的数据会通过所有的集线器来进行转发,让别的系在内部不能通信;
    • 如果不同系使用不同以太网技术(如数据率不同),那么不可能使用它们互联起来;一个系如果使用 10 Mbit/s 适配器,另外两个使用 10/100Mbit/s 的适配器,那么拥集线器链接起来;大家只能工作在 10Mbit/s 的速率;集线器基本就是一个多端口的转发器而已,并不能进行帧缓存;

4.2. 数据链路层扩展以太网

  网桥:可以针对收到的帧进行转发和过滤,而不是向所有端口进行转发;但是后来交换式集线器(交换机,第二层交换机)淘汰了网桥;即以太网交换机;

4.2.1. 以太网交换机的特点

  1. 实质:多端口的网桥;全双工;
  2. 可同时连通多个端口,使多对主机能同时通信(网桥只能一次分析一个或转发一个帧);相互通信的主机都是独占传输媒体,无碰撞地传输数据;即:每一个端口与连接端口的主机都构成了一个碰撞域,有 N 个端口,那么碰撞域就有 N 个;
  3. 端口有存储器,可在输出端口繁忙时,将到来的帧进行缓存;
  4. 内部的帧**交换表(地址表)**通过自学习算法逐渐构建;实际上是一个内容可寻址存储器CAM(Content Addressable Memory);
  5. 使用专用的交换结构芯片,用硬件转发收到的帧,转发速率比软件转发的网桥快很多;
  6. 有少部分采用直通的交换方式,这样就不用先缓存后处理了;提高转发速度;内部如果采用基于硬件的交叉矩阵,那么交换时延非常小;唯一缺点:不检查差错直接转发,可能将一些无效帧转发;现在有两种交换方式同时支持,看网络环境,或者需要线路速率匹配,协议转换,差错检测时,自由切换;

4.2.2. 以太网交换机的自学习能力

image-20241117224745717

  1. 假定 A 向 B 发送一帧,从端口 1 进入,那么查找交换表,发现无 B 地址;此时将原地址 A 和端口 1 写入交换表,然后向除该表外所有端口广播这个帧;
  2. C,D因为不匹配会丢弃;B 会收到;
  3. 依次这样;逐步写入交换表;
  4. 因为要考虑更换主机问题,所以还有一个写入时间列,如果超过预订时间,这个行就删除;
4.2.2.1. 兜圈子

  自学习虽好,但是为了增加网络可靠性,使用以太网交换机组网,往往会增加一些冗余的链路;这样可能会出现无限制兜圈子;

image-20241117225231820

  比如说 A 向 B 发送一个帧,就会陷入上图的标号走向;无限制兜圈子,白白消耗网络资源;为了解决这种问题,IEEE 802.1D 标准制定了一个生成树协议 STP (Spanning Tree Protocol);其要点是不改变网络的实际拓扑结构,在逻辑上切断某些链路;使得一台主机到所有其他主机的路径是无环路的树状结构,从而解决了兜圈子现象;

4.2.3. 从总线以太网到星形以太网

  电话网是星形结构,中心为电话交换机;为什么局域网确实总线型,因为不能以廉价方式制造出高可靠性的以太网交换机;所以采用无源的总线结构;但随着发展,设备增多,集成电路及专用芯片发展,使得以太网交换机即可以便宜也可以可靠;

  总线以太网使用 CSMA/CD 协议,以半双工方式工作;但是以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作;为啥还叫以太网呢?因为他的帧结构没变,仍然采用以太网的帧结构;

4.3. 虚拟局域网

4.3.1. 以太网计算机太多时弊端

  1. 一个以太网是一个广播域,在以太网上会出现大量的广播帧;交换机的交换表建立过程中使用过多广播帧;经常使用的 ARP 和 DHCP 协议,也要在以太网传送很多广播帧;这会消耗很多的资源;如果网络配置出了差错,就可能发生广播帧在网络中无限兜圈子,形成“广播风暴”,让网络瘫痪;
  2. 同时,一个单位的以太网多个下属部门使用,共享一个局域网,对信息安全不利;

4.3.2. 虚拟局域网 VLAN (Virtual LAN)

  • 只是局域网给用户提供的一种服务,不是新型局域网;
  • 802.3ac标准 定义:VLAN 标签:
    • image-20241119211524007
    • 前两个字节永远是 0x8100;称为 IEEE 802.1Q 标签类型;
    • 后两个字节的前四位无任何用处;
    • 后 12 位为 VLAN 标识符 VID;标识属于哪一个 vlan;插入 VLAN 标签后,FCS 计算必须要重新计算;
    • 当数据链路层检测到 MAC 源地址后两字节是 0x8100 时,就知道插入了 4 字节 VLAN 标签;
    • 以太网最大帧长由原来的 1518 字节变为 1522 字节;

4.3.3. VLAN 使用

image-20241119213416009

  划分两个 VLAN ;10,20 为编号,由管理员设置;(这里划分很多,可以按照交换机端口,也可以按照 MAC 地址,主机并不知道自己 VID,但是交换机知道);通过接入链路发送给交换机都是标准的以太网帧;

  在一个多个交换机连接起来的较大局域网中,可以灵活划分虚拟局域网,不受到地理位置的限制;可以跨越不同交换机;当然,交换机要支持 VLAN;例如 A -> E,但是交换机#1查到 E 未连接本交换机,则需要从汇聚链路转发到交换机#2;,插入 VLAN 标签;转发给2;(如果不插入,2交换机就不知道转发给哪个 VLAN,同时,转发给 VLAN 时,拿走已插入的 VLAN 标签,E 收到的就是 A 发送的标准以太网帧,而不是 802.1Q 帧);

  如果 A -> F ,这就属于不同网络之间的通信的;超过数据链路层;当然有的交换机有专用芯片构成转发模块用来解决 VLAN 之间转发帧;在交换机中相当于实现第三层转发功能,(且因为是硬件,转发帧效率更高,比路由器还快);这种转发功能称为第三层交换,交换机叫做 L3/L2 交换机;

5. 高速以太网

5.1. 100BASE-T 以太网

  • 称为快速以太网;

5.2. 吉比特以太网

  • 802.3z 标准
    • 允许在 1Gbit/s 下以全双工和半双工两种方式工作;
    • 使用 IEEE 802.3 协议规定的帧格式;
    • 在半双工下使用 CSMA/CD 协议,而在全双工下不使用;
    • 兼容 10BASE-T 和 100BASE-T 技术;

5.3. 10吉比特以太网和更快地以太网

  • 10GbE 的帧格式和 10Mbit/s,100Mbit/s 和 1Gbit/s 以太网的帧格式完全相同;并且保留了 802.3 标准规定的以太网最小帧长和最大帧长;

  • 10GbE 只工作在全双工方式,因此不存在争用问题,当然也不使用 CSMA/CD 协议;


Comment