本章重要概念
- 链路是从一个节点到相邻节点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(协议的实现)。
- 数据链路层使用的信道主要有点对点信道和广播信道两种。
- 数据链路层的协议数据单元是帧。
- 数据链路层的三个基本问题:封装成帧、透明传输、差错检测。
- 循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
- 点对点协议PPP是数据链路层使用最多的一种协议,特点:简单、只检测差错,不纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议。
- PPPoE是为宽带上网的主机使用的链路层协议。
- 局域网的优点:具有广播功能,从一个站点可以很方便的访问全网,便于系统的扩展和逐渐演变,提高了系统的可靠性,可用性、生存性。
- 共享通信媒体资源的方法:静态划分信道(复用技术),动态媒体接入控制,又称为多点接入(随机接入或受控接入)
- 计算机与外界局域网的通信要通过网络适配器,又称为网络接口卡或网卡,计算机的硬件地址就在适配器的ROM中。
- 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认,目的站收到有差错帧就把他丢弃。
- 以太网采用协议:具有冲突检测的载波监听多点接入CSMA/CD。
- CSMA/CD的要点:发送前先监听,便发送边监听,一旦发现总线上发生了碰撞,停止发送。随后按照退避算法等待一段随机时间后再次发送,因此,每一个站点在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性,以太网上个站点都平等地争用以太网的信道。
- 传统的总线以太网基本上都是使用集线器的双绞线以太网,这种以太网在物理上是星形网,逻辑上总线网。集线器工作在物理层,他的每个端口仅仅简单地转发比特,不进行碰撞检测。
- 以太网的硬件地址,MAC地址实际上是适配器地址或适配器标识符,与主机所在的地点无关,源地址和目的地址都是48位长。
- 以太网的适配器有过滤功能,只接受单播帧,广播帧或多播帧。
- 使用集线器可以在物理层扩展以太网。
- 交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层),他就是一个多端口的网桥。
本章知识点
3.1 数据链路层的概述
概述
数据库链路层是OSI体系结构自下而上的第二层,主要任务是实现帧在一段链路上或一个网络中进行传输的问题。
数据链路层在网路体系结构中的地位

链路、数据链路和帧
链路:链路是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
数据链路:数据链路是基于链路的,在链路上传送数据时,需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
计算机中的网络适配器(网卡)和其相应的软件驱动程序实现了这些协议,一般的网卡都包含了物理层和数据链路层这两层的功能。
帧:帧是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元(PDU)
3.2 数据链路层的三个重要问题
封装成帧和透明传输
封装成帧
封装成帧,就是给网络层交付下来的分组添加一个首部和一个尾部,这样就构成了一个帧。
帧的首部和尾部中有一些重要的控制信息,首部中包含-帧开始符、帧的源地址和目的地址。帧尾部-帧校验序列和帧结束符。
根据帧开始符和结束符,对收到的比特流中识别出帧的开始和结束,进行帧定界。
为了提高数据链路层传输帧的效率,应当使帧的数据载荷的长度尽可能大于首部和尾部的长度。
每一种数据链路层协议都规定了帧的数据载荷的长度上限,即最大传送单元MTU。
透明传输
透明传输是指数据链路层对上层交付下来的协议数据单元PDU没有任何限制,就好像数据链路层不存在一样。
透明传输的两种方法:字节填充(面向字节的物理链路)、比特填充(面向比特的物理链路)。
字节填充
在发送方的数据链路层中出现帧定界符的前面。插入一个转义字符“ESC”(十六进制编码1B),如果转义字符自身也出现在数据载荷中,则在转义字符前面也插入一个转义字符。
接收方的数据链路层在把数据载荷向上交付网络层之前,删除先前发送方添加的转义字符。
比特填充
假设某数据链路层协议采用8个比特构成的特定位串0111 1110作为帧定界符。
发送方数据链路层扫描数据载荷,只要出现五个连续的1,就在后填入一个比特0,这样就保证其不会包含帧定界符。
接收方在向上交付之前,扫描数据载荷,每发现五个连续的1,就把后面一个0删除,就可以还原出原始的数据载荷。
差错检测
误码
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(称为比特差错)
在一段时间内,传输错误的比特数量占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。
提高链路的信噪比,可以降低误码率。但在实际的通信链路上,不可能使误码率下降为零。
使用差错检测技术来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
帧尾部用来存放检错码的字段称为帧检验序列FCS。
两种差错检测技术:奇偶校验、循环冗余校验。
奇偶校验
奇校验是在待发送的数据后面添加一个校验位,使整个数据中1的个数为奇数。
偶校验是在待发送的数据后面添加一个校验位,使整个数据中1的个数为偶数。
检测时如果奇数个误码,1的个数奇偶性改变,能检测出错误,但是如果偶数个误码,则不能检测出来,也就是漏检。
循环冗余检验
广泛使用漏检率极低的循环冗余校验CRC。
CRC具有很好的检错能力,虽然软件计算比较复杂,但是非常易用于硬件实现。
基本思想如下
- 收发双方约定好一个生成多项式。
- 发送方基于待发送的数据和生成多项式,计算出差错检测码,即冗余码,将冗余码添加到待发送数据的后面一起传输。
- 接收方收到数据和冗余码后,通过生成多项式来计算收到的数据和冗余码是否产生了误码。
发送方操作:

接收方操作:

可靠传输
使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特差错)。
数据链路层向其上层提供的服务类型:
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:通过某种机制实现发送方发送什么,接收方最终就能收到什么。
无线传输要求可靠传输,有线传输不要求可靠传输。

三种可靠传输的机制:停止-等待协议、回退N帧协议、选择重传协议。
停止等待协议
停止等待,就是指发送方没发送完一个数据分组就必须停下来,等待接收方发来的确认或否认分组。

接收方收不到数据分组,就不会发送相应的ACK或NAK。如果不采取措施,发送方就会一直处于等待接收方ACK或NAK的状态。为解决上述问题,发送方可在每发送完一个数据分组时就启动一个超时计时器.
若到了超时计时器所设置的超时重传时间(Retransmission Time-Out,RTO),但发送方仍未收到接收方的ACK或NAK,就重传之前已发送过的数据分组。
一般将RTO设置成略大于双方的平均往返时间RTT。

停止等待协议属于自动请求重传ARQ协议,指重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组。
为了让发送方能够判断所收到的确认分组是否是重复的,需要给确认分组编号,所用比特数量与数据分组所用比特数量一样,由于停止-等待协议的特性,只需1个比特编序号即可,即序号0和序号1。数据链路层一般不会出现确认分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给确认分组编号。

回退N帧协议
回退N帧协议采用流水线传输方式,利用发送窗口来限制发送方连续发送数据分组的数量,属于连续ARQ协议。
发送方需要维护一个发送窗口W_T ,在未收到接收方确认分组的情况下,发送方可将序号落入W_T内的所有数据分组连续发送出去。
接收方需要维护一个接收窗口W_R ,只有正确到达接收方(无误码)且序号落入W_R内的数据分组才被接收方接收。
在回退N帧协议的工作过程中,发送方的发送窗口和接收方的接收窗口按上述规则不断向前滑动。因此,这类协议又称为滑动窗口协议。
重要点看书上图例。
选择重传协议
重要点看书上图例。
3.3 点对点协议
概念
点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议。
两种应用:因特网用户通过点对点链路连接到某个ISP进而接入因特网,用户计算机与ISP通信时所采用的数据链路层协议一般是PPP协议。
广泛应用于广域网路由器之间的专用线路。
PPP协议的组成
PPP协议由三部分组成:数据链路层LCP、网络层PDU封装到串行链路的方法、一套网络控制协议NCP。
- 数据链路层协议LCP:用来建立、配置、测试数据链路的连接以及协商一些选项。
- 网络层PDU封装到串行链路的方法:PPP即支持面向字节的异步链路,也支持面向比特的同步链路。
- 网络控制协议NCP。
PPP协议的帧格式

ppp帧的数据载荷
信息字段I是ppp帧的数据载荷,最大不能超过1500字节,PPP帧的最大传送单元为1500字节。
帧检验序列的长度为2字节,采用CRC计算冗余码并填入,用于PPP帧的差错检测(CRC采用的生成多项式为 CRC−CCITT=X^16+X^12+X^5+1)。
PPP帧的透明传输
面向字节-字节填充:

面向比特-零比特填充:

PPP协议的工作状态

3.4 共享式以太网
概念
以太网(Ethernet)以曾经被假想的电磁波传播介质——以太(Ether)来命名。
以太网目前已经从传统的共享式以太网发展到交换式以太网,传输速率已经从10Mb/s提高到100Mb/s、1Gb/s甚至10Gb/s。
网络适配器和MAC地址
网络适配器
要将计算机连接到局域网,需要使用相应的网络适配器(网卡)
EEPROM用来存储MAC地址和网卡相关信息的可编程只读存储器。
在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的I/O总线以并行传输方式进行。
网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。
网卡除了实现物理层和数据链路层的功能,另一个重要功能是进行并行传输和串行传输的转换(串并转换)。
MAC地址
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一
的标识,即一个数据链路层地址。
在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为MAC地址。
MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。
严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IEEE 802局域网的MAC地址

网卡从网络上每收到一个帧,检查帧首部中的目的MAC地址,按以下情况处理:
- 如果目的MAC地址是广播地址,就接受该帧
- 目的MAC地址与网卡上固化的全球单播地址相同,接受该帧
- 目的MAC地址是网卡支持的多播地址,接受该帧。
- 如果是以上情况外,丢弃该帧。
全球单播MAC地址如同身份证号,具有唯一性
CSMA/CD协议
CSMA/CD协议的基本原理
在以太网的发展初期,人们普遍认为“无源的电缆线比有源器件可靠”,因此将多个站点连接在一条总线上来构建共享总线以太网。
共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点。
为了避免碰撞,为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD,它是载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)的英文缩写词。

载波监听检测到总线空闲,但总线并不一定空闲。
使用CSMA/CD协议的共享总线以太网上的各站点,只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞。
在使用CSMA/CD协议时,由于正在发送帧的站点必须“边发送帧边检测碰撞”,因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。
争用期
每一个站点从开始发送帧算起到之后的一小段时间内,都有可能发生碰撞,这一段时间长短不确定,取决于另一个发送帧的站点与本站点的距离。因此,共享总线以太网的总线长度不能太长,接入的站点数量不能太多。
10Mb/s共享总线以太网规定争用期2t的值为512比特发送时间。
共享总线以太网规定总线长度不超过2500m。
最小帧长和最大帧长
最小帧长:为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,规定最小帧长512b,即64字节。
接收站点收到长度小于64字节的帧,就可以判断这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。
最大帧长:帧的数据载荷长度应该远大于帧首部和尾部的总长度,这样可以提高真的传输效率。
以太网V2的MAC帧的最大长度规定为1518字节,其中数据载荷的最大长度为1500字节,首部和尾部共18字节
退避算法

如果连续多次发送碰撞,就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),因而减小产生碰撞的概率。
当重传达16次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告。
信道利用率

使用集线器的共享式以太网
在使用细同轴电缆的共享总线以太网之后,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)
站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆。
使用集线器的以太网虽然物理拓扑是星型的,但在逻辑上仍然是一个总线网。总线上的各站点共享总线资源,使用的还是CSMA/CD协议。碰撞检测由网卡负责,集线器只工作在物理层。
集线器一般都有少量的容错能力和网络管理功能。
在物理层扩展以太网
共享总线以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使CSMA/CD协议无法正常工作。
在早期广泛使用粗同轴电缆或细同轴电缆共享总线以太网时,为了提高网络的地理覆盖范围,常用的是工作在物理层的转发器。
IEEE 802.3标准规定,两个网段可用一个转发器连接起来,任意两个站点之间最多可以经过三个网段。
在10BASE-T星型以太网中,可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。
在物理层扩展的共享式以太网仍然是一个碰撞域,不能连接太多的站点,否则可能会出现大量的碰撞,导致平均吞吐量太低。
在数据链路层扩展以太网

网桥(bridge)工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层范畴的相关能力。
网桥可以识别帧的结构。网桥可以根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧。

网桥中的转发表对于帧的转发起着决定性的作用
透明网桥(Transparent Bridge)通过自学习算法建立转发表。
透明网桥中的“透明”,是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的。
透明网桥的标准是IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表


