zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

EE|计算机网络|Link Layer-链路层

2023-03-15 22:03:04 时间

网络协议栈

整体呈漏斗型,Network只使用IP,因为对于网络而言,使用的用户数,会造成平方级别的链接,因此单个网络的人数越多越好。

send时层层加包,recieve时层层解包。

Application(B/S): URL

负责基本数据

Transport(Proxy, Firework): Port number

TCP维护Seq Ack等数据,用于验证(防止传输错误),因此有所谓三次握手。

负责传输失败时进行重传。

Network(Router): IP address

负责next hop。每个路由有route table,根据路由协议(防止呈环),逐渐找到正确的地址。

Link&Physical(Line)

负责物理传输,错误检测。(电路容易出错)


链路层的目的是物理上将两个位置的数据进行直接传输。

•物理传输

并行-单位时间位数为n,由于需要等待所有线同步传输,实际效率未必高

串行-单位时间位数为1,不需要等待response

如果共享时钟的话,可以先商量好传输多少次data,而不需要每次都进行一次请求。根据传递的data的频率,在B通过VCO(Voltage Controlled Oscillator)我们可以将时钟周期与A同步。然而如果全是0的话,看起来信号就会一值不变。因此引入曼彻斯特编码,0->10,1->01,减少速度传输效率,从而让VCO正确运转。

Manchester Code


•多路传输+数据组织

同步通信 (telephone communication)

–Switch需要进行统筹

–需要建立和拆卸连接(因此需要保存状态)

每个电话建立的连接固定64kb带宽,固定了size和间距

电话的包会被拆分成多个frame

异步通信 (data communication)

Message: 突发的、不适合固定大小和间距

–无需建立连接, 异步

frame长度任意,可以在任意link空闲时传输。由于无需connection,stateless

Multiplexing / Demultiplexing

信息的传递使用队列,在Demultiplex时通过header中的目的地,与switch中的forwarding table进行下一步传递。

可以选择一个简单的序列作为frame的定界符(如7个1,为了避免数据中出现,则打包时所有的6个1后添加0,解包时1111110后删去0)

•错误检测

常见的冗余编码,通过最终的码是否仍符合规则,判断什么位传输出了问题。

这里之所以插入在1,2,4位,是因为看表,下标相加即可。

把理论的P367推出的编码和实际的编码比较,根据Not Match的位置,即可判断哪一位传输错误。