链路是从一个结点到相邻结点的一段物理线路
,数据链路则是在链路的基础上
增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)
。
主机、路由器
等实现数据链路层
。局域网中的主机、交换机
等实现数据链路层
。
从层次上来看数据的流动
数据链路层
观察帧的流动以帧为单位
进行数据传输(1)、数据链路层的信道
一对一的点对点方式
。一对多的通信方式
,因此必须要使用共享信道协议来协助这些主机的数据发送
。(2)、封装成帧
封装成帧 (framing): 就是数据链路层对上一层传输下来的数据的前后分别添加首部和尾部
,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界
。
(3)、差错检测
现象:在传输过程中可能会产生比特差错
:1 可能会变成 0, 而 0 也可能变成 1。
(4)、可靠传输
不可靠传输:如果接收方发现接收到的数据有误码
,就直接将其丢弃掉
。
可靠传输:发送方发送什么
,接受方就接受到什么
。
解决方案:将
帧的目的地址添加在帧中
一起传输。
在 有线(局域网)领域使用
点对点链路和链路层交换机
的交换式局域网取代了共享式局域网
。在无线局域网中仍然使用的是共享信道技术
。
(1)、封装成帧
1. 封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾
使之成为帧
。
2. 帧的发送过程
发送方的数据链路层
将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特,转换成电信号交给传输媒体
,那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
需要
帧头和帧尾来做帧定界
,帧头和帧尾中包含有重要的控制信息
。
3. 但比不是每一种数据链路层协议的帧都包含有帧定界标志
前导码解释:
使接收方的时钟同步
。因为
帧之间的间隔时间为96比特时间
,因此MAC帧不需要帧结束定界符。
(2)、透明传输
1. 基本概念
透明传输
是指数据链路层对上层交付的传输数据没有任何限制
,好像数据链路层不存在一样。
2. 存在的问题
帧界定标志也就是个特定数据值
,如果在上层交付的协议数据单元
中, 恰好也包含这个特定数值
,接收方就不能正确接收
。
如下图所示
解决方案
解决方法:面向字节
的物理链路使用字节填充 (byte stuffing)
或字符填充 (character stuffing)
,面向比特
的物理链路使用比特填充
的方法实现透明传输。
发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符“ESC”(其十六进制编码是1B)
。
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符
。
如果转义字符也出现在数据
当中,那么应在转义字符前面插入一个转义字符 ESC
。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
字符填充
比特填充
(3)、帧的长度说明
适当增大帧的数据部分的长度
。数据链路层协议都规定了帧的数据部分的长度上限
。即最大传送单元MTU。现象:在传输过程中可能会产生比特差错
:1 可能会变成 0, 而 0 也可能变成 1。
差错检测:使用差错检测码
来检测数据在传输过程中是否产生了比特错误
,是数据链路层所要解决的重要问题之一。
(1)、奇偶校验码
在待发送的数据添加一位奇偶检验位
。使得数据部分的“1”的个数
为奇数(奇校验)
或者偶数(偶校验)
。
如果奇数个位
发生误码,则奇偶性发生改变
,可以检测出误码
。
如果偶数个位
发生误码,则奇偶性未发生改变
,不可以检测出误码
。
(2)、CRC循环冗余校验码
约定好一个生成多项式
发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输的数据后面
。接收方
通过生成多项式来计算收到的数据
是否发生了误码。(3)、局限性
只能检测出帧在传输过程中出现了差错
,但并不能定位错误,因此无法纠正错误
。要想纠正传输中的错误
,可以使用冗余信息更多的纠错码进行前向纠错
。但纠错码的开销比较大,在计算机网络中很少使用。循环冗余校验码CRC有很好的检错能力
,虽然计算比较复杂,但非常易于使用硬件实现
,因此被广泛应用于数据链路层。循环冗余校验 CRC 是一种检错方法,而
帧校验序列 FCS
是添加在数据后面的冗余码
。
不可靠传输:如果接收方发现接收到的数据有误码
,就直接将其丢弃掉
。
可靠传输:发送方发送什么
,接受方就接受到什么
。
比特差错
只是传输差错中的一种。分组丢失
、分组失序
以及分组重复
。(1)、分组丢失
路由器输入队列快满
了,主动丢弃收到的分组
。
(2)、分组失序
数据并未按照发送顺序
依次到达接收端
(3)、分组重复
由于某些原因,有些
分组在网络中滞留
了,没有及时到达接收端,这可能会造成发送端对该分组的重发
留在网络的分组也到达了接收端,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端
,这就造成分组重复的传输差错。
维护可靠传输
的协议。
1. 协议解释
当发送方
发送一个数据分组
给接收方时,发送方就会停止发送下一个数据分组并且等待接受方的ACK确认分组
,如果接受方发现所接受的分组含有误码
的话,接收方会将其丢弃或者严重的话会发送NAK确认分组
。如果是将其丢弃
的话,当发送方的超时重传计时器的时间超过了超时重传时间
,发送方就会进行对该分组进行重新发送
。如果是接受到NAK确认分组或者ACK确认分组丢失
,发送方就会进行对该分组进行重新发送
。接受方和发送方都是只有一个窗口大小为1
的窗口。
图示说明
为了
防止分组重复
,我们需要对分组进行标号
。
2. 信道利用率
TD:是发送方发送数据分组所耗费的发送时延
RTT:是收发双方之间的往返时间
TA:是接收方发送确认分组所耗费的发送时延
3. 缺点
往返时间RTT大于数据帧发送时延
时,信道利用率极低
出现超时重传
,数据利用率还要降低
1. 协议解释
回退N帧协议是指
发送方有一个发送窗口,发送窗口的容量为0~7
,且分组被编号为0 ~ 7
,而接收方只有一个接受窗口
(窗口大小为1
)。发送方可以发送多个分组,但是接收窗口每次只能接受一个分组。当分组丢失或者分组发生误码。那么该分组之后的所有分组都需要重传
。
2. 无差错的情况
发送方
发送了多个分组,只有接收到了接收方的相应的ACK确认分组
时,该窗口才会向前移动
。而接受方可以对前面的所有分组进行挨个确认
,也可以进行累计确认
。累计确认就是对按序到达的分组的最后一个进行确认
即可。
3. 有差错的情况
如果发送方所发送的分组在
中途丢失
、分组中有误码被丢弃
或者确认分组丢失
,那么发送方就会超时重传
,并且该分组之后的所有分组也会被重传
。
4. 发送窗口大小说明
如果发送窗口的大小超过最大值
的话,会导致接收方无法辨认新旧数据分组
。
1. 协议解释
该协议中的
发送方的窗口可以发送多个数据分组(窗口大小为1 ~ 4)
,由于回退N帧协议的接收窗口大小为1
,所以当发生差错的时候需要进行回退操作进行重传
,效率就很低。而该协议中的接收窗口的大小(大于1小于等于发送窗口
,如果是1
的话,就相当于回退N帧协议
),而且接收方必须对接受的分组进行挨个确认
。无差错的情况
,发送方在接收到相应的确认分组
后会才会进行窗口的移动
,而有差错的情况
,发送方只会对相应的未接受到确认分组的分组进行重传
,不需要进行回退。
2. 无差错的情况
无差错的情况
,发送方在接收到相应的确认分组
后会才会进行窗口的移动
3. 有差错的情况
有差错的情况
,发送方只会对相应的未接受到确认分组的分组进行重传
,不需要进行回退。
4. 相关说明
1. 点对点协议PPP
数据链路层使用的一种协议
,它的特点是:简单;只检测差错,而不是纠正差错
;不使用序号
,也不进行流量控制
;可同时支持多种网络层协议
。
2. 主要链路层协议
PPPoE
是为宽带上网的主机使用的链路层协议。
主要字段:
4. 透明传输
透明传输的实现方式
在相关的字符前加上转义字符
发送方在五个连续的1后面加上0
接收方在将五个连续的1后面的0删除
5. 差错检测
接收方对接收到的有误码的数据分组直接丢弃
。
共享信道需要着重解决的问题是如何协调多个发送和接受站点对一个共享传输媒体的占用
,即媒体介入控制MAC。
1. 媒体介入控制
静态划分信道
动态接入控制
受控接入(被淘汰)
随机接入
(1)、频分复用
将整个带宽分为多份
,用户在分配到一定的频带
后,在通信过程中自始至终都占用这个频带
。
频分复用的所有用户在同样的时间占用不同的带宽资源
(请注意,这里的“带宽”
是频率带宽
而不是数据的发送速率)。
(2)、时分复用
时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)
。每一个时分复用的用户在每一个 TDM 帧
中占用固定序号的时隙
。
每一个用户所占用的时隙是周期性地出现
(其周期就是TDM帧的长度)的。
TDM 信号
也称为等时 (isochronous) 信号
。
时分复用的所有用户在不同的时间占用同样的频带宽度
。
时分复用可能会造成线路资源的浪费
,使得用户对分配到的子信道的利用率一般是不高的
。
(3)、统计时分复用
(4)、波分复用
(5)、码分复用
常用的名词是码分多址 CDMA (Code Division Multiple Access)。
各用户使用经过特殊挑选的不同码型
,因此彼此不会造成干扰。
这种系统发送的信号有很强的抗干扰能力
,其频谱类似于白噪声,不易被敌人发现。
(1)、协议的工作原理
许多主机以多点接入的方式连接在一根总线上
。发送数据之前
先要检测一下总线上是否有其他计算机在发送数据
,如果有,则暂时不要发送数据,以免发生碰撞。出现了碰撞
,就要立即停止发送
,免得继续浪费网络资源,然后等待一段随机时间后再次发送
。总的工作原理图
发送过程
接受过程
(2)、争用期
发送的主机
最多经过以太网的端到端的往返的传播时间2t就可以检测到碰撞
,所以该时间被称为争用期
。
(3)、最小帧长
当一个主机
发送完毕后
,但中途发生了碰撞而发送方又发送完毕导致了该帧不能重传
,因此设置了最小帧长
为64字节
。在碰撞之前该帧还未发送完毕。因此凡是小于64字节的帧都是无效帧
。
(4)、最大帧长
帧的长度不能过大
,否则会导致总线一直处于忙碌状态
,而导致其他主机不能发送帧
。
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)
。
每个站在发送数据之后的一小段时间内
,存在着遭遇碰撞的可能性
。
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
。
现在的以太网
基于交换机和全双工连接
,不会有碰撞,因此没有必要使用CSMA/CS协议。
无线局域网
使用的协议。
(1)、协议工作原理
源站点在发现信道空闲时
再经过一个DIFS时间间隔
后发送第一个数据帧,然后目的站点接受到该数据帧后
经过一个SIFS
再进行发送确认帧
。如果其他站点发现信道繁忙就会使用退避算法进行退避
,当发现信道空闲并且经过了一个DIFS时间间隔后就会进行发送该帧
,然后其他站点检测到该信道繁忙
,就会冻结退避时间计时器
,然后再次等待到相应的空闲状态进行倒计时
。
图示说明
考虑到可能有其他的站有高优先级的帧要发送
。若有,就要让高优先级帧先发送
SIFS是最短的帧间间隔
,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式
。
防止多个站点同时发送数据而产生碰撞
。
(2)、信道预约和载波监听
数据帧较大,所以发生碰撞的概率较大,且产生的开销也大。而
RTS帧和CTS帧相对较小
,所以碰撞的概率较小
,且碰撞产生的开销也较小
,所以会首先进行信道预约
。
MAC地址是以太网的MAC子层所使用的地址
,属于数据链路层的范畴
,又称物理地址
或者硬件地址
。
点对点信道的数据链路层不需要使用地址
广播信道的数据链路层必须使用地址来区分各主机
发送的帧中必须携带标识发送主机和接受主机的地址
。由于这类地址是用于媒体接入控制MAC
,因此这类地址被称为MAC地址
。MAC地址是对网络上各接口的唯一标识
,而不是对网络上各设备的唯一标识
。(1)、单播
发送方会在将自己的MAC地址填入源地址,将所要接受的主机的MAC地址
填入目的地址
。接收方收到后会进行比对,如果和自己的MAC地址相同就进行接受
,如果不同就丢弃
。
(2)、广播
发送方在帧首部中的目的地址字段填入广播地址
,也就是十六进制的全F
,源地址字段填入自己的MAC地址
。
(3)、多播
IP地址是TCP/IP体系结构网际层所使用的地址
,属于网络层的范畴
。
IP地址是因特网上的主机和路由器所使用的地址
,用于标识两部分信息
标识
因特网上的数以百万计的网络
。标识
同一网络上不同主机(或路由器)
。相关说明:
一个单独的网络
,不接入因特网,可以只是使用MAC地址
要接入因特网
,则IP地址和MAC地址都需要。
(1)、数据包转发过程中IP地址与MAC地址的变化情况
源IP地址和目的IP地址保持不变
源MAC地址和目的MAC地址逐个链路(或逐个网络)改变
。(1)、相关说明
ARP协议属于TCP/IP体系结构的网际层
,其作用是已知设备所分配到的IP地址
,可以通过IP地址获取到该设备的MAC地址
。属于网络层范畴
。
(2)、协议的工作原理
源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址
,如果找到了
,则可以封装MAC帧进行发送
;如果找不到
,则发送ARP请求(封装到广播MAC帧中)
。目的主机收到ARP请求
后,将源主机的IP地址和MAC地址记录到自己的ARO高速缓存表中
,然后给源主机发送ARP响应(封装在单播MAC帧中)
,ARP响应中含有目的主机的IP地址和MAC地址。源主机收到ARP响应后,将目的主机的IP地址与MAC地址记录到自己的高速缓存表中
,然后就可以封装之前想发送的MAC并发送给目的主机。
(3)、ARP的作用范围
逐段网络或逐个网络使用
(1)、集线器
被集线器连接在一起的主机,如果一个主机发送单播帧
,那么会传送给该集线器上的其他各主机
。如果是发送广播帧
,那么会传送给该集线器上的其他各主机
。如果是多个主机一起发送帧会产生碰撞
。集线器扩大了广播域,也同时扩大了碰撞域。
(2)、交换机
交换机可以将多个较小的以太网连接成一个更大的以太网。
被交换机连接在一起的主机,如果一个主机发送单播帧
,那么会传送给相应的目的主机
。如果是发送广播帧
,那么会传送给该交换机的其他各主机
。交换机扩大了广播域,但隔离了碰撞域。
(3)、图示说明
假设以太网交换机的帧交换表为空,且各主机都知道其他主机的MAC地址,当有帧来交换机
时,交换机都会对该帧进行登记以完善此交换机的帧交换表
,此过程为以太网交换机的自学习的过程
。然后再查找该帧交换表进行帧发送
,如果帧交换表上没有相应的记录
就会进行盲目转发(泛洪)
。当相应的主机发来了响应帧,交换机同时会对其进行记录。 每条记录都有自己的有效时间,到期自动删除。 因为MAC地址与接口的映射关系不是永久性的
。
(1)、如何提高以太网的可靠性?
添加冗余链路。但会造成网络环路。
网络环路带来的问题
(2)、生成树协议(STP)
协议原理:
不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络
,其逻辑拓扑结构必须是树型的(无逻辑环路)
最终生成树的树型逻辑拓扑要确保整个网络连通
。
(1)、为什么要引入虚拟局域网VLAN?
数据链路层(也包括物理层)
一个或者多个以太网交换机互连起来的交换式以太网
,其所有站点属于一个广播域
。广播风暴、难以管理和维护、潜在的安全问题
。
路由器可以隔离广播域
,但是成本高。
(2)、虚拟局域网VLAN
概念
是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
每一个VLAN是一个广播域。
(3)、相关的实现机制
虚拟局域网VLAN技术是在交换机
上实现的,需要交换机能够实现以下功能
能够处理带有VLAN标记的帧
——IEEE 802.1 Q帧
交换机的各端口可以支持不同的端口类型
,不同端口类型的端口对帧的处理方式有所不同。
1.Access端口: 交换机与用户计算机之间的互连
2.Truck端口: 交换机之间或交换机与路由器之间的互连
3.Hybrid端口: 用于交换机之间或者交换机与路由器之间的互联,也可用于交换机与用户计算机之间的互连。