【网络协议详解】——数据链路层协议(学习笔记)

📖 前言:数据链路层是 OSI 模型中的第二层,位于物理层之上,是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧,传输到物理层,并通过物理介质进行传输。同时,数据链路层协议还需要提供错误检测和纠正、流控等功能,以确保数据的可靠传输。本文将全面介绍数据链路层协议的相关知识,包括其定义、分类、协议运作原理、常用技术以及实际应用等方面。

在这里插入图片描述


目录

  • 🕒 1. 概述
  • 🕒 2. PPP协议分析
    • 🕘 2.1 概述
    • 🕘 2.2 工作流程
    • 🕘 2.3 帧格式
  • 🕒 3. LCP协议
    • 🕘 3.1 概述
    • 🕘 3.2 报文格式
    • 🕘 3.3 报文种类
      • 🕤 3.3.1 链路配置报文
      • 🕤 3.3.2 链路终止报文
      • 🕤 3.3.3 链路维护报文
    • 🕘 3.4 工作过程
      • 🕤 3.4.1 链路建立和配置流程
      • 🕤 3.4.2 链路终止流程
      • 🕤 3.4.3 链路维护流程
  • 🕒 4. NCP协议
    • 🕘 4.1 概述
    • 🕘 4.2 IPCP协议
      • 🕤 4.2.1 概述
      • 🕤 4.2.2 报文的格式
      • 🕤 4.2.3 配置选项
  • 🕒 5. PPP协议的认证
    • 🕘 5.1 PAP协议
      • 🕤 5.1.1 概述
      • 🕤 5.1.2 认证流程
      • 🕤 5.1.3 报文格式
    • 🕘 5.2 CHAP协议
      • 🕤 5.2.1 概述
      • 🕤 5.2.2 认证流程
      • 🕤 5.2.3 报文格式
    • 🕘 5.3 实验
  • 🕒 6. VLAN技术
    • 🕘 6.1 简介
      • 🕤 6.1.1 目标
      • 🕤 6.1.2 帧格式
      • 🕤 6.1.3 划分方式
      • 🕤 6.1.4 链路
      • 🕤 6.1.5 端口模式
        • 🕞 6.1.5.1 接入端口
        • 🕞 6.1.5.2 干道端口
        • 🕞 6.1.5.3 混合端口(仅华为交换机有)
    • 🕘 6.2 VLAN内通信
    • 🕘 6.3 VLAN间通信
      • 🕤 6.3.1 概述
      • 🕤 6.3.2 解决VLAN间互通的方法
    • 🕘 6.4 实验:利用单臂路由实现VLAN间通信
  • 🕒 7. STP技术
    • 🕘 7.1 工作原理
    • 🕘 7.2 BPDU报文
      • 🕤 7.2.1 配置BPDU
      • 🕤 7.2.2 TCN BPDU

🕒 1. 概述

  • 成帧(Framing)
  • 差错检测(Error Detection)
  • 可靠交付(Reliable Delivery)
  • 媒体访问(Medium Access)
  • 流量控制(Flow Control)

🕒 2. PPP协议分析

🕘 2.1 概述

现在全世界使用得最多的数据链路层协议是PPP(Point to Point Protocol,点到点协议) 。

PPP为点对点连接上传输多种协议的数据包提供了一种标准的方法,其最初的设计目的,是为两个对等结点之间的IP传输提供一种封装协议,除了IP以外,PPP还可以封装其它协议,包括Novell的IPX协议(Internetwork Packet Exchange,网间分组交换)等。

🕘 2.2 工作流程

在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段,除认证阶段外,其它4个阶段都是必要过程。 5个阶段如下:

  1. 链路不可用阶段(Dead)
  2. 链路建立阶段(Establish)
  3. 认证阶段(Authenticate)
  4. 网络层协议阶段(Network)
  5. 链路终止阶段(Terminate)

在这里插入图片描述

🕘 2.3 帧格式

在这里插入图片描述

  • Flag字段为帧定界标志,用来标识PPP帧的开始与结束,长度为1字节,取值固定为0x7E
  • Address字段为地址字段,用来标识接收方的地址,长度为1字节,由于点到点链路的接收方是唯一的,故此字段取值固定为0xFF,表示只有对端才能接受到数据。
  • Control字段为控制字段,长度为1字节,取值固定为0x03,表示无序号信息(Unnumbered Information)。
  • Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为2字节。此字段使PPP得以封装不同的协议。
字段值协 议
0x0021IP(Internet Protocol)
0x0029Appletalk
0x8021 IPCP(Internet Protocol Control Protocol)
0xC021LCP(Link Control Protocol)
0xC023PAP(Password Authentication Protocol)
0xC025LQR(Link Quality Report)
0xC223CHAP(Challenge Handshake Authentication Protocol)
  • Information字段为信息字段,该字段长度不固定,最大长度等于MRU(Maximum Receive Unit)值,默认为1500字节。此字段存放承载的协议数据,包括LCP、NCP等。
  • FCS(Frame Checksum)字段为帧校验和字段,用来检测PPP帧的完整性,长度为2字节。

🕒 3. LCP协议

🕘 3.1 概述

LCP(Link Control Protocol,链路控制协议):用于建立、配置、维护和终止PPP链路

LCP负责PPP的链路管理,和上层(网络层)协议无关。

🕘 3.2 报文格式

当PPP帧中Protocol字段为0xC021时,表示Information 字段数据为LCP报文。

