MHuiG

「看庭前花开花落,望天上云卷云舒」

以太网帧结构

# 以太网帧结构

## 协议

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

以太网协议分类：

- `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)

`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

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

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

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

1101 0110 11 0000 / 10011 余数 1110

最终发送数据 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

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

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

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

网络参考模型

网络参考模型 网络参考模型 网络标准为什么制定网络标准: 20 世纪 60 年代，计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信领域占据主导地位，纷纷推出了各自的网络架构...

交换网络基础

交换网络基础 交换网络基础 交换网络交换网络：由交换机所构成的网络. 交换机：工作在二层的全双工设备，能够处理数据帧并且能够根据数据帧的头部进行数据的转发，通过设备之间的唯一信道转...

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

留言区

Notes
数据通信网络
<pjax>
</pjax>
<pjax></pjax>
<pjax> Are You A Robot?</pjax>