学习《计算机网络》第八版(3)
前言:
只用作学习,如有错误请在评论区中指出,谢谢!

第3章 数据链路层
本章最重要的内容:
数据链路层的点对点信道和广播信道的特点。PPP 协议和 CSMA/CD 协议的特点。
数据链路层的三个基本问题:封装成帧、透明传输、差错检测。
以太网 MAC 层的硬件地址。
适配器、转发器、集线器、网桥、以太网交换机的作用和使用场合。
使用点对点信道的数据链路层
数据链路和帧的概念
数据链路既包含物理线路也包含必要的通信协议,将实现协议的软件和硬件加到链路上就构成了数据链路。
帧是点对点信道的数据链路层的协议数据单元。网络层的协议数据单元是IP数据报(分组)。
数据链路层将网络层交下来的数据构成帧发送到链路上,以及把接收到的帧里的数据取出并上交给网络层。

点对点信道的数据链路层在通信时的主要步骤:
结点A的数据链路层把网络层交下来的IP数据报加上首部和尾部封装成帧。
结点A把封装好的帧发送给结点B。
结点B对接收到的帧进行差错检验,若无差错,从帧中提取出IP数据报上交给网络层,若有差错丢弃这个帧。
数据链路层的三个基本问题:封装成帧、透明传输、差错检验
封装成帧
给 IP 数据报加上首部和尾部就构成了数据链路层的帧,IP 数据报成为帧的数据部分。
链路层协议规定了帧中数据部分的长度上限——最大传送单元(MTU)。
透明传输即表示无论传送什么样的数据,都能按照原样无差错地通过数据链路层。
字节填充:因为存在帧定界符,如果传输的数据中出现了和SOH、EOT等控制字符一样的文本,就在文本前面插入一个转义字符(ESC),接受端收到数据后在发送给网络层之前删除这个插入的转义字符。如果转义字符也出现在数据中,就在它前面再插入一个转义字符。
(注:SOH和EOT分别是00000001和00000100)

透明传输
透明传输即表示无论传送什么样的数据,都能按照原样无差错地通过数据链路层。

字节填充:因为存在帧定界符,如果传输的数据中出现了和SOH、EOT等控制字符一样的文本,就在文本前面插入一个转义字符(ESC),接受端收到数据后在发送给网络层之前删除这个插入的转义字符。如果转义字符也出现在数据中,就在它前面再插入一个转义字符。

差错检测
比特差错:传输时产生差错,0变成了1或1变成了0。
误码率BER:一段时间内,传输错误的比特占所传输比特总数的比率。提升信噪比可以减小误码率。
差错检验的方法:循环冗余检验CRC
循环冗余检验的原理:
在要传输的数据后加上n位的冗余码(成为帧检验序列FCS),如何得出冗余码:①让数据乘以2^n(相当于在后面加了n个0);②然后除以一个事先约定的 n+1 位的除数P,得出 n 位的余数 R 就作为冗余码加到数据后面。③接收端将收到的每一个帧除以同样的除数 P,若余数为 0 就表明没有差错,否则就是有差错,丢弃这个帧。

