跳转至

数据链路层

数据链路层 | fang

为什么要数据链路层?
  • 物理层解决了相邻节点透明传输比特的问题(相邻:两个节点之间只有一段传输介质、透明:不需要考虑传输介质是什么,只要考虑接口)
  • 如何在比特流中找到一组数据的开始和结束位置
  • 线路上有多个设备的时候比特流应由谁接受
  • 比特传输错误怎么办

什么是数据链路

  • 链路:结点间的物理通道,无源的物理线路,中间无任何其他的交换节点
  • 数据链路:是节点间的逻辑通道,是链路+协议
  • 数据链路层:负责通过一条链路从一个节点向物理链路相连的相邻节点传送帧
  • 帧:链路层协议数据单元,封装网络层的数据报
抽象思维 强化分层思想

考虑数据链路层时,可以把物理层当做透明的,直接认为是数据链路层之间在传输

  • 向上:利用物理层提供的位流服务
  • 向下:向网络层提供明确的一些服务的接口

数据链路层信道类型

  • 点对点信道
  • 广播信道

不同信道,不同控制协议

封装成帧

在数据的前后分别添加首部和尾部,构成一个帧,首部和尾部的一个重要作用就是帧定界,中间一块就是数据链路层的最大传送单元 MTU(Maximum Transfer Unit)

只有数据链路层在增加功能的时候是首尾都加

其他层要加功能都只在头加

关键问题:如何标识一个帧的开始?

  • 接收方要明确区分比特流中每一帧的开始和结束(帧同步/帧定界)
  • 关键:选择何种定界符

成帧的方式:

  • 字节计数 每帧第一个数字是帧的长度 无法应对传输中出现错误
  • 带字节填充的定界符法

用控制字符(SOH start of header, EOT end of transmission)作为帧定界符

bug:数据中出现控制字符,不过可以用转义字符

转移字符需要加在数据区的【SOH, EOT, 以及转义字符本身】前面

  • 带比特填充的定界符法
  • 物理层编码违例 用物理层的一些特殊信号

差错控制

误码率 BER(Bit Error Rate)

  • 纠错码:用于错误发生比较平凡的信道,如无线链路
  • 检错码:用在高可靠、误码率低的信道,如光纤链路
如何理解

使用检错码,则发现错误就要丢掉重发,如果错误概率高,则多次重发会消耗大量资源,故使用纠错码

循环冗余校验(CRC Cyclic Redundancy Check)

这个可以之后再复习一下

注意这样还没有实现可靠传输

使用CRC只能做到无差错接受

每个帧能确保没有问题,但是没有确保每个帧之间的相对位置关系是正确的

要做到可靠传输,还必须加上帧编号、确认和重传等机制

点对点协议 PPP

Point-to-Point Protocol

PPP协议的组成
  • 一种将IP数据报封装到同步/异步串行链路的方法
  • 链路控制协议LCP(Link Control Protocol)

  • 用来建立、配置和测试数据链路的链路控制协议,通信双方可以协商一些选项,最重要的功能之一是身份验证

  • 网络控制协议NCP(Network Control Protocol)

  • 其中每个协议支持一种不同的网络层协议,如IP, OSI的网络层, DECnet, AppleTalk等

1777433162077

  • 首部4个字段
  • F: 定界符,标志一个数据包的开始
  • A: 地址字段
  • C: 控制字段
  • A和C没有携带PPP帧的信息
  • 协议字段: 标识信息部分的类型,标识当前处在发送数据/建立连接/通信交互阶段,毕竟除了发送真实的数据,也要又测试链路、身份验证、参数协商,他们共用同一种帧格式(初期LCP; 中期NCP; 后期正常通信阶段)
  • FCS: 循环冗余校验码
  • F: 尾部的定界符

透明传输

什么是透明?

“透明”的意思是:我不关心你发的是什么数据,你随便发,我保证原封不动地给你送过去。

问题出在哪?为什么会不透明?

数据内部会出现标识符

  • PPP用在异步传输时,使用字节填充法(即使用转义字符)
  • PPP用在同步传输链路时,采用零比特填充法(使用连续6个1作为标识符,然后在数据内部一旦遇到5个1就在后面插入一个0)

使用广播信道的数据链路层

和刚才的点对点的ppp相对应、

  • ppp经常用在广域网(WAN)
  • 广播则用在局域网(LAN)
局域网的特点
  • 具有广播功能,从一个站点可方便地访问全网
  • 便于系统的扩展、演变、灵活调整

广域网的拓扑结构:星形网、总线网、环形网

特点:共享同一信道

面临问题

由于共享同一信道,多个站点同时请求会占用信道

解决办法:信道分配

  • 静态分配
  • 动态分配

静态分配

频分复用、时分复用、波分复用、码分复用

适用于通信量大且流量稳定的情况、用户数量少且用户数目固定

代价高,不适合突发性业务,不适合局域网

动态媒体接入控制

  • 随机接入
  • 受控接入

以太网

以太网的标准

把数据链路层分成逻辑链路控制LLC子层和媒体接入控制MAC子层

