首先说明,基本的概述我还没写完,那部分虽然简单但是感觉要照顾到很多概念.....
以及本系列博客使用点模型并非iso模型,也并非tcp/IP模型,而是我们俗称的教学模型
也就是:物理层,数据链路层,网络层,传输层,应用层这五个,整个模型大多数是在教学中使用的,现实中基本不会这样子划分.但是网络分层本身就是一共封装的过程,所以无伤大雅,该学还是能学.
(1)物理层的含义,以及主要功能:
物理层,顾名思义就是整个计算机网络层次结构中最下面的一层,有的时候他并不算在实际的网络和内容中,因为他真的主要是由显示物理媒介和一些转换器构成的
物理层的主要功能是传输比特位,bit也就是物理层的PDU(协议数据单元).并且在传输的时候,把比特转化为媒介中能够传递的数据信号.简单来说,物理层专注于使用媒介,在两个相邻节点之间传递数据比特.
物理媒介严格来说不能算是物理层,但是不同的媒介确实对应了不同的方法(包括编码什么的).但是物理层封装了具体的传输原理和媒介之间的差异,向上方的数据链路层提供了更加简约而稳定的服务,某种意义上讲也体现了一定的模块化和封装思想.
(2)物理层的主要传输方式:
物理层的传输方式有很多,并且可以区分成不同的维度,这里大多数时候只要了解即可
1.串行和并行:
串行和并行的概念已经很简单了,串行传输是在同一个链路上进行的,成本较低但是效率不高
并行和操作系统中常用的并发也不一样,是真正意义上的多个多条传输链路,成本肥肠高
穿行和并行没法简单地使用一共tradeoff来进行概括,不同的场景有不同的用法,比如这张示意图:
两个计算机之间进行传输数据,在远距离的时候使用串行运输,在近距离(计算机内部)为了更好的效率和性能,我们使用并行传递数据.网卡实现了这种传并行转化
2.同步和异步
同步传输传递的是比特流,在每个字节之间没有区分,这就导致了一些传递的信息可能会造成混淆,无法划分出字节.这就要求双方对比特传输信号的事件和频率有共同的约定,但是总会受到噪声等等影响,所以我们有外同步和内同步两种手段:
* 外同步:指的是我们再单独拉一根时钟信号线,用来传输起始信号
* 内同步:我们在传递的数据之间,将时钟编码信号通过归零(归零编码)跳变(曼彻斯特,差分曼彻斯特等等手段)嵌入传输的数据流中,整个将在后面编码的时候做详细解释.
异步传递的是字节,由于异步的传递双方无法约定时间,所以要在字节的前后分别加上一个开始位和截止位.但是字节内部的比特仍然是同步的,所以判断终止和开始的单位肯定是字节了.
3.按照通信方向,
我们可以简单地区分为:
单向,双向交替通信,双向同时通信
单向顾名思义,就是只能往一个方向进行传递,交替双向的意思就是同一时刻只能一个方向.而双向同时就很简单,完完全全是双向的.
(3)调制和编码
首先先明确一个定义:基带信号,由一系列0和1组成,一切信源发送过来的信号(麦克风,视频,摄像头,还有比如图片文件等等,都会转化为这种信号)
1.调制
但是基带信号由于一些原因,比如频率较低等等,很难直接传递在信道上,所以我们必须要进行一些处理,将其转化为数字信号或者模拟信号,整个过程就被称之为调制.
(这里先说神魔是数字信号和模拟信号,其实这就是两种不同的信号调制结果,差不多区别就这样,将就看)
左侧为数字信号的基本情况,数字信号的特征是离散的,可以被数字信道所传输
右侧为模拟信号的基本情况,模拟信号的特征是连续的,可以被模拟信道传输,但是这种信号容易受到噪声的影响,经常用来代表连续的频率这种概念.
其中,基带调制就是把原有的数字信号变得更加合理,适合在信道中传递,所以整个过程也是我们所俗称的'编码'.
2.码元
(虽然这个的谐音词是我学的最认真但是分数最低的一门...........)
`对于模拟信号和数字信号的图像来说,码元指的是能代表一个离散数值的片段.借用一下网图
数字信号的图片可能更明显一点,对应一个脉冲就是一个码元........
反正大概就是代表一个离散数值/信号的区间/段就对啦.....
3.编码:
之前说过,对于数字信号的调制,我们要进行编码,并且在这个编码的过程中,我们需要一些设置来解决同步的问题.
常用的编码方式一共有四种,不归零编码,归零编码,曼彻斯特以及差分曼彻斯特编码四种,下面将一一解释,其中曼彻斯特和差分曼彻斯特还会有各自的例题需要处理:
* 不归零编码:
不归零编码,就是严格按照这个脉冲数据进行编码的,或者说压根就没有编码,问题也很明显,我们无法解决时钟同步的问题,也就是不知道什么时候是下一个bit
* 归零编码中,
我们设置了一共零电平的位置(注意不是0),而原本的0和1分别被我们称之为高电平和低电平.每次完成一个脉冲以后,会立刻回到0电平的位置,这个0电平就代表了一共时钟信号.
(在数字信号调制的时候,我们将这种内置时钟信号的编码称之为自同步编码)
* 曼彻斯特编码:
曼彻斯特编码的一个特征就是,增加了一个跳变的因素,这跳变的方向就代表了1或者0,而且跳变本身的出现就是时间信号的象征
比如这样子的跳变就代表1 这样子的跳变代表0:,但是值得注意的一点是曼彻斯特编码并没有明确规定向上是0还是向下跳变是0,这个可以通过各种假设来进行判断.
* 差分曼彻斯特编码:
差分曼彻斯特编码中,跳变仅仅只是提供时间信号的判断,而具体的信号判断是使用本码元的前半部分和前码元的后半部分是否一致进行判断的,如果是0,则本码元的前半部分和前一个码元的后半部分会发生差异.
这样子的说法可能有点抽象,我们来举一个实际的例子来作为画图和解题时候的方法步骤规范
首先要明白每个码元中间的跳变是一定会发生的,因为这个代表了时间信号,我们需要去关注的,是这样这样的部分,该码元的开始和上一个码元的结束会不会有变化,而这个变化就是该位置0来决定的.所以在这里跳变的部分我们用绿色来进行展示
然后我们可以知道下一个码元是0,所以这个位置要发生跳变,所以这里的结果就是
然后下一个码元是1,1就不发生变化了,所以就是
所以这个差分曼彻斯特编码的结果就是:101001
*做个简单的总结:归零编码和两种曼彻斯特都是子同步,通过归零和跳变,把时钟这一信号存入了比特流的内部.
(4)关于信道的容量
1.关于信号的失真
有的时候,我们去传输一些信号,总会发生信号失真的情况(distort),这种失真如果放在图像中是这样子的
因为信道的传输是有自己的限制的,比如容量,带宽,允许最大速度等等.还有一些其他的因素比如说噪声,这些都会影响到我们最终得到的波形信号.
,我们需要通过公式计算出合理的,或者说最大还有极限的码元传输速率:主要由奈氏准则和香农公式来计算.
首先说一下关于频率的事情,在计算机图形学中我们有过这样一条知识:通过傅里叶变换,可以把一个函数转化为很多不同的函数,也就是把图片实域转化为一很多不同的函数,也就是频率
对于一个数字信号来说,我们可以用很多模拟信号的类似叠加方式得到一个近似数字信号的模拟信号.
信道在不同的状态下都存在一个最大码元传输速率,对于数字信号来说,由于信道的频率带宽是有限的,所以高频信号无法通过,这就导致码元之间区分不明显,成就了码间串扰,也就是失真的根本原因之一,我们要避免码间串扰
这种情况最直接的处理方法自然是扩大信道的频率带宽,比如原本是2100-100=2000hz的带宽,我们扩大到3000hz-100hz=2900hz的情况,这种自然是可行的,但是毕竟做什么成本都优先,为了避开码间串扰这种情况,我们需要去计算出最大码元传输速率,只要不超过这个,理论上就不会发生信号的串扰情况.
(特别注明,这个单位叫做频率带宽)
在这里其实要介绍的不是很多,主要要知道两个东西,如何用奈氏准则计算低通信道下的最大码元传输速率,以及如何试用香农公式计算有噪声的情况下所允许的极限码元传输速率..
2.奈氏准则
首先来说奈氏准则:
在理想的,没有噪声的条件下,一个信道的码元最大传输速率,和信道本身的频率带宽是一致的
信道的传输速率为Baud,也就是波特率,单位为码元/秒,也被称为调制速率等等
信道带宽我们称之为W
则奈氏准则的计算公式为:
对于低通信道:
对于带通信道:
奈氏准则是一种肥肠理想的情况,规定了一个最大的码元传递速率,如果我们想要在这个基础上进行提高,我们能做的事情就是提升单一码元所携带的信息量
3.香浓公式
香浓公式涉及到了另一个单位量,或者说另外两个单位量:信噪比,传输功率和噪声.
香农公式用来计算有噪声,并且带宽受限制的情况,肥肠重要
(5)关于信道复用的方式:
信道不能只给一个用户用,因为那就变成接线传递,梦回上世纪了,我们可以通过种种办法让传输信息的信道被多个用户所用.
不过在此之前,我们要明白单独依靠信道是不可能完成这个任务的,信道上的信息都在一起了,总需要什么东西把他们分开,然后放给各个用户,这就需要两个结构,我们称之为复用器和分用器,起到了很简单的区分作用.
后面的四种方法都沿用了这一操作
* 频分复用:
频分复用就是使用了信道中有一定的频率带宽,我们就可以通过拆分,规定不同的频率区间可以被不同的用户所同时使用.
简单来说,就是实现了同步,不同频.
* 时分复用
时分复用其实就是分时操作,我们先来介绍最基础的TDM分时复用,这种分时复用是按照用户的数目,划分出一个时间帧,一个帧可以理解为一个周期,在这个周期中,我们给每个用户一小段时间做自己的事情,原理和分时复用是差不多的
和上一个相反,用户在自己的时间段内独占这个信道,也就是同频,但不同时
但是这样的时分服用会带来一个问题,就是如果某个用户在规定的时间片内没有使用传递数据,那么这段时间就被浪费了,降低了传输率.
所以我们有另一种STDM时分复用,最开头的S是静态的意思,在STDM帧中,不是为每个用户都划分属于自己的时间片.而是进行动态的调整.当用户的传输数据发送来的时候,会先存入这个帧数中,等到这个帧满了就直接发送.
因为不是规定好的用户时间片划分,所以我们要做的事情去就是给时间片加上一些地址还有复用的信息.其中,给数据做集中的集中器为智能复用器 .
* 波分复用:
波分复用其实就是频分复用在光波作为媒介的时候,就是频率从电子变成了光波,一种情况,应用比较广泛
*码分复用 :
(终于到最后的重头戏了,我写了一整天了真的是....)
码分复用不再是在空间和时间上作出区分,而是使用数学方法实现复用和分用两个功能
对于每个用户,我们给他们一个专属而随机的伪随机序列号,被称之为码片(chip)
比如我们有三个用户,码片分别为
A | 1011 |
B | 1010 |
C | 0110 |
然后在传输信号的时候,我们规定传递1的时候,用的是码片的原文,传递0的时候用的是码片的反码.
并且在传递的时候,我们需要把这个随机序列号按照1->+1 , 0->-1这个规律,转化为码片向量
A(1011) | (+1,-1,+1,+1) |
B(1010) | (+1,-1,+1,-1) |
C(0110) | (-1,+1,+1,-1) |
使用这个码片向量,我们就可以进行一些传输操作
(另外注意一点:传递0的时候,码片向量也要取反)
比如我们同时想要传递这些信息:A:1,B:0,C:什么都传递
则信道中的复合向量应该是:1*A + -1*B + 0*C
(这也是一个要注意的点,当什么都不传递的时候,对应的码片向量*0即可)
所以这个时候的信道量为 (0,0,0,+1)
接下来展示使用信道量进行解码的过程
信道量解码很简单,就是乘以对应的码片向量,
计算结果如果为1,则代表传递了1
计算结果为-1,则代表传递了0
否则则是没有参与这次传递
这样就能直接根据000-1解码出结果了
做总结:
物理层实现的功能不多而且基础,主要是用来传递实际的信号,解决了最根本的传递问题.见哲学复杂的物理还有时间问题封装起来,向上层提供简单的接口服务