抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


以太网帧结构

协议

一套约定俗成的特殊形式,是设备与设备之间的语言,固定格式化信息,所有的设备根据协议的字段来理解报文的作用.

以太网协议分类:

  • IEEE 802.3:一般应用于以太网的控制协议信息。例如 STP 协议使用的是 802.3 的数据帧.
  • Eternet_II:是目前以太网数据使用最多的帧格式.

帧格式

以太网 MAC 地址

F0-03-8C-XX-XX-XX

MAC 地址:一台物理设备唯一且不可更改的标识信息,以十六进制表示的.

OUI (厂商标识符): 前 24bit, 由 IEEE 管理和分配. RFC 7042

厂商自定义标识:后 24bit, 由厂商自己分配.

单播 MAC 地址:当第 8bit 为 0 时,该地址为单播 MAC 地址.

当十六进制第二位为偶数时第八 bit 一定为 0.

组播 MAC 地址:当第 8bit 为 1 时,该地址为组播 MAC 地址.

组播 MAC 地址不能用作 源 MAC 地址,不能给设备使用.

广播 MAC 地址:当 48bit 全为 1 时,该地址为广播 MAC 地址.

只有单播 MAC 地址可以作为设备的 MAC 地址使用,作为源地址使用.

以太网帧格式 (Eternet_II)

以太网帧格式(Eternet_II)

D.MAC (destination.MAC): 目的 MAC 地址 6 字节.

S.MAC (source.MAC): 源 MAC 地址 6 字节.

TYPE: 类型,标识上层协议类型,2 字节.

  • 0x0800: IP 协议
  • 0x0806: ARP 协议

DATA: 数据载荷 可变长度 46 字节 - 1500 字节.

FCS(Frame Check Sequence): 帧校验序列,判定数据帧在传递过程中的完整性 4 字节.

通信方式

单播:数据从某一台设备单独发送给另一台设备其他设备并接收处理.

组播:数据发向某一个特定的分组,只有在组内的设备才能够监听处理,没有监听该组的设备无法收到数据.

广播:数据发向广播地址,该数据会被网络中所有的设备接收处理

数据帧的发送和接收

发送端

数据由发送端进行封装,在数据封装成帧时,会在数据帧的头部添加目的 MAC 和源 MAC, 将上层的封装协议在 TYPE 字段标明,随后对数据帧进行计算将得出的值放置在 FCS 字段中,随后发送出去.

接收端

接收一个数据帧时,首先核对帧校验,以确保数据完整性,在 FCS 通过后,查看目的 MAC 地址,当目的 MAC 地址与接收方 MAC 地址一致时,或广播地址或自身所监听的组播 MAC 地址时,才会处理该数据帧,否则丢弃,确认是自身所要处理的数据帧后,会根据 TYPE 字段来确定后续的处理协议.

透明传输

指不管所传数据时什么样的比特组合,都应当能够在链路上传送。因此,链路层就 “看不见” 有什么妨碍数据传输的东西.

当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的.

透明传输是指在数据通信中,传输过程对用户或应用程序是不可见的,即无需用户或应用程序的干预或感知,数据可以自动、无缝地从发送端传输到接收端。在透明传输中,用户或应用程序无需关心底层的通信细节和协议,只需使用高层的接口或 API 来发送和接收数据。

透明传输的目标是提供简化和方便的数据传输体验,使用户能够专注于数据的使用和处理,而无需了解底层的传输机制。透明传输可以在不同的通信网络和协议中实现,包括局域网、广域网、互联网等。

字符计数法

帧首部使用一个计数字段 (第一个字节,8 位) 来标明帧内字符数

由于 count 字段的脆弱性,容易出错,不常用.

字符填充法

SOH 00000001 帧开始符 (Start of Header)

EOT 00000100 帧结束符 (End of Transmission)

非 ASCII 采用字符填充法实现透明传输

ESC EOT 填充转义字符 (ESC)

实现复杂和不兼容性,不常用.

eg. PPP 字节填充 RFC 1662

零比特填充法

01111110 ……… 01111110

发送端,扫描整个信息字段,只要有连续 5 个连续 1 就立即填入 1 个 0.

接收端,收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描,发现连续 5 个 1 就把后面的 0 删掉.

保证了透明传输:在传送的比特流中可以传送任意比特组合,而不引起对帧边界的判断错误.

违规编码法

曼切斯特编码 “高 - 低”,” 低 - 高”

用 “高 - 高”,” 低 - 低” 来定界帧的起始和终止

普遍使用的帧同步法是 比特填充法和违规编码法.

差错控制

