计算机网络:数据链路层 —— 共享式以太网

news/2024/10/15 10:19:50/

文章目录

共享式以太网

共享式以太网是当今局域网中广泛采用的一种通信协议标准,它定义了局域网(LAN)中电缆的类型和信号处理方法

共享式以太网中的所有节点都共享一段传输信道,并通过该信道传输信息。采用带冲突检测的载波侦听多路访问CSMA/CD)机制。当以太网中的一台主机要传输数据时,会先侦听信道上是否有其他设备正在传输,如果信道空闲,则开始传输数据;如果侦听到冲突,则等待一段时间后再次尝试传输。

![[共享式<a class=以太网.png]]" />

CSMA/CD 协议

CSMA/CD 协议(Carrier Sense Multiple Access/Collision Detection,载波监听多址接入/碰撞检测)是一种重要的媒体访问控制方法,特别是在以太网等局域网中广泛应用。

  • 以太网的发展初期,人们普遍认为“无源的电缆线比有源器件可靠”,因此将多个站点连接在一条总线上来构建共享总线以太网

  • 共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点

  • 当某个站点在总线上发送帧时,总线资源会被该站点独占。此时,如果总线上的其他站点也要在总线上发送帧,就会产生信号碰撞

  • 当两个或多个站点同时使用总线发送帧时,就会产生信号碰撞。

  • 为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议 CSMA/CD,它是载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)的英文缩写词。

CSMA/CD 协议 的基本原理
  • CS 载波监听:每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧(“先听后说”)

    • 若检测到总线空闲 96 比特时间(发送96比特所耗费的时间,也称为帧间隔)则发送这个帧。

    • 若检测到总线忙,则继续检测并等待总线转为空闲 96 比特时间,然后发送这个帧。

  • MA 多址接入:多个站点连接在一条总线上竞争使用总线。

  • CD 碰撞检测:每个正在发送帧的站点边发送边检测碰撞(“边说边听”):

    • 一旦发现总线上出现碰撞立即停止发送,退避一段随机时间后再次从载波监听开始进行发送(一旦冲突,立即停说,等待时机,重新再说”)

共享式以太网的争用期

![[ 1.png]]

![[争用期2.png]]

  • 站点从发送帧开始,最多经过时长 2 τ 2\tau 2τ (即 δ \delta δ → 0)就可检测出所发送的帧是否遭遇了碰撞。

  • 共享总线以太网端到端往返时间 2 τ 2\tau 2τ 被称为争用期(Contention Period)或碰撞窗口(ColisionWindow),它是一个非常重要的参数。

    • 站点从发送帧开始,经过争用期 2 τ 2\tau 2τ 这段时间还没有检测到碰撞,就可以肯定这次发送不会产生碰撞
  • 从争用期的概念可以看出,共享总线以太网上的每一个站点从发送帧开始,到之后的一小段时间内,都有可能遭遇碰撞,而这一小段时间的长短是不确定的,它取决于另一个发送帧的站点与本站点的距离,但不会超过总线的端到端往返传播时延,即一个争用期 2 τ 2\tau 2τ

    • 总线的长度越长(单程端到端传播时延越大),网络中站点数量越多,发生碰撞的概率就越大。

    • 共享以太网的总线长度不能太长,接入的站点数量也不能太多

10Mb/s共享总线以太网(传统以太网)规定:争用期 2 τ 2\tau 2τ 的值为 512 比特的发送时间,即 51.2 μ s 51.2\mu{s} 51.2μs

除考虑了信号传播时延外,还考虑到网络中可能存在转发器所带来的时延以及产生碰撞时继续发送 32比特 或 48比特 人为干扰信号所持续的时间等。

争用期 2 τ = 512 b 10 M b / s = 512 b 10 × 1 0 6 b / s = 51.2 μ s 争用期 2\tau = \frac{512b}{10 Mb/s} = \frac{512b}{10 \times{10^6 b/s}} = 51.2\mu s 争用期2τ=10Mb/s512b=10×106b/s512b=51.2μs

单程端到端传播时延 τ = 51.2 μ s 2 = 25.6 μ s 单程端到端传播时延 \tau = \frac{51.2\mu s}{2} = 25.6\mu s 单程端到端传播时延τ=251.2μs=25.6μs

