《计算机网络微课堂》3-11 虚拟局域网 VLAN

本节课我们介绍虚拟局域网 VLAN 的基本概念。

3.11.1 虚拟局域网 VLAN 概述

在之前课程中我们已经介绍过了以太网交换机自学习和转发帧的流程,‍‍以及为避免网络环路而产生的生成树协议。

以太网交换机工作在数据链路层,‍‍也包括物理层,使用一个或多个以太网交换机互联起来的交换式以太网,其所有站点‍‍都属于同一个广播域。‍‍

随着交换式以太网规模的扩大,广播域相应扩大,如图所示,‍‍这是一个由多个以太网交换机互联而成的交换式以太网。‍‍每个以太网交换机上都连接了多个主机,‍‍形成了一个巨大的广播域。

然而巨大的广播域会带来很多弊端,例如广播风暴、‍‍难以管理和维护潜在的安全问题等。

‍‍我们来举例说明广播风暴的问题,‍‍假设网络中的某个主机‍‍要给另一个主机发送一个数据帧,但是在自己的 ARP 高速缓存表中,‍‍无法查到目的主机的 MAC 地址,于是首先要发送 ARP 广播请求来获取目的主机的 MAC 地址。‍‍该 ARP 广播请求会传遍整个网络,网络中的其他所有主机都可以收到该广播。‍‍这种情况就是所谓的广播风暴,广播风暴会浪费网络资源和网络中各主机的 CPU 资源,‍‍因此除非应用需求必须要使用广播,否则网络中的主机应尽量不使用广播。‍‍

也许有的同学会有这样的想法,‍‍如果网络中只是偶尔出现广播,那还是可以接受的,但事实上‍‍网络中会频繁出现广播信息。‍‍目前使用最广泛的 tcpip 协议当中的很多协议‍‍都会使用广播,例如地址解析协议 ARP,路由信息协议 rap‍‍,动态主机配置协议 dhcp 等。除此之外,其他一些协议站也会频繁使用广播。

那么‍‍如何才能将较大的广播域分割成更小的广播域?使用路由器就可以隔离广播域。如图所示,这是由两台以太网交换机互联而成的交换式以太网。‍‍网络中的各主机同属于一个广播域,使用路由器可以将该广播域分割成两个较小的广播域。‍‍路由器工作在网络体系结构的第三层,也就是网络层。

由于路由器默认情况下,‍‍不对广播数据包进行转发,因此路由器很自然的就可以隔离广播域。‍‍然而‍‍路由器的成本较高,局域网内部全部使用路由器来隔离广播域是不现实的。‍‍

在这种情况下,‍‍虚拟局域网技术应运而生,‍‍虚拟局域网的英文缩写词为 VLAN,它是一种将局域网内的设备‍‍划分成与物理位置无关的逻辑组的技术。这些逻辑组具有某些共同的需求。‍‍如图所示‍‍一楼、二楼、三楼分别有一个局域网,可将他们通过另外一个交换机互联成一个更大的局域网,‍‍那么原来每一个局域网成为现在局域网的一个网段,网络中的各主机属于同一个广播域,‍‍某个主机发送到广播数据包,其他所有主机都可以收到。

‍‍根据应用需求,‍‍我们将该局域网划分成两个 VLAN,VLAN1 和 VLAN1。此后‍‍VLAN1 中的广播数据包不会传送到 VLAN2,VLAN2 中的广播数据包也不会传送到 VLAN1,‍‍也就是说同一个 VLAN 内部可以广播通信,不同 VLAN 之间不能广播通信。

小结:

3.11.2 虚拟局域网 VLAN 的实现机制

本节课我们介绍虚拟局域网 VLAN 的实现机制,‍‍虚拟局域网 VLAN 是在交换机上实现的,需要交换机能够实现以下两大功能:

  • 一个是能够处理带有 VLAN 标记的帧,也就是 IEEE 802.1Q 帧
  • 另一个是交换机的各端口,‍‍可以支持不同的端口类型,不同端口类型的端口,对帧的处理方式有所不同