除了比特差错外,还有可能出现以下三种传输差错:
帧丢失:收到[#1]-[#3](丢失[#2])
帧重复:收到[#1]-[#2]-[#2]-[#3](收到两个[#2])
帧失序:收到[#1]-[#3]-[#2](顺序混乱)
循环冗余检验只能识别比特差错,无法识别帧丢失、帧重复、帧失序,因此不是可靠传输。
对于通信质量较差的无线传输链路,数据链路层协议使用帧编号、确认和重传机制。即接收方收到正确的帧就向发送方发送确认,如果发送方没有收到确认就表明出现差错,就进行重传直到收到对方的确认。
对于通信质量较好的有线传输链路,只进行CRC检验,不使用确认和重传机制,即不需要数据链路层向上提供可靠传输,而是由上层协议来改正差错。
PPP 协议和 CSMA/CD 协议都不是可靠传输的协议。
点对点协议PPP
PPP协议的特点
PPP 协议是用户和 ISP 通信时使用的数据链路层协议。

PPP 协议应满足的需求
简单。这是首要的需求。互联网体系结构中最复杂的部分在 TCP 协议中,网际协议 IP 和数据链路层协议都不是可靠传输。
封装成帧。PPP 协议规定使用特殊的字符作为帧定界符。
透明传输。
支持多种网络层协议。PPP 协议要能够在同一条物理链路上同时支持多种网络层协议。
支持多种类型链路。包括串行的或并行的、同步的或异步的等。
差错检测。如果收到有错的帧就丢弃。
最大传送单元。要为每一种类型的点对点链路设置最大传送单元MTU。注意 MTU 是数据部分的最大长度。
网络层地址协商。PPP 协议要提供一种机制使通信的两个网络层的实体能通过协商知道彼此的网络层地址。
数据压缩协商。PPP 协议要提供一种方法来协商使用数据压缩算法。
TCP/IP 协议族中,可靠传输由 TCP 协议负责。PPP 不负责纠错等。PPP 只支持点对点的链路通信,且只支持全双工链路。
PPP 协议的三个组成部分
一个将 IP 数据报封装到串行链路的方法。
一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
一套网络控制协议 NCP,其中的每一个协议支持不同的网络层协议。
PPP协议的帧格式
各字段的含义

PPP 的首部和尾部分别为4个字段和2个字段。
首部的第一个字段和尾部的第二个字段都是标志字段 F,规定为 0x7E,它标志着一个帧的开始或结束。两个连续的帧之间只需要一个 F,如果连续出现两个标志字段,表示这是一个空帧,应该丢弃。
首部的第二个和第三个字段 目前都没有实际含义。第四个字段是 2 字节的协议字段,它表明了信息部分的数据类型(可能是IP数据报也可能是其他类型的数据)。尾部的第一个字段是帧检验序列 FCS。
字节填充
PPP 使用异步传输时使用了字节填充,转义符为 0x7D。
字节填充的方法:
把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。
若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变为2字节序列(0x7D,0x5D)。
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03,就把它转变为2字节序列(0x7D,0x23)。
接受端在收到数据后再进行与发送端字节填充相反的变换,即可获得原本的信息。
零比特填充
PPP 用在 SONET/SDH 链路上时使用同步传输,采用零比特填充方法来实现透明传输。
零比特填充的方法:当信息字段中出现 5 个连续的 1,立即填入一个 0,这样信息字段中就不会出现 6 个连续的 1(PPP 的帧定界符中有 6 个连续的 1)。

PPP协议的工作状态
PPP 链路从建立到释放的全过程:
用户拨号接入 ISP 后,就建立了从用户到 ISP 的物理连接。
用户向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个PPP帧),以便建立 LCP 连接。
网络控制协议 NCP 给新接入的用户电脑分配一个临时的 IP 地址。
等用户通信完毕后,NCP 释放网络层连接,收回分配的 IP 地址。
然后 LCP 释放数据链路层连接。
最后释放物理层连接。
PPP 链路的状态变化:
链路静止——链路建立——鉴别——网络层协议——链路打开——链路终止——链路静止。

链路静止:PPP 链路的起始和终止状态都是链路静止状态。
链路建立:当个人电脑当建立了到路由器的物理层连接后,PPP 进入链路建立状态,目的是建立链路层的 LCP 连接。
通过发送 LCP 的配置请求帧(是一个 PPP 帧,协议字段为 LCP 对应的代码,信息字段包括特定的配置请求)来协商配置选项,链路的另一端可以回复配置确认帧、配置否认帧或配置拒绝帧。
(1)配置确认帧:所有项都接受。
(2)配置否认帧:所有项都理解但不能接受。
(3)配置拒绝帧:选项有的无法识别或不能接受,需要协商。
鉴别:若鉴别身份失败就转到链路终止状态,若成功就进入网络层协议状态
网络层协议:这时 PPP 链路的两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。PPP 链路的两端可以运行不同的网络层协议。
链路打开:此时链路的两个 PPP 端点可以彼此发送分组。数据传输结束后链路的一端发送终止请求 LCP 帧请求终止链路连接,收到终止确认后转到链路终止状态。
链路终止。终止后进入链路静止状态。
链路静止。
可以看到,PPP 协议不是纯粹的数据链路层协议,还包含了物理层和网络层的内容。
使用广播信道的数据链路层
广播信道可以进行一对多的通信,局域网用的就是广播信道。
局域网的数据链路层
局域网的最主要特点:网络为一个单位所拥有,且地理范围和站点数目都有限。
局域网的优点:
具有广播功能,可以从一个站点很方便地访问全网。局域网上的主机可以共享连接在局域网上的各种硬件和软件资源。
便于系统的扩张和逐渐演变
提高了系统的可靠性、可用性和生存性。
局域网可以按照拓扑结构进行分类。

以太网是局域网的一种,绝大多数局域网都是以太网。双绞线是局域网中的主流传输媒体。
实现共享信道有两种方法:
静态划分信道,如频分复用、时分复用、码分复用等,但不适合局域网。
动态媒体接入控制(多点接入)。特点是信道并非在用户通信时固定分配给用户。分两类:
随机接入:特点是用户可以随机地发送消息。如果有两个用户同时发送,在共享媒体上就会产生碰撞,发送失败。这时就需要解决碰撞的网络协议,即 CSMA/CD 协议。
受控接入:特点是用户不能随机发送信息而必须服从一定的控制。
以太网应用的主要是随机接入。
由于历史原因以太网层被拆分为两个子层:逻辑链路控制 LLC 和媒体接入控制 MAC。现在 LLC 基本已经消失了,主要是 MAC 协议。
适配器的作用
计算机与外界局域网的连接是通过适配器进行的,适配器以前又称网卡。
适配器和局域网之间的通信通过电缆或双绞线以串行传输方式进行的,而适配器与计算机之间的通信是通过 I/O 总线并行传输的,因此适配器的一个重要功能就是进行数据串行传输和并行传输的转换。
适配器收到错误的帧,会直接丢弃;收到正确的帧后,使用中断来通知计算机,并把数据交付给协议栈中的网络层。当计算机要发送 IP 数据报时,就由协议栈把分组交给适配器,适配器将其组装成帧后发送到局域网。(封装成帧、透明传输、差错检错等功能都是由适配器完成)

计算机的硬件地址存储在适配器的ROM中,而软件地址(IP地址)存储在计算机的存储器中。
CSMA/CD协议
为了通信的简便,以太网采取了以下两种措施:
采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据。适配器对发送的数据帧不编号,也不要求对方发回确认。它提供的是尽最大努力的交付,是不可靠的交付。对有差错帧是否进行重传由高层来决定。
同一时间只能有一台计算机发送数据,如果发生冲突,就使用 CSMA/CD 协议来协调。
以太网发送的数据使用的是曼彻斯特编码。

CSMA/CD 协议的要点
多点接入:即总线型网络,许多计算机以多点接入的方式连接在一根总线上。
载波监听:使用电子技术检测信道上有没有其他计算机也在发送。不管是发送前还是发送中,每个站都要不停地检测信道。
碰撞检测:边发送边监听。如果几个站同时发送数据,总线上的信号电压变化会增大,就表明发生了碰撞。这时就立即停止发送。
发生碰撞是因为传播时延,A 发送了数据但是还没传到 B 处,B 就不知道有人发送了数据。
当 A 和 B 同时发送数据产生碰撞后,他们发送数据都失败,都要推迟一段时间重新发送。
因为不知道是否会发生碰撞,所以以太网存在发送的不确定性。
总线上单程端到端传播时延记为θ,那么A 发送数据后最多 2θ 时间就知道是否碰撞,这 2θ 时间称为争用期。如果经过争用期还没碰撞,表明发送成功。

在使用 CSMA/CD 协议时,不能同时发送和接收,因此使用 CSMA/CD 协议的以太网只能进行半双工通信(双向交替通信)。如果发生碰撞,以太网使用截断二指数退避算法来确定碰撞后重传的时机。
以太网规定了争用期的时长,这就约束了以太网的地理范围不能太大,不然传播时延会超过争用期限制。
以太网规定最短帧长为 64 字节(一个争用期可以发送的字节数),如果争用期发生碰撞就会停止发送,因此信道上长度小于 64 字节的帧就是无效帧。
碰撞后除了立即停止发送数据外还要继续发送一个人为干扰信号,通知所有用户现在发生了碰撞。

以太网还规定了帧间最小间隔 96 比特(9.6μs)时间,这是为了使刚收到数据帧的栈清理缓存,准备接收下一帧。
CSMA/CD 协议的要点归纳
准备发送:适配器从网络层获得一个分组,加上首部和尾部组成以太网帧,放入适配器缓存中。在发送前先检测信道。
检测信道:若检测到信道忙,则不停地检测直到信道空闲。若检测到空闲,并在 96 比特时间内保持空闲(保证了帧间最小间隔),就发送这个帧。
在发送过程中仍不停地检测,即适配器要边发送边监听。这时有两种情况
发送成功:争用期内一直未检测到碰撞。发送成功后回到 1。
发送失败:争用期内检测到碰撞,立即停止发送,并按规定发送人为干扰信号。适配器接着执行指数退避算法,等待足够时间后回到 2。若重传 16 次仍不成功,就停止重传并向上报错。
以太网发送完一帧后要把已发送的帧保留一下。如果争用期检测到碰撞,推迟一段时间后还要重传。
使用集线器的星形拓扑
现在的以太网采用星形拓扑,在星形中心使用可靠性非常高的集线器。每个站用两对双绞线,分别用于发送和接收。

集线器的特点:
表面上使用集线器的局域网在物理上是一个星形网,但是在逻辑上仍是一个总线网,各站共享逻辑上的总线,还是使用 CSMA/CD 协议。
一个集线器有很多接口,像是一个多接口的转发器。
集线器工作在物理层,每个接口仅负责转发比特,不进行碰撞检测。
集线器采用了专门的芯片,进行自适应串音回波抵消。这样可以使端口转发出去的较强信号不对该端口接收到的较弱信号产生干扰。

以太网的信道利用率
因为发生碰撞会浪费信道资源,所以以太网的信道利用率达不到100%。
减少端到端的传播时延、可以提高信道利用率,因此以太网的连线的长度不能太长,同时以太网的帧长不能太短。
以太网的MAC层
一、MAC 层的硬件地址
局域网中,硬件地址又叫物理地址,或者 MAC 地址。
IEEE 为局域网规定了一种 6 字节的全球地址,是局域网上的每一台计算机中固化在适配器中的地址。因此如果更换了新的适配器,硬件地址也就变了。
(注意:路由器通过适配器连接到局域网时,适配器上的硬件地址标志路由器的一个接口。如果路由器同时连到多个网络上,就需要多个适配器有多个硬件地址。)

IEEE注册管理机构RA负责向厂家分配前3个字节,称为组织唯一标识符(OUI)。
厂家自行指派后3个字节,称为扩展标识符(EI)。
必须保证生产出的适配器没有重复地址。
地址被固化在适配器的ROM中。
①IEEE规定地址字段的第1字节的最低位为I/G位
单站地址:I/G 位 = 0。
组地址:I/G 位 = 1。组地址用来进行多播。
广播地址:所有 48 位都为 1(全 1)。只能作为目的地址使用。
②IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L
全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理。
本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址。
局域网中适配器收到的帧有三种:
单播帧(一对一):即收到的帧的 MAC 地址与本站的地址相同。
广播帧(一对全体)。
多播帧(一对多)。
以太网适配器有一种特殊的工作方式:混杂方式。混杂方式的适配器只要”听到“有帧在传输就都接收下来。
二、MAC 层的帧格式(2种)
DIX Ethernet V2 标准
IEEE 的 802.3 标准
最常用的 MAC 帧格式是"以太网V2标准"

目的地址字段6字节。
源地址字段6字节。
类型字段2字节:用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
数据字段 46 ~ 1500 字节:数据字段的正式名称是MAC客户数据字段。
最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度(46字节)
FCS 字段 4 字节。
注意:当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。
由硬件在帧的前面插入 8 字节:第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。
为了达到比特同步,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节
无效的MAC帧
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;
数据字段的长度不在 46 ~ 1500 字节之间。
有效的 MAC 帧长度为 64 ~ 1518 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。
以太网不负责重传丢弃的帧。
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别

当“长度/类型”字段值大于 0x0600 时,表示“类型”;小于 0x0600 时,表示“长度”。
当“长度/类型”字段值小于 0x0600 时,数据字段必须装入逻辑链路控制 LLC 子层的 LLC 帧。
在 802.3 标准的文档中,MAC 帧格式包括了 8 字节的前同步码和帧开始定界符。
扩展的以太网
在物理层扩展以太网
使用光纤扩展

使用集线器扩展

优点
使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信。
扩大了以太网覆盖的地理范围
缺点
碰撞域增大了,总的吞吐量未提高。
如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将它们互连起来。
碰撞域又称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
碰撞域越大,发生碰撞的概率越高。
在数据链路层扩展以太网
使用网桥

工作在数据链路层。
根据 MAC 帧的目的地址对收到的帧进行转发和过滤。或者转发,或者丢弃。
使用以太网交换机

工作在数据链路层。
多端口的网桥。
可明显地提高以太网的性能。
以太网交换机的特点
实质上是一个多接口网桥。
通常有十几个或更多的接口。
每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
以太网交换机具有并行性。
能同时连通多对接口,使多对主机能同时通信。
相互通信的主机都独占传输媒体,无碰撞地传输数据。
每一个端口和连接到端口的主机构成了一个碰撞域。
接口有存储器。
即插即用。其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。这种交换表就是一个内容可寻址存储器CAM 。
使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
以太网交换机的优点:每个用户独享带宽,增加了总容量。
以太网交换机的交换方式
存储转发方式
把整个数据帧先缓存,再进行处理。
直通方式
接收数据帧的同时立即按数据帧的目的 MAC 地址决定该帧的转发接口。
缺点:不检查差错就直接将帧转发出去,有可能转发无效帧。
以太网交换机的自学习功能

虚拟局域网
以太网存在的主要问题:
广播风暴:一个以太网是一个广播域,交换机之间的冗余链路形成广播风暴。
安全问题:交换机每个接口都处于一个独立的碰撞域(或冲突域)中,但所有计算机都处于同一个广播域中。无法隔离不同部门的通信。
IEEE 802.1Q 对虚拟局域网 VLAN 的定义:
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
虚拟局域网(VLAN)技术具有以下主要优点:
改善了性能
简化了管理
降低了成本
改善了安全性
划分虚拟局域网的方法:
基于交换机端口:最简单、也是最常用的方法。属于在第 1 层划分虚拟局域网的方法。
缺点:不允许用户移动。
基于计算机网卡的 MAC 地址:根据用户计算机的 MAC 地址划分虚拟局域网。属于在第 2 层划分虚拟局域网的方法。允许用户移动。
缺点:需要输入和管理大量的 MAC 地址。如果用户的 MAC 地址改变了,则需要管理员重新配置VLAN
基于协议类型:根据以太网帧的第三个字段“类型”确定该类型的协议属于哪一个虚拟局域网。属于在第 2 层划分虚拟局域网的方法。
基于 IP 子网地址:根据以太网帧的第三个字段“类型”和 IP 分组首部中的源 IP 地址字段确定该 IP 分组属于哪一个虚拟局域网。属于在第 3 层划分虚拟局域网的方法。
基于高层应用或服务:根据高层应用或服务、或者它们的组合划分虚拟局域网。更加灵活,但更加复杂。
虚拟局域网使用的以太网帧格式


高速一胎