假设信号的传播速率为 2 × 1 0 8 m / s ,则总线长度为 2 × 1 0 8 m / s × 25.6 μ s = 5120 m 假设信号的传播速率为 2\times10^8m/s,则总线长度为 2\times10^8m/s\times25.6\mu s = 5120m 假设信号的传播速率为2×108m/s,则总线长度为2×108m/s×25.6μs=5120m

共享总线以太网规定:总线长度不能超过2500m

共享式以太网的最小帧长

为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间,即一个争用期 2 τ 2\tau 2τ

对于 10Mb/s 的共享总线以太网,其争用期 2 τ 2\tau 2τ 的值规定为 51.2 μ s 51.2\mu s 51.2μs,因此其最小帧长为 512b,即64B

10 M b / s × 51.2 μ s = 512 b = 64 B 10 Mb/s \times 51.2\mu s = 512b = 64B 10Mb/s×51.2μs=512b=64B

![[最小帧长.png]]

当某个站点在发送帧时,如果帧的前64B没有遭遇碰撞,那么帧的后续部分也就不会遭遇碰撞。也就是说,如果遭遇碰撞,就一定是在帧的前64B之内

由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立即中止帧的发送,此时已发送的数据量一定小于64B。因此,接收站点收到长度小于64B的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。

共享式以太网的最大帧长

一般来说,帧的数据载荷的长度应远大于帧首部和尾部的总长度,这样可以提高帧的传输效率。然而,如果不限制数据载荷的长度上限,就可能使得帧的长度太长,这会带来一些问题。

![[最大帧长1.png]]

因此在以太网V2的MAC帧中,最大帧长度为 1518B

![[最大帧长2.png]]

共享式以太网的退避算法

共享式以太网退避算法,特别是在使用 CSMA/CD(载波监听多址接入/碰撞检测)协议的共享总线以太网中,是为了解决多个站点同时发送数据时产生的碰撞问题而设计的,采用 截断二进制指数退避算法

  • 当站点在发送数据时检测到碰撞,它会立即停止发送,并等待一段随机时间后再重新尝试发送。
