学习笔记:高级信息网络Ch4.Communication Theory

(来源:notes of course Advanced IT Network. Ch4.Communication Theory)


060_001.jpg

主要介绍Data link layer:

Parallel Transmission:

因为 1 byte = 8 bits ,那么传输数据,用8的倍数的平行通道传播效率就会很高

当然,也会留一个通道clock,告诉传输的双方此时的state,也就是此时的数据到底有没有用。

060_002.jpg

根据麦克斯韦方程组,远距离传播这样的数据会受到很多其他参数的影响,也就会导致很高的delay

有没有更合适的远程传输数据的方法呢?

Serial Transmission:

可以把传输的8n个bit的数据再变成bit flow,用一条通道传播,到站了,在分成8n个bit的数据,实现远距离传播。当然此时也需要clock参数。

060_003.jpg

那么如何传播bit flow呢?

可以使用示波器调制正弦波,clock处的斜率可以表示0或1,如下图所示。

060_004.jpg

这就是调制模拟信号啦,如果把上面的图像放在Oscilloscope里显示,会出现一副酷似眼睛的图像(Eye Diagrams),如下图所示:

060_005.jpg

那么很明显,如果传输来的信号很强,眼睛会打开,反之,眼睛则会关闭,这就能很直观的看到信号的强弱。

在实践中,不只会再用一种amplitude(振幅),也不只会采用一种phase(相位),于是,把它展示在设备中,就出现了新的图像Multi-bit Eye Diagrams.

060_006.jpg

每一个信号段位成为一个小球环绕着中央,从中央到圆心的距离代表振幅,相位则在图中体现为与中心存在的夹角。

非常有趣的是,这个新图像有了一个新的特性,能直观的看到信噪比对图像的影响,如果信噪比影响不大,小球是粒粒分明的;如果小球相连,则说明他们直接会出现干扰,也就是很大概率会出现Transmission Error。

当然传输可以用optical signal,光学信号。

但是使用光学信号,就会有一个很大的问题,就是在传输过程中,发生折射反射色散,传播的颜色可能会发生很大的变化,也就影响最终的信号,这可怎么办呢?

060_007.jpg

先不管上面那个问题,我们先来看看有关传递模拟信号的方法。

  • bandwidth(带宽):能传递信号的频段的宽度,它决定一秒钟信号的state能变几次。
  • Signal to Noise ratio:信号能量和噪音能量的比值,它决定接收端能分辨出多少种state

带宽决定变多少次比较好理解,为什么S/N能决定接收端能分辨多少state呢?

简单来说,S/N越大,说明噪音占比越大,规定4v是分界线,大于4v的是0,那么由于噪音的影响(举例为100),那么4往上往下100都没法用,因为很容易被噪音影响,这100个单位就没法定义state,要是噪音特别小(举例为0.0001),那么基本上每隔0.001都可以定义一个state。

**modulation rate:**在接收端每秒钟能被感受到的state变化数。

modulation rate 的单位是Baud,和b/s表达的东西一样,但是b/s只表达二进度数字的变化,不表达state的变化!!

Shannon’s Theorem:

$$DataRate \preceq Bandwidth \times Log_{2}{(1+S/N)}$$

香浓定理就把上方说的两种效应整合在了一起,也就是如果得知了带宽和信噪比,就可以求得最大的DataRate。

还记得刚才的Multi-Eye Diagrams吗?

当小球重叠了,我们可以根据香农定理**,给DataRate或Bandwidth作出调整**,使得小球重新分离。通常Bandwidth是无法调整的,我们对DataRate作出调整,由于信噪比过小,所以可以把DataRate也调小,看!分离的图像就重见天日了

060_008.jpg

好,这些问题解决了,我们来看看之前提到的 Optical Signal 的问题:

但是使用光学信号,就会有一个很大的问题,就是在传输过程中,发生折射反射色散,传播的颜色可能会发生很大的变化,也就影响最终的信号,这可怎么办呢?

信息学中存在一套完整的Error Detection和Error Correction的方法,可以直接运用过来。

先来看一些符号规定:

原始信息包括了 k bits 的信号(Informative Message);

常常在后面加 r bits 的赘余信号用于探测错误(Redundant Message);

