计算机网络 - 数据链路层
第三章 - 数据链路层
来源Bilibili湖科大教书匠计算机网络教程:计算机网络微课堂(有字幕无背景音乐版)
数据链路层概述
数据链路层在网络体系结构中的地位
数据链路层的三个问题
封装成帧
就是将上层 ,也就是网络层交付下来的 协议数据单元
(PDU),添加 帧头和帧尾
使之成为 帧
称为 封装成帧
。就是本层的协议数据单元。
**差错检测 **
接收方在收到数据后,通过检错码和检错算法检测是否有误码。
可靠传输
接受方在收到有误码的主机后,是不会接受该帧的,将其丢弃。
如果是 不可靠服务
,那么丢弃后就不会有更多措施。
如果是 可靠服务
,那么会采取措施,让接收方重新接收到正确的 帧 。
封装成帧
含义
所谓封装成帧,是指数据链路层将 上层交付的协议数据单元
添加帧头和帧尾使之成为帧
- 帧头和帧尾中包含有重要的控制信息
帧头和帧尾的作用之一就是帧定界,方便
确定
物理层送上来的 服务数据单元——比特流
的帧范围ppp 帧的标志
MAC帧
帧间间隔
时间为96比特的时间,表明 帧结束
透明传输
是指数据链路层 对上层交付的传输数据没有任何限制
,就好像数据链路层不存在一样。
由于开始和结束的标记使用了 专门指明的控制字符
,故所传输的数据中任何 8 比特的组合 不允许和用作帧定界的控制字符的比特编码一样
面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输
flag为 1字节 的标志位 ,ESC 为 1字节 转义字符 十进制值27
0001 1011
面向比特的物理链路使用比特填充的方法实现透明传输
每 五个连续的比特1后 填充0
为了提高帧的传输效率,应当使 帧的数据部分长度尽可能大些
为了考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限。
即最大传送单元MTU。
差错检测
奇偶校验
对于 偶校验码的生成 可以通过 对帧 进行逐位异或 获得;检验是否误码 ,则也可以通过 对带有校验码的 帧进行 逐位异或,若为0则 没有检测出错误,若为1 则检出错误
.
tip : 对一串比特而言,将其各个比特位进行异或运算 ,若结果为0 可得出 其中 比特1 的个数为偶数,反之为奇数
循环冗余校验
可靠传输
可靠传输的基本概念
可靠传输得实现比较复杂,开销比较大,是否选择实现取决于应用需求。
可靠传输的实现机制 — 停止-等待协议
1、第一种情况
发送方发送数据,接受方收到 ,返回 ACK分组 表示收到,接收方发送下一个分组
发送方发送数据,接收方检测出误码,返回 NAK分组 表示数据有误需重传。
2、第二种情况
发送方发送数据,数据在传输过程中丢失,接收方无法返回 ACK 或者 NAK 标识,
发送方触发 超时重传机制
,再次发送。一般超时时间 略大于 平均往返时间。
3、第三种情况
发送方发送数据,接收方收到数据,在返回 ACK分组的过程中,数据丢失,
发送方会触发重传机制,那么接收方会收到重复分组,解决办法是 给 每个分组带上序号
4、第四种情况
发送方发送数据,接收方收到数据 ,并返回 ACK ,但是由于一些原因,ACK 到达时间超过了 超时时间,导致发送方 重复发送了数据,并在二次发送之后,再次接收到 ACK 分组,又会发送下一个数据分组,接收方在接收到重复数据后 丢弃重复分组,又返回 ACK ,此时发送方又收到了对于重复数据的 ACK 回应 ,但无法辨别,又会继续发送下边的数据,此时无法做到可靠传输。
解决办法是,把 ACK分组 也进行标识,接收方在发现 ACK重复时,就忽略重复 ACK 分组。
注意事项:
停止等待协议的信道利用率
可靠传输的实现机制 — 回退N帧协议
停止等待协议的信道利用率很低,但也有相应的解决办法:一次发送多个 有序分组
和接收 多个有序 ACK
。
回退N帧协议:
- 采用三个比特给分组编序号,即 序号 0~7;
- 发送窗口的尺寸 Wt 的 取值 1<Wt<2^3-1,图中取 Wt=5
- 接收窗口的尺寸为 Wr 的取值为 1 ;
- 在发送窗口的分组允许发送,在发送之外的不允许发送;
- 由于 接收窗口的 尺寸为 1 ,故一次只能接收一个分组;
无差错情况
累计确认
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后,对按序到达的最后一个分组发送确认,ACKn 表示序号为 n 及以前的所有数据分组都被正确接收。
有差错情况
会丢弃之后的所有的数据,并返回 所丢弃分组个数 的 上一个正确接收的分组序号 ACK
发送方收到重复的确认,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻重传!
由于 前边的分组不被接收导致后边的分组
也受牵连
,导致重传这些分组,这就是所谓的回退 N 帧
。Wt发送窗口的大小超过
分组最大序号
时
可靠传输的实现机制 — 选择重传协议
回退 N 帧的缺点 以及 选择重传协议的出现:
选择重传协议:
其中 1< Wr <= Wt
流程:
- 发送方准备发送序号为 0 1 2 3 的分组
- 接收方准备接收
- 逐个返回 ACK
- 返回 ACK 的同时 滑动接收窗口,图中 2号ACK 由于一些原因 没有发送
- 接收方接收 ACK
- 由于 2 号 ACK 没有收到,发送方滑动窗口不会继续向后滑动,但是会发送已经在窗口内的分组 4 ,5
- 接收方接收4,5,并返回,但发送方和接收方的窗口均没有滑动
- 2号分组 超时重发
- 接收方重新接收2号分组 并返回 ACK
- 成功后,滑动窗口 一次性向后滑动 4 个
规律:
当窗口大小不符合规定时
接收方无法辨别新旧数据分组。
点对点协议PPP
ppp协议是目前使用最广泛的数据链路层协议
ppp协议为点对点链路传输各种协议数据报提供了一个标准方法,主要有三个部分组成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP (用于建立、配置以及测试数据链路的链接)
- 一套网络控制协议NCPs (其中的每一个协议支持不同的网络层协议)
帧格式
透明传输
面向字节的异步链路采用字节填充法
面向比特的同步链路采用采用比特填充法
工作状态
媒体接入控制MAC
媒体接入控制的基本概念
共享信道要着重考虑的一个问题就是如何 协调
多个 发送和接收站点
对 一个共享传输媒体
的占用,即媒体接入控制
- 媒体接入控制
- 静态划分信道
- 频分多址
- 时分多址
- 码分多址
- 动态划分信道
- 受控接入
- 集中控制
- 分散控制
- 随机接入
- 受控接入
- 静态划分信道
静态划分信道:
通常在 物理层
中使用
受控接入: 现在已经被淘汰
随机接入:
媒体接入控制 — 静态划分信道
信道复用
复用:复用就是通过一套物理链路同时传输多路用户的信号。
频分复用FDM
不同用户通过 各自的 调制解调器 将数字信号 调制成 不同频率的 模拟信号 使各个信号 占用不同的频带,实现信道复用。
时分复用TDM
波分复用WDM
码分复用CDM
- 码分复用 是另一种共享信道的方法。由于该技术主要用于多址接入,故也称为
码分多址CDMA
- 同理 频分复用 和 时分复用 也可多址接入 也可称为
频分多址
、时分多址
- 与FDM 和 TDM 不同,CDM 的每一个用户可以
在同样的时间使用同样的频带
进行通信 - 个用户使用特殊挑选的
不同码型
,因此各用户之间不会造成干扰
媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CD协议
发生碰撞的两种情况:
协议理解:
多址接入:就是 同时存在 多个用户连接在一条总线上。
载波监听:在发送帧之前,先检验总线是否空闲,若在96个比特时间内,没有收到别的主机发来的帧,则认定主机空闲,否则 就重新等待96比特时间。
碰撞检测:是在帧发送的过程中,检测帧是否发生碰撞,若帧已经发送完毕,则无法在进行碰撞检测,若检测出碰撞,则先退避一段随机时间再次发送。
争用期:以太网的 端到端往返传播时延
称为争用期
最小帧长:
最大帧长:
截断二进制指数退避算法:
信道利用率:
帧发送流程:
帧接收流程:
媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CA协议
MAC地址、IP地址以及ARP协议
- MAC地址是以太网的MAC子层所使用的地址;
数据链路层
- IP地址是 TCP/IP 体系结构网际层所使用的地址;
- ARP 协议 属于 TCP/IP 体系结构的网际层,其作用是已知设备所分配到的 IP 地址,使用ARP协议可以通过该 IP 地址 获取到 设备的 MAC 地址;
网际层
MAC地址
- 使用点对点信道的数据链路层不需要使用地址
- 使用 广播信道必须使用地址来区分各主机
- 当多个主机连接在同一个广播信道上,要实现两个主机之间的通信,则每个主机都必须有一个唯一标识,即一个数据链路层地址;
- 被发送的帧中 必需携带标识
发送主机和接收主机的地址
。由于这类地址是用于媒体接入控制MAC ,因此 这类地址被称为 MAC 地址
- MAC 地址一般被固化在网卡(网络适配器)的电可擦可编程的只读存储器中,因此 MAC 地址 也被称为 硬件地址;
- 要注意:这不意味着 MAC 地址属于网络体系结构中的物理层
IEEE 802 局域网 的MAC 地址格式
6字节,48比特位,通常表示为 12 个十六进制数
第一个字节的 b0 位 0:单播 1:多播
;b1 位 0:全球管理 1:本地管理
MAC地址的发送顺序:
单播MAC地址
就是 一对一 发送,匹配这接收
广播 MAC 地址
多播 MAC 地址
IP地址
- IP 地址 是因特网 上的
主机和路由器
所使用的地址,用于标识两部分信息:- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上的不同主机
注意:MAC 地址不具备区分不同网络的功能
从网络体系结构 看 IP地址 与 MAC 地址
数据包转发过程中 IP地址与MAC 地址的变化情况
- 数据包转发过程中 源IP地址 和目的IP地址保持不变;
- 数据包转发过程中 源MAC 地址 和目的 MAC 地址逐个链路或网络改变
ARP协议
一般情况下,发送方主机 知道 接受方的 IP地址 ,但不知道MAC地址,那么数据是怎么发送 和接收的呢?
实际情况是,每一台主机 都有ARP高速缓存 ,其中存放着 IP地址与MAC地址的对应关系:
但 该高速缓存不是一开始就存有 所有主机的 IP地址与MAC地址的对应关系;
ARP高速缓存,工作流程:
发送数据,发现 ARP高速缓存中没有保存 目标IP地址与目标MAC地址的对应关系
发送 ARP请求报文(广播),发送的内容是:
总线上的每台主机 都收到该条 ARP请求报文,网卡将帧交付给上层 网络层 处理
如果 IP地址 匹配,那么接收并解析,如果不匹配 则忽略
目的主机收到 ARP请求报文后,
- 将 发送来的 ARP请求报文解析,将其 IP地址 与 MAC地址的映射关系 保存到ARP高速缓存中
- 发送单播 ARP响应报文,以告知 自己的 MAC 地址
接收到 ARP响应报文后,将其 IP地址与 MAC地址的关系记录到 自己的 ARP高速缓存中
注意 : ARP协议 只能在同一个网络中 工作,跨网络的 ARP请求报文 需要通过 集线器 或者交换机 多次转发
集线器与交换机的区别
早期的总线型以太网
使用集线器的星型以太网
集线器 在物理层扩展以太网,工作在 半双工方式
以太网交换机
对比 集线器 和交换机
正常单播
正常广播
多主机同时单播
扩展网络下的单播
扩展网络下的广播
扩展网络下的多主机同时单播
总结
以太网交换机自学习和转发帧的流程
- 以太网交换机工作在 数据链路层(也包括物理层)
- 以太网交换机收到帧后,在
帧交换表
中 查找帧的目的 MAC 地址所对应的接口好,然后通过该接口转发帧 - 以太网交换机是一种即插即用的设备,刚启动时,
帧交换表
中是空的,通过自学习算法 自动建立起 帧交换表
帧交换表中的每一条记录 都有自己的有效时间,到期自动删除!
以太网交换机的生成树协议STP
网络环路带来的问题:
- 广播风暴
- 主机收到重复的广播帧
- 交换机的帧交换表震荡
使用生成树协议STP 可以在增加冗余链路来提高网络可靠性的同时又能避免 网络环路带来的各种问题
虚拟局域网VLAN
虚拟局域网VLAN概述
- 以太网交换机工作在数据链路层 (也包括物理层)
- 一个交换机互连起来的以太网,广播域非常大,尤其是随着互联网规模的扩大,巨大的广播域带来了很多弊端
- 广播风暴
- 难以维护和管理
- 潜在安全问题
- 广播域会浪费网络资源和各主机的 cpu 资源
分割广播域的方法
使用路由器
虚拟局域网
虚拟局域网是一种将局域网内的设备划分成
与物理位置无关
的逻辑组的技术,这些逻辑具有某些共同的需求
3.11.2 虚拟局域网VLAN的实现机制
IEEE 802.1 帧
交换机的端口类型
- 交换机的端口类型有三种:
- Access
- Trunk
- Hybrid
Access
Access 端口一般用于连接用户计算机
Access 端口只能属于一个VLAN
Access 端口的PVID值与端口所属VLAN的ID相同(默认为 1 )
Access 端口的接收处理方法:
一般只接受
未打标签
的普通以太网MAC帧。根据帧的端口的PVID给帧打标签
,及插入四字节的 VLAN标记字段,字段中的VID值与端口的PVID取值相等Access 端口发送处理方法:
若帧中的 VID 与端口的 PVID 相等,则
去标签
并转发该帧;否则不转发
Trunk
Trunk 端口一般用于交换机与交换机之间或交换机与路由器之间的互连
Trunk 端口可以属于多个VLAN
用户可以设置 Trunk 端口的 PVID 值,默认为 1
Trunk 端口 发送处理方法:
对 VID 等于 PVID 的帧,”去标签” 再转发
Trunk 端口 接收处理方法:
接收”未打标签的帧”,根据接收帧的端口 PVID 给帧
打标签
,及插入4字节 VLAN 标记,字段中 VID 取值与 端口的 PVID 取值相等
虚拟局域网VLAN概述
- 以太网交换机工作在数据链路层 (也包括物理层)
- 一个交换机互连起来的以太网,广播域非常大,尤其是随着互联网规模的扩大,巨大的广播域带来了很多弊端
- 广播风暴
- 难以维护和管理
- 潜在安全问题
- 广播域会浪费网络资源和各主机的 cpu 资源
分割广播域的方法
使用路由器
虚拟局域网
虚拟局域网是一种将局域网内的设备划分成
与物理位置无关
的逻辑组的技术,这些逻辑具有某些共同的需求
虚拟局域网VLAN的实现机制
IEEE 802.1 帧
交换机的端口类型
- 交换机的端口类型有三种:
- Access
- Trunk
- Hybrid
Access
Access 端口一般用于连接用户计算机
Access 端口只能属于一个VLAN
Access 端口的PVID值与端口所属VLAN的ID相同(默认为 1 )
Access 端口的接收处理方法:
一般只接受
未打标签
的普通以太网MAC帧。根据帧的端口的PVID给帧打标签
,及插入四字节的 VLAN标记字段,字段中的VID值与端口的PVID取值相等Access 端口发送处理方法:
若帧中的 VID 与端口的 PVID 相等,则
去标签
并转发该帧;否则不转发
Trunk
Trunk 端口一般用于交换机与交换机之间或交换机与路由器之间的互连
Trunk 端口可以属于多个VLAN
用户可以设置 Trunk 端口的 PVID 值,默认为 1
Trunk 端口 发送处理方法:
对 VID 等于 PVID 的帧,”去标签” 再转发
Trunk 端口 接收处理方法:
接收”未打标签的帧”,根据接收帧的端口 PVID 给帧
打标签
,及插入4字节 VLAN 标记,字段中 VID 取值与 端口的 PVID 取值相等