差错从何而来

  • 线路本身电气特性产生的随机噪声,信道固有,随机存在 (提高信噪比减少或避免干扰)
  • 外界特定的短暂原因造成的冲击噪声是产生差错的主要原因 (利用编码技术来解决)

位错 (bit 位出错 0 变 1 1 变 0)
帧错 (丢失,重复,失序)

检错编码 - 奇偶校验码

奇校验码: “1” 的个数为奇数
偶校验码: “1” 的个数为偶数

只能检查出奇数个比特错误,检错能力为 50%.

检错编码 - CRC 循环冗余码

要传的数据 生成多项式 FCS 帧检验序列 / 冗余码

5 / 2 ….. 1

最终发送数据 5+1=6

接收的数据 生成多项式

6 / 2 ….. 0

余数为 0, 判定无错,接受

  1. 准备待传有效数据 分组

d d d d d d

  1. 每个组都加上冗余码构成帧再发送

d 位 + r 位 FCS

双方商定的除数 / 生成多项式 r+1 位

1101

FCS 帧检验序列计算方式:

模二 A.K.A 异或 (同 0 异 1)

d 位 + r 位 0 / 生成多项式 = 商 ….. r 位 FCS

例子

要发送的数据 1101 0110 11 CRC 校验 生成多项式 10011

  1. 加 0 生成多项式的阶为 r, 则加 r 个 0 (多项式 r 位阶为 r-1)

10011 生成多项式 阶为 4

  1. 模 2 除法 数据加 0 后除以多项式,余数为冗余码 / FCS/CRC 校验码的比特序列

1101 0110 11 0000 / 10011 余数 1110

模2除法

最终发送数据 1101 0110 11 1110

接收端检错过程

把收到的每一个帧都除以同样的除数,然后检查得到余数 R.

  • 余数为 0, 判定帧没有差错,接受.
  • 余数不为 0, 判定帧有差错,丢弃.

FCS 的生成以及接收端的 CRC 检验都是由硬件实现,处理迅速,因此不会延误数据的传输.

链路层使用 CRC 检验能够实现无差错比特传输,不能实现可靠传输

纠错码 - 海明码

  1. 确定校验码位数 r
  2. 确定校验码和数据的位置
  3. 求出校验码值
  4. 检错并纠错

海明距离

两个合法编码 (码字) 的对应比特取值不同的比特数称为这两个码字的海明距离 (码距), 一个有效编码集中,任意两个合法编码 (码字) 的海明距离的最小值称为该编码集的海明距离 (码距).

1. 确定校验码位数 r

数据 / 信息有 m 位,冗余码 / 校验码有 r 位

校验码一共有 种取值

海明不等式

要发送的数据: D=1100

数据的位数 m=4
满足不等式的最小 r 为 3
D=1100 的海明码应该有 4+3=7 位
其中原数据 4 位,校验码 3 位

2. 确定校验码和数据的位置

校验码放在序号为 的位置

序号   7   6   5   4   3   2   1
值 1 1 0 x_4 0 x_2 x_1

3. 求出校验码值

                  1**     *1* **1
二进制 111 110 101 100 011 010 001
序号 7 6 5 4 3 2 1
值 1 1 0 x_4 0 x_2 x_1

4: 负责 4567 的校验

2: 负责 2367 的校验

1: 负责 1357 的校验

采用偶校验 x_4=0 x_2=0 x_1=1

                  1**     *1* **1
二进制 111 110 101 100 011 010 001
序号 7 6 5 4 3 2 1
值 1 1 0 0 0 0 1

4. 检错并纠错

若接收数据 1110001 偶校验

4: 负责 4567 的校验 0111 x

2: 负责 2367 的校验 0011 v

1: 负责 1357 的校验 1011 x

错误位是 5

偶校验 (异或为 0)

x_4 异或 0 异或 1 异或 1 异或 1=0 x_4=1

x_2: 0011 x_2=0

x_1: 1011 x_1=1

x_4 x_2 x_1

1 0 1

101 转十进制为 5 , 错误位是 5

流量控制方法

停止等待协议

每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧

发送窗口大小 = 1 接收窗口大小 = 1

滑动窗口协议

发送窗口 接收窗口

后退 N 帧协议 (GBN)

发送窗口大小 > 1 接收窗口大小 = 1

选择重传协议 (SR)

发送窗口大小 > 1 接收窗口大小 > 1

可靠传输:发送端发啥接收端收啥

流量控制:控制发送速率,使接收方有足够缓冲空间接收每一个帧

滑动窗口解决 流量控制和可靠传输.

推荐阅读
交换网络基础 交换网络基础 IP编址 IP编址 ARP协议 ARP协议 数据转发过程 数据转发过程 STP STP 传输层协议 传输层协议

留言区

Are You A Robot?