05. 交换机的基本配置
文章目录
- 一. 初识交换机
- 1.1. 交换机的概述
- 1.2. Ethernet_ll格式
- 1.3. MAC分类
- 1.4. 冲突域
- 1.5. 广播域
- 1.6. 交换机的原理
- 1.7. 交换机的3种转发行为
- 二. 初识ARP
- 2.1. ARP概述
- 2.2. ARP报文格式
- 2.3. ARP的分类
- 2.4. 免费ARP的作用
- 三. 实验专题
- 3.1. 实验1:交换机的基本原理与配置
- 3.1.1. 实验目的
- 3.1.2. 实验拓扑图
- 3.1.3. 实验步骤
- (1)配置IP地址
- (2)实验调试
- ① 查看交换机信息
- ② 访问测试
- ③ 查看交换机信息
- 3.2. 实验2:动态ARP的原理与配置
- 3.2.1. 实验目的
- 3.2.2. 实验目的
- 3.2.3. 实验目的
- (1)配置PC机的IP地址
- (2)查看PC机的ARP缓存表
- ① 查看缓存表
- ② 测试发送
- ③ 抓包结果
- 3.3. 实验3:静态ARP的原理与配置
- 3.3.1. 实验目的
- 3.3.2. 实验拓扑图
- 3.3.3. 实验步骤
- (1)配置PC机的ip地址
- (2)界面静态ARP绑定配置
- 3.4. 实验4:代理ARP的原理与配置
- 3.4.1. 实验目的
- 3.4.2. 实验拓扑图
- 3.4.3. 实验步骤
- (1)配置PC机的IP地址
- (2)配置路由器的IP地址
- (3)代理ARP测试(无配置代理ARP)
- (4)配置代理ARP
- (5)代理ARP测试(配置代理ARP)
- (6)查看路由表接口信息
- 四. 交换机的基本原理命令汇总
一. 初识交换机
1.1. 交换机的概述
二层交换设备工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在Mac(媒体访问控制)地址基础之上的。
二层交换设备不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互联的主机(或网络)之间不必再担心流量大对数据发送冲突的影响。
在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网中的传输标准。
- 了解以太网协议是充分理解数据链路层通信的基础;
- 以太网交换机是实现数据链路层通信的主要设备;
- 了解以太网交换机的工作原理也是十分必要的;
1.2. Ethernet_ll格式
| 格式名称 | 说明 |
|---|---|
| DMAC | 目的Mac地址,6B,该字段标识帧的接收者 |
| SMAC | 源 Mac地址,6B,该字段标识帧的发送者 |
| Type | 协议类型 |
| Data | 数据字段,46~1500B。标识帧的负载 |
| FCS | 帧校验序列,4B,是一种为接收者提供判断是否传输错误的方法,如果发现错误则丢弃此帧 |
1.3. MAC分类
| 名称 | 说明 |
|---|---|
| 单播MAC地址 | 第8位为0,用于标识链路上的一个单一节点 |
| 组播MAC地址 | 第8位,为1,用来代表局域网上的一组终端 |
| 广播MAC地址 | 全1,用来表示局域网上的所有终端设备 |
1.4. 冲突域
冲突域是指连接在同一共享介质上的所有节点的集合
1.5. 广播域
广播域是指一个节点发送一个广播报文,其余节点都能够收到的节点的集合
1.6. 交换机的原理
- 基于源Mac地址学习
- 基于目的Mac地址转发
- 收到的是一个广播帧或者未知的广播帧,除源端口以外所有端口转发
1.7. 交换机的3种转发行为
| 行为方式 | 描述 |
|---|---|
| Flooding(泛洪) | 交换机把某一个接口接收的数据帧从除源端口以外所有的端口转发出去,是一种点到多点的转发行为。(包含3种情况:收到广播数据帧、收到组播数据帧、收到未知单播数据帧) |
| Forwarding(转发) | 交换机从某一个接口收到的数据帧从另一个端口转发出去是一种点到点的行为 |
| Discarding(丢弃) | 交换机把从某一端口进行的帧直接丢弃 |
二. 初识ARP
2.1. ARP概述
在局域网中,当主机或其他三层网络设备有数据要发送给另一台主机或三层网络设备时,它需要知道对方的网络层地址(即IP地址)
但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送。
因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要从一个IP地址到Mac地址的映射。
ARP可以实现将IP地址解析为Mac地址。
主机或三层网络设备上会维护一张ARP表,用于存储IP地址和Mac地址的关系。一般ARP表项包括动态ARP表项和静态ARP表项
2.2. ARP报文格式
| 报文名称 | 描述 |
|---|---|
| Hardware Type | 硬件地址类型,一般为以太网 |
| Protocal Type | 三层协议地址类型,一般为IP |
| Hardware Length & Protocol Length | Mac地址和IP地址的长度,单位为字节 |
| Operation Code | 指定ARP报文的类型,包括ARP Request和ARP Reply |
| Source Hardware | 接收者的Mac地址,在ARP报文中,该字段值为0 |
| Destination Protocol Address | 接收者的IP地址 |
2.3. ARP的分类
| 种类 | 描述 |
|---|---|
| 动态ARP | 表项有ARP协议,通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。动态ARP适用于拓扑结构复杂、通信实时性要求高的网络 |
| 静态态ARP | 是由网络管理员手工建立的IP地址和Mac地址之间固定的映射关系。静态ARP表象不会被老化,不会被动态ARP表象覆盖 |
| 免费ARP | 设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称为免费ARP |
2.4. 免费ARP的作用
| 用途 | 描述 |
|---|---|
| IP地址冲突检测 | 当设备接口协议状态变为up时,设备主动对外发送免费的ARP报文,正常情况下不会受到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。 |
| 通告新的Mac地址 | 如:发送方更换了网卡,Mac地址发生了改变。为了能够在动态ARP表象老化前通告网络中其他设备,发送方可以发送一个免费ARP |
| 代理ARP | 如果ARP请求是从一个网络的主机发送同一个网站,但不同于物理网络上的另一台主机,那么连接这两个网络的设备就可以回答该网ARP请求,这个过程称为代理ARP |
三. 实验专题
3.1. 实验1:交换机的基本原理与配置
3.1.1. 实验目的
掌握交换机的基本原理
3.1.2. 实验拓扑图