后来LLC逐渐没有,就只留下了MAC,MAC和物理层结合就是网络接口层,(现在很多适配器上就仅装有MAC协议(网卡))

以太网采取的2种重要措施

CSMA/CD 协议 重要重要

有多点接入一根总线

在数据发送前、发送中都监听信道,进行碰撞检测

  • 一旦检测到碰撞:立即停止发生,等待一段随机的时间或再次发送

监听只会监听门口的信道有没有数据,没法完全检测整条信道,所以信道可能并非真正空闲

1777452672944

碰撞不发生的最短往返时间

(争用期)

最短帧长...

  • 碰撞后什么时候重传:截断二进制指数退避

【计算机网络全集】 【精准空降到 27:54】

总结:

  • 使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)
Note

先听后发,边听边发,冲突停止,延迟重发。

使用集线器的星形拓扑

  • 传统以太网传输媒体:粗同轴电缆->细同轴电缆->双绞线
  • 采用星形拓扑结构
  • 星形的中心使用一种可靠性非常高的设备——集线器(hub)

以太网的信道利用率

单程端到端传播时延\(\tao\),则争用期为\(2\tao\)

假设:帧长\(L(bit)\),数据发送速率\(C(bit/s)\),则帧的发送时间\(T_0=L/C(s)\)

流程

首先经过\(2\tao\)的时间抢信道,如果发现冲突则随机等待一段时间后再次尝试,直到抢信道成功

经过\(T_0\)把整个数据帧全部推到信道,同步地会把比特从信道一端传到另一端,传播时延为\(\tao\)

所以占用期为\(T_0 + \tao\)

以太网的信道利用率\(S_{max} = \frac{T_0}{T_0 + \tao} = \frac{1}{1 + a}\)

\(a \rightarrow 0\),表示基本事件都花在\(T_0=\frac{L发送的数据}{c速率}\)表示已发送碰撞就立即可以检测出来,并立即停止发送,因此信道利用率很高

  • 以太网的a值应当尽可能小

  • 以太网长度收到限制,否则\(\tao\)会太大

    • 以太网帧长不能太短,否则\(T_0\)会太小

扩展的以太网

就是老师上课讲的switched ethernet

prefill
  1. 五层模型
  2. 物理层 4 特性
  3. 单工 / 半双工 / 全双工
  4. 基带 vs 调制
  5. 奈氏、香农
  6. 复用技术
  7. 帧、CRC、PPP
  8. CSMA/CD、争用期、最短帧
  9. 集线器 vs 交换机

在物理层拓展以太网

网络层眼中:扩展后的网络依旧是一个网络

使用光纤拓展,主机使用光纤连接到集线器

使用集线器拓展

1778038147816

但是这样接口变多,冲突域也更大了

优点:

  • 使原本不同冲突域的计算机能够跨碰撞域通信
  • 扩大了以太网覆盖的地理位置

缺点:

  • 碰撞域增大,总的吞吐量未提高
  • 如果使用不同以太网技术,就不能简单地用集线器互联
  • 存在安全隐患,仅是在物理层上的拓展

冲突的根源在于共享总线

在数据链路层

使用网桥,现在进化为以太网交换机

网桥的接口变成了全双工了,就解决了之前信道半双工导致的冲突问题

以太网交换机就是一个多接口网桥

每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式

有了交换机,大家不冲突了,之前的CMSA/CD都没用了

以太网交换机的特点
  • 接口有存储器
  • 即插即用,其内部的帧交换表(又称地址表)是通过自学习算法自动地逐渐建立起来的
  • 使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多
  • 每个接口用户独享带宽,增加了总容量
  • 支持多种速率接口
  • 支持多类型接口
以太网交换机的自学习功能

【计算机网络全集】 【精准空降到 26:31】

收到帧 frame,入端口为 in_port

src = frame.源MAC
dst = frame.目的MAC

第一步:学习源地址
MAC表[src] = in_port
刷新 src 的老化时间

第二步:处理目的地址

如果 dst 是广播地址:
    从除了 in_port 以外的所有端口转发

否则如果 dst 不在 MAC 表中:
    从除了 in_port 以外的所有端口转发

否则:
    out_port = MAC表[dst]

    如果 out_port == in_port:
        丢弃该帧
    否则:
        从 out_port 转发该帧

简化版:

先学源地址,再查目的地址。
目的已知就定向转发;
目的未知就泛洪;
目的就在入端口方向就丢弃。
  • 两台以太网交换机互连

    • 会有广播风暴

如何解决交换机形成的环路引发的广播风暴?

消除回路

消除回路:使用生成树协议STP

Spanning Tree Protocol

不改变网络的实际拓扑,但在逻辑上切断不写链路,消除环路

虚拟局域网 VLAN

虚拟局域网,由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求,每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个VLAN

  • 虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型的局域网
  • 每个VLAN是一个广播域
  • 一台主机发出的广播包,只能在VLAN中传播

划分虚拟局域网的方法:

  • 基于交换机端口
  • 基于计算机网卡的MAC地址
  • 基于协议类型
  • 基于IP子网地址
  • 基于高层应用或服务

高速以太网

数据链路层的最后一点