在这里插入图片描述

  • Code为代码字段(也称类型字段),长度为1字节,用来标识LCP中链路控制报文的类型。
  • Identifier为标识符字段,长度为1字节,是报文的唯一标识。
    • Identifier字段用于匹配请求和回复。
  • Length为长度字段,长度为2字节,Length字段指出该报文的长度,包括Code,Identifier,Length和Data。
  • Data为数据字段,长度是零或多个八位字节,由Length字段声明。
    • Data字段的格式由Code字段决定。

🕘 3.3 报文种类

类型功能报文类型报文代码
链路配置建立和配置链路Configure-Request1
Configure-Ack2
Configure-Nak3
Configure-Reject4
链路终止终止链路Terminate-Request5
Terminate-Ack6
链路维护管理和调试链路Code-Reject7
Protocol-Reject8
Echo-Request9
Echo-Reply10
Discard-Request11

🕤 3.3.1 链路配置报文

Configure-Request(配置请求)的Code字段值为0x01,Data字段值为一到多个选项(Options)列表,选项列表中的参数可同时协商。

在这里插入图片描述

  • Type为类型字段,用于区分协商不同参数。
Type值对应参数功能
0x00Reserved保留
0x01Maximum Receive Unit最大接收单元
0x02Asynchronous Control Character Map异步控制字符映射
0x03Authentication Protocol认证协议
0x04Quality Protocol质量协议
0x05Magic Number幻数
0x07Protocol Field Compression协议域压缩
0x08Address and Control Field Compression地址及控制域压缩
  • Length为长度字段,Length字段指出该配置选项(包括Type、Length和Data字段)的长度。
  • Data为数据字段,Data字段为零或者多个字节,其中包含配置选项的特定详细信息。

Configure-Request(配置请求)报文示例:

在这里插入图片描述

若接收的Configure-Request中的每一个配置选项的值都可接受,则回送Configure-Ack(配置确认)报文,回送的Configure-Ack中的Identifier字段必须与最后接收的Configure-Request相匹配。此外,Configure-Ack中的配置选项必须完全匹配最后接收的Configure-Request。

若收到的每个配置选项都可以识别,但是配置选项的值不能接受,接收方必须回送Configure-Nak(配置否认)。配置选项部分仅用不能接受的配置选项进行填充,回送的Configure-Nak中的Identifier字段必须与最后接收的Configure-Request相匹配。

若收到的部分配置选项是不可识别或不能接受,则回送Configure-Reject(配置拒绝确认)。配置选项部分仅用不可识别或不能接受的配置选项进行填充,回送的Configure- Reject中的Identifier字段必须与最后接收的Configure-Request相匹配。

上述报文除Code字段值不同,配置选项的格式与Configure-Request均相同。

🕤 3.3.2 链路终止报文

在这里插入图片描述

🕤 3.3.3 链路维护报文

Code-Reject(代码拒绝)报文表示无法识别报文的Code字段

若收到该类错误,应立即终止链路,该报文的格式如图,其中“被拒绝的报文”字段包含了无法识别的LCP报文。

在这里插入图片描述

Protocol-Reject(协议拒绝)报文表示无法识别报文的Protocol字段

若收到该类错误,应停止发送该类型的协议报文,该报文的格式如图所示,其中“被拒绝的协议”字段包含了被拒绝的PPP帧的数据区。

在这里插入图片描述

Echo-Request(回复请求)和Echo-Reply(回复应答)用于链路质量和性能测试,其格式如图所示。

在这里插入图片描述

Discard-Request(丢弃请求)是一个辅助的错误调试和实验报文,无实质用途。

这种报文收到即会丢弃。

🕘 3.4 工作过程

🕤 3.4.1 链路建立和配置流程

在这里插入图片描述

  • 当需要建立逻辑链路时,发起方发送Configure-Request(配置请求)报文,用于协商参数;
  • 若接收方收到的每一个配置选项的值都可接受,则回送Configure-Ack(配置确认)报文;
  • 若收到的配置选项是可以识别,但部分配置选项参数不能接受,则回送Configure-Nak(配置否认)报文,并标示出需要重新协商的配置选项;
  • 若配置选项不可识别或不可接受,则回送Configure-Reject(配置拒绝)报文。

🕤 3.4.2 链路终止流程

在这里插入图片描述

  • Terminate-Request(终止请求)报文
  • Terminate-Ack(终止应答)报文

🕤 3.4.3 链路维护流程

在这里插入图片描述

  • Code-Reject(代码拒绝)
  • Protocol-Reject(协议拒绝)
  • Echo-Request(回复请求)和Echo-Reply(回复应答)
  • Discard-Request(丢弃请求)

🕒 4. NCP协议

🕘 4.1 概述

NCP(Network Control Protocol,网络控制协议)用于建立、配置网络层协议,进行参数协商。

不同的网络层协议会使用不同的NCP协议。

  • IP协议使用IPCP(Internet Protocol Control Protocol,IP控制协议);
  • Appletalk协议使用Appletalk NCP进行协商;
  • Novell的 IPX协议使用IPE(Internet Packet Exchange,互连网包交换协议)进行协商。

🕘 4.2 IPCP协议

🕤 4.2.1 概述

若PPP帧中Protocol字段取值0x8021,表示PPP帧正在使用IPCP协商相关通信参数。

IPCP会完成协商IP地址等工作,其后在该PPP链路上传送IP数据报;

若IP数据报传送完毕,若要关闭IP协议,仍需通过IPCP协商终止;

若要释放链路,则需借助LCP协议。

🕤 4.2.2 报文的格式

在这里插入图片描述

类型功能报文类型报文代码
链路配置建立和配置链路Configure-Request1
Configure-Ack2
Configure-Nak3
Configure-Reject4
链路终止终止链路Terminate-Request5
Terminate-Ack6
链路维护管理和调试链路Code-Reject7

