“以太”来源于19世纪物理学家解释光在空间中传播的介质:“以太”
以太网采用的介质控制方法是:CSMA/CD(带有冲突检测的载波侦听多路访问)
Ethernet 数据发送流程
CMSA/CD的发送流程可以简单概况为4步:先听后发、边听边发、冲突停止、延迟重发。
(1)载波侦听过程
-
每个主机在发送数据帧之前,首先要侦听总线的【忙/闲】状态。
-
Ethernet网卡的收发器一直在接收总线上的信号,如果总线上有其他主机发送的信号,那么曼彻斯特解码器的解码时钟一直有输出;如果总线上没有信号发送,那么曼彻斯特(Manchester)解码器的时钟输出为0。
Manchester解码器是网卡上的一个组件,解码时钟会根据线路上的信号以曼彻斯特编码解码。
曼彻斯特编码:
因此,Manchester解码器的时钟信号可以反映出总线的【忙/闲】状态。
(2)冲突检测方法
-
载波侦听并不能完全消除冲突。
电磁波在同轴电缆中传播速度约为 2×108 m/s,如果局域网中两个【相隔最远】主机A和B相距 1000m,那主机A向主机B发送一帧数据要经过
t
=
1000
2
×
1
0
8
=
5
×
1
0
−
6
s
=
5
μ
s
t = \frac{1000}{2×10^8} = 5×10^{-6} s = 5 μs
t=2×1081000=5×10−6s=5μs
主机A发送数据后,要经过t后,主机B才接收到这个数据帧。在这5μs的时间内,主机B不知道主机A已经发送数据,它就有可能也向主机A发送数据。出现这种情况,主机A和主机B的这次发送就发生【冲突】。
-
比较极端的冲突是:主机A向主机B发送数据,当数据信号快要到达主机B时,主机B也发送了数据。等到冲突信号传送回主机A时,已经经过了两倍的传播延迟2τ(τ=D/V,D为总线传输介质的最大长度,V是电磁波在介质中的传播速度)。冲突冲突的数据帧可以传遍整个缆段,缆段上的主机都可以检测到冲突。缆段被称为【冲突域】,如果超过2τ的时间没有检测出冲突,则该主机已取得【总线访问权】,因此将 2τ定义为【冲突窗口】。
-
冲突窗口是连接在一个缆段上所有主机能检测到冲突发生的最短时间。由于Ethernet物理层协议规定了总线最大长度,电磁波在介质中的传播速度是确定的,因此冲突窗口的大小也是确定的。
-
最小帧长度与总线长度、发送速率之间的关系
为了保证主机在发送一帧的过程可以检测到冲突,就要求发送一个最短帧的时间要超过冲突窗口的时间。
因为帧发送并不是一瞬间全部发送完成,发送延迟 t = 帧长度/发送速率,发送速率一般不会改变,因此要在发送的过程中能检测到冲突需要规定一个最小帧长度
最短帧长度为Lmin,主机发送速率为S,发送短帧所需的时间为Lmin/S,冲突窗口的值为2D/V
L
m
i
n
S
≥
2
D
V
\frac{L_{min}}{S} ≥ \frac{2D}{V}
SLmin≥V2D
所以可以根据总线长度、发送速率和电磁波传播速度估计最小帧长度。
-
冲突是指总线上同时出现两个或两个以上的发送信号,它们叠加后的信号波形不等于任何一个主机输出的信号波形。
-
冲突检测有两种方法:比较法和编码违例判决法
比较法:主机在发送帧的同时,将其发送信号波形与总线上接收到的信号波形进行比较(信号在总线上是双向传播的,比如主机A、B、C,B发送信号A与C都能接收到)。如果两个信号波形不一致,说明冲突发生。
编码违例判决法:检查从总线上接收的信号波形是否符合曼彻斯特编码规律,不符合则说明发生冲突。
-
64B是Ethernet的最小帧长度:如果一个主机发送一个最小帧,或者一个帧的前64个字节没有检测到冲突,说明该主机已经取得总线发送权,冲突窗口期又称为争用期
发现冲突、停止发送
- 如果主机在发送过程中检测到冲突,主机要进入停止发送,随机延迟后重发的流程。
- 随机延迟重发的第一步是:发送冲突加强干扰序列,保证有足够的冲突持续时间,使局域网中的所有主机都能检测出冲突存在,并立即丢弃冲突帧,减少由于冲突浪费的时间,提高信道利用率。
- 冲突加强干扰序列信号长度为32bit
随机延迟重发
Ethernet帧结构
Ethernet V2.0标准 和 IEEE 802.3标准的Ethernet帧结构的区别
Ethernet V2.0是在DEC、Intel(英特尔)、Xeror公司合作研究的,所以也称Ethernet V2.0帧结构为DIX帧结构(公司首字母)
IEEE802.3标准对Ethernet帧结构也做出了规定,通常称之为 802.3帧
前导码
-
DIX帧的前8B是前导码,每个字节都是10101010。接收电路通过提取曼彻斯特编码的自含时钟,实现收发双方的比特同步。
说人话就是:编码时故意搞个特别的码在前面,通过长度告知解码器后面有货送来,注意接收。
通过前导码就可判断信号是有用信号还是干扰信号,否则忽略不解码。
-
802.3帧的前导码,每个字节都是10101010。但是有一个10101011的帧前定界符。前56位(7B×8)前导码是为了保证在接收【目的地址】时,已经进入【稳定接收状态(识别出这个是有用信号)】在62位1010…1010比特序列后出现两个11,两个11后就是Ethernet帧的目的地址字段。
-
前导码只是为了实现收发双方的比特同步与帧同步,在接收后不需要保留,也不计入帧头长度。
类型字段和长度字段
Ethernet帧结构分析
前导码、类型、数据字段分析过了,不再赘述。
目的地址和源地址字段
-
目的地址和源地址表示帧的接收节点和发送节点的硬件地址。
-
硬件地址也叫物理地址、MAC地址、Ethernet地址。
-
源地址必须是6B的MAC地址。
-
目的地址可以是单播地址(发送给单一主机)、多播地址(发送给一部分主机)、广播地址(发送给所有主机)。
帧校验字段
Ethernet接收流程分析
-
主机主要不发送数据帧就处于接收状态。
-
帧目的地址检查:
- 目的地址是单一主机的物理地址,并且是本主机地址—>接收。
- 目的地址是组地址,并且本主机属于该组—>接收。
- 目的地址是广播地址—>接收。
- 如果以上3种目的地址都与本主机地址不匹配,丢弃该接收帧。
-
帧接收:
- CRC校验正确。
- 帧长度正确。
- 如果1、2都正确,将帧中的数据发送到网络层,否则报告”接收失败“进入帧结束状态。
-
帧校验:
- CRC校验正确,但是帧长度不对,则报告“帧长度错”。
- 如果校验出错,判断接收帧是不是8bit的整数倍(字段长度的单位是字节,1B=8bit,接收帧长度正常的话肯定是8bit的整数倍)
- 如果不是8bit的整数倍,则报告“帧比特出错”。
- 如果没有发现比特丢失或者比特位对位错,则报告“帧校验错”。
- 进入结束状态。
-
帧间最小间隔
- 为了保证网卡能正确、连续的处理接收帧,要规定一个帧间最小间隔(网卡处理接收帧要时间、虽然很短)。
- 规定Ethernet帧的最小间隔为9.6μs
Ethernet网卡
-
网卡由三部分组成:网卡与传输介质的接口(RJ45)、Ethernet数据链路控制器、网卡与主机的接口(主板的I/O扩展槽)。
-
Ethernet数据链路控制器的功能:实现发送数据编码、接收数据解码、CRC产生与校验、曼彻斯特编码与解码、CSMA/CD介质访问控制。
-
网卡的物理地址写入网卡的只读存储器中,不会与世界上任何一台其他的计算机重复。