3.1.3. 实验步骤
(1)配置IP地址
1)PC1的配置
在【IPV4配置】栏中选中【静态】单选按钮,输入对应的【IP地址】【子网掩码】和【网关】,然后点击应用按钮。PC2、PC3、PC4的配置步骤如图所示:

2)PC2的配置

3)PC3的配置

4)PC4的配置

(2)实验调试
① 查看交换机信息
#查看交换机的Mac地址表
<Huawei>system-view
[Huawei]undo info-center enable
[Huawei]sysname LSW1
[LSW1]display mac-address #查看mac地址表
如图所示:

可以看到,交换机的Mac地址表为空,表示交换机设备没有开始转发数据时Mac地址默认是为空的
② 访问测试
#在PC1上访问PC4
PC>ping 192.168.1.4
如图所示:

③ 查看交换机信息
#查看交换机MAC地址表,命令如下:
[LSW1]display mac-address
如图所示:

以上输出结果显示了交换器的Mac的地址表
思考: PC访问PC4的数据转化过程是怎样的?
- PC1封装时没有PC4的Mac地址,要通过ARP知道PC4的Mac地址;
- PC1封装数据,把它从E0/0/1接口转发给交换机;
- 交换机收到数据后,查看数据帧,首先学习PC1的Mac地址,然后泛洪数据帧;
- PC2、PC3收到数据包以后不做处理,PC4是收到数据包后要回应PC1从G1/0/0/1接口转发出去,最后PC1收到数据包
3.2. 实验2:动态ARP的原理与配置
3.2.1. 实验目的
- 掌握ARP表项内容
- 掌握ARP动态获取MAC地址的过程
3.2.2. 实验目的