截断二进制指数退避算法
  1. 确定退避时间

    • 使用公式:退避时间 = 基本退避时间(争用期 2 τ ) × 随机数 r 基本退避时间(争用期 2\tau) × 随机数 r 基本退避时间(争用期2τ×随机数r
      • r 是从 [ 0 , 1 , . . . , ( 2 k − 1 ) ] [0, 1, ..., (2^k - 1)] [0,1,...,(2k1)] 中随机选取的一个数。
      • 其中,k = m i n [ 重传次数(从 0 开始计数) , 10 ] min[重传次数(从0开始计数), 10] min[重传次数(从0开始计数),10]
      • 基本退避时间通常是固定的,根据网络配置和标准而定。
  2. 重传次数限制:当重传达16次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告。

  3. 退避时间的动态调整:随着重传次数的增加(k 值增大),退避时间的范围(竞争窗口)会按2的指数增大,从而减少再次碰撞的概率。

  • 如果连续多次发生碰撞,就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间,随重传次数而增大(即动态退避),因而减小产生碰撞的概率。

![[截断二进制指数退避算法.png]]

共享二进制以太网的信道利用率

理性情况下,不考虑信道可能发生(多次)碰撞进行(多次)退避的时间,考虑以下情况:

  • 总线一旦空闲就有某个站点立即发送帧

  • 各站点发送帧都不会产生碰撞

  • 发送一帧占用总线的时间为 T 0 + τ T_0+\tau T0+τ,而帧本身的发送时间是 T 0 T_0 T0

极限信道利用率 S m a x = T 0 T 0 + τ = 1 1 + τ T 0 = 1 1 + a (设 τ T 0 为 a ) 极限信道利用率 S_{max} = \frac{T_0}{T_0+\tau}=\frac{1}{1+\frac{\tau}{T_0}}=\frac{1}{1+a}(设 \frac{\tau}{T_0} 为 a) 极限信道利用率Smax=T0+τT0=1+T0τ1=1+a1(设T0τa

因此,参数a的值应尽量小,以提高信道利用率,共享总线以太网端到端的距离不应太长,帧的长度应尽量大

使用集线器的共享式以太网

在使用细同轴电缆的共享总线以太网之后,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)。站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆

![[使用集线器的共享式<a class=以太网.png]]" />

集线器的一些主要特点如下:

  • 使用集线器的以太网虽然物理拓扑是星型的,但在逻辑上仍然是一个总线网。总线上的各站点共享总线资源,使用的还是CSMA/CD协议

  • 集线器只工作在物理层,它的每个接口仅简单地转发比特,并不进行碰撞检测。碰撞检测的任务由各站点中的网卡负责。

  • 集线器一般都有少量的容错能力和网络管理功能,例如,若网络中某个站点的网卡出现了故障而不停地发送帧,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网能正常工作

  • 使用细同轴电缆的共享总线型以太网和使用集线器和双绞线的星型拓扑的共享式以太网,物理拓扑不相同,但工作逻辑相同网络中的各站点都使用 CSMA/CD 协议来共享(争用)网络资源。

10BASE-T
  • IEEE于1990年制定了 10BASE-T 星型以太网的标准802.3i,这种以太网是局域网发展史上的一座非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。

  • 10BASE-T以太网通信距离较短每个站点到集线器的距离不能超过100m

  • IEEE 802.3以太网还可使用光纤作为传输媒体,相应的标准为10BASE-F,“F”表示光纤。光纤主要用作集线器之间的远程连接。

  • 10BASE-T10 代表传输速率为 10Mb/s, BASE 代表采用基带信号进行传输, T 代表采用双绞线作为传输媒体。


http://www.ppmy.cn/news/1539385.html

相关文章

数据结构哈夫曼编码-(C语言代码)

#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXVALUE 32767 #define NODENUM 8//叶子结点数 typedef struct {char data;int weight;int parent, lch, rch; }htNode,*huffmanTree; typedef char** huffmanCode; void initHuffmanTree…

Mac 编译 Unreal 源码版本

Mac M3 Pro、XCode 16.0、Unreal 5.4 分享下我本地操作的全流程和遇到的问题 安装 XCodeGithubDesktop 克隆自己 Fork 的仓库运行 Setup.command运行 GenerateProjectFiles.command 出现警告&#xff1a;Platform Mac is not a valid platform to build. Check that the SDK i…

Mac 查看编译器默认使用C++标准

Mac 查看编译器默认使用的C标准 C标准 对应关系 #include<iostream> using namespace std;int main(){//__cplusplus这个宏中记录了当前使用的版本cout << __cplusplus << endl;//C pre-C98: __cplusplus is 1.// C98: __cplusplus is 199711L.// C11: __c…

第四章 RabbitMQ快速入门

目录 1. 新建队列 2. 点击进入amq.fanout交换机 3. 绑定队列和交换机 4. 发送消息 5. 查看消息 6. 添加虚拟主机 7. 添加用户 ​编辑 8. 为虚拟主机添加访问用户 本章节我们通过RabbitMQ的客户端界面&#xff0c;通过简单的创建队列并绑定到指定交换机&#xff0c;来…

Spring 中的设计模式详解

“JDK 中用到了哪些设计模式? Spring 中用到了哪些设计模式? ”这两个问题&#xff0c;在面试中比较常见。 我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律&#xff0c;而且大部分都年代久远。所以&#xff0c;花了几天时间自己总结了一下。 由于我的个人…

RNN心脏病预测

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 前期准备 1.数据导入 import pandas as pd from keras.optimizers import Adam from matplotlib import pyplot as plt from sklearn.model_selection import train_test_split from sklearn.p…

Maven 父子模块的 pom.xml 文件编写

今天在写课内的实验作业的时候&#xff0c;三个内容要使用的依赖是一样的&#xff0c;于是想使用父子模块来玩玩。 父模块 pom.xml 书写 打包方式 <packaging>pom</packaging> 聚合子模块 <!-- 聚合子模块 --> <modules><module>../one</…

互联网协议(IP)中最常用的端口

80 端口和 443 端口是互联网协议&#xff08;IP&#xff09;中最常用的两个端口&#xff0c;分别用于 HTTP 和 HTTPS 通信。以下是它们的作用、区别以及相关背景信息&#xff1a; 80 端口和 443 端口的作用 80 端口&#xff1a; 用于 HTTP&#xff08;HyperText Transfer Prot…