在增加冗余链路提高以太网可靠性的同时,却给网络引入了环路。
网络中的广播帧将在环路中永久兜圈,造成广播帧充斥整个网络,网络资源被白白浪费,而网络中的主机之间无法正常通信!
为了避免广播帧在环路中永久兜圈,透明网桥使用生成树协议(Spanning Tree Protocol,STP),可以在增加冗余链路提高网络可靠性的同时,又避免环路带来的问题
不管网桥之间连接成了怎样复杂的带环拓扑,网桥之间通过交互网桥协议单元(Bridge Protocol Data Unit,BPDU),找出原网络拓扑的一个连通子集(即生成树),在这个子集里整个连通的网络中不存在环路。

3.5 交换式以太网
以太网交换机
以太网交换机(以下简称交换机)本质上就是一个多接口的网桥:使用交换机的就是交换式以太网。


一般的交换机都采用“存储转发”方式,为了减小交换机的转发时延,某些交换机采用了直通(Cut-Through)交换方式。
采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必把整个帧先缓存后再进行处理。
直通交换的时延非常小。
直通交换不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。
共享式以太网与交换式以太网的对比


集线器既不隔离广播域也不隔离碰撞域,交换机不隔离广播域,但隔离碰撞域。
使用交换机的共享式以太网早已取代了使用集线器的共享式以太网。
3.6 以太网的MAC帧格式
以太网V2的MAC帧格式

目的地址和源地址:用来填入帧的目的MAC地址和源MAC地址。
类型:字段为2字节字长,其值用来指明数据载荷中的内容是由上一层的哪个协议封装的,以便将收到的MAC帧的数据载荷上交给上一层的这个协议。
数据字段:长度范围46-1500字节,用来装载上层协议所封装的协议数据单元PDU,以太网最小帧长64字节,去掉首部尾部共18字节,数据字段最小长度为46,当数据字段小于46字节时,数据链路层就会在数据字段的后面插入相应个填充字节,有效MAC帧长度在64-1518字节之内。
FCS字段:长度为4字节,内容是使用CRC生成的帧检验序列,
无效的MAC帧
接收方可能收到的无效MAC帧包括以下几种:
- MAC帧的长度不是整数个字节
- 通过MAC帧的FCS字段的值检测出帧有误码
- MAC帧的长度不在64~1518字节之间
接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制。
3.7 虚拟局域网
虚拟局域网概述
虚拟局域网VLAN是一种将局域网的站点划分成与物理位置无关的逻辑组的技术,一个逻辑组就是一个VLAN,属于同一站点的VLAN的之间可以直接进行通信,不同属于同一VLAN的站点之间不能直接通信。
虚拟局域网并不是一种网络,他只是局域网能够提供给用户的一种服务。
划分VLAN有以下好处:
- 控制广播风暴
- 方便网络管理
- 增强网络安全
虚拟局域网的实现机制
虚拟局域网VLAN有多种实现技术,最常见的就是基于以太网交换机的接口来实现VLAN。这就需要以太网交换机能够实现以下两个功能:
- 能够处理带有VLAN标记的帧,也就是IEEE 802.1Q帧。
- 交换机的各接口可以支持不同的接口类型,不同接口类型的接口对帧的处理方式有所不同。
IEEE 802.1Q帧
IEEE 802.1Q帧也称为Dot One Q帧,它对以太网V2的MAC帧格式进行了扩展:在源地址字段和类型字段之间插入了4字节的VLAN标签(tag)字段。

VID是802.1Q帧所属VLAN的编号,设备利用VID来识别帧所属的VLAN。
广播帧只在同一VLAN内转发,这样就将广播域限制在了一个VLAN内。
802.1Q帧一般不由用户主机处理,而是由以太网交换机来处理:
- 当交换机收到普通的以太网MAC帧时,会给其插入4字节的VLAN标签使之成为802.1Q帧,该处理简称为“打标签”。
- 当交换机转发802.1Q帧时,可能会删除其4字节的VLAN标签使之成为普通的以太网MAC帧,该处理简称为“去标签”。交换机转发802.1Q帧时也有可能不进行“去标签”处理,是否进行“去标签”处理取决于交换机的接口类型。
以太网的接口类型
根据接口在接收帧和发送帧时对帧的处理方式的不同,以及接口连接对象的不同,以太网交换机的接口类型一般分为Access和Trunk两种