3.2.3. 实验目的
(1)配置PC机的IP地址
1)配置PC1的地址
在【IPV4配置】栏中选中【静态】单选按钮,输入对应的【IP地址】【子网掩码】和【网关】,然后点击应用按钮。PC1的配置步骤如图所示:

2)配置PC2的地址
如图所示:

(2)查看PC机的ARP缓存表
① 查看缓存表
#查看PC1的ARP缓存表,在PC1的命令行界面输入“arp -a”
PC>arp -a
#查看PC2的ARP缓存表,在PC1的命令行界面输入“arp -a”
PC>arp -a
如图所示:


ARP的参数信息
| 参数名 | 描述 |
|---|---|
| Internet Address | 代表IP地址 |
| Physical Address | 代表MAC地址 |
| Type | 代表ARP表项的形式方式 |
② 测试发送
#PC1访问PC2,并查看PC1的ARP缓存表
PC>ping 10.1.1.2
PC>arp -a
如图所示:

以上图可以看出PC1学习到了10.1.1.2,这个ip地址对应的mac地址为54-89-98-81-23-EE 。
③ 抓包结果


对刚刚圈出两个抓包数据,双击点击进去查看,如图所示:

技术要点:
PC1访问PC2时动态学习MAC地址的工作过程是怎样的?
- PC1访问PC2访问前,首先查看自己的ARP缓存表,若表项为空,则就无法封装数据帧的目的MAC地址字段;
- PC1以广播报文的形式发送ARP request报文请求PC2的MAC地址,ARP请求包中会还会携带PC1的ip地址以及MAC地址;
- PC2收到PC1发送
ARP request报文后,会先把PC1的ip地址以及mac地址对应关系添加到自己的ARP缓存表中; - 交换机收到了单播报文后,将此报文转发给PC1;
- PC1收到报文后,将得知PC2的mac地址以及ip地址的对应关系并假如自己的缓存表中
3.3. 实验3:静态ARP的原理与配置
3.3.1. 实验目的
- 掌握静态ARP的配置方法
- 理解静态ARP的工作原理
3.3.2. 实验拓扑图

3.3.3. 实验步骤
(1)配置PC机的ip地址
1)PC1机的ip配置

2)PC2机的ip配置

(2)界面静态ARP绑定配置
1)PC1机静态ARP绑定配置
PC>arp -s 10.1.1.2 54-89-98-2E-6C-F1 #配置静态ARP绑定
PC>arp -a .
PC>arp -a
如图所示:

2)PC2机静态ARP绑定配置
PC>arp -s 10.1.1.1 54-89-98-F1-65-7C
PC>arp -a
如图所示:

3.4. 实验4:代理ARP的原理与配置
3.4.1. 实验目的
- 掌握代理ARP的配置方法
- 理解代理ARP的工作原理
3.4.2. 实验拓扑图

3.4.3. 实验步骤
(1)配置PC机的IP地址
1)PC1机的ip地址配置

2)PC2机的ip地址配置

(2)配置路由器的IP地址
<AR1>system-view
[AR1]undo info-center enable
[AR1]sysname AR1
[AR1]interface g0/0/0
[AR1-GigabitEthernet0/0/0]ip address 10.1.1.1 24
[AR1-GigabitEthernet0/0/0]interface g0/0/1
[AR1-GigabitEthernet0/0/1]ip address 10.1.2.1 24
[AR1-GigabitEthernet0/0/1]
如图所示:

(3)代理ARP测试(无配置代理ARP)
#这是没有配置代理ARP测试的结果
PC>ping 10.1.2.2
如图所示:

以上说明,没有配置代理ARP前,PC1是无法访问PC2的尽管IP分别是10.1.1.2/16、10.1.2.2/16,且属于10.1.0.0/16网段,但是对于相同网段设备互访会使用二层通信。
此时PC会发送ARP请求报文(广播包),请求PC2的Mac地址,而路由设备会隔离广播,不会将这个ARP报文转发给PC2。
因此PC1学习不到PC2的Mac地址,无法封装数据帧,导致无法互访。
(4)配置代理ARP
[AR1-GigabitEthernet0/0/0]quit
[AR1]interface g0/0/0
[AR1-GigabitEthernet0/0/0]arp-proxy enable #在g0/0/0接口开启代理ARP功能
[AR1-GigabitEthernet0/0/0]interface g0/0/1
[AR1-GigabitEthernet0/0/1]arp-proxy enable #在g0/0/1接口开启代理ARP功能
如图所示:

(5)代理ARP测试(配置代理ARP)
#PC1访问PC2
PC>ping 10.1.2.2
PC>arp -a
如图所示:

通过以上输出可以看到,PC1可以访问PC2,并且学习到了PCR的IP地址和Mac地址的对应关系。
接下来,了解一下代理ARP的工作过程
- PC1访问10.1.2.2,由于与本身配置的IP地址10.1.1.2属于相同网段,因此PC1会发送ARP请求报文到PC2的Mac地址;
- 由于路由器会隔离广播包,因此在没有配置代理ARP前,两台设备是无法互访的;
- 在路由器上配置了代理ARP后,路由器收到ARP请求报文后,路由器会查找路由表,由于PC2与路由直连,因此路由器存在PC2的直连路由表象,因此路由器使用自己的Mac的地址给PC1发送ARP应答报文;
- PC1收到了路由器的ARP应答报文,将路由器的。
G0/0/0/0接口的Mac地址与PC2的IP地址进行ARP映射,下次使用路由器的Mac地址进行数据转发,此时路由器相当于PC2的代理
(6)查看路由表接口信息
[AR1]display interface g0/0/0
如图所示:

可以发现路由器的G0/0/0接口的Mac地址为5489-9847-309b 与以PC1上学习到的10.1.2.2的Mac地址一致验证了上面的说法。
可以将这种代理ARP堪作一种欺骗,ARP路由器欺骗了PC1,它传递的PC1的信息是PC2的Mac地址为路由器接口的Mac地址。
只不过这种欺骗是一种善意欺骗,可以让IP地址属于同一网站却不属于同一物理网络的主机间相互通信。
四. 交换机的基本原理命令汇总
| 命令 | 作用 |
|---|---|
| display mac-address | 查看交换机Mac的地址表 |
| mac-address aging-time | 修改Mac地址表的老化时间 |
| arp -a | 查看PC机的ARP缓存表 |
| arp -s | 在PC机上绑定IP地址和Mac地址 |
| arp proxy enable | 在路由器上开启ARP代理功能 |
相关文章:
05. 交换机的基本配置
文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1:交换机的基本原…...
yolo将标签数据打到原图上形成目标框
第一章 目标:为了查看自己在标注标签时是否准确,写了这段代码来将标注的框打到原图上 第二章 步骤:进行反归一化得到坐标画出矩形框 第二行是目标图片对应的txt,第三行是目标图片 第三章 全部代码如下: import cv2 import …...
002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红
【ai阅读源码-dolphinscheduler】 DolphinScheduler 开发手册1、软件要求2、克隆代码库3、编译打包4、代码风格5、新建数据库,导入元数据。6, 启动后端6.1 启动api-server 6.2 启动master-server6.3 启动worker-server 7 启动前端 DolphinScheduler 开发…...
python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录
文章目录 1. 选择日志文件格式: 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式,如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件: 使⽤Python的文件操作功能打开日志文件,以便…...
代码随想录算法训练营DAY6 | 哈希表(1)
DAY5休息一天,今天重启~ 哈希表理论基础:代码随想录 Java hash实现 :java 哈希表-CSDN博客 一、LeetCode 242 有效的字母异位词 题目链接:242.有效的字母异位词 思路:设置字典 class Solution {public boolean isAnag…...
【嵌入式学习】C++QT-Day3-C++基础
笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函…...
表贴式PMSM的直接转矩控制(DTC)MATLAB仿真模型
微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 表贴式PMSM的直接转矩控制(DTC),直接使用滞环控制对转矩和磁链进行控制,相对于传统的FOC控制而言,其不需要进行解耦变换,在此次的有以下几点需要注意:…...
详解OpenHarmony各部分文件在XR806上的编译顺序
大家好,今天我们来谈一谈编程时一个很有趣的话题——编译顺序。我知道,一提到编译可能大家会感到有点儿头疼,但请放心,我不会让大家头疼的。我们要明白,在开始写代码之前,了解整个程序的编译路径是十分有必…...
【美团】无人机-大数据开发工程师
更新时间:2024/01/29 工作地点:北京市 事业群:到家事业群 工作经验:3年 部门介绍 为了更好地提升城市即时配送的效率与体验,美团于2017年启动了无人机配送服务的探索,通过科技创新推动履约工具变革&#x…...
微服务系统设计:横向扩展和纵向扩展的对比
微服务扩展性:水平扩展 vs 垂直扩展 特点水平扩展垂直扩展扩展单位增加微服务实例增加单个实例的资源 (CPU,内存)方向向外,增加节点向上,增加单个节点的资源复杂性随着实例数量的增加,管理难度更大管理更简单…...
Java基于SpringBoot+Vue的网上超市管理系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
HTTP中POST、GET、PUT、DELETE方式的区别
GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作&#x…...
77.Go中interface{}判nil的正确姿势
文章目录 一:interface{}简介二、interface{}判空三:注意点四:实际案例 一:interface{}简介 在go中的nil只能赋值给指针、channel、func、interface、map或slice类型的变量 interface 是否根据是否包含有 method,底层…...
ES实战回顾
1、你用的集群节点情况? 一个ES集群,18个节点,其中3个主节点,15个数据节点,500G左右的索引数据量,没有单独的协调节点,它的每个节点都可以充当协调功能; 2、你们常用的索引有哪些&a…...
Mysql 删除数据
从数据表中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。DELETE语句基本语法格式如下: DELETE FROM table_name [WHERE <condition>]; table_name指定要执行删除操作的表;“[WHERE <condition>]”为可选参数&a…...
CSS设置单行文字水平垂直居中的方法
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>单行文字水平垂直居中</title><style>div {/* 给div设置宽高 */width: 400px;height: 200px;margin: 100px auto;background-color: red;/…...
数论与图论
数论🎈 筛质数 最普通的筛法O(nlogn): void get_primes2(){for(int i2;i<n;i){if(!st[i]) primes[cnt]i;//把素数存起来for(int ji;j<n;ji){//不管是合数还是质数,都用来筛掉后面它的倍数st[j]true;}} } 诶氏筛法 O(nloglogn)&#…...
海外云手机三大优势
在全球化潮流下,企业因业务需求对海外手机卡等设备的需求不断攀升,推动了海外云手机业务的蓬勃发展。相较于自行置备手机设备,海外云手机不仅能够降低成本,还具备诸多优势,让我们深入探讨其中的三大黄金优势。 经济实惠…...
AndroidStudio安装教程基础篇
Android Studio是专为Android应用程序开发而设计的官方集成开发环境(IDE)。它提供了丰富的工具和功能,帮助开发者更高效地构建出色的应用程序。本文将为您提供Android Studio的安装文档基础指南,帮助您顺利安装并开始使用这款强大…...
RK3568 Android 13 系统裁剪
android 13 系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪: Rockchip And…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
