#networking #cli #data-comunication

app cdr_toolkit

数据通信和网络相关简单计算的工具包。为UIB的“数据通信和网络”课程制作。

2个不稳定版本

0.2.0 2023年12月29日
0.1.0 2023年11月16日

#468 in 网络编程

MIT许可

35KB
515

CDR Toolkit

为UIB的“数据通信和网络”课程创建的工具包。

这是一个强大且快速的CLI,可以帮助完成以下基本计算

  1. 代码特征化
  2. 流量控制机制效率
  3. 错误控制机制效率
  4. 以太网网络效率
  5. WiFi网络效率
  6. 校验和

如何使用它?

通过可执行文件

使用CDR Toolkit就像下载可执行文件一样简单,打开一个终端,其中已下载文件,然后运行它,无论你身处哪个平台。

通过Cargo

Cargo是Rust的包管理器,你可以在这里了解更多关于它的信息:这里。要使用cdr_toolkit与Cargo,我们可以使用以下命令安装它

cargo install cdr_toolkit

安装完成后,我们可以直接通过以下命令执行它

cdr_toolkit

使用选项

程序执行后,我们将看到一个菜单,其中包含我们可以选择的所有选项

1. 熵计算

允许我们根据符号的概率通过以下公式计算源的熵

$$ H(X) = \sum_{i=1}^{S} p_i \cdot \log_2 \frac{1}{p_i} $$

其中,$S$代表字母表大小,$p_i$代表每个符号的概率。

2. 代码特征化

执行源特征化的基本计算。这些包括符号的平均长度、Kraft不等式和效率。这些通过以下公式计算

代码单词的平均长度

$$ L = \sum_{i=1}^{S} p_i \cdot l_i $$

Kraft不等式

$$ K = \sum_{i=1}^{S} 2^{-l_i} $$

代码源效率

$$ Eficiencia = \frac{H(X)}{L} $$

3. 流量控制机制效率

使用正确的公式计算所需机制的效率,具体取决于所拥有的数据。

$$ a = \frac{t_{prop}}{t_{frame}} = \frac{d \cdot R}{L \cdot v_{prop}} $$

停止等待

$$ \eta_{SW} = \frac{t_{frame}}{t_{frame} + 2 \cdot t_{ptop}} = \frac{1}{1 + 2a} $$

滑动窗口

$$ \eta_{SW} = \frac{N \cdot t_{frame}}{t_{frame} + 2 \cdot t_{ptop}} = \frac{N}{1 + 2a} \text{, si } N \leq 2a + 1 \ $$

$$\eta_{SW} = 1 \text{, si } N \geq 2a + 1 $$

4. 错误控制机制效率

使用正确的公式计算所需机制的效率,具体取决于所拥有的数据。

$$ a = \frac{t_{prop}}{t_{frame}} = \frac{d \cdot R}{L \cdot v_{prop}} $$

停止等待ARQ

$N = 1$

$$ \eta = \frac{1 - p}{1 + 2a} $$

返回N

$N \leq 2^{k} - 1$

$$ \eta = \frac{1 - p}{1 + 2a \cdot p}, N \geq 2a + 1 $$

$$ \eta = \frac{N(1 - p)}{(2a + 1)(1 - p + N \cdot p)}, N < 2a + 1 $$

选择性拒绝

$N \leq 2^{k - 1}$

$$ \eta = 1 - p, N \geq 2a + 1 $$

$$\eta = \frac{N(1 - p)}{2a + 1}, N < 2a + 1 $$

5. 以太网网络效率

根据以下公式计算以太网网络的效率。

$$ A = \left(1 - \frac{1}{N}\right)^{N - 1} $$

$$ \eta = \frac{1}{1 + \frac{\tau_b}{L \cdot A}} $$

其中,$L$ 是数据帧的大小(以比特为单位),$\tau_b$ 是标准化值

  • 在以太网 10BASE-T 和以太网 100BASE-T4 中为 512
  • 在以太网 1000BASE-T 中为 4096

6. WiFi 网络效率

计算 WiFi 网络效率并通过图表展示。此图表将保存在当前目录下,文件名为 plot.png。

7. 校验和计算(已禁用)

根据给定的数字计算校验和。计算使用 1 的补码加法方法进行。

警告

此工具仍在 "beta" 版本,这意味着可能存在一些错误或 bug。强烈建议遵循程序提供的说明。

如果您发现任何类型的 bug 或错误,请告知我以便尽快解决。

依赖项

~0–9.5MB
~42K SLoC