二、数据链路层
计算机网络-数据链路层
一、概述
数据链路层:
解决问题:
-
通过数据链路层解析物理层发出去的信号怎么样选择、如何到达目的地
-
比特流的分界线
-
链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点
-
数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路
-
数据链路层以帧为单位传输和处理数据
-
分类:
- 点对点的数据链路层:核心问题
- 封装成帧、差错检测、可靠传输
- 使用广播信道的数据链路层:
- 确定目的主机问题、碰撞问题
二、点对点的数据链路层
1、封装成帧
封装成帧:数据链路层为数据加上帧首和帧尾使之成为帧的过程。
- PPP帧:
- 帧头和帧尾中含有重要的控制信息
- 帧头帧尾的作用之一就是帧定界(变成比特传输后据此区分每个帧的起始和结束)
- 以太网MAC帧:
- MAC帧不需要帧定界符,在物理层发送前会添加前导码8个自己:前7个为时间同步码,后面1个字节为帧开始定界符
透明传输:是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据)
- 原因:保证上层交付的数据单元内没有包含帧定界符
- 解决方法:
-
面向字节的物理链路:使用字节填充(或称字符填充)的方法实现透明传输
- 帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。接收方接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理
-
面向比特的物理链路:使用比特填充的方法实现透明传输
- 零比特填充:在发送前,对帧的数据部分进行扫描,每5个连续的比特1后就插入1个比特0,防止其与首部尾部的标志位混淆。接收方接收时将每5个连续的比特1后面的0剔除即可
-
2、差错检测
差错检测:实际的通信链路都不是理想的,可能造成比特差错:1可能变成0,0可能变成1。
- 误码率BER(Big Error Rate) = 传输错误的比特 / 传输比特总数的比率
- 差错检测码:帧尾部包含的FCS帧检验序列字段(检测数据在传输过程中是否产生了比特差错)
- MAC帧尾的FCS:4字节
- PPP帧尾的FCS:2字节
差错校验方法:只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
- 奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中"1"的个数为奇数(奇校验)或为偶数(偶校验)
- 问题:如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码、如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)
- 循环冗余校验CRC:
- 收发双方约定好一个生成多项式
G(x)
、 - 送方基于待发送的数据和生成多项式计算出差错检测码【冗余码】,将其添加到待传输数据的后面一起传输
- 接收方通过生成多项式来计算收到的数据是否产生了误码
- 收发双方约定好一个生成多项式
3、可靠传输
可靠传输和不可靠传输服务的操作:
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输:想办法实现发送端发送什么,接收端就收到什么
- 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输,是否使用可靠传输取决于应用需求.
3.1 停止-等待协议SW - 自动请求重传ARQ
核心:发送方每发送一个数据分组后,就停止发送下一个数据分组,等待接收方的确认分组或否认分组,若收到确认分组,则继续发送下一个分组,若收到否认分组,则重复之前发送的那个数据分组。
问题:数据分组丢失、确认分组丢失、确认分组超时
- 数据分组丢失的情况:超时重传
- 确认分组丢失、确认分组超时的情况:数据分组、确认分组进行编号,防止重复发送、重复确认
总结:
- 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
- 使用卫星链路及重传时,信道利用率较低
3.2 回退N帧协议GBN
回退N帧协议 (Go-Back-N) 是一种滑动窗口协议,用于实现可靠的数据传输。它允许发送方连续发送多个分组,而不必等待确认,接收方按序接收分组。
基本原理和工作流程:
-
发送方窗口:
- 发送方可以连续发送多个分组,窗口的大小为N。
-
接收方窗口:
- 接收方窗口大小为1,只能按序接收分组。
-
确认分组:
- 接收方只能发送最后一个正确接收的分组的确认,其他分组的确认将被丢弃。
-
超时重传:
- 发送方设置定时器,超时后会重新发送窗口内的所有分组。
- 发送方连续发送窗口内的分组。
- 接收方按序接收分组,发送确认。
- 如果接收方检测到分组失序,则丢弃后续分组,直到接收到正确的分组为止。
- 发送方根据接收到的确认信息移动发送窗口。
- 如果发送方未收到确认,或者收到了错误的确认,则超时重传窗口内的所有分组或者重传末尾帧确认后开始。
总结:
适用场景:回退N帧协议是一种常用的滑动窗口协议,适用于许多实时性要求不高,但需要高可靠性的网络通信场景。
- 适用于具有较高信道质量的网络环境,且丢包率较低的情况,充分利用了网络带宽,发送方可以连续发送多个分组。。
- 如果丢失一个分组,会导致窗口内的所有分组都需要重传,可能会浪费带宽。
3.3 选择重传协议SR
选择重传协议 (Selective Repeat, SR) 是一种滑动窗口协议,用于实现可靠的数据传输。它允许发送方连续发送多个分组,接收方可以选择性地确认分组,同时允许接收方接收乱序的分组。
基本原理和工作流程:
-
发送方窗口:
- 发送方可以连续发送多个分组,窗口的大小为N。
-
接收方窗口:
- 接收方窗口大小为N,可以接收窗口内的分组。
-
确认分组:
- 接收方可以选择性地确认分组,只会确认已经正确接收的分组。
-
超时重传:
- 发送方为每个分组设置独立的定时器,超时后会重新发送相应的分组。
- 发送方连续发送窗口内的分组。
- 接收方按序接收分组,发送确认。
- 接收方可以选择性地确认分组,如果接收到的分组有误,则丢弃并不会发送确认。
- 发送方根据接收到的确认信息移动发送窗口。
- 如果发送方未收到确认,或者收到了错误的确认,则超时重传相应的分组。
总结:
适用场景:适用于具有一定信道质量的网络环境,可以容忍一定程度的丢包情况。
- 充分利用了网络带宽,发送方可以连续发送多个分组。
- 允许接收方接收乱序的分组,提高了网络利用率。
- 发送方和接收方都需要维护更复杂的状态信息。
选择重传协议相对于回退N帧协议来说,更加灵活,可以在一定程度上提高网络的传输效率和可靠性。
三、点对点协议PPP
1、组成
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)。
- 对上层的网络层:一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议,NCPs则负责在已建立的物理链路上传输不同的网络层协议。
- 对下层的物理层:链路控制协议LCP,用于建立、配置以及测试数据链路和物理物理链路的连接。
- PPP协议可以再面向字节的异步链路和面向比特的同步链路运行
2、PPP帧的组成
总共8个字节,帧头5个,帧尾3个。
-
标志(Flag)字段:值为0x7E,表示PPP帧的定界符。
-
地址(Address)字段:值为0xFF,目前没有特定作用,保留字段。
-
控制(Control)字段:值为0x03,也是保留字段,目前没有特定作用。
-
协议(Protocol)字段:指明帧的数据部分送交哪个协议处理。例如:
- 0x0021 表示数据部分为1P数据报(IP数据报)。
- 0xC021 表示数据部分为LCP分组。
- 0x8021 表示数据部分为NCP分组。
-
FCS(帧检验序列)字段:CRC计算出的校验位,用于检测帧在传输过程中是否发生了错误。
工作状态:
- LCP配置协商:
- 在PPP连接建立时,双方会进行LCP(Link Control Protocol)的配置协商。
- 如果协商成功,会进入建立物理层连接的状态。
- 鉴别协议:
- 在LCP配置协商成功后,可能会进行鉴别协议,以确保连接的合法性。
- 可能会选择无需鉴别、口令鉴别协议PAP或挑战握手鉴别协议CHAP。
- LCP配置协商静止状态:
- 如果LCP配置协商失败,会进入静止状态,此时连接未能建立。
- 网络鉴别失败:
- 如果鉴别失败,可能会导致连接的终止。
- NCP配置:
- 一旦建立了物理层连接,PPP链路的两端会互相交换网络层特定的NCP分组。
- 如果在PPP链路上运行的是IP,会使用IP控制协议IPCP来配置IP模块,比如分配IP地址
四、媒体接入控制
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control
)
- 静态划分信道:
- 频分多址:将频谱划分成不同的频带,允许多个用户同时共享同一媒体。
- 时分多址:将时间分割成固定的时隙,使得多个用户在不同的时隙内传输数据。
- 码分多址:使用不同的码来区分不同的用户信号,允许同时传输多个信号。
- 动态接入控制:
- 受控接入:用户在发送数据前需要等待授权。
- 集中控制:一个中心节点负责协调和控制所有用户的访问,在集中控制中,一个主站以循环方式轮询每个站点,询问是否有数据要发送。只有被轮询到的站点才能发送数据。最大的缺点是可能存在单点故障问题,因为所有通信依赖于主站的正常运行。
- 分散控制:控制由多个节点分散执行,每个节点在特定条件下可以自由接入,通过令牌传递,所有站点被连接成一个环形网络。一个特殊的控制锁(令牌)沿着环逐站传递。只有接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。这种方法可以避免冲突,但如果令牌丢失或损坏,可能会导致通信中断。
- 随机接入:在随机接入中,所有站点通过竞争随机地在信道上发送数据。如果恰巧有两个或更多的站点在同一时刻发送数据,则会发生碰撞(即冲突)。在发生冲突后,这些站点的发送都会失败。因此,这类协议需要解决如何尽量避免冲突以及在发生冲突后如何尽快恢复通信。
- 受控接入:用户在发送数据前需要等待授权。
1、静态划分信道
静态划分信道 — 信道复用:通过一条物理线路同时传输多路用户的信号。
- 频分复用(FDM):通过将信号分配到不同的频率带宽上,使多路信号能够共用同一传输介质。
- 时分复用(TDM):通过将时间分割成若干个时隙,使得多个信号在不同的时段内共用同一传输介质。
- 波分复用(WDM):通过在光纤通信中使用不同的光波长(频率)来实现多路传输。
- 码分复用(CDM):通过为每个用户分配独特的码序列,使得多个用户能够同时使用相同的频率带宽。
复用与多址的区别:
-
复用:是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
-
多址:(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)
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时间后他们会同时发送,而实际上多个站点同时发送数据会碰撞。因此需要一个随机时间将他们进行错峰发送。
五、MAC地址、IP地址、ARP协议
1、MAC地址
1.1 概念
-
MAC地址位于数据链路层,用于媒体接入控制 MAC,用于多个主机连接在同一个广播信道上,实现两个主机之间的通信
-
MAC地址也 被称为硬件地址: MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
- 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器 (无线 网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以 会拥有更多的MAC地址。
- MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
1.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、交换机
2.1 概述
交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路
- 以太网交换机通常由多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。
- 一般都工作在全双工方式
- 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)
- 以太网交换机一般都具有多种速率的接口
- 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧
- 以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
- 交换机每个接口是一个独立的碰撞域
帧的两种转发方式:
- 存储转发
- 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查是否有差错)
2.2 自学习和转发帧流程
以太网交换机收到帧后,会在帧交换表中查找帧的目的MAC地址对应的接口号,然后通过该接口转发帧。
以太网交换机是即插即用设备,刚上电启动时,内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法逐渐建立起帧交换表。
自学习和转发帧的流程:
-
收到帧后进行登记,登记的内容包括帧的源MAC地址及进入交换机的接口号。
-
根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,分为以下三种情况:
-
明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播、多播或广播)。
-
盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
-
明确丢弃:交换机知道不应该转发该帧,将其丢弃。
-
-
帧交换表中的每条记录都有自己的有效时间,到期会被删除。这是因为可能发生以下情况:
-
交换机的接口改接了另一台主机。
-
主机更换了网卡。
-
这个过程使得以太网交换机能够动态地学习网络中各设备的MAC地址,并根据这些学习到的信息,选择性地将数据帧转发到特定的接口,提高了网络的性能和效率。
2.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保证了数据在网络中的有效传输。
七、VLAN虚拟局域网
1、概述
问题背景:
随着交换式以太网规模的扩大,所有站点属于同一个广播域,这会带来一些问题:
-
广播风暴:大量广播消息可能导致网络拥塞。
-
难以管理和维护:管理一个庞大的广播域会变得复杂。
-
潜在的安全问题:所有设备处于同一个广播域,可能会有安全隐患。
-
频繁的广播信息:TCP/IP协议栈中的许多协议都会使用广播,例如ARP、RIP、DHCP等。
解决方法:
- 一种方法是使用路由器来隔离广播域,但路由器成本较高。
- 另一种方法是引入虚拟局域网(Virtual Local Area Network,VLAN)技术。
VLAN(Virtual Local Area Network)简介:
- VLAN是一种将局域网内的设备按照逻辑需求划分成与物理位置无关的逻辑组的技术。
- 这样,即使设备物理上连接在同一交换机上,它们可以被划分到不同的逻辑组中,实现了逻辑上的隔离。
- VLAN技术可以改善网络管理、提高安全性,并减少广播风暴的影响。
- 总的来说,VLAN技术是一种灵活、高效的网络管理手段,使得网络可以根据实际需求进行灵活划分,提高了网络的性能和安全性。
2、实现机制
2.1 IEEE 802.1Q帧
IEEE 802.1Q是一种VLAN实现方式,它在以太网帧中添加了一个标签(Tag),用于标识帧所属的VLAN:
-
VLAN标记的最后12比特称为VLAN标识符VID,VLAN标识符 (VID) 是用来唯一标志一个以太网帧属于哪一个VLAN的。它的取值范围是1~4094(0和4095留给特殊用途,不用于表示VLAN)。
-
IEEE 802.1Q帧是由交换机来处理的,而不是用户主机来处理的。当交换机收到普通的以太网帧时,会在帧的头部插入一个4字节的VLAN标记,将其转变为802.1Q帧,这个过程称为“打标签”。
2.2 交换机端口
交换机端口是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取值相等。
- 接收“已打标签的帧”。