3.8 以太网的发展
100BASE-T的以太网

吉比特以太网

千兆以太网的网段最大长度仍保持为100m,最小帧长仍保持为64字节(与10BASE-T和100BASE-T兼容)。需要用到载波延伸的方法,将争用期增大为512字节的发送时间而保持最小帧长仍为64字节。
在使用载波延伸的机制下,如果原本发送的是大量的64字节长的短帧,则每一个短帧都会被填充448字节的特殊字符,这样会造成很大的开销。
因此,千兆以太网还使用了分组突发(Packet Bursting)功能。也就是当有很多短帧要连续发送时,只将第一个短帧用载波延伸的方法进行填充,而其后面的一系列短帧不用填充就可一个接一个地发送,它们之间只需空开必要的帧间最小间隔即可。
10吉比特以太网

万兆以太网交换机常作为千兆以太网的汇聚层交换机,与千兆以太网交换机相连,还可以连接对传输速率要求极高的视频服务器、文件服务器等设备。
40吉比特/100吉比特以太网
2010年,IEEE发布了40吉比特/100吉比特以太网(40GE/100GE)的IEEE 802.3ba标准,40GE/100GE也称为四万兆/十万兆以太网。
为了使以太网能够更高效、更经济地满足局域网、城域网和广域网的不同应用需求,IEEE 802.3ba标准定义了两种速率类型:40Gb/s主要用于计算应用、100Gb/s主要用于汇聚应用。
IEEE 802.3ba标准只工作在全双工方式(不使用CSMA/CD协议),但仍使用IEEE 802.3标准的帧格式并遵守最小帧长和最大帧长的规定。
3.9 无线局域网
无线局域网的组成
IEEE于1997年制定出了无线局域网的协议标准802.11,802.11无线局域网是目前应用最广泛的无线局域网之一,人们更多地将其简称为Wi-Fi(Wireless Fidelity,无线保真度)。
802.11无线局域网可分为以下两类:有固定基础设施的、无固定基础设施的

有固定基础设施的802.11无线局域网,采用星型网络拓扑结构,位于中心的基站称为接入点AP。
最小构件被称为基本服务集BSS,一个BSS中包含一个接入点和若干个移动站,本BSS内各站点之间的通信以及与本BSS之外的站点之间的通信,都必须经过本BSS内的AP转发。
网络管理员配置BSS内的AP时,为其分配一个最大32字节的服务集标识符SSID,和一个无线通信信道,SSID就是使用该AP的802.11无线局域网的名字。
一个BSS覆盖的地理范围称为基本服务区BSA,直径不超过100m。
一个BSS可以是独立的,也可以通过一个分配系统DS,与其他BSS连接,这样就构成了一个扩展的服务集ESS。
DS最常用以太网。


802.11无线局域网的ad hoc模式允许网络中的各站点在其通信范围内直接通信,也就是支持站点间的单跳通信,而标准中并没有包括多跳路由功能。因此,802.11无线局域网的ad hoc模式应用较少。
无线局域网的物理层
802.11无线局域网的物理层非常复杂,依据工作频段、调制方式、传输速率等,可将其分为多种物理层标准。海蒂·拉玛被誉为“Wi-Fi之母”
802.11无线网卡一般会被做成多模的,以便能适应多种不同的物理层标准,例如支持802.11b/g/n。

无线局域网的数据链路层
为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议(载波监听多址接入/碰撞避免)CSMA/CD。
CSMA/CA协议仍然采用CSMA/CD协议中的CSMA,以“先听后说”的方式来减少碰撞的发生,但是将“碰撞检测CD”改为了“碰撞避免CA”。

无线局域网的MAC帧


持续期:用于实现CSMA/CA的虚拟载波监听和信道预约机制。在数据帧、RTS帧和CTS帧中用该字段指出将要持续占用信道的时长。
序号控制:用来实现802.11的可靠传输,对数据帧进行编号。

Comments NOTHING