数据链路层
# 数据链路层
数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
# 数据链路层基本概念及基本问题
# 基本概念
# 数据链路层信道类型
- 点到点信道。
- 广播信道。
# 链路与数据链路
- 链路(link):是一条点到点的物理线路段,中间没有任何其它的交换节点。
- 一条链路只是一条通路的一个组成部分
- 数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 现最常用的方法就是使用适配器(即网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
# 数据链路层传输的是帧
常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
- 将网络层的数据,加上帧头、帧尾、物理层地址、校验值
# 三个基本问题
# 封装成帧
【概念】:
- 封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
- 首部和尾部的一个重要作用就是进行帧定界。
【举例】:用控制字符进行帧定界的方法举例
- 试想:帧还未发送完,发送端出来问题,只能重发该帧。接收端却收到了前面的“半截子帧”,它会抛弃吗?为什么?
【解答查看透明传输和查错控制】
# 透明传输
【上面的举例】
若传输的数据是 ASCII 码中“可打印字符(共 95 个)”集时,一切正常。
若传输的数据不是仅由“可打印字符”组成时,就会出现问题,如下图:
【解决方法】:
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)
- 字节填充或字符填充 --- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现数据当中,那么应在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
# 查错控制
【概念】:
- 传输过程中可能会发送比特查错:1 可能会变成 0 而 0 也可能变成 1。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
- 误码率与信噪比有很大的关系。
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种查错检测措施。
# 【帧检验】:
- 循坏冗余检验(CRC)的计算过程
【分析】
在该图中,要传输的数据为红色部分(101001),因为除数为(1101)四位,所以在被除数(101001)后面补三个 0,如果除数是五位,则需要在被除数后面补四个 0。余数为001
- 最后传送的数据为101001+001,接收端收到数据后,通过同样的方法,将101001001与除数1101计算,最后余数结果如果为 0,则说明数据传输无错,如果不为 0 就说明数据传输出错。
# 帧检验序列 FCS
- 在数据后面添加上的冗余码称为帧检验序列 FCS
- 循环冗余检验 CRC和帧检验序列 FCS并不等同。
- CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
- FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
# 接收端对收到的每一帧进行 CRC 检验
【检验】:
- 若得出的余数 R=0,则判定这个帧每一查错,就接受。
- 若余数 R≠0,则判定这个帧有差错,就丢弃。
【特点】: - 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了查错。
- 只要经过严格的挑选,并使用位数足够多的除数 p,那么出现检测不到的查错的概率就很小很小。
# 小结
- 仅用循坏冗余检验 CRC 查错检测技术只能做到无差错接受。
- “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生查错“。也就是说:“凡是接收端数据链路层接受的帧都没有传输查错”(有查错的帧就丢弃而不接受)。
- 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
- 考虑:帧重复、帧丢失、帧乱序的情况。
- 可以说:“CRC 是一种无比特查错,而不是无传输查错的检测机制“
- OSI/RM 模型的观点:数据链路层要做成无传输查错的!但这种理念目前不被接受!
# 两种情况下的数据链路层
# 使用点对点信道的数据链路层(广域网)
这种信道使用一对一的点对点通信方式
# PPP 协议
现在全世界使用得最多的数据链路层协议是点对点协议 PPP(Point-to-Point Protocol),用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
【PPP 协议应该满足的要求】:
- 简单 --- 这是首要的要求
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
【PPP 协议不需要满足的要求】: - 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
【PPP 协议的组成】:
- 数据链路层协议可以用于异步串行或同步串行介质。
- 它使用 LCP(链路控制协议)建立并维护数据链路连接。
- 网络控制协议(NCP)允许在点到点连接上使用多种网络层协议。如图所示:
【字节填充】:
问题:信息字段中出现了标志字段的值,可能会 被误认为是“标志”,怎么办?
- 将信息字段中出现的每个0X7E字节转变成为 2 字节序列(0X7D,0X5E)
- 若信息字段中出现一个0X7D的字节,则将其转变成为 2 字节序列(0X7D,0X5D).
- 若信息字段中出现 ASCII 码的控制字符(即数值小于0X20的字符),则在该字符前面要加入一个 0X7D 字节,同时将该字符的编码加以改变。
# 使用广播信道的数据链路层(局域网)
这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送
# 共享通信媒体
【静态划分信道】:
- 频分复用
- 时分复用
- 波分复用
- 码分复用
【动态媒体接入控制(多点接入)】: - 随机接入(主要被以太网采用)
- 受控接入,如多点线路探询,或轮询。(目前已不被采用)
# CSMA/CD 协议
# 局域网的特点与优点:
【特点】:
- 网络为一个单位所拥有,且地理范围和站点数目有限。
【优点】:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
# 以太局域网(以太网)
# 概述
# 以太网与数据链路层的两个子层
为了使数据链路层能更好地适应多种局域网标准。802 委员会就将局域网的数据链路层拆 成两个子层:
- 逻辑链路控制 LLC 子层
- 媒体接入控制 MAC 子层
与接入到传输媒体有关的内容都放在 MAC 子层,而 LLC 子层与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的。
# 集线器的一些特点
集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。集线器使用了大规模集成电路芯片,因此这样的硬件设备的可靠性已大大提高了。
使用集线器的以太网在逻辑上仍是一个总线网,个工作站使用的还是 CSMA/CD 洗衣,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层。
# 信道利用率
以太网的信道被占用的情况:
- 争用期长度为 2π,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。
- 帧长为 L(bit),数据发送速率为 C(b/s),因此帧的发送时间为 L/C = T。(s)。
# MAC 层
# MAC 层的硬件地址(MAC 地址)
在局域网中,硬件地址又称为物理地址,或MAC 地址。
802 标准所说的“地址”严格地讲应当是每一个站的“名字”或“标识符”。
但鉴于大家早已习惯了将这种 48 位的“名字”称为“地址”,所以本书也采用这种习惯用法,尽管这种说法并不太严格。
- IEEE 的注册管理机构RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)
- 地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
- 一个地址块可以生产 2^24 个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48.
- “MAC 地址”实际上就是适配器地址或适配器标识符 EUI-48。 #####适配器检查 MAC 地址
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址
- 如果是发往本站的帧则收下,然后再进行其他的处理。
- 否则就将此帧丢弃,不再进行其他的处理。
“发往本站的帧”包括以下三种帧: - 单播帧(一对一)
- 广播帧(一对全体)
- 多播帧(一对多)
# 扩展以太网
# 在数据链路层考虑
在数据链路层扩展局域网是使用网桥。
网桥工作咋数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。
网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的转口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口。