我们首先来看‍‍ IEEE802.1q 帧,‍‍也称为 dot one q 帧。他对以太网的 MAC 帧格式进行了扩展,插入了四字节的 VLAN 标记,‍‍如图所示,这是以太网版本 2 的 MAC 格式,这是插入 VLAN 标记后的 802.1q 帧的格式:

VLAN 标记的最后 12 个比特称为 VLAN 标识符 vid,它唯一的标识了以太网帧属于哪一个 VLAN , ‍‍Vid 的取值范围是 0~4095,其中 0 和 4095 都不用来表示 VLAN,因此‍‍用于表示 VLAN 的 vid 的有效取值范围是 1~4094。

需要注意的是‍‍802.1q 帧是由交换机来处理的,而不是用户主机来处理的。‍‍当交换机收到普通的以太网帧时‍‍会将其插入四字节的 VLAN 标记,将其转变为 802.1q 帧,简称为打标签。‍‍

当交换机转发 802.1q 帧时,可能会删除其 4 字节 VLAN 标记,‍‍将其转变为普通以太网帧,简称为去标签,VLAN 标记字段的其他内容,‍‍对我们理解 VLAN 划分机制来说,并没有什么帮助,因此就要不再赘述了。‍‍


接下来我们介绍交换机的端口类型,交换机的端口类型一般有以下三种,它们分别是 Access,Trunk,Hybrid。

总结:

Access 接受没标签的,只转发同 ID 的,转发前去标签。

Trunk 总结:

  • 如果收到的帧 ID 值不相等,直接转发
  • 如果收到的帧 ID 相等,发送前去标签
  • 如果没有 ID,则打标签

需要说明的是思科交换机没有 Hybrid 端口。在介绍这三种交换机端口类型之前,我们首先需要了解一下端口的缺省 VLAN ID 这个概念,在思科交换机上将其称为本征 VLAN。

例如思科交换机在用户未配置 VLAN 时,所有端口都默认属于 VLAN1,即所有端口的本帧 VLAN 都是 VLAN1,而在华为交换机上将其称为端口 VLAN ID 剪辑为 PVID。 在我们接下来的介绍中,为了描述方便,我们采用 PVID 而不是本征 VLAN。需要注意的是交换机的每个端口,有且仅有一个 PVID:


接下来我们首先介绍 Access 端口,Access 端口一般用于连接用户计算机,只能属于一个 VLAN,因此 Access 端口的 PVID 值与端口所属 VLAN 的 ID 相同,如图所示主机 ABCD 分别连接在交换机的一个端口上,交换机首次上电时,默认配置各端口属于 VLAN1,也就是各端口的 PVID 值等于 1,默认配置各端口的类型为 Access,我们用大写字母 A 来表示。

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

我们来举例说明,假设主机 A 发送了一个广播帧,该帧从交换机的端口一进入交换机,由于端口一的类型是 Access,它会对接收到的未打标签的普通以太网 MAC 帧,打标签,也就是插入四字节的 VLAN 标记字段,如图所示,由于端口一的 PVID 值等于一,因此所插入的四字节 VLAN 记字段中的 VID 的值也等于 1。

Access 端口的发送处理方法是若帧中的 VID 与端口的 PVID 相等,则去标签后转发该帧,否则不转发。对于本例广播帧中的 VID 的取值与端口 234 的 PVID 取值都等于 1,因此交换机会从这三个端口对帧进行去标签转发。

总结:接受没标签的,转发同 ID 的


再来看这个例子,我们的应用需求是将主机 A 和 B 划归到 VLAN2,将 C 和 D 划归到 VLAN3,这样 VLAN2 中的广播帧不会传送到 VLAN3,VLAN3 中的广播帧也不会传送到 VLAN2,为了实现这种应用,可以在交换机上创建 VLAN2 和 VLAN3,然后将交换机的端口一和二划归到 VLAN2,因此端口 1 和 2 的 PVID 值等于 2,将交换机的端口 3 和 4 划归到 VLAN3,因此端口 3 和 4 的 PVID 值等于 3。

我们来看主机 A 发送广播帧的情况,该帧从交换机的端口 1 进入交换机,由于端口 1 的类型是 Access,它会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入四字节的 VLAN 标记字段,如图所示,由于端口 1 的 PVI D 值等于 2,因此所插入的四字节 VLAN 标记字段中的 VID 的值也等于 2,广播帧中的 VID 的取值与端口二的 PVID 取值都等于 2,因此交换机会从端口二对帧进行去标签转发。


我们再来看主机 C 发送广播帧的情况,该帧从交换机的端口三进入交换机,由于端口三的类型是 Access,它会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入四字节的 VLAN 标记字段,如图所示由于端口三的 PVID 值等于 3,因此所插入的四字节 VLAN 标记字段中的 VID 的值也等于 3,广播帧中的 VID 的取值与端口 4 的 PVID 取值都等于 3,因此交换机会从端口 4 对帧进行去标签转发。


接下来我们介绍 Trunk 端口,Trunk 端口一般用于交换机之间 或交换机与路由器之间的互联,使不同交换机的主机可以属于同个 VLAN。

Trunk 端口可以属于多个 VLAN,也就是说 Trunk 端口可以接收和发送多个 VLAN 的帧,用户可以设置 Trunk 端口的 PVID 值,默认情况下 Trunk 端口的 PVID 值为 1,

我们来举例说明 Trunk 端口的功能,如图所示,两台交换机互联而成了一个交换式以太网,我们的应用需求是将主机 ABEF 划归到 VLAN1,将主机 CDGH 划归到 VLAN2,由于交换机首次上电时默认配置各端口属于 VLAN1,其相应的 PVID 值等于 1,并且端口的类型为 Access,因此我们需要对交换机进行相应的配置,才能满足应用需求,分别在两个交换机上创建 VLAN2,并将他们的端口 3 和 4 都划归到 VLAN2,其相应的 PVID 值=2,而两个交换机的端口一和二保持默认配置即可,也就是属于 VLAN1,其相应的 PVID 值等于 1。

特别需要注意的是两个交换机互联的端口 5,需要将他们的类型更改为 Trunk 类型,而他们的 PVID 值保持默认的 1 即可。Trunk 端口的发送处理方法是对 VID 等于 PVID 的帧去标签再转发。假设主机 A 发送了一个广播帧,该帧从交换机一的端口 1 进入交换机,由于端口一的类型是 Access,它会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入四字节的 VLAN 标记字段,如图所示。由于端口 1 的 PVID 值等于 1,因此所插入的四字节 VLAN 标记字段中的 VID 的值也等于 1。该广播帧中的 VID 的取值与端口二的 PVID 值都等于 1,端口二的类型是 Access,因此交换机一会从端口 2 对帧进行去标签转发

该广播帧中的 VID 的取值与端口 5 的 PVID 值都等于 1,端口 5 的类型是 Trunk,因此交换机一会从端口 5 对帧进行去标签转发,很显然该广播帧会从交换机 2 的端口 5 进入交换机二,Trunk 端口的接收处理方法是接收未打标签的帧,根据接收帧的端口的 PVID 给帧打标签,即插入四字节 VLAN 标记字段,字段中的 VID 取值与端口的 PVID 取值相等。对于本例交换机 2 会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入 4 字节的 VLAN 标记字段。如图所示,由于端口 5 的 PVID 值等于 1,因此所插入的 4 自字节 VLAN 标记字段中的 VIP 的值也等于 1

该广播帧中的 VID 的取决与端口 1 和 2 的 PVID 值都等于 1,端口 1 和 2 的类型都是 Access,因此交换机 1 会从端口 1 和 2 对帧进行去标签转发。

总结:

  • 如果收到的帧 ID 值不相等,直接转发
  • 如果收到的帧 ID 相等,发送前去标签
  • 如果没有 ID,则打标签

再来看主机 C 发送广播帧的情况,该帧从交换机 1 的端口 3 进入交换机,由于端口三的类型是 Access,它会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入四字节的 VLAN 标记字段。如图所示,由于端口 3 的 PVID 值=2,因此所插入的 4 自字节 VLAN 标标记字段中的 VID 的值也等于 2,该广播站中的 VID 的取值与端口 4 的 PVI D 值都等于 2,端口 4 的类型是 Access,因此交换机 1 会从端口 4 对帧进行去标签转发。

该广播帧中的 VID 的取值与端口 5 的 PVID 值不相等,由于 Trunk 端口对 VID 不等于 PVID 的,帧是直接转发的,因此交换机 1 会从端口 5 对帧直接转发,也就是不去掉标签,而带着标签直接转发。很显然该 802.1Q 广播帧会从交换机 2 的端口 5 进入交换机 2 Trunk 端口,接收已打标签的 802.1Q 帧,该广播帧中的 VID 的取值与端口 3 和 4 的 PVID 值都等于 2,端口 3 和 4 的类型都是 Access 类型,因此交换机二会从端口 3 和 4 对帧进行去标签转发。通过本例可以看出,再由多个交换机互联而成的交换式以太网装,划分 VLAN 时,连接主机的交换机端口,应设置为 Access 类型,交换机之间互联的端口应设置为 Trunk 类型。

接下来请同学们做一个练习题,以加深对 Access 端口和 Trunk、端口功能的理解。本题的答案如下所示,希望大家都能解答正确。

最后我们简单介绍一下华为交换机私有的 Hybrid 端口类型,Hybrid 的端口即可用于交换机之间或交换机与路由器之间的互联,这一点与 Trunk 端口相同,也可用于交换机与用户计算机之间的互联,这一点又与 Access 端口相同。

除此之外,Hybrid 端口的绝大部分功能与 Trunk 端口相同,不同点在于 Hybrid 端口的发送处理方法,Hybrid 的端口会查看帧的 VID 是否在端口的区域标签列表中,若存在则去标签后再转发,若不存在则直接转发。

接下来我们通过一个简单的应用实例来说明 Hybrid 端口的功能。主机 ABC 连接在同一个交换机的不同接口上,请利用 Hybrid 端口的功能实现以下应用需求,A 和 B 都能与 C 相互通信,但 A 与 B 不能相互通信,如图所示,

我们可以将这三台主机所连接的交换机的三个端口划分到不同的 VLAN,并且端口类型设置为 Hybrid。假设这三个 VLAN 分别是 VLAN10、VLAN20、VLAN30,相应的 PVID 分别为 10,20,30。

在端口一的区域标签列表中,配置 VLAN10 和 VLAN30。

在端口二的去标签列表中配置 VLAN20 和 VLAN30,在端口三的去标签列表中配置 VLAN10,VLAN20,VLAN30,主机 A 给 C 发送数据帧,该帧从交换机的端口 1 进入交换机,由于端口 1 的类型是 Hybrid 的,他会对接收到的未打标签的普通以太网 MAC 帧打标签,也就是插入四字节的 VLAN 标记字段,如图所示,由于端口一的 PVID 值等于 10,因此所插入的四字节 VLAN 标记字段中的 VID 的值也等于 10,该帧将从端口三转发,由于帧中的 VID 的取值在端口 3 的区标签列表中,因此该帧会被去标签转发,这样主机 C 就可以收到主机 A 发送的数据帧。

同理,主机 C 给 A 发送数据帧,主机 A 同样可以收到,我们就要不再演示了。

那么主机 B 给 C 发送数据帧的具体过程又如何呢?如图所示。

同理,主机 C 给 B 发送数据帧,主机 B 同样可以收到,我们就要不再演示了。

再来看看主机 A 给 B 发送数据帧的情况,该帧从交换机的端口一进入交换机,给该帧打标签,其中 VIP 取值为 10,该帧将从端口 2 转发,由于帧中的 VID 的取值,不在端口 2 的去标签列表中,因此该帧被直接转发,这样主机 B 就会收到一个带有 VLAN 标记的 802.1Q 帧,但是主机 B 可以识别普通以太网 MAC 帧,而不能识别 802.1Q 帧,只能丢弃该帧。

同理,主机 B 给 A 发送的普通以太网 MAC 帧,主机 A 收到的却是 802.1Q 帧,无法识别而丢弃。

本节课的内容小结如下:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ftp是什么,ftp能做什么,ftp有什么用 -----ftp介绍

大家好,我是风屿,今天开始我会给大家介绍一些关于网络方面的配置以及介绍等等,今天是ftp FTP中文名字叫做文件传输协议,英文名字叫做File Transfer Protocol(简称为ftp) FTP 是因特网网络上历史最悠久的网…

Textual for Mac:轻量级IRC客户端

在寻找一款高效、轻量级的IRC客户端时,Textual for Mac无疑是你的不二之选。它集成了众多现代技术,如本机IPv6、最新的IRCv3规范,以及客户端证书身份验证,让你的聊天体验更加顺畅和安全。 Textual for Mac v7.2.2免激活版下载 Tex…

4、PHP的xml注入漏洞(xxe)

青少年ctf&#xff1a;PHP的XXE 1、打开网页是一个PHP版本页面 2、CTRLf搜索xml&#xff0c;发现2.8.0版本&#xff0c;含有xml漏洞 3、bp抓包 4、使用代码出发bug GET /simplexml_load_string.php HTTP/1.1 补充&#xff1a; <?xml version"1.0" encoding&quo…

【C++】深入解析C++智能指针:从auto_ptr到unique_ptr与shared_ptr

文章目录 前言&#xff1a;1. 智能指针的使用及原理2. C 98 标准库中的 auto_ptr:3. C 11 中的智能指针循环引用&#xff1a;shared_ptr 定制删除器 4. 内存泄漏总结&#xff1a; 前言&#xff1a; 随着C语言的发展&#xff0c;智能指针作为现代C编程中管理动态分配内存的一种…

Win32 API

个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 : C语言 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 一.Win32 API 1.Win32 API介绍 Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外&#xff0c;它同时也是…

python中的线程并行

文章目录 1. 单线程2. 线程池ThreadPoolExecutor 1. 单线程 现在有1154张图片需要顺时针旋转后保存到本地&#xff0c;一般使用循环1154次处理&#xff0c;具体代码如下所示&#xff0c;img_paths中存储1154个图片路径&#xff0c;该代码段耗时约用97ms。 t1time.time() for …

Windows安装VMware(Broadcom)

1.安装前提 1.检查BIOS中是否开启了虚拟化技术。1.1 打开任务管理器&#xff0c;查看性能&#xff0c;CPU部分&#xff0c;虚拟化处于“已启用”状态。1.2 如果没有开启&#xff0c;则需要进入BIOS系统&#xff0c;将 Intel Virtualization Technology改为Enalble。2.下载VMwa…

ROS2入门21讲__第19讲__Rviz:三维可视化显示平台

目录 前言 Rviz三维可视化平台 Rviz介绍 运行方法 彩色相机仿真与可视化 仿真插件配置 运行仿真环境 图像数据可视化 三维相机仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 激光雷达仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 Rviz v…

【HCIP学习】RSTP和MSTP

一、RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树&#xff09; 1、背景&#xff1a;RSTP从STP发展而来&#xff0c;具备STP的所有功能&#xff0c;可以兼容stp运行 2、RSTP与STP不同点 &#xff08;1&#xff09;减少端口状态 STP:disabled\blockin…

【Python搞定车载自动化测试】——Python实现CAN总线Bootloader刷写(含Python源码)

系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录&#x1f4af;&#x1f4af;&#x1f4af; 前言&#x1f4af;&#x1f4af;&#x1f4af;一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…

《最新出炉》系列入门篇-Python+Playwright自动化测试-40-录制生成脚本

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 各种自动化框架都会有脚本录制功能&#xff0c; playwright这么牛叉当然也不例外。很早之前的selenium、Jmeter工具&#xff0c;发展到每种浏览器都有对应的录制插件。今天我们…

python机器学习及深度学习在空间模拟与时间预测

原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247628504&idx2&sn6fe3aeb9f63203cfe941a6bb63b49b85&chksmfa77a9e5cd0020f3aa4f01887e75b15096a182c2b5b42c1044787aa285c650f1469a0ef28aec&token2124656491&langzh_CN&scene21#we…

C++语法|虚函数与多态详细讲解(六)|如何解释多态?(面试向)

系列汇总讲解&#xff0c;请移步&#xff1a; C语法&#xff5c;虚函数与多态详细讲解系列&#xff08;包含多重继承内容&#xff09; 多态分为了两种&#xff0c;一种是静态的多态&#xff0c;一种是动态的多态。 静态&#xff08;编译时期&#xff09;的多态 函数重载 boo…

基于51单片机温度报警系统—数码管显示

基于51单片机温度报警系统 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.DS18B20采集温度&#xff0c;数码管显示温度&#xff1b; 2.温度测量范围&#xff1a;0-99度&#xff1b; 3.当温度低于…

NDIS小端口驱动开发(三)

微型端口驱动程序处理来自过度驱动程序的发送请求&#xff0c;并发出接收指示。 在单个函数调用中&#xff0c;NDIS 微型端口驱动程序可以指示具有多个接收 NET_BUFFER_LIST 结构的链接列表。 微型端口驱动程序可以处理对每个NET_BUFFER_LIST结构上具有多个 NET_BUFFER 结构的多…

阻塞信号集和未决信号集_代码实现

1. 程序验证内容 将编号为0,1,2添加到阻塞信号集中&#xff0c;i<信号编号时&#xff0c;发出信号&#xff0c;观察未决信号集状态 当解除阻塞后&#xff0c;原先的信号是否执行&#xff0c;执行顺序是什么 2. 代码实现 #include <unistd.h> #include <stdlib.h…

【全开源】海报在线制作系统源码(ThinkPHP+FastAdmin+UniApp)

打造个性化创意海报的利器 引言 在数字化时代&#xff0c;海报作为一种重要的宣传媒介&#xff0c;其设计质量和效率直接影响着宣传效果。为了满足广大用户对于个性化、高效制作海报的需求&#xff0c;海报在线制作系统源码应运而生。本文将详细介绍海报在线制作系统源码的特…

Spring AI实战之二:Chat API基础知识大串讲(重要)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos Spring AI实战全系列链接 Spring AI实战之一&#xff1a;快速体验(OpenAI)Spring AI实战之二&#xff1a;Chat API基础知识大串讲(重要)SpringAIOllama三部曲…

JavaFX学习教程二

一、JavaFX 体系结构 JavaFX 场景图(Scene Graph)是构建 JavaFX 应用程序的起点&#xff0c;一种树状数据结构&#xff0c;用于排列&#xff08;和分组&#xff09;图形对象&#xff0c;以便于逻辑表示。 stage:舞台&#xff0c;操作系统窗口的 JavaFX 表示&#xff0c;是所有…

Qt for android 获取USB设备列表(一)Java方式 获取

简介 QtActivity 作为 Qt 应用程序的入口点&#xff0c;负责启动和配置 Qt 应用程序的信息&#xff0c; 后面我们继承 QtActivity 做自定义控制&#xff0c;了解一下 Activity 生命周期概念&#xff0c; 因为 QtActivity 继承自Android的activity&#xff0c;使用周期函数完成我…