也就是说,一共有 k+r 的信号是要传输的;

这些信号到了接受端,因为每个信号都有可能从0变1或者从1变0,所以到达端会有 $2^{k+r}$ 的信号可能,但是呢,只有 $2^k$ 是正确信号的可能。

Hamming Distance:

  • 定义非常抽象,但是道理非常简单,我在这直接给几个例子

两段信号:

0000111

1110111

之间的Hamming Distance是6:

从第一位开始对比,如果不同,距离就+1

好,回到正题,怎么检测错误呢?

先给出一个例子,转学费的银行代码:

BE83-140-0571659-08

最后两位08为Redundant Message:

它表示,前面的数字Mod 97 = 08

这样的纠错方法叫做Modulo 97 Algorithm;

同样的,比如说有一个数据1,我加一个冗余码也是1;

接收到的朋友只有发现数据和冗余是相同的时候,这条信息才是对的;

也就是11和00才是正确的信息;

有没有可能11两个都变成00呢;

有!但是机会比较小,Hamming Distance越大,发生的概率也就越小。

这就是Error Detecting Code;

如果我们把冗余码再多加一个呢?恭喜你,你获得了Error Correcting Code:

比如,我们还是传送1这个信号,传送端会加两个冗余码11,通道中传播的就是111。各位置的Hamming Distance如图所示:

060_009.jpg

当接收到的数据是101、110、011时,很明显可以判断出,因为三个数字不同,所以这个数据发生了传输错误,但是,因为发生突变的概率是相乘的机制,也就是一个数字的突变是可能性最大的,在此案例中,一个1突变成0的概率最大,我们就可以改变他成为111,也就还原了数据。

同理,我们是不是可以再叠加冗余码,冗余码越多,突变成完全相反信息的汉明距离就越长,也就越不容易对信息的本质发生改变,也越容易修改。

那么,如果加了冗余码之后,如果发现了传输错误,我们就可以通过汉明距离的计算,找到离他最近的那个数据,那个数据就能改正成正确的数据,完成修正。

当然,发现错误出现之后,最简单的改正方法就是,让发送端重新发一份(Retransmission):

在传输中,信号是按照一个一个block传输的,一旦发现了错误,正在接收的block就被丢弃,接收端就会让发送端重新在这个block开始传输;

那如果在传输通道中,整个block丢了咋办呢?

接收端每接收到一个block,传递一个“我收到了”的信息(Acknowledgement)就是解决方法:

060_010.jpg

在双方之间约定一个时间,如果没收到Ack,发送端就重新发一份block。(我出去了,要是过xx时间我没给你打电话,赶快报警)

如果传输距离特别长,收到一个ack再发送下一个block会导致很长的delay,这可不行!于是新的protocol应运而生(Sliding Window):

像窗户一样,发送端发送的过程中,把几个block视为一个窗户,一个窗户里的内容可以在没接收到ack前就一同发送:

060_011.jpg

当收到第一个block的ack后,窗户向右滑动一格:

060_012.jpg

如果发生了丢失,即过了规定的时间,没有收到ack,窗户不会向右滑动:

060_013.jpg

关于丢失block的处理有很多算法,这里介绍 go back n 算法:

丢失了哪个ack,窗户就回到那个丢失的block的位置,重新发送:

060_014.jpg

在这个例子中,我们发现,4、5我们已经接收到了,没比较再进行重新接收,一个更高效的方法就是只发送那个丢失ack的block:

060_015.jpg

但是接收端的block顺序就不对了,需要留给接收端一定的buffer time来进行自我修正。

这个技术被运用到了TCP中。

那如果错误是可以修正的,那我们是不是可以打破香农定理?

答案是否定的,香农定理规定的最大的通道指的是传输正确的数据的通道。

无论添加多少冗余数据,都不会改变这个定律,也就是说,添加的冗余码越多,越能接近这个通道的极限。

信号的调制(Modulation):

调制(modulation),就是将数字信号变成模拟信号的过程。


学习笔记:高级信息网络Ch4.Communication Theory
https://yiyuwang.be/2020/12/28/2020-12-28-340233036/
作者
StevenWong
发布于
2020年12月28日
许可协议