与LCP报文格式几乎一样

🕤 4.2.3 配置选项

IPCP协议中,通信双方可协商的配置选项包括3个:

  • 多个IP地址(IP-Addresses)
    • 多个IP地址很难全部协商成功
    • 本选项很少使用
  • IP压缩协议(IP Compression Protocol)
    • 用于协商使用的压缩协议
    • IPCP中仅规定了“Van Jacobson”一个压缩协议,编号为0x002D,Type字段取值为0x02。
    • 该选项默认值为不进行压缩。
  • IP地址(IP Address)
    • 若发起方请求对端分配一个IP地址,接收方应会返回一个合法的IP地址。此时,发起方发送configure-request,type为0x03,length为0x06,其后4字节全为0x00,指明由对端提供IP地址。

在这里插入图片描述

IPCP Configure-Request报文示例:
在这里插入图片描述

🕒 5. PPP协议的认证

🕘 5.1 PAP协议

🕤 5.1.1 概述

PAP(Password Authentication Protocol,口令认证协议)

优点:PAP的整个认证流程非常简单

缺点:认证只能在链路建立阶段进行,身份和口令是以明文进行传输,安全性低

目前PPP协议的认证阶段多使用CHAP认证协议。

🕤 5.1.2 认证流程

在这里插入图片描述

🕤 5.1.3 报文格式

PAP协议的报文共有三种:

  • Authenticate-Request(认证请求)
  • Authenticate-Ack(认证确认)
  • Authenticate-Nak(认证否认)

若PPP帧中Protocol字段取值为0xC023时,表示Information字段承载的是PAP报文。

在这里插入图片描述

🕘 5.2 CHAP协议

🕤 5.2.1 概述

CHAP(Challenge Handshake Authentication Protocol,基于挑战的握手认证协议)

CHAP为三次握手协议,可以在链路建立和数据通信阶段多次使用,进行认证,同时安全性较高

认证过程中需配合事先协商好的算法,确认被认证方的身份,通常使用MD5(Message Digest Algorithm 5)作为其默认算法。只在网络上传输用户名,而不传输用户口令。

目前PPP协议的认证阶段多使用CHAP认证协议

🕤 5.2.2 认证流程

在这里插入图片描述

🕤 5.2.3 报文格式

CHAP协议的报文共有四种:

  • Challenge
  • Response
  • Success
  • Failure

若PPP帧中Protocol字段取值为0xC223时,表示Information字段承载的是CHAP报文。

在这里插入图片描述

🕘 5.3 实验

题目:本实验模拟企业网络环境。R1为分支机构接入网关设备,PC-1为企业分支机构终端。R2为企业总部接入终端网关设备,PC-2为企业总部终端,网络管理员在分支机构访问总部时部署PPP认证 ,R1和R2互为认证路由器和被认证路由器。只有认证通过才能建立PPP连接进行正常访问。

步骤:开启GNS3虚拟机,新建拓扑文件,在工作区添加两台路由器(c3745)和两台PC,按下图连接路由器、PC,开启设备。并按照下图和下表,在R1和R2之间配置PPP协议,并开启CHAP认证(此时s0/0口关闭),将路由器的配置指令截图如下:
在这里插入图片描述

设备接口IP地址地址掩码默认网关
R1S0/010.1.1.1255.255.255.0-
F0/1192.168.3.1255.255.255.0-
R2S0/010.1.1.2255.255.255.0-
F0/1192.168.4.1255.255.255.0-
PC-1E0192.168.3.2255.255.255.0192.168.3.1
PC-2E0192.168.4.2255.255.255.0192.168.4.1

配置R1:

# 进入全局模式
R1#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R1#username R2 password 1234
# 进入接口模式,对f0/1口进行配置
R1(config)#interface f0/1
R1(config-if)#ip address 192.168.3.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R1(config)#interface s0/0
# 配置s0/0口的IP地址
R1(config-if)#ip address 10.1.1.1 255.255.255.0
# 设置s0/0口作为DCE设备,为DTE设备提供时钟以便同步,时钟速率为128000(bit/s)
R1(config-if)#clock rate 128000
# 在s0/0口封装ppp协议
R1(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R1(config-if)#ppp authentication chap
# 停用s0/0口
R1(config-if)shutdown

配置R2:

# 进入全局模式
R2#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R2#username R1 password 1234
# 进入接口模式,对f0/1口进行配置
R1(config)#interface f0/1
R1(config-if)#ip address 192.168.4.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R2(config)#interface s0/0
# 配置s0/0口的IP地址
R2(config-if)#ip address 10.1.1.2 255.255.255.0
# 在s0/0口封装ppp协议
R2(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R2(config-if)#ppp authentication chap
# 停用s0/0口
R2(config-if)shutdown

Q:DCE设备和DTE设备是什么?为什么R1要设置时钟而R2不用?
A:DCE 和 DTE 分别代表数据通信设备和数据端点设备。
DCE (Data Circuit-terminating Equipment) 通常指在数据传输中终止数字电路的设备,负责将数字信号转换为模拟信号,以便在通信设备之间传输。例如,MODEM 设备通过电话线将数字信号转换为模拟信号,然后通过电话线进行传输,以连接到互联网。
DTE (Data Terminal Equipment)指的是终端设备,例如电脑、终端、打印机等。在通信中,DTE 既可以接收数据,也可以发送数据,但必须通过通信线路与 DCE 进行连接。
在数据通信中,DCE 和 DTE 通常通过串行通信线(例如 RS-232、V.35 或 X.21)进行连接,DCE 端常常为对方提供时钟同步信号。一些常见的 DCE 设备包括调制解调器、CSU (Channel Service Unit)、DSU (Data Service Unit) 等。
需要注意的是,相同的设备可能在不同情况下被视为 DTE 或 DCE。例如,一个串口可以连接到一个调制解调器作为 DTE,也可以连接到一个计算机作为 DCE。在本次实验中,R1为分支机构接入网关设备(DCE),R2为企业总部接入终端网关设备(DTE),clock rate 128000 命令仅在 DCE 设备上使用,表示 DCE 设备要发送或接收数据的速率。在这里,另一端是一个 DTE 设备,无需使用 clock rate 命令。

配置PC-1和PC-2:

PC-1> ip 192.168.3.2/24 192.168.3.1
PC-2> ip 192.168.4.2/24 192.168.4.1

抓包分析:
在R1和R2的链路上右键start capture

在这里插入图片描述

# 开启R1的链路
R1(config)#interface s0/0
R1(config-if)#no shutdown
# 开启R2的链路
R2(config)#interface s0/0
R2(config-if)#no shutdown

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🕒 6. VLAN技术

🕘 6.1 简介

🕤 6.1.1 目标

VLAN技术把用户划分成多组逻辑的网络,组内可以通信,组间不允许通信。

二层转发的单播、组播、广播报文只能在组内转发。

为了实现转发控制,在待转发的以太网帧中添加 VLAN标签 ,然后设定交换机端口对该标签和帧的处理方式。

方式包括丢弃帧、转发帧、添加标签、移除标签。

🕤 6.1.2 帧格式

在这里插入图片描述

  • 标签协议标识TPID:固定取值为0x8100,表明这是一个携带802.1Q标签的帧
  • 优先级PRI:指明帧的优先级。0-7,表示8种优先级,提供有差别的转发服务。
  • 标准格式指示CFI:在以太网环境中,这个字段始终为0。
  • VLAN标识:它唯一地标志了以太网帧属于哪一个VLAN
    • VID的取值范围是0~ 4095 (0 ~ 212-1)
    • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是1 ~ 4094

802.1Q帧是由交换机来处理的,而不是用户主机来处理的

  • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称“打标签”。
  • 当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”。

端口上接收时总希望能够打上标签,发送出去时候总希望能去除标签

🕤 6.1.3 划分方式

  • 基于端口(常用)
    在这里插入图片描述

  • 基于MAC地址
    在这里插入图片描述

  • 基于协议
    在这里插入图片描述

  • 基于子网
    在这里插入图片描述

  • 基于策略(安全性很高)

🕤 6.1.4 链路

VLAN 技术的出现,使得交换网络中存在了带VLAN 的以太网帧和不带VLAN 的以太网帧。因此,相应地也对链路做了区分:
(1)接入链路(Access Link):连接用户主机和交换机的链路。通过的帧为不带Tag 的以太网帧。
(2)干道链路(Trunk Link):连接交换机和交换机的链路。通过的帧一般为带Tag 的VLAN 帧,也允许通过不带Tag 的以太网帧。

🕤 6.1.5 端口模式

交换机的端口类型有以下三种:Access、Trunk、Hybrid

交换机各端口的缺省VLAN ID

  • 在思科交换机上称为Native VLAN,即本征VLAN。
  • 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。每个端口有且只有一个PVID,默认情况下端口的PVID都为1(即端口属于VLAN 1)

🕞 6.1.5.1 接入端口

  • 接入端口(Access Port):一般用于终端设备与交换机之间

注意:交换机与路由器连接的接口也需要使用接入接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端。

  • 接入端口只能属于一个VLAN

  • 接入端口的PVID值与端口所属VLANID相同(默认为1

  • 接入端口接收处理方法:一般只接收"未打标签"的普通以太网MAC帧。根据接收帧的端口PVID值给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口PVID取值相等

  • 接入端口发送处理方法:若帧中的VID与端口的PVID相等,则"去标签"并转发该帧;否则不转发

在这里插入图片描述
在这里插入图片描述

🕞 6.1.5.2 干道端口

  • 干道端口(Trunk Port):一般用于交换机之间或交换机与路由器之间的互连
  • 干道端口可以属于多个VLAN
  • 用户可以设置干道端口的PVID值,默认情况下,干道端口PVID值为1
  • 干道端口发送处理方法
    • VID等于PVID的帧,“去标签,再转发”
    • VID不等于PVID的帧,直接转发
  • 干道端口接收处理方法
    • 接收"未打标签"的帧。根据接收帧的端口的PVID给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等
    • 如该端口允许进入,则直接接收"已打标签的帧",否则丢弃

🕞 6.1.5.3 混合端口(仅华为交换机有)

  • 混合端口(Hybrid Port):既可以用于交换机之间或交换机与路由器之间的互连(同干道端口),也可用于交换机与用户计算机之间的互连(同接入端口)
  • 混合端口可以属于多个VLAN(同干道端口)
  • 用户可以设置混合端口的PVID值。默认情况下,混合端口的PVID值为1(同干道端口)
  • 混合端口发送处理方法与干道端口不同):
    • 查看帧的VID是否在端口的"去标签"列表中
    • 若存在(untag),则"去标签"后转发
    • 若不存在(tag),则直接转发
  • 混合端口接收处理方法(同干道端口):
    • 接收"未打标签"的帧。根据接收帧的端口的PVID给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等
    • 如该端口允许进入,则直接接收"已打标签的帧",否则丢弃

在这里插入图片描述

🕘 6.2 VLAN内通信

在这里插入图片描述

在这里插入图片描述

(1)数据帧首先到达SWA 的端口GE0/0/4。
(2)端口GE0/0/4 给数据帧加上Tag,Tag 的VID 字段填入该端口所属的VLAN 的编号2。
(3)SWA 查找VLAN2的MAC 地址表,将该帧转发到相应的出端口GE0/0/2,到SWB。
(4)SWB 收到帧后,会根据帧中的Tag 识别出该帧属于VLAN2,查找MAC 地址表,将该帧转发到相应的出接口
(5)端口GE0/0/3 将数据帧发送给主机Host B。

🕘 6.3 VLAN间通信

🕤 6.3.1 概述

VLAN隔离了二层广播域,也就严格地隔离了各个VLAN之间的任何流量,分属于不同VLAN的用户不能互相通信。

不同VLAN 之间的流量不能直接跨越VLAN 的边界,需要使用路由,通过路由将报文从一个VLAN 转发到另外一个VLAN。

在主机设置默认网关,对于非本地的通信,主机会自动寻找默认网关,并把报文交给默认网关转发而不是直接发给目的主机。

🕤 6.3.2 解决VLAN间互通的方法

为每个VLAN 分配一个单独的路由接口:

  • 在二层交换机上配置VLAN,每一个VLAN使用一条独占的物理连接连接到路由器的一个接口上。
  • 随着每个交换机上VLAN数量的增加,这样做必然需要大量的路由器接口,出于成本考虑一般不采用。

多个VLAN公用一条物理连接:

  • 二层交换机上和路由器上配置他们之间相连的端口使用VLAN Trunking,使多个VLAN共享同一条物理连接到路由器
  • 这种方式也称为独臂路由或者单臂路由,它只需要一个以太网接口,通过创建子接口可以承担所有VLAN 的网关,从而在不同的VLAN 间转发数据。

在这里插入图片描述
路由器仅仅提供一个以太网接口,而在该接口下提供三个子接口分别作为3个VLAN用户的缺省网关,当VLAN100的用户需要与其它VLAN的用户进行通信时,该用户只需将数据包发送给缺省网关,缺省网关修改数据帧的VLAN标签后再发送至目的主机所在VLAN,即完成了VLAN间的通信。

三层交换机:

  • 既具备二层交换机的交换功能,又具备路由器的路由功能。
  • 主机设置默认网关就是三层交换机中虚拟VLAN接口的IP地址。

在这里插入图片描述

🕘 6.4 实验:利用单臂路由实现VLAN间通信

🔎 【GNS3】Window10 下 GNS3 配置 IOU 模拟环境

题目:开启GNS3虚拟机,新建拓扑文件,在工作区添加一台二层交换机(IOU)、一台路由器和两台PC,按下图连接路由器、交换机和PC,开启设备。设备的vlan 配置和IP地址配置按下表进行。PC1属于VLAN30,PC2属于VLAN40,现需要在路由器R1上配置单臂路由使得VLAN30和40连通。将路由器和交换机的配置指令截图如下:

在这里插入图片描述

设备接口IP地址地址掩码默认网关
R1F0/0.110.0.1.1255.255.255.0-
F0/0.210.0.2.1255.255.255.0-
PC-1E010.0.1.2255.255.255.010.0.1.1
PC-2E010.0.2.2255.255.255.010.0.2.1
设备接口接口类型所属VLAN允许通过的VLAN
IOU1E0/0trunk-30、40
E0/1access30-
E0/2access40-

配置R1:

# 打开接口
R1#conf t
R1(config)#int f0/0
R1(config-if)#no shutdown
# 配置子接口IP
R1(config)#int f0/0.1
R1(config-subif)#encapsulation dot1q 30
*Mar  1 00:04:36.471: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
R1(config-subif)#ip address 10.0.1.1 255.255.255.0
R1(config-subif)#exit
*Mar  1 00:04:54.855: %SYS-5-CONFIG_I: Configured from console by console
R1(config)#int f0/0.2
R1(config-subif)#encapsulation dot1q 40
R1(config-subif)#ip address 10.0.2.1 255.255.255.0
*Mar  1 00:05:52.107: %SYS-5-CONFIG_I: Configured from console by console
# 在R1上查看路由表
R1#show ip route

在这里插入图片描述

配置PC-1与PC-2:

PC-1> ip 10.0.1.2/24 10.0.1.1
Checking for duplicate address...
PC1 : 10.0.1.2 255.255.255.0 gateway 10.0.1.1

PC-1> save
Saving startup configuration to startup.vpc
.  done

PC-2> ip 10.0.2.2/24 10.0.2.1
Checking for duplicate address...
PC2 : 10.0.2.2 255.255.255.0 gateway 10.0.2.1

PC-2> save
Saving startup configuration to startup.vpc
.  done

配置IOU1:

IOU1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
# 创建VLAN
IOU1(config)#vlan 30
IOU1(config)#vlan 40
# 配置设备端口为 Access 类型
IOU1(config)#int e0/1
IOU1(config-if)#switchport access vlan 30
*May 17 05:46:42.170: %SYS-5-CONFIG_I: Configured from console by console
IOU1(config-if)#exit
IOU1(config)#int e0/2
IOU1(config-if)#switchport access vlan 40
*May 17 05:47:16.330: %SYS-5-CONFIG_I: Configured from console by console
IOU1(config-if)#exit
# 配置设备端口为 Trunk 类型
IOU1(config)#int e0/0
IOU1(config-if)#switchport trunk encapsulation dot1q
*May 17 05:48:51.668: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, ch
IOU1(config-if)#switchport mode trunk
*May 17 05:49:10.903: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, ch
IOU1(config-if)#switchport trunk allowed vlan 30,40
*May 17 05:49:47.394: %SYS-5-CONFIG_I: Configured from console by console
# 在IOU1上查看VLAN
IOU1#show vlan
IOU1#show interface e0/0 switchport

在这里插入图片描述
在这里插入图片描述

配置完记得write保存!

在PC1上ping PC2:
在这里插入图片描述

在这里插入图片描述

🕒 7. STP技术

🕘 7.1 工作原理

以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在提高网络可靠性的同时又避免环路带来的各种问题。

生成树算法STA(Spanning Tree Algorithm)是生成树协议STP的核心。它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑

STP协议由IEEE 802.1D 定义,描述时使用的是“网桥”,由于“交换机”的本质是“多端口网桥”,接下来都使用“网桥”来描述。

生成树算法的三个步骤:

  1. “选举”根交换机
  2. “选举”根端口
  3. “选举”指定端口并阻塞备用端口

注:这里所谓的“选举”,是通过网络中各交换机相互发送生成树协议专用的数据帧来实现的,这些交换信息的报文称为网桥协议数据单元,简称BPDU

选举根交换机:

  • 根交换机的选举条件:网桥ID(BID)最小者当选
  • 网桥ID(BID)由以下两部分构成:
    • 优先级(2字节)
      • 范围:0 - 61440(也有说法是65535)
      • 步长:4096
      • 默认值:32768
    • 交换机的基本MAC地址(6字节)
  • 网桥ID (BID)的比较方法:
    • 优先级取值越小,则网桥ID(BID)就越小。
    • 若优先级相同,则比较MAC地址,从MAC地址的左侧开始依次比较,数值小的,则网桥ID(BID)就小。

选举根端口:

  • 在每一个非根交换机上选出一个根端口RP(Root Port),并且只能是一个。
  • 根端口RP用于接收根交换机发来的BPDU,也用来转发普通流量。
  • 根端口RP的选举条件:
    • BPDU接收端口到根交换机的路径成本(端口开销)最小。
       链路带宽   成本值  4 M b / s 250 10 M b / s 100 16 M b / s 62 100 M b / s 19 1 G b / s 4 10 G b / s 2 \begin{array}{|c|c|} \hline {\text { 链路带宽 }} & \text { 成本值 } \\ \hline 4 Mb/s & 250 \\ \hline 10 Mb/s & 100 \\ \hline 16 Mb/s & 62 \\ \hline 100 Mb/s & 19 \\ \hline 1 Gb/s & 4 \\ \hline 10 Gb/s & 2 \\ \hline \end{array}  链路带宽 4Mb/s10Mb/s16Mb/s100Mb/s1Gb/s10Gb/s 成本值 250100621942
    • 对端的网桥ID(BID)最小。
    • 对端的端口ID(PID)最小。
      • 优先级范围(1 - 4bit)
        • 范围:0 - 240
        • 步长:16
        • 默认值:128
      • 端口号(5 - 16bit)

选举指定端口(Designated Port)并阻塞备用端口(预备端口):

  • 在每一个网段上选出一个指定端口DP ( Designated Port)并且只能是一个。
  • 指定端口DP用于转发根交换机发来的BPDU,也用来转发普通流量。
  • 指定端口DP的选举条件:
    • 根交换机的所有端都是指定端口DP。
    • 根端口的对端端口一定是指定端口DP。
    • BPDU转发端口到根交换机的路径成本最小。
    • 本端的网桥ID(BID)最小。
    • 本端的端口ID(PID)最小。
  • 剩余端口成为备用端口AP(Alternate Port),将它们阻塞。

在这里插入图片描述

端口状态描述:

端口状态描 述
Disabled(端口没有启用)此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算。
Listening(侦听状态)此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU。
Blocking(阻塞状态)此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU。
Learning(学习状态)此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。
Forwarding(转发状态)此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。
  • 当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。
  • 如果经过计算,端口角色需要设置为预备端口(Alternate Port),则端口状态立即进入Blocking;
  • 如果经过计算,端口角色需要设置为根端口(Root Port)或指定端口(Designated Port),则端口状态在等待Forward Delay之后从Listening状态进入Learning状态,然后继续等待Forward Delay之后,从Learning状态进入Forwarding状态,正常转发数据帧。

🕘 7.2 BPDU报文

STP生成树的计算,根端口、指定端口的选举,都是借助BPDU(Configuration Bridge Protocol Data Unit)报文进行信息的传递和交换的。

BPDU报文有两类:配置BPDUTCN BPDU

🕤 7.2.1 配置BPDU

在这里插入图片描述

  • 配置BPDU使用标准LLC格式封装在以太网数据帧中。
  • 配置BPDU只在指定端口(Designated Port)上发送。
  • DMAC:目的MAC地址。发送配置BPDU的数据帧使用保留的组MAC地址01-80-C2-00-00-00,此地址标识所有交换机,但是不能被交换机转发,也即只在本地链路有效。
  • LLC Header:目的服务访问点(Destination Service Access Point, DSAP)和源服务访问点(Source Service Access Point, SSAP)的值都设为二进制01000010。Ctrl字段的值设为3。

在这里插入图片描述

  • 当STP初始计算选举根交换机时,各个交换机主动生成并发送配置BPDU。
  • 选举结束后,只有根交换机才能主动生成并发送配置BPDU
  • 非根交换机只有在自己的根端口收到配置BPDU报文才能根据收到的报文生成配置BPDU从指定端口发送。

配置内容:
在这里插入图片描述

报文标识:

参数比特数描 述
Protocol Identifier (协议标识)16比特取值0x0000
Protocol Version Identifier (协议版本标识)8比特取值0x00
BPDU Type (BPDU类型)8比特配置BPDU报文取值0x00
拓扑改变通知BPDU报文取值0x80
Flags (标志)8比特配置BPDU报文取值0x00
拓扑改变配置BPDU报文取值0x01
拓扑改变确认配置BPDU报文取值0x80

STP计算:

参数比特数描 述
Root Identifier64比特当前根交换机的桥ID
Root Path Cost32比特发送该BPDU报文的交换机的根路径开销
Bridge Identifier64比特发送该BPDU报文的交换机的桥ID
Port Identifier16比特发送该BPDU报文的端口ID

时间参数:

参数比特数描 述
Message Age16比特该BPDU报文从根桥发送到当前交换机的总时间,随时间增长而变大,若达到Max Age,则此配置BPDU被认为已经过期
Max Age16比特BPDU报文的最大生命周期,默认取值20s
Hello Time16比特交换机发送配置BPDU的报文周期,默认取值2s
Forward Delay16比特端口Listening和Learning状态的持续时间,默认取值15s

🕤 7.2.2 TCN BPDU

如果网络拓扑发生了变化,会触发STP 的重新计算,新的生成树拓扑可能会跟原先的网络拓扑存在一定的差异。

在交换机上,指导报文转发的是MAC 地址表,默认的动态表项的生存时间是300 s,此时,数据转发如果仍然按照原有的MAC 地址表,会导致数据转发错误。

为防止拓扑变更情况下的数据发送错误,STP 中定义了拓扑改变消息泛洪机制。

当网络拓扑发生变化的时候,除了在整网泛洪拓扑改变信息外,同时修改MAC 地址表的生存期为一个较短的数值,等拓扑结构稳定之后,再恢复MAC 地址表的生存期。

在这里插入图片描述

在向整网泛洪拓扑改变信息的过程中,共涉及三种BPDU:

  1. 拓扑改变通知BPDU:TCN(Topology Change Notification) BPDU。用于非根交换机在根端口上向上行交换机通告拓扑改变信息,并且每隔Hello Time(2秒)发送一次,直到收到上行交换机的拓扑改变确认配置BPDU或者拓扑改变配置BPDU。
  2. 拓扑改变确认配置BPDU:TCAN(Topology Change Acknowledgment Configuration) BPDU。配置BPDU的一种,和普通配置BPDU不同的是此配置BPDU设置了一个Flag位。用于非根交换机在接收到拓扑改变通知BPDU的指定接口上向下行交换机发送拓扑改变通知的确认信息。
  3. 拓扑改变配置BPDU:TCC(Topology Change Configuration) BPDU。此配置BPDU设置了另外一个Flag位。用于从根交换机向整网泛洪拓扑改变信息,所有交换机都在自己所有的指定端口上泛洪此BPDU。

SWA收到SWB发送的拓扑改变通知BPDU之后,每隔2秒向网络中发送拓扑改变配置BPDU(设置了一个Flag位的配置BPDU),使网络中所有的交换机都把MAC地址表的生存期修改为Forward Delay(15秒),经过一段时间(Max Age加上Forward Delay,默认为35秒)之后,SWA(根交换机)在自己发送的配置BPDU中,清除Flag位,表示网络拓扑已经稳定,网络中的交换机恢复MAC地址生存期。

拓扑改变通知BPDU格式:

参数字节数内容
2字节Protocol Identifier0x0000
1字节Protocol Version Identifier0x00
1字节BPDU Type0x80

在这里插入图片描述
拓扑改变确认配置BPDU和拓扑改变配置BPDU都是配置BPDU的一种,和普通的配置BPDU不同的是:

  • 普通的配置BPDU中Flag字段全部设置为0;
  • 拓扑改变确认配置BPDU将Flag字段的第8位设置为1;
  • 拓扑改变配置BPDU将Flag字段的第1位设置为1。

OK,以上就是本期知识点“数据链路层协议”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/21517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法笔记:A2-A4-RSRQ切换算法

1 LTE 切换 LTE切换是移动通信网络中的一个过程,移动设备在保持无间断服务的情况下,将其连接从一个基站切换到另一个基站。当移动设备离开当前基站的覆盖范围或网络资源拥塞时,就需要进行切换。LTE切换通常是基于特定的条件触发的&#xff0…

makefile 学习(1):C/C++ 编译过程

1. GCC 介绍 1.1 介绍 GCC 官方文档 https://gcc.gnu.org/onlinedocs/ 官方文档是最权威的,网上所有的答案都来自官方文档国内论坛参差不齐,找到好的答案比较花时间,并且很容易被错误的文档误导。所以推荐看官方文档靠谱点,并且…

二、数据字典开发

文章目录 二、数据字典开发1、搭建service-cmn模块1.1 搭建service-cmn模块1.2 修改配置1.3 启动类 2、数据字典列表2.1 数据字典列表接口2.1.1 model模块添加数据字典实体2.1.2 添加数据字典mapper2.1.4 添加数据字典controller 2.2 数据字典列表前端2.2.1 添加路由2.2.2 定义…

【Java算法题】剑指offer_01数据结构

前言 刷题链接: https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 1. 链表 JZ24 反转链表 思路:基本操作,如下所示。 /* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }…

ad18学习笔记一

如何自学altium designer如何自学altium designer? - 知乎如何自学altium designer 这里面有ad官方推荐的b站的视频:可以直接去b站关注ad官方账号 AltiumChina,它本身就发布了很多实用教程。 在知乎的这个界面也有Altium Designer Ver18_官…

c++ 11标准模板(STL) std::set(六)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…

如何使用SCQA模型提高表达能力

SCQA架构是“结构化表达”工具。 一、什么是“SCQA架构”&#xff1f;‍ S&#xff08;Situation&#xff09;情景——由熟悉的情境或事实引入 C&#xff08;Complication&#xff09;冲突——指出实际面临的困境或冲突 Q&#xff08;Question&#xff09;疑问——你如何分析…

文本三剑客正则表达式3

文章目录 文本三剑客&正则表达式31 awk工作原理2 awk的基本格式及其内置变量2.1 基本格式2.2 内置变量2.3 示例2.3.1 直接打印所有内容2.3.2 取每一行的第一列2.3.3 打印行号&#xff0c;及所有内容2.3.4 打印第三行2.3.5 打印2-4行2.3.6 打印第2行和第4行2.3.7 用正则表达…

基于harbor安装私有镜像仓库

目录 Harbor介绍 Harbor安装 下载完成后&#xff0c;在压缩包解压到/usr/local目录下&#xff1a; 修改Harbor配置文件 推送本地镜像到harbor上 1、给本地镜像打一个标签 2、 设置docker的daemon.json 3、重启docker 4、使用docker登录harbor 5、把本地的镜像push到harbor…

银豆信息张雪灿:钻石级合作伙伴的增长秘诀

编者按&#xff1a; 杭州银豆信息技术有限公司&#xff08;简称“银豆”&#xff09;&#xff0c;是一家专注于云计算服务的高科技企业&#xff0c;目前已为2000家企业级客户提供了专业的行业解决方案, 与人民网、光大银行、长安汽车金融、vivo金融、浙江省农科院、淄博市大数…

MediaPipe虹膜检测:实时虹膜跟踪和深度估计

包括计算摄影(例如,人像模式和闪光反射)和增强现实效果(例如,虚拟化身)在内的大量实际应用都依赖于通过跟踪虹膜来估计眼睛位置。一旦获得了准确的光圈跟踪,我们就可以确定从相机到用户的公制距离,而无需使用专用的深度传感器。反过来,这可以改善各种用例,从计算摄影…

机器学习之SVM分类器介绍——核函数、SVM分类器的使用

系类文章目录 机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归&#xff0c;岭回归&#xff0c;套索回归&#xff0c;弹性网络】 文章目录 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数 b、非线性SVM与核函…

从内网护卫到零信任尖兵:腾讯iOA炼成记

腾讯既是企业产品的服务商又是使用者&#xff0c;很多产品最原始的出发点最早只是为了解决腾讯自身某一个需求&#xff0c;经过不断地发展完善和业务场景锤炼&#xff0c;最终进化成一个成熟的企服产品。本系列文章讲述的是这样一组Made in Tencent故事&#xff0c;这是系列的第…

Word批量更改图片环绕方式与=尺寸大小

前提&#xff1a;一份Word文档里面有100张图片&#xff0c;有大有小&#xff0c;需要将100张图片更改为统一大小&#xff0c;宽度与高度均为5厘米&#xff0c;同时环绕方式也需要改成四周型。 默认Word图片的默认环绕方式为嵌入型&#xff0c;需要统一更改为四周型&#xff0c;…

linux 安装 maven 3.8 版本

文章目录 1&#xff1a;maven 仓库官网 2、下载安装包 3、使用&#xff1a;Xftp 上传到你想放的目录 4、解压文件 ​编辑 5、配置环境变量 ​编辑 6、刷新 /etc/profile 文件 7、查看maven 版本 1&#xff1a;maven 仓库官网 Maven – Download Apache Mavenhttps://mave…

Java 基础进阶篇(十五):IO 流总结(全网最全面)

文章目录 前置内容&#xff1a;字符集一、IO 流概述二、字节流2.1 文件字节输入流 FileInputStream2.1.1 案例&#xff1a;每次读取一个字节2.1.2 案例&#xff1a;每次读取一个字节数组2.1.3 案例&#xff1a;读取文件的全部字节 2.2 文件字节输出流 FileOutputStream2.3 文件…

使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5

宿主机环境 系统&#xff1a;MAC、Windows10 Docker版本&#xff1a;Docker version 23.0.5 Docker Desktop:Dockerdesktop官方地址 前言 这篇主要介绍如何在Mac、Windows10使用docker搭建LNMP集成开发环境。下面我会写Dockerfile编译安装Nginxphp基础环境。mysql、redis基…

pynvme操作流程

如下操作pynvme运行在fedora上&#xff0c;在其他操作系统尚未做尝试。 步骤一&#xff1a;检查本地windows是否安装ssh 检查方式&#xff1a;windows本地打开windows powershell&#xff0c;输入ssh&#xff0c;若打印usage &#xff1a;ssh等一些信息&#xff0c;则已安装s…

8.防火墙

文章目录 防火墙iptables防火墙介绍基础操作高级操作通用匹配隐含匹配端口匹配&#xff1a;--sport 源端口、--dport 目的端口 TCP标志位匹配&#xff1a;--tcp-flags TCP标志位ICMP类型匹配&#xff1a;--icmp-type ICMP类型 显式匹配多端口匹配IP范围匹配&#xff1a;-m ipra…

基于αβ剪枝算法的五子棋

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 五子棋是世界智力运动会竞技项目之一&#xff0c;是一种两人对弈的纯策略型棋类游戏&#xff0c;是世界智力运动会竞技项目之一&#xff0c;通常双方分别使用黑白两色的棋子&#xff0c;下在棋盘直线与横线的交叉点上&#xf…