概述

数据链路层使用的信道主要有以下两种类型:

  • 点对点信道
  • 广播信道

使用点对点信道的数据链路层

  • 链路link:一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
  • 数据链路:链路 + 控制数据传输通信协议的硬件和软件。最常用的方法是使用适配器(网卡)。
  • 数据链路层中传输的数据单位是

数据链路层的三个基本问题——封装成帧、透明传输、差错控制

封装成帧与透明传输

封装成帧就是在数据的前后添加首部(帧开始符)和尾部(帧结束符),添加完的这玩意就叫做一个帧。

首部和尾部的一个重要作用就是进行 帧定界

然而,如果在原数据中出现了与帧开始符或帧结束符相同的字符,在传输的时候就会识别错误,这就是透明传输问题。要解决这种问题,就可以在 数据中 的控制字符前面添加一个转义字符,而接收端在收到数据后只需删除这些转义字符就可以正确识别,如果转义字符也出现在数据里,就用转义字符对转义字符转义。这种方法被称为 字节填充法

差错检测

  • 传输过程中可能产生 比特差错 ,在一段时间内传输错误的比特占所传输比特总数的概率被称为 误码率BER
  • 循环冗余检验CRC:在数据段的末尾添加一段 冗余码 ,也称为帧检验序列FCS。接收端对收到的每一帧进行CRC检验,但只能判别出有差错或者无差错,无法确定差错出现的位置,所以有差错的帧一律丢弃。
  • CRC只能做到 无差错接受 ,即接受的数据没有差错。如果要做到可靠传输,则须加上确认与重传的机制。

点对点协议PPP

  • 用户到ISP的链路使用PPP协议

帧格式

  • 标志字段 F = 0x7E
  • 地址字段 A = 0xFF ,没有实际作用(都点对点了还要地址干啥)
  • 控制字段 C = 0x03
  • 协议字段,用于区分PPP帧的数据类型
  • PPP帧的长度为整数字节

透明传输

  • 当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充
  • 当PPP用在异步传输时,就使用 字符填充法 。将信息字段中的每一个0x7E转变成2字节序列(0x7D,0x5E);若信息字段中出现一个0x7D字节,则转变成2字节序列(0x7D,0x5D);若信息字段中出现ASCII码的控制字符(<0x20),则在前面加入一个0x7D字节,同时改变该字符的编码。
  • PPP协议用在SONET/SDH链路时,是同步传输,此时采用 零比特填充 。发送端,只要有连续5个1(0b1111110 == 0x7E),就立即填入一个0。接收端对帧中的比特扫描,当发现5个连续的1,就把之后的一个0删除。

不提供使用序号的确认

  • 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议比较合理。
  • 在因特网环境下,PPP的信息字段放入的数据是IP数据报,数据链路层的可靠传输不能保证网络层的传输也可靠。
  • 帧检测序列FCS可以保证无差错接受。

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

局域网的数据链路层

  • 局域网 :网络为一个单位所拥有,且地理范围和站点数目都有限。具有广播功能。
  • 局域网的拓扑:星形网(集线器)、总线网、环形网(令牌)
  • 数据链路层的两个子层:逻辑链路控制LLC子层(局域网对LLC子层透明,即看不见下面的局域网;一般不考虑)、媒体接入控制MAC子层(与传输媒体有关)。

适配器

  • 通信适配器又称网络接口卡或网卡
  • 进行串行/并行转换;缓存数据;在计算机的OS安装设备驱动程序;实现以太网协议
  • 计算机通过适配器进行与局域网的通信

CSMA/CD协议

以太网的广播方式

将许多计算机连接到一根总线上。假设当计算机A发送了数据信号,则将其广播,总线上的所有计算机都能检测到,但只有目的计算机B的地址才与数据帧首部的目的地址一致,所以只有B会接收这段数据,而其他计算机就将其丢弃。

  • 不必先建立连接就可以直接发送数据,较为灵活简便;对发送的数据不编号,也不要求对方发回确认(因为局域网信道质量好,基本不产生差错)
  • 以太网提供的服务是不可靠的交付,当目的站收到有差错的数据帧,就 直接丢弃 。当高层发现丢失了一些数据帧,便将其当作新的数据帧重传。

载波监听多点接入/碰撞检测 CSMA/CD

  • 多点接入:许多计算机以多点的方式连在总线上
  • 载波监听:每个站在发送数据前要先检测总线上是否有其他计算机在发送数据,来避免碰撞
  • 碰撞检测:计算机边发送数据边检测信道上的信号电压大小,一旦发现总线上出现了碰撞,就立即停止发送,避免继续浪费网络资源,然后等待一段 随机时间 后再次发送。👉CSMA/CD协议的以太网只能进行半双工通信,发送的不确定性使得平均通信量远小于以太网的最高数据率。
  • 传播时延对载波监听的影响:比如A向B发送信息,由于信息传播需要时间,所以B在没收到信息前认为总线空闲,有可能同时发送信息,便会产生碰撞。
  • 将单程端到端的传播时延记为τ,则记 争用期 = 2τ (或碰撞窗口),即:最先发送数据帧的站,在发送数据帧后至多经过这段时间,就可以知道发送的数据是否遭受了碰撞。👉以太网取 51.2μS 作为争用期的长度,对于10Mb/s以太网,争用期内可以发送64字节,只要前64字节没有发生冲突,后续的数据就不会冲突。👉凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
  • 当发送数据的站一旦发生了碰撞时:立即停止发送数据;再继续发送若干比特的 人为干扰信号 ,以便让所有用户都知道发生了碰撞。

使用广播信道的以太网

  • 采用星形拓扑,在星形的中心为集线器(hub)

以太网的信道利用率

  • 记帧长为L(bit),数据发送速率为C(b/s),则帧的发送时间为 T0=L/C
  • 发送一帧的平均时间则为 2τ * n + T0 :发生碰撞的过程可能需要多个争用期,直到转为空闲,然后才能发送信息
  • a=τ/T0 ,则要提高信道利用率,就必须减小a。当a→0,则说明一发生碰撞就可以立即检测出来,停止发送;若a越大,则说明争用期所占比例越大,在碰撞中浪费许多信道资源。👉以太网连线的长度不能太长,否则 τ 会太大;以太网的帧长也不能太短,否则 T0 会太小。
  • 理想情况 下,各站发送的数据不会碰撞 ,则发送一帧占用线路的时间为 T0+τ ,但帧本身的发送时间为 T0 ,所以极限信道利用率为 Smax = T0 / ( T0 + τ ) = 1 / ( 1+a )
  • 帧间最小间隔 为9.6μS,用于使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备

以太网的MAC层

  • 硬件地址又称为物理地址或MAC地址,即适配器地址或适配器标识符EUI-48(高位24位由IEEE的注册管理机构RA分配,低位24位 扩展标识符 由厂家自行指派)
  • 适配器每从网络上收到一个MAC帧就先用硬件检查MAC帧中的MAC地址,判断是否发往本站

MAC帧的基本结构

  • 类型字段用来标志 上一层 用的是什么协议,以便把MAC帧的数据交给上一层的这个协议
  • 数据字段的大小为 46~1500 字节,这个46字节为最小数据长度64 - 目的地址(6) - 源地址(6) - 类型(2) - FCS(4) 👉当数据字段小于46字节时,应加入填充字段,以保证不小于64字节
  • 在MAC帧前面插入的8个字节:第一个字段的7个字节为前同步码,用来迅速实现MAC帧的 比特同步 ,第二个字段的1个字节为帧开始定界符,表示后面的信息是MAC帧

扩展的局域网

在物理层扩展局域网

  • 主机使用光纤和一对光纤调制解调器连接到集线器
  • 用多个集线器组成更大的局域网,该局域网都在一个碰撞域中,但总的吞吐量并未提高

在数据链路层扩展局域网

  • 使用 网桥 ,网桥工作在数据链路层,根据MAC帧的目的地址对收到的帧进行转发
  • 网桥的过滤帧功能:当网桥收到一个帧,并不是直接向所有接口转发此帧,而是先检查目的MAC地址,再转发到对应接口(通过内部的转发表确定)
  • 优点:可以互连不同物理层、不同MAC子层和不同速率的局域网(如果用hub,速率快的往速率慢的发送会堵塞);使各网段称为隔离开的碰撞率
  • 缺点:增加了时延,传播过多广播信息会产生 广播风暴 (信息会重复转发)
  • 集线器在转发帧时不会对传输媒体进行检测;网桥在转发帧之前必须执行CSMA/CD算法,检测碰撞
  • 目前使用得比较多得网桥是 透明网桥 :局域网上的各站点并不知道所发送的帧将经过哪几个网桥

网桥的自学习算法

当网桥收到一个数据帧,就记录下它的源地址D和进入网桥的接口,然后把这两个信息加入转发表,以后收到目的地址D的信息,就知道要往这个接口发送了。

同时,也要记录下帧进入该网桥的 时间 ,毕竟以太网的拓扑可能经常发生变化,记录了时间就可以只保留最新状态信息。

自学习完成后,对帧进行转发,首先查看转发表中是否有该目的地址:

  • 如果有,就先判断这个目的地址的对应接口是否和帧进入网桥的接口相同:
    • 是:那就说明不需要经过网桥转发,直接丢弃
    • 否:按对应接口进行转发
  • 如果没有,就通过除进入网桥的接口以外的所有其他接口进行转发。

透明网桥的生成树算法

因为网络是四通八达的,转发的帧很大可能会在网络中不停地兜圈子,所以需要使用生成树找到任意两个站中的唯一路径。

同时,由于网络拓扑是经常发生变化的,生成树上的根网桥每隔一段时间还需要对生成树的拓扑进行更新。

源路由网桥

源路由网桥在发送帧时将详细的路由信息放在帧的首部,源站以广播方式向目的站发送一个 发现帧 ,每个发现帧都记录所经过的路由。

发现帧到达目的站时就沿各自的路由返回源站,源站在得知这些路由后,从所有可能的路由中选择一个最佳路由,以后从这个源站向这个目的站发送的帧的首部,都必须携带这一个最佳路由信息。

源路由网桥可能提高网络资源的利用率

多接口网桥——以太网交换机

  • 以太网交换机的每个接口都直接和主机相连,而且一般工作在 全双工方式
  • 对于普通的10Mb/s的共享式以太网,若有N个用户,每个用户占有的平均带宽只有10/N。但如果使用以太网交换机,虽然每个接口到主机的带宽还是10Mb/s,但每个用户在通信时是独占带宽,所以总容量为10NMb/s。
虚拟局域网VLAN

由一些局域网网段构成的与物理位置无关的逻辑组。每个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。

当B1向VLAN2的成员发送数据,B2和B3会收到消息,但A1,A2,C1都不会收到。

虚拟局域网限制了接收广播信息的工作站数,使网络不会因为广播风暴而引起性能恶化。

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的VLAN标记,来指明发送该帧的工作站属于哪个虚拟局域网(位于源地址与类型之间)。

高速以太网

  • 速率达到或超过100Mb/s的以太网被称为高速以太网。在双绞线上传送100Mb/s基带信号的星形拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。100BASE-T以太网又称为快速以太网。
  • 吉比特以太网允许在1Gb/s下全双工和半双工两种方式工作,在半双工方式下使用CSMA/CD协议。
  • 10吉比特以太网与10Mb/s、100Mb/s和1Gb/s以太网的帧格式完全相同。10吉比特以太网 只工作在全双工方式 ,因此没有争用问题,也不使用CSMA/CD协议。