数据链路层
数据链路层是OSI模型中的第二层,它位于物理层之上,是真正用于数据传输的逻辑通道
计算机网络-数据链路层
一、简介
1、概述
数据链路层是什么?
- 数据链路层是OSI模型中的第二层,它位于物理层之上,是真正用于数据传输的逻辑通道
- 例如:要在一条通信线路上传送数据,除了必须建立一条物理线路(物理层的功能)之外,还必须有一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。
- 实现这些规程或协议的硬件和软件加上物理线路就构成了数据链路层。
数据链路层的功能/作用是什么?
- 在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向网络层提供高质量的服务。
- 就像我们乘坐高铁/火车,我们买票、进站、乘车、出站都要经历铁路部门的规则
- 买票-流量控制
- 进站出站检测、上车前后验票 - 差错检测
- 数据链路层就是保证我们传输的数据能有序的、进出站,最终使这条数据通信之“路”发挥它本来的作用。
解决问题:
通过数据链路层解析物理层发出去的信号怎么样选择、如何到达目的地
比特流的分界线
链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点
数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路
数据链路层以帧为单位传输和处理数据
2、组成结构
在数据链路层中,通常由两个子层组成:
- 介质访问控制子层(Media Access Control, MAC):
- 物理层相邻的是MAC子层,为LLC子层服务
- 与各种传输介质访问有关的问题都放在“MAC子层”来解决。其主要功能包括:数据帧的封装/卸装,帧的寻址和识别(通过MAC地址进行的),帧的接收与发送,帧的差错控制、介质访问冲突控制等。
- 逻辑链路控制子层(Logical Link Control, LLC):
- 网络层相邻的是LLC子层,而LLC子层则是接受MAC子层服务,为网络层服务
- 数据链路层中与传输介质访问无关的问题都集中在LLC子层来解决,为网络层提供服务。其主要功能包括逻辑链路的建立和释放、提供与网络层的接口(也就是前面说到的SAP)、数据传输差错控制、给数据帧加上传输序列号等。
- 由于网络层上可能有许多种通信协议同时存在,而且每一种通信协议又可能同时与多个对象沟通,因此当LLC子层从MAC子层收到一个数据包时必须能够判断要送给网络层的是哪一个通信协议。为了达到这种功能,在LLC子层中提供了“数据链路层”的SAP,作为与“网络层”通信交互的接口
逻辑链路控制子层提供了抽象和服务,而介质访问控制子层则管理实际的物理传输。这种层级结构使得数据链路层能够适应不同类型的物理介质和网络拓扑。
2、分类
数据链路层主要分为两类:
1、点对点的数据链路层:核心问题 - 封装成帧、差错检测、可靠传输
- 两个相邻节点的通过链路连接,没有第三者
- 应用:PPP协议,常用于广域网
2、使用广播信道的数据链路层:确定目的主机问题、碰撞问题
- 所有主机共享通信介质
- 应用:早期以太网、局域网
- 拓扑结构:星型(逻辑总线型)、总线型
二、数据链路层的功能
1、数据链路管理
什么是数据链路管理?
在数据链路层中要形成一条更有利于数据传输的数据链路,而不是直接利用下面物理层中建立的物理链路,因为下面物理层中建立的物理链路有着很多传输介质的差异:
数据链路是由数据链路层中的LLC子层通过相应的通信规程(也就是通常所说的协议)建立并管理的。
主要过程包括:链路建立、链路保持、链路释放
不同协议建立的数据链路,提供的服务类型也不同。
数据链路层的提供的服务类型:
(a)有确认的面向连接服务
- 提供服务时,必须先建立好双方通信连接;
- 提供服务时,必须要求对方确认后才进行。
- 独占链路,只有在当前数据传输完成,释放了链路后,其他用户才可能与同一个接收端进行数据传输
这种服务类型存在三个阶段,即数据链路建立、数据传输、数据链路释放
就像我们打电话,我们打电话给某个人时,首先就是要拿起电话拨号(相当于建立连接的过程),然后对方拿起电话,问一下看是不是打错了(这就是一个确认
过程)。确认不是打错的电话后,双方 开始通话。
(b)有确认的无连接服务
- 不需要建立专门的数据链路
- 接收端在接收到的每一个数据帧时都向发送端确认
事实上是因为这类服务所用的数据链路已建立起来,而且是永久存在的,所以不用另外建立,如局域网中的链路,就像寄快递,送快递的路线早就建立好了,我们只需要寄出去,等收件人确认就好了,不用关心快递运送的路线。
(c)无确认的无连接服务
- 不需要建立专门的数据链路
- 接收端在接收到的每一个数据帧时不需要向发送端确认
这种服务类型看似不可靠,但它是建立在可靠的通信线路基础之上的,所以数据传输仍然是非常可靠的,就像公司内部的专线网络VPN。
2、封装成帧和透明传输
(a)封装成帧功能的含义
在发送端,数据链路层是接收来自网络层的数据分组/数据包,是将来自网络层的数据分组封装成数据帧.
在接收端,数据链路层是接收来自物理层的比特流,将来自物理层的一个个比特流组装成数据帧.
封装成帧大多指:PPP帧、以太网MAC帧
- 🔺PPP帧、以太网MAC帧:
- MAC帧不需要帧定界符,在物理层发送前会添加前导码8个(前7个为时间同步码,后面1个字节为帧开始定界符)
- 🔺PPP帧、以太网MAC帧:
(b)数据包的帧封装原理
- 第一步:网络层的数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个数据帧。
- 第二步:在每个数据帧的前部加上一个帧头部,在帧的结尾处加上一个帧尾部,把数据帧作为帧的数据部分,就构成了一个完整帧。
- 其中帧有大小限制,不同网络类型下不同。
- 帧头和帧尾就是作为帧的起始和结束标志,也就是帧边界。
(c)比特流的帧组装原理
- 在发送端数据链路层中的帧到达物理层后就会以比特位为单位进行传输,发送端以比特位方式一位位地传输到接收端的物理层。
- 接收端的物理层把比特流向数据链路层传输,到达后又要将比特流封装成数据帧
- 核心问题 - 帧同步问题:使接收端的数据链路层对从物理层传输而来的一串串比特流以帧为单位进行区分,怎么区分不同帧之间的定界问题。
帧同步方法:
(Ⅰ)字节计数法
以一个特殊字符代表一个帧的起始,并以一个专门的字段来标识当前帧内字节数。接收端通过对该特殊字符的识别从比特流中区分出每个帧的起始,并根据字节数,判断帧的结尾
(Ⅱ)字符填充的首尾定界符法
- 用一些特定的控制字符来定界一个帧的起始与结束,如在帧的头部加上了两个SYN控制字符,用于标识该帧的开始,在结束位置加了ETX控制字符,用于标识该帧的结束。
- 如:BSC协议
(Ⅲ)比特填充的首尾定界符法
- 通过在帧头和帧尾各插入一个特定的比特串(如01111110)来标识一个数据帧的起始与结束。
- 如:SDLC、HDLC协议
(Ⅳ)违法编码法
- 在物理层采用特定的比特编码方法时采用。
- 例如,曼彻斯特编码方法,将数据
1
编码成高-低
电平对,将数据0
编码成低-高
电平对。而高-高
电平对和低-低
电平对在数据比特中是违法的,因此可以借用这些违法编码序列来定界帧的起始与终止。
(Ⅴ)PPP同步传输协议
面向字符传输,PPP帧结构如下
总共8个字节,帧头5个,帧尾3个。
标志(Flag)字段:值固定为01111110(
0x7E
),标志帧的起始或结束。协议(Protocol)字段:表示封装的是哪个网络层协议包表示PPP帧的定界符。
地址(Address)字段:值为
0xFF
,目前没有特定作用,保留字段。控制(Control)字段:值为
0x03
,也是保留字段,目前没有特定作用。协议(Protocol)字段:指明帧的数据部分送交哪个协议处理。例如:
0x0021
表示数据部分为1P数据报(IP数据报)。0xC021
表示数据部分为LCP分组。0x8021
表示数据部分为NCP分组。
FCS(帧检验序列)字段:CRC计算出的校验位,用于检测帧在传输过程中是否发生了错误。
(d)透明传输
因为在帧的有效数据当中,可能出现和帧定界的控制字符一样的字符,为了防止将这些字符当中帧定界的字符,错误的处理帧,所以我们采方法使得数据当中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符
- 对于面向字节/字符的链路
- 发送方:帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。
- 接收方:接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理
- 对于面向比特的链路
- 发送方:在发送前,对帧的数据部分进行扫描,每5个连续的比特1后就插入1个比特0,防止其与首部尾部的标志位混淆(零比特填充法)。
- 接收方接收时将每5个连续的比特1后面的0剔除即可
3、差错检测
封装成帧
功能解决了帧同步问题,也就是接收端可以区分每个数据帧的起始和结束了,但是还没有解决数据正确传输的两方面问题。
- 如果有帧出现了错误怎么办?—> 差错检测
- 如果有帧丢失了怎么办?—> 可靠传输
(Ⅰ)奇偶校验码
奇偶校验码(PCC):根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验的。
实现:
- 发送端:在待发送的传输的二进制代码最后专门设置1个奇偶校验位,用它控制这组代码中1的个数为奇数或偶数(具体是偶数还是奇数,要视所采用的是偶校验还是奇校验)
- 接收端:看里面的“1”的个数是否仍与原来一样的奇数或偶数,来确定数据传输的正确性。
问题:
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)
- 所以奇偶校验方法只可以用来检查单个码元错误,检错能力较差,所以一般只用于本身误码率较低的环境
(Ⅱ)循环冗余校验
循环冗余校验(CRC):根据帧内的FCS来进行校验的。
- 实现:
- 收发双方:约定好一个生成多项式
G(x)
= 用来作为除数的二进制比特串(或多项式) - 发送方:
- 基于待发送的数据(原始帧)和生成多项式(上面选定的除)进行计算(二进制除法运算)得到差错检测码【冗余码FCS】
- 将其添加到待传输数据的后面一起传输
- 接收方:通过生成多项式(上面选定的除) 和【冗余码FCS】来计算收到的数据是否产生了误码
- 假设比特串为n位,那么在原始帧后面加上n-1个0,并用二进制除法除以该比特串,最后的余数就是FCS校验码,将FCS校验码放在原始帧最后,接收端拿到数据后,用二进制除法除以比特串,若余数为0,则没有差错,反之有差错。
- 收发双方:约定好一个生成多项式
4、可靠传输
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输:想办法实现发送端发送什么,接收端就收到什么,可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输,是否使用可靠传输取决于应用需求。
(Ⅰ)停止-等待协议/自动请求重传
停止-等待协议SW(自动请求重传ARQ):
实现原理:发送方每发送一个数据分组后,就停止发送下一个数据分组,等待接收方的确认分组或否认分组,若收到确认分组,则继续发送下一个分组,若收到否认分组,则重复之前发送的那个数据分组。
存在的问题:数据分组丢失、确认分组丢失、确认分组超时
- 数据分组丢失的情况:超时重传
- 确认分组丢失、确认分组超时的情况:数据分组、确认分组进行编号,防止重复发送、重复确认
总结:
- 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
- 使用卫星链路及重传时,信道利用率较低。
(Ⅱ)回退N帧协议
回退N帧协议 (Go-Back-N) :
回退N帧协议是一种滑动窗口协议,用于实现可靠的数据传输。它允许发送方连续发送多个分组,而不必等待确认,接收方按序接收分组。
- 实现原理:
发送方窗口:发送方可以连续发送多个分组,窗口的大小为N。
接收方窗口:接收方窗口大小为1,只能按序接收分组。
确认分组:接收方只能发送最后一个正确接收的分组的确认,其他分组的确认将被丢弃。
超时重传:发送方设置定时器,超时后会重新发送窗口内的所有分组。
- 整个工作流程:
- 发送方连续发送窗口内的分组。
- 接收方按序接收分组,发送确认。
- 如果接收方检测到分组失序,则丢弃后续分组,直到接收到正确的分组为止。
- 发送方根据接收到的确认信息移动发送窗口。
- 如果发送方未收到确认,或者收到了错误的确认,则超时重传窗口内的所有分组或者重传末尾帧确认后开始。
- 总结:回退N帧协议是一种常用的滑动窗口协议,适用于许多实时性要求不高,但需要高可靠性的网络通信场景。
- 适用于具有较高信道质量的网络环境,且丢包率较低的情况,充分利用了网络带宽,发送方可以连续发送多个分组。
- 如果丢失一个分组,会导致窗口内的所有分组都需要重传,可能会浪费带宽。
(Ⅲ)选择重传协议
选择重传协议 (Selective Repeat, SR) :
是一种滑动窗口协议,用于实现可靠的数据传输。它允许发送方连续发送多个分组,接收方可以选择性地确认分组,同时允许接收方接收乱序的分组。
实现原理:
发送方窗口:发送方可以连续发送多个分组,窗口的大小为N。
接收方窗口:接收方窗口大小为N,可以接收窗口内的分组。
确认分组:接收方可以选择性地确认分组,只会确认已经正确接收的分组。
超时重传:发送方为每个分组设置独立的定时器,超时后会重新发送相应的分组。
整个工作流程:
- 发送方连续发送窗口内的分组。
- 接收方按序接收分组,发送确认。
- 接收方可以选择性地确认分组,如果接收到的分组有误,则丢弃并不会发送确认。
- 发送方根据接收到的确认信息移动发送窗口。
- 如果发送方未收到确认,或者收到了错误的确认,则超时重传相应的分组。
总结:适用于具有一定信道质量的网络环境,可以容忍一定程度的丢包情况。
充分利用了网络带宽,发送方可以连续发送多个分组。
允许接收方接收乱序的分组,提高了网络利用率。
发送方和接收方都需要维护更复杂的状态信息。
5、流量控制
流量控制并不是数据链路层所特有的功能,许多高层协议中也提供流量控功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说控制的是相邻两节点之间数据链路上的流量,而对于传输层来说控制的是从源到最终目的端之间的流量。
流量控制:对发送端数据传输速率的控制,使其数据发送速率不超过接收端所能承受的数据接收能力。
- 发送端的数据发送速度与接收端的数据接收速度要匹配,否则接收端来不及接收就会造成数据在传输过程中的丢失。
- 发送端的数据发送速度要与线路上的承载速率(与线路信道带宽有关)相匹配,否则也会造成数据在传输过程中的丢失
是考虑到在接收端还需要对来自物理层的比特流进行一系列的处理,如帧封装,向发送端发送返回确认帧等,所以通常是要使发送端的发送速率略小于接收端的数据处理能力。
流量控制实现方法
(Ⅰ)基于反馈的流量控制方案
差错控制中的“自动重发请求”就是基于反馈的流量控制。
XON/XOFF(继续/停止):
- 接收端认为不能继续接收数据时(也就是接收端的缓存空间满了或者接近满时),接收端会向发送端发送一个XOFF控制字符
- 当发送端收到对应的XOFF控制字符时就停止数据的继续发送;
- 当接收端可以继续接收数据时,接收端会再向发送端发送一个XON控制字符
- 发送端收到这个控制字符后就知道可以恢复数据发送了,继续发送数据,一直这么循环下去。
(Ⅱ)基于速率的流量控制方案
基于窗口滑动机制的速率控制方,差错控制中的回退N帧协议和选择重传协议就是基于速率的流量控制
收发双方维持收发窗口N:
假设发送端缓存空间大小为3个帧,那么发送端连着发了3个帧后,缓存空间满了,就要停止,等待接收端的确认,当发送端收到接收端对前两个帧的确认后,发送端将前两个帧从缓存空间中删去,再发送两个帧,此时缓存空间又满了,又要等待确认.....如此循环下去。
三、介质访问控制
1、概述
介质访问控制子层(MAC子层):
- 是局域网体系结构中划分的子层,对于广播型网络(如以太局域网、WLAN)是非常重要的,因为它担负了两方面的主要职责:
- 解决如何在局域网内寻址(也就是找到目的节点)
- 解决如何在多路通信中介质争用的现象。
由于数据链路层主要分为两类:点对点的数据链路层、使用广播信道的数据链路层
不同节点之间通过介质(信道)进行访问,在广播信道中所有主机共享通信介质,这就引发了一个共享信道争用的问题。而介质访问控制就是采取一定的措施,使两对节点之间的通信不会发生互相干扰,主要分为分为两种:
静态划分信道
- 信道划分介质访问控制:频分多路复用、时分多路复用、波分多路复用、码分多路复用
- 多路复用:将多个信号组合在一个信道上进行传输,到目的后再分离为多个信号,本质上是将广播信号变为多个点对点链路
- 信道划分介质访问控制:频分多路复用、时分多路复用、波分多路复用、码分多路复用
动态划分信道
- 随机访问介质控制:随机介入控制协议(
CMSA/CD
、CMSA/CA
等) - 轮询访问介质控制:轮询协议、令牌传递协议
- 我们把:如何协调多个发送和接收站点对一个共享传输媒体的占用的问题成为媒体接入控制MAC(Medium Access Control)
- 随机访问介质控制:随机介入控制协议(
2、信道划分介质控制
(1)静态划分信道
(Ⅰ)频分多路复用(FDM)
各个用户分配不同的频带,之后始终使用相同的频带进行通信。
不同的用户在同样的时间占用不同的带宽(模拟信号角度的带宽)
- 系统效率较高
- 实现简单
(Ⅱ)时分多路复用(TDM)
将时间划分为等长的时分复用帧,每一帧划分为若干时隙。
每一个用户在一个TDM帧中占用固定序号的时隙。
改进:统计时分复用(STDM)
- 使用集中器收集各个用户的数据,并按照先后顺序存入自己的缓存,之后按照先后顺序填充STDM帧,帧满即发送出去。
- STDM帧大小小于连接在集中器上的用户数。
(Ⅲ)波分多路复用(WDM)
- 介质为光纤,原理类似于光的频分多路复用。
(Ⅳ)码分多路复用(CDM)
码分多址(CDMA):将一个比特位用一组特定的码片发送,每一个用户拥有唯一的码片,用不同的码来区分不同的用户信号,允许同时传输多个信号。
- 码片直接发送代表1,反码发送代表0。
- 对于各个用户的码片,要求其规格化内积等于0,且其自身的内积为1
复用与多址的区别:
复用:是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
多址:(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)
(2)动态划分信道
(Ⅰ)随机访问介质控制
在随机接入中,所有站点通过竞争随机地在信道上发送数据,发送信息时占用全部带宽。
- 如果恰巧有两个或更多的站点在同一时刻发送数据,则会发生碰撞(即冲突)。在发生冲突后,这些站点的发送都会失败。因此,这类协议需要解决如何尽量避免冲突以及在发生冲突后如何尽快恢复通信。
CMSA/CD协议:载波监听多址接入/碰撞检测 - 早期的双绞线,以太网,广播信道的有线局域网
多个站点连接在一条总线上,竞争使用总线进行通信。
每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧
- 如果检测到总线空闲,就立即发送帧。
- 若检测到总线忙,则继续检测并等待总线转为空闲。
一旦发送帧,站点会边发送边监听总线,以检测是否发生碰撞。
- 若发现碰撞,立即停止发送,然后进行退避(等待一段随机时间)后再次尝试发送。
如果发送成功,站点等待总线转为空闲96比特时间后,再发送下一个帧。
以太网规定:
最小帧长为64字节,即512比特(512比特时间即为争用期)
最大帧长为1518-mac帧,vlan帧-1522
如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节,以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞。
CMSA/CA协议:载波监听多址接入/碰撞避免 - 广播信道的无线局域网
- 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能
- 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收
- 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免碰撞
在无线局域网中,不能使用碰撞检测CD,原因如下:
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求特别高。
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站的问题-不相交),进行碰撞检测的意义也不大。
802.11的MAC层标准定义了两种不同的媒体接入控制方式:
- 分布式协调功能DCF:在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式
- 点协调功能PCF:PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用
名词拓展:
IFS
:802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔SIF
:这是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。
使用SIFS的帧类型由ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧
DIFS
:它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧信道预约:RTS、CTS
衍生问题:
①为什么源站检测到信道空闲后,还需要等待DIFS时间才将帧发送呢?
因为其他站此时可能有优先级更高的帧需要发送,因此有DIFS时间进行缓冲,若这个时间内没有高优先级的帧要发送,则说明信道是真正的空闲
②为什么目的站接收到帧后还需要等到SIFS时间才返回ACK确认帧呢?
SIFS是最短的帧间间隔,用来分割一次对话的各帧,在这个时间里由接收状态转变为发送状态
③当其他站要发送数据,但是发现此时信道正忙时就会退避一段时间,等信道不忙后再进行操作,接着等待DIFS时间(与①同理),但为什么等待了DIFS时间后还要退避一段随机时间呢?
因为可能有多个站点在信道忙时都想发送帧,因此它们都会被搁置直至信道不忙,在DIFS时间后他们会同时发送,而实际上多个站点同时发送数据会碰撞。因此需要一个随机时间将他们进行错峰发送。
(Ⅱ)轮询访问介质控制
轮询访问:用户在发送数据前需要等待授权
轮询协议:主结点轮流“邀请”从属结点发送数据。
一个中心节点负责协调和控制所有用户的访问,一个主节点以循环方式轮询每个站点,询问是否有数据要发送,只有被轮询到的站点才能发送数据。最大的缺点是可能存在单点故障问题,因为所有通信依赖于主站的正常运行。
缺点:
单点故障(主节点故障则整个网络瘫痪),因为所有通信依赖于主站的正常运行
轮询开销
等待延时
令牌传递协议:
控制由多个节点分散执行,每个节点在特定条件下可以自由接入,通过令牌传递,所有站点被连接成一个环形网络。
- 一个特殊的控制锁(令牌)沿着环(网络)逐站传递。
- 只有接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。
- 修改标志位,将令牌占用
- 将数据附加在令牌后,形成数据帧
- 再将令牌发送出去
- 令牌继续循环
- 目标主机将数据部分复制副本
- 非目标主机直接传走
- 令牌再次回到发送主机
- 进行校验,若数据出错则再次发送
- 将数据移除,标志位复位,继续传送令牌
- 这种方法可以避免冲突,但如果令牌丢失或损坏,可能会导致通信中断。
- 缺点:
- 每一个主机能占用令牌的时间是有限的,没有传递完则需要等待下一轮循环到自己再继续发送
- 等待延迟
- 单点故障(一个节点故障则循环不能继续)
四、局域网
1、概述
局域网(Local Area Network),简称LAN,是指在一个较小的地理范围(如所学校)内,将各种计算机、终端与外部设备等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。
(1)主要特点
1、为一个单位所拥有,且地理范围和站点数目均有限。
2、所有站点共享较高的总带宽(即较高的数据传输速率)。
3、较低的时延和较低的误码率。
4、各站为平等关系而非主从关系。
5、能进行广播和组播。
(2)三个要素
局域网的特性主要由三个要素决定:拓扑结构、传输介质、介质访问控制方式,其中最重要的是介质访问控制方式,它决定着局域网的技术特性。
(3)常见的局域网拓扑结构
主要有以下4大类: ①星形结构;②环形结构;③总线形结构;④星形和总线形结合的复合型结构。
- 局域网可以使用双绞线、铜缆和光纤等多种传输介质,其中双绞线为主流传输介质。
- 局域网的介质访问控制方法主要有CSMA/CD、令牌总线和令牌环,其中前两种方法主要用于总线形局域网,令牌 环主要用于环形局域网。
- 三种特殊的局域网拓扑实现如下:
- 以太网(目前使用范围最广的局域网)。
- 逻辑拓扑是总线形结构,物理拓扑是星形或拓展星形结构。
- 令牌环(Token Ring,IEEE 802.5),不用了。逻辑拓扑是环形结构,物理拓扑是星形结构。
- FDDI(光纤分布数字接口,IEEE 802.8)。逻辑拓扑是环形结构,物理拓扑是双环结构。
- WLAN(采用IEEE 802.11标准):无线局域网
- IEEE 802标准定义的局域网参考模型只对应于OSI参考模型的数据链路层和物理层,并将数据链路层拆分为两个子层:逻辑链路控制(LLC)子层和媒体接入控制(MAC)子层。
- 与接入传输媒体有关的内容都放在MAC子层:它向上层屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,主要功能包括: 组帧和拆卸帧、比特传输差错检测、 透明传输。
- LLC子层:与传输媒体无关,它向网络层提供无确认无连接、面向连接、带确认无连接、高速传送4种不同的连接服务类型。
- 由于以太网在局域网市场中取得垄断地位,几乎成为局域网的代名词,而802委员会制定的LLC子层作用已经不大,因此现在许多网卡仅装有MAC协议而没有LLC协议。
- 以太网(目前使用范围最广的局域网)。
2、虚拟局域网
虚拟局域网又称VLAN,由于传统的局域网缺乏流量隔离:广播流量会跨越整个机构网络(ARP、RIP、DHCP协议)一个单位的不同部门共享一个局域网,对安全不利,所以引入了VLAN。
传统局域网带来的问题:
广播风暴:大量广播消息可能导致网络拥塞。
难以管理和维护:管理一个庞大的广播域会变得复杂。
潜在的安全问题:所有设备处于同一个广播域,可能会有安全隐患。
频繁的广播信息:TCP/IP协议栈中的许多协议都会使用广播,例如ARP、RIP、DHCP等。
VLAN原理:
- 将局域网内的设备划分成与物理位置无关的逻辑组的技术,VLAN是通过软件的方式实现的,因此节点的位置不受物理位置的限制
- 每个VLAN是一个单独的广播域/不同的子网
- 实现
- 基于端口:交换机中除了转发表,还存在一张VLAN表,记录了各个端口号和它对应的VLAN号
- 基于MAC地址:VALN表中记录的是各个MAC地址和它对应的VLAN号
- 基于IP地址:可以进行跨路由器扩展
- 不同组的VLAN之间通过将帧上附加相应的VLAN标签进行通信:
交换机端口是VLAN的另一种实现方式,它通过在交换机上配置端口的成员关系来实现VLAN的划分和隔离。
- Access Port:配置为特定VLAN,只能属于一个VLAN,用于连接终端设备。
- Trunk Port:可以传送多个VLAN的数据帧,通常用于连接交换机之间或交换机与路由器之间的链路。
- Hybrid Port:既可以属于一个VLAN,也可以传送多个VLAN的数据帧。
交换机各端口的缺省VLAN ID:
- 在思科交换机上称为Native VLAN,即本征VLAN。
- 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。
Access Port:
Access端口的基本特性和工作原理:
Access端口通常用于连接用户计算机或其他终端设备。
Access端口只能属于一个VLAN。这意味着它会将连接到该端口的所有帧都归属于同一个VLAN。
PVID(Port VLAN ID) 值是与端口所属VLAN的VID相同。默认情况下,PVID为1。
Access端口接收并处理“未打标签”的普通以太网MAC帧。如果一个帧来自一个Access端口,并且它没有VLAN标签,交换机会根据该端口的PVID为该帧打上相应的VLAN标签。
Access端口发送处理方法:如果帧中的VID与端口的PVID相等,交换机会将VLAN标签移除并将帧转发;否则,它将不会转发该帧。
Trunk Port:
Trunk端口的基本特性和工作原理:
- Trunk端口一般用于交换机之间或交换机与路由器之间的互连。
- Trunk端口可以属于多个VLAN。
- 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1。
- Trunk端口发送处理方法:
- 对于VID等于PVID的帧,“去标签”再转发;
- 对于VID不等于PVID的帧,直接转发。
- Trunk端口接收处理方法:接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
!!!互连的Trunk端口的PVlD值不等,可能会造成转发错误
Hybrid Port:
Hybrid端口的基本特性和工作原理:
Hybrid端口既可用于交换机之间或交换机与路由器之间的互连(与Trunk端口相似),也可用于交换机与用户计算机之间的互连(与Access端口相似)。
Hybrid端口可以属于多个VLAN(与Trunk端口相似)。
用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1(与Trunk端口相似)。
Hybrid端口发送处理方法(与Trunk端口不同):
查看帧的VID是否在端口的去标签列表中:
若存在,则“去标签”后再转发;
若不存在,则直接转发。
Hybrid端口接收处理方法(与Trunk端口相似):
- 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
- 接收“已打标签的帧”。
五、广域网
1、概述
是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网的通信子网主要使用分组交换技术。
广域网(Wide Area Network,WAN)通常是指覆盖范围很广(远超一个城市的范围)的长距离网络,又称外网、公网
- 是因特网的核心部分,其任务是长距离运送主机所发送的数据。
- 连接广域网各结点交换机的链路都是高速链路,它可以是长达几千千米的光缆线路,也可以是长达几万千米的点对点卫星链路。
- 因此广域网首要考虑的问题是通信容量必须足够大,以便支持日益增长的通信量。
- 广域网不等于互联网,互联网可以连接不同类型的网络(既可以连接局域网,又可以连接广域网),通常使用路由器来连接,广域网的通信子网主要使用分组交换技术。
- 结点交换机和路由器都用来转发分组,它们的工作原理也类似。
- 结点交换机在单个网络中转发分组,功能是将分组存储并转发
- 路由器在多个网络构成的互联网中转发分组,功能是将分组存储并转发
- 结点交换机和路由器都用来转发分组,它们的工作原理也类似。
2、广域网与局域网的比较
广域网 | 局域网 | |
---|---|---|
覆盖范围 | 范围很广,用于跨区域网络 | 范围较小,通常位于一个区域 |
连接方式 | 结点之间都是点到点连接,但为了提高网络的可靠性,一个结点 交换机往往与多个结点交换机相连 | 基本都采用多点接入技术 |
OSI模型层次 | 物理层、数据链路层、网络层 | 物理层、数据链路层、 |
相同点 | 都是互联网的重要组成构件,从互联网的角度上看,二者平等(不是包含关系) | 连接到一个广域网或一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址 |
主要侧重点 | 资源共享 | 数据传输 |
- 广域网中的一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的。
- 常见的两种广域网数据链路层协议是 PPP 协议和 HDLC 协议。
六、MAC地址、IP地址、ARP协议
1、MAC地址
(1)概念
- MAC地址位于数据链路层,也被称为硬件地址(物理地址),用于媒体接入控制 MAC,用于多个主机连接在同一个广播信道上,实现两个主机之间的通信
- 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器 (无线网卡)。
- 每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以 会拥有更多的MAC地址。
- MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识
- 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器 (无线网卡)。
(2)组成
IEEE 802 局域网中的MAC地址:
组成:由6个字节组成,共48位,通常以十六进制表示
组合:MAC地址有2^48
个可能的组合,这是一个非常大的数字,约等于2.81 x 10^14
,也就是280万亿
。
前24位是由IEEE注册管理机构分配的组织唯一标识符(OU)
后24位是由获得该组织唯一标识符的厂商自行随意分配的网络接口标识符。
第一个字节的最高位(b1)用于指示地址的全球管理或本地管理。
- b1 = 0 表示全球管理。
- b1 = 1 表示本地管理。
第一个字节的次高位(b0)用于指示单播还是多播地址。
- b0 = 0 表示单播地址。
- b0 = 1 表示多播地址。
单播、多播和广播MAC地址是用于在以太网网络中标识设备的特殊地址类型:
单播(Unicast)MAC地址:一对一通信方式
- 单播地址是用于将数据从一个发送者传递到一个特定的接收者的地址。
- 当设备发送数据帧时,目的地址部分包含的是接收者的MAC地址。
- 这意味着只有目标设备会接收到这个数据帧。
多播(Multicast)MAC地址:针对特定组的设备的一对多通信方式
多播地址是用于将数据从一个发送者传递到一组特定的接收者的地址。
在MAC地址中,多播地址是一种特殊的地址,用于指示数据应传递给特定组中的设备。
多播地址的范围是在特定的范围内,而不是针对单个设备。
多播通信是一对多的通信方式,但只针对加入了特定多播组的设备。
b0是位是1则为多播地址。
广播(Broadcast)MAC地址:一对所有通信方式
广播地址是用于将数据从一个发送者传递到同一广播信道上的所有设备的地址。
广播地址是一个特殊的地址,通常被用于向整个网络发送信息,以便所有设备都能接收到。
广播是一种一对所有的通信方式。
2、IP地址
IP地址是TCP/IP体系结构的网际层所使用的的地址
- IP地址是Internet上的主机和路由器所使用的的地址,由两部分信息构成
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器各接口)
- MAC地址不具备区分不同网络的功能,而IP地址可以通过网络号做到
如果只是一个单独网络,不接入因特网,则使用MAC地址就足够了(这不是一般用户的应用方式),如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用
数据包转发过程中IP地址与MAC地址变换情况:
- 数据报转发过程中源IP地址和目的IP地址保持不变
- 数据包转发过程中源MAC地址和目的MAC地址(由ARP协议获得)逐个链路改变
3、ARP协议
地址解析协议ARP属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址,ARP协议只能在一段链路或一个网络上使用,不能全链路,只能跨链路
数据的发送需要经过链路,仅仅知道IP地址是无法在数据链路层实现传输的,因此我们需要得到IP地址与MAC地址的对应关系,即地址解析。
- 每台主机都会有一个ARP高速缓存表,记录有IP地址与MAC地址的对应关系
- 初始ARP高速缓存表为空,假设此时B知道C的IP地址,准备发送信息,但是由于不知道C的MAC地址,因此无法封装数据帧,所以此时会广播一个ARP请求报文(封装在MAC帧中,目的地址为广播地址FF-FF-FF-FF-FF-FF),
- 内容如下:
- 我的IP地址是:xxx ;我的MAC地址是:XXX;我想知道C主机的MAC地址是多少?这个广播帧会被该广播域的所有主机收到
- A主机收到后交由上层处理,发现B问的不是他,所以不予理会,C收到后交由上层处理,发现这个IP地址正是自己,因此首先将B的MAC地址和IP地址的对应关系记录到自己的高速缓存表中,接着返回给ARP响应报文(封装在MAC帧中,目的地址为B的MAC地址),其中包含自己的MAC地址
- 内容如下:
ARP高速缓存条目有静态与动态两种类型
- 动态:代表是通过广播自动获取的条目,生命周期默认为两分钟
- 静态:是手工设置的条目,不同操作系统下的生命周期不同。
六、常见设备
集线器、网桥、交换机
1、集线器
集线器HUB的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
- 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议
- 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站网卡检测)
- 集线器一般都有少量的容错能力和网络管理功能。
- 例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作
- 集线器是半双工模式,收发不能同时进行,收到帧后会广播到除本身接口外的各个接口。
2、网桥
网桥介绍:
- 网桥是两端口二层网络设备,用来连接不同网段的计算机网络设备,同时它又可隔离冲突域,因为它的两个端口不是共享一条背板总线(分别有一条独立的交换信道),比当时的集线器(Hub)性能更好(集线器上各端口都是共享同一条背板总线的)。
- 网桥除了可以扩展网络的物理连接范围外,还可以对MAC地址进行分区。但因为网桥只有两个端口,故一般两个端口都是连接集线器,每个物理网段的主机都连接到各自的集线器上。
后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。
3、交换机
(1)概述
交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路
- 以太网交换机通常由多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。
- 一般都工作在全双工方式
- 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)
- 以太网交换机一般都具有多种速率的接口
- 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧
- 以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
- 交换机每个接口是一个独立的碰撞域
帧的两种转发方式:
- 存储转发
- 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查是否有差错)
(2)自学习和转发帧流程
以太网交换机收到帧后,会在帧交换表中查找帧的目的MAC地址对应的接口号,然后通过该接口转发帧。
以太网交换机是即插即用设备,刚上电启动时,内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法逐渐建立起帧交换表。
自学习和转发帧的流程:
收到帧后进行登记,登记的内容包括帧的源MAC地址及进入交换机的接口号。
根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,分为以下三种情况:
明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播、多播或广播)。
盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
明确丢弃:交换机知道不应该转发该帧,将其丢弃。
帧交换表中的每条记录都有自己的有效时间,到期会被删除。这是因为可能发生以下情况:
交换机的接口改接了另一台主机。
主机更换了网卡。
这个过程使得以太网交换机能够动态地学习网络中各设备的MAC地址,并根据这些学习到的信息,选择性地将数据帧转发到特定的接口,提高了网络的性能和效率。
(3)STP生成树协议
STP(Spanning Tree Protocol,生成树协议)是用于在以太网交换网络中防止环路的协议。它是一种链路层协议,可以确保在具有多个交换机的网络中,只有一条活动路径。
以下是关于STP的一些基本信息:
作用:防止网络中的环路,保证网络拓扑是一个树形结构,从而避免数据包在网络中无限循环。
选择根桥:
STP使用Bridge ID(桥标识)来选择网络中的根桥,Bridge ID由优先级和MAC地址组成,优先级越低越优先。
选择根桥后,网络中的所有交换机会选择一条到根桥的最短路径作为活动路径。
选择根端口:每个交换机选择到根桥的最短路径,其中选择的端口称为根端口。
选择指定端口:对于每条链路,交换机中的一个端口会被选为指定端口,这是到达根桥的次短路径。
阻塞端口:为了防止环路,STP会将一些端口设为阻塞状态,暂时不参与转发数据。
定时机制:STP会定期发送BPDU(Bridge Protocol Data Unit)来保持拓扑信息的更新,以便在网络发生变化时适时调整。
快速收敛:当网络发生故障或拓扑变化时,STP可以快速重新计算生成树,以保证网络尽快恢复正常。
RSTP(Rapid Spanning Tree Protocol):是STP的改进版本,提供了更快的收敛时间和更强的稳定性。
STP是构建现代局域网的基础,它确保了网络拓扑的稳定性和可靠性。通过避免环路的产生,STP保证了数据在网络中的有效传输。