【0x0084】HCI_Set_Min_Encryption_Key_Size命令详解
目录
一、命令概述
二、命令格式及参数
2.1 HCI_Set_Min_Encryption_Key_Size命令格式
2.2. Min_Encryption_Key_Size
三、生成事件及参数
3.1. HCI_Command_Complete 事件
3.2. Status
四、命令的执行流程
4.1. 主机端准备阶段
4.2. 命令发送阶段
4.3. 控制器接收和解析阶段
4.4. 控制器验证和处理阶段
4.5. 状态反馈阶段
4.6. 主机接收和处理反馈阶段
4.7. 示例代码
五、应用场景
5.1. 安全敏感型应用场景
5.2. 设备访问控制场景
5.3. 多设备互联的安全场景
5.4. 综合应用与优化
六、注意事项
6.1. 参数设置
6.2. 命令执行
6.3. 系统稳定性和安全性
6.4. 其他注意事项
HCI_Set_Min_Encryption_Key_Size命令是蓝牙核心规范中定义的一个主机控制接口(Host Controller Interface, HCI)命令,它允许主机配置蓝牙控制器,以确保在后续通过基本速率/增强数据速率(BR/EDR)建立的连接中,使用的加密密钥大小不会小于指定的值。对于提高蓝牙通信的安全性具有重要意义。
一、命令概述
HCI_Set_Min_Encryption_Key_Size
命令用于配置最小加密密钥大小。其目的是确保控制器在后续的 BR/EDR
传输连接中不会协商小于此值的密钥大小。需要注意的是,此命令不会影响任何现有的连接,仅对后续连接起作用。
二、命令格式及参数
2.1 HCI_Set_Min_Encryption_Key_Size命令格式
HCI_Set_Min_Encryption_Key_Size命令包遵循蓝牙HCI的通用数据包格式。
通常包含以下几个部分:
- 分组类型(Packet Type):1 字节,用于标识数据包的类型,对于命令包,有特定的类型值。
- 参数总长度(Parameter Total Length):1字节,指示从该字节之后到数据包结束的字节数。
- 操作码(Operation Code,OCF):2 字节。
-
OGF (Opcode Group Field): 操作码组字段,用于指示命令所属的功能组。对于
HCI_Set_Min_Encryption_Key_Size
命令,OGF的值为0x03
,表示该命令属于链路控制命令组。 -
OCF (Opcode Command Field): 操作码命令字段,用于在指定的功能组内唯一标识一个命令。对于
HCI_Set_Min_Encryption_Key_Size
命令,OCF的值为0x0084
。
-
- 命令参数(Command Parameter):即
Min_Encryption_Key_Size
,其长度根据其数据类型而定。
2.2. Min_Encryption_Key_Size
Min_Encryption_Key_Size
用于指定蓝牙连接中的最小加密密钥大小,单位为字节(octets)。其取值会影响蓝牙连接的安全性和性能,并且要根据设备的支持情况和应用场景进行合理设置。
范围(Range):
- 最小值:0x01,代表8位(1个字节)的密钥大小。
- 最大值:0x10,代表128位(16个字节)的密钥大小。
默认值(Default): 默认值是由设备供应商决定的(vendor-specific)。不同的蓝牙设备供应商可能根据其设备的特性和安全策略设置不同的默认最小加密密钥大小。在实际应用中,如果没有明确设置 Min_Encryption_Key_Size
参数,控制器将使用这个默认值进行加密密钥的协商和使用。
不同的取值会影响蓝牙连接的安全性,较大的密钥大小通常提供更高的安全性,但可能会带来一定的性能开销,如加密和解密操作的时间和资源消耗。
三、生成事件及参数
3.1. HCI_Command_Complete 事件
当HCI_Set_Min_Encryption_Key_Size
命令执行完成后,会生成一个HCI_Command_Complete
事件(除非该事件被屏蔽)。这是蓝牙HCI中标准的命令响应机制。
HCI_Command_Complete
事件用于指示一个HCI命令已经成功执行完毕,并且返回了命令的结果。该事件包含以下关键信息:
- 事件代码:用于标识这是一个
HCI_Command_Complete
事件。 - 命令不透明度(Opcode):与已执行的命令相匹配的操作码(OGF和OCF的组合)。
- 返回参数:包含命令执行的结果或状态。对于
HCI_Set_Min_Encryption_Key_Size
命令,返回参数将包括一个状态码,用于指示命令是否成功执行。 - 状态码:
0x00
:表示命令成功执行。- 其他值:表示命令执行失败,并提供了失败的具体原因(例如,不支持的特性或参数值)。
3.2. Status
Status
参数是 HCI_Set_Min_Encryption_Key_Size
命令执行结果的重要反馈,开发人员需要密切关注该状态码,根据不同的状态码进行相应的操作和错误处理,以确保蓝牙设备的安全和开发过程的顺利进行。
0x00
:表示HCI_Set_Min_Encryption_Key_Size
命令成功执行。0x01
至0xFF
:表示命令执行失败,并提供了失败的具体原因。蓝牙Controller错误代码全面概览_蓝牙错误代码-CSDN博客
四、命令的执行流程
4.1. 主机端准备阶段
- 确定最小加密密钥大小:主机根据安全需求和设备支持情况,在
0x01
(8位)到0x10
(128位)范围内确定Min_Encryption_Key_Size
的值。 - 构建命令数据包:
- 设置分组类型为命令分组。
- 计算参数总长度(操作码2字节 + 参数1字节 = 3字节)。
- 设置操作码为
0x0084
,标识HCI_Set_Min_Encryption_Key_Size
命令。 - 添加
Min_Encryption_Key_Size
参数。
4.2. 命令发送阶段
- 主机通过蓝牙主机控制接口(HCI)和物理通信链路(如UART、USB)将命令数据包发送给蓝牙控制器。
4.3. 控制器接收和解析阶段
- 蓝牙控制器接收数据包,并按照蓝牙协议解析出分组类型、参数总长度、操作码和
Min_Encryption_Key_Size
参数。
4.4. 控制器验证和处理阶段
- 参数验证:检查
Min_Encryption_Key_Size
是否在0x01
到0x10
范围内。 - 功能支持检查:确认控制器是否支持指定的最小加密密钥大小。
- 执行设置操作:若验证通过,控制器将设置新的最小加密密钥大小,仅对后续连接生效。
4.5. 状态反馈阶段
- 控制器根据命令执行情况生成状态码(
0x00
表示成功,0x01
-0xFF
表示失败)。 - 控制器通过通信链路发送包含状态码的
HCI_Command_Complete
事件回主机。
4.6. 主机接收和处理反馈阶段
- 主机接收
HCI_Command_Complete
事件。 - 主机根据状态码判断命令是否成功执行。
- 若成功(
0x00
),主机可以继续进行后续操作,如发起新的蓝牙连接。 - 若失败(
0x01
-0xFF
),主机根据错误码进行错误处理,可能包括调整Min_Encryption_Key_Size
值并重新发送命令。
- 若成功(
4.7. 示例代码
以下是一个简化的C语言代码示例,用于展示如何执行HCI_Set_Min_Encryption_Key_Size
命令。请注意,这个示例是为了教学目的而编写的,并未包含所有可能的错误处理和完整的蓝牙协议栈实现。
#include <stdint.h>
#include <stdio.h>
#include <string.h>// 假设这是与蓝牙控制器通信的函数原型
extern int send_hci_command(uint8_t *packet, uint16_t length);
extern int receive_hci_event(uint8_t *event, uint16_t *length);// 定义HCI命令操作码
#define HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE 0x0084// 定义状态码
#define HCI_SUCCESS 0x00// 发送HCI_Set_Min_Encryption_Key_Size命令的函数
int set_min_encryption_key_size(uint8_t min_key_size) {// 检查min_key_size是否在有效范围内if (min_key_size < 0x01 || min_key_size > 0x10) {printf("Error: Min_Encryption_Key_Size out of range.\n");return -1;}// 构建HCI命令数据包uint8_t packet[4]; // 操作码2字节 + 参数1字节 + 参数长度1字节(但这里我们直接写死为3,因为参数长度固定)packet[0] = (HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE & 0xFF00) >> 8; // 操作码高字节packet[1] = HCI_SET_MIN_ENCRYPTION_KEY_SIZE_OPCODE & 0x00FF; // 操作码低字节packet[2] = 0x03; // 参数总长度(包括操作码和参数)这里我们实际上不需要这个字段,但为了完整性还是加上packet[3] = min_key_size; // Min_Encryption_Key_Size参数// 发送HCI命令数据包给蓝牙控制器if (send_hci_command(packet, sizeof(packet)) < 0) {printf("Error: Failed to send HCI command.\n");return -1;}// 接收HCI_Command_Complete事件uint8_t event[256]; // 假设事件缓冲区足够大uint16_t length;if (receive_hci_event(event, &length) < 0) {printf("Error: Failed to receive HCI event.\n");return -1;}// 解析HCI_Command_Complete事件if (length < 4) { // 最小长度应包括事件代码、参数总长度、状态码printf("Error: HCI event too short.\n");return -1;}uint8_t event_code = event[0];uint8_t param_length = event[1];uint8_t status = event[2];// 检查事件代码是否为HCI_Command_Completeif (event_code != 0x0E) {printf("Error: Unexpected HCI event code.\n");return -1;}// 检查状态码if (status != HCI_SUCCESS) {printf("Error: HCI command failed with status code 0x%02X.\n", status);return -1;}printf("Success: HCI_Set_Min_Encryption_Key_Size command executed successfully.\n");return 0;
}int main() {// 示例:设置最小加密密钥大小为16位(0x02)uint8_t min_key_size = 0x02;if (set_min_encryption_key_size(min_key_size) == 0) {printf("Minimum encryption key size set to %d bits.\n", min_key_size * 8);} else {printf("Failed to set minimum encryption key size.\n");}return 0;
}
五、应用场景
以下是该命令在不同应用场景中的详细梳理。
5.1. 安全敏感型应用场景
- 金融交易应用:
- 场景描述:移动支付、手机银行等蓝牙连接的金融交易场景。
- 应用需求:增强数据传输的安全性,防止支付信息在传输过程中被窃取或篡改。
- 解决方案:设置较大的最小加密密钥大小(如0x08-0x10字节),确保支付信息的安全传输。
- 医疗设备数据传输:
- 场景描述:医疗物联网环境中,蓝牙连接的可穿戴健康监测设备与医疗数据管理系统之间的数据传输。
- 应用需求:保护个人健康数据的隐私和完整性。
- 解决方案:设置合适的最小加密密钥大小(如0x08字节左右),确保医疗数据的保密性和完整性。
- 企业级数据共享与同步:
- 场景描述:企业内部通过蓝牙技术实现文件共享、设备同步等操作。
- 应用需求:保护企业敏感信息,防止数据泄露给竞争对手或外部恶意攻击者。
- 解决方案:设置较大的最小加密密钥大小,确保数据传输的加密强度。
5.2. 设备访问控制场景
- 智能家居系统访问控制:
- 场景描述:智能家居环境中,用户通过蓝牙连接控制各种智能设备。
- 应用需求:限制未经授权的设备访问智能家居网络,保障家庭安全和隐私。
- 解决方案:设置合适的最小加密密钥大小,确保只有经过授权的设备能够访问智能家居网络。
- 工业物联网设备管理:
- 场景描述:工业自动化场景中,通过蓝牙连接的工业设备的管理。
- 应用需求:实现设备访问的权限管理,防止未经授权的访问和误操作。
- 解决方案:设置最小加密密钥大小,确保只有具有正确加密密钥的管理设备才能对工业设备进行配置和操作。
5.3. 多设备互联的安全场景
- 蓝牙音频设备连接:
- 场景描述:蓝牙音箱、蓝牙耳机等音频设备与音频源(如手机、电脑)的连接。
- 应用需求:保护音频内容的隐私,避免被附近设备窃听。
- 解决方案:设置合适的最小加密密钥大小,为音频传输提供一定程度的加密保护。
- 蓝牙游戏手柄连接:
- 场景描述:蓝牙游戏手柄与游戏主机或移动设备的连接。
- 应用需求:防止游戏操作数据被篡改,影响游戏公平性或用户体验。
- 解决方案:设置加密密钥大小,确保游戏手柄与设备之间的连接安全。
5.4. 综合应用与优化
- 提高蓝牙通信的安全性:通过设置最小加密密钥大小,确保蓝牙设备间连接使用的加密密钥强度满足特定的安全要求。
- 适配不同安全级别的需求:根据具体的安全需求,灵活设置最小加密密钥大小,以平衡安全性和性能。
- 优化蓝牙设备的性能:在设置最小加密密钥大小时,权衡安全性和性能之间的关系,选择合适的密钥大小以优化蓝牙设备的性能。
- 应对潜在的安全威胁:通过设置最小加密密钥大小,增强蓝牙设备对潜在安全威胁的抵御能力,并符合相关的安全标准和法规要求。
六、注意事项
在使用HCI_Set_Min_Encryption_Key_Size命令时,为了确保蓝牙通信的安全性和可靠性,需要注意以下几个方面。
6.1. 参数设置
- 取值范围:确保
Min_Encryption_Key_Size
的取值在0x01
到0x10
字节之间,超出此范围可能导致命令执行失败。 - 设备支持:考虑蓝牙控制器是否支持所设置的最小加密密钥大小,避免因设备不支持而返回错误。
- 安全性与性能:在设置密钥大小时,要权衡安全性和性能,确保在提供足够安全保障的同时,不影响设备的正常运行。
6.2. 命令执行
- 控制器支持:在执行命令前,确认蓝牙控制器支持该命令,避免因设备型号或固件版本差异导致的不支持。
- 检查执行结果:仔细检查返回的
HCI_Command_Complete
事件中的状态码,对失败情况进行错误处理,如调整参数后重新发送命令、记录错误信息或向用户报告错误。
6.3. 系统稳定性和安全性
- 不影响现有连接:
HCI_Set_Min_Encryption_Key_Size
命令只对新建立的连接起作用,如需对所有连接采用新密钥大小,需先断开现有连接再重新连接。 - 系统整体安全策略:将该命令作为蓝牙安全策略的一部分,与其他安全措施配合,构建完整的蓝牙安全体系。
6.4. 其他注意事项
- 错误处理与日志记录:做好错误处理和日志记录工作,以便及时分析和处理异常情况。
- 遵循安全标准与法规:在设置密钥大小时,遵循相关安全标准和法规要求,确保蓝牙通信的加密强度符合规定。
- 密钥更新与管理:关注密钥的更新和管理问题,通过定期更新密钥和管理密钥的生命周期,提高蓝牙通信的安全性和可靠性。
综上所述,HCI_Set_Min_Encryption_Key_Size
命令是蓝牙设备安全管理中的一个重要工具,允许主机配置蓝牙控制器以确保后续连接的安全性。通过正确设置最小加密密钥大小,可以增强蓝牙设备的安全性,保护数据传输不受未经授权的访问。
相关文章:

【0x0084】HCI_Set_Min_Encryption_Key_Size命令详解
目录 一、命令概述 二、命令格式及参数 2.1 HCI_Set_Min_Encryption_Key_Size命令格式 2.2. Min_Encryption_Key_Size 三、生成事件及参数 3.1. HCI_Command_Complete 事件 3.2. Status 四、命令的执行流程 4.1. 主机端准备阶段 4.2. 命令发送阶段 4.3. 控制器接收和…...

关于2025年智能化招聘管理系统平台发展趋势
2025年,招聘管理领域正站在变革的十字路口,全新的技术浪潮与不断变化的职场生态相互碰撞,促使招聘管理系统成为重塑企业人才战略的关键力量。智能化招聘管理系统平台在这一背景下迅速崛起,其发展趋势不仅影响企业的招聘效率与质量…...

Docker部署Spring Boot + Vue项目
目录 前提条件 概述 下载代码 打开代码 Docker创建网络 MySQL容器准备 MySQL数据库配置 启动MySQL容器 测试连接MySQL 初始化MySQL数据 Redis容器准备 修改Redis配置 启动redis容器 部署后端 后端代码打包 上传jar包到Linux 创建Dockerfile 构建镜像 运行后…...

开发规范
开发规范 企业项目开发有2种开发模式:前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题…...

九 RK3568 android11 MPU6500
一 MPU6500 内核驱动 1.1 查询设备连接地址 查看原理图, MPU6500 I2C 连接在 I2C4 上, 且中断没有使用 i2c 探测设备地址为 0x68 1.2 驱动源码 drivers/input/sensors/gyro/mpu6500_gyro.c drivers/input/sensors/accel/mpu6500_acc.c 默认 .config 配置编译了 mpu6550 …...

openplant实时数据库(二次开发)
资源地址 我的网盘〉软件>数据库>openplant>openplant实时数据库(二次开发)...

C语言:-三子棋游戏代码:分支-循环-数组-函数集合
思路分析: 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数,使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…...

“AI智慧化服务系统:未来生活的智能管家
在当今快速发展的科技时代,人工智能(AI)正以前所未有的速度改变着我们的生活。AI智慧化服务系统作为这一变革的前沿技术,正在逐渐成为我们未来生活的智能管家。它们不仅提高了服务效率,还为我们带来了更加个性化和便捷…...

python管理工具:conda部署+使用
python管理工具:conda部署使用 一、安装部署 1、 下载 - 官网下载: https://repo.anaconda.com/archive/index.html - wget方式: wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…...
minio https配置
minio启动时候指定数据目录,配置文件,密钥文件目录,环境文件 1.创建minio用户,专门用于服务启动的 groupadd -r minio-user useradd -M -r -g minio-user minio-user 2.在当前用户目录下创建minio目录,存储minio相关文件 mkdir minio 在mini…...

SpringMVC——原理简介
狂神SSM笔记 DispatcherServlet——SpringMVC 的核心 SpringMVC 围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器(即不同的Servlet)。根据请求的url,分配到对应的Servlet接口。 当发起请求时被前置的控制…...

Ubuntu18.04 解决 libc.so.6: version `GLIBC_2.28‘ not found
Glibc(GNU C Library)是 GNU 系统及其衍生系统如 Linux 操作系统中实现 C 语言标准库的核心组件。升级 Glibc 是一个非常谨慎的操作,因为它与系统的许多关键功能和服务密切相关。Ubuntu 18.04 默认安装的 Glibc 版本为 2.27,但某些…...

Notepad++移除所有空格
1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框,并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空,不填写任何内容。 6.点击 “全部替换” 按钮。...

Android BottomNavigationView不加icon使text垂直居中,完美解决。
这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果:垂直方向,文本不居中,看着很难受 问题解决之后:舒服多了 其实很简单&…...
如何使用 `forEach` 遍历数组?
数组遍历相关问题:如何使用 forEach 遍历数组? 在 JavaScript 中,遍历数组是一个常见且必要的操作。数组提供了多种方法来进行遍历,其中 forEach 是一种非常方便且常用的方法。它可以轻松地对数组中的每个元素执行回调函数。理解…...
Go语言之路————条件控制:if、for、switch
Go语言之路————if、for、switch 前言ifforswitchgoto和label 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程࿰…...

OpenAI推出首个AI Agent!日常事项自动化处理!
2025 年1月15日,OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说,你可以设置每天早晨 7 点获取天气预报,或定时提醒遛狗等日常事项。 看到这里,有没有一种熟悉的感觉&a…...
Go语言的编程范式
Go语言的编程范式 引言 Go语言,又称为Golang,由Google于2007年开发并于2009年开放源代码。Go语言被设计成一种简洁、高效且适用于多核计算和网络编程的语言。其独特的并发模型、静态类型系统以及高效的性能,使其在现代软件开发中逐渐获得了…...
如何在 Rocky Linux 上安装极狐GitLab?
本文分享如何在 Rocky Linux 操作系统上安装极狐GitLab。 相关资料 极狐GitLab 在各种操作系统下的安装指南官网文档 前提条件 一个安装了 Rocky Linux 操作系统的云服务器 可以查看 /etc/os-release 中的信息,确认操作系统信息: NAME"Rocky …...

数据库(MySQL)练习
数据库(MySQL)练习 一、练习1.15练习1.16练习 二、注意事项2.1 第四天 一、练习 1.15练习 win11安装配置MySQL超详细教程: https://baijiahao.baidu.com/s?id1786910666566008458&wfrspider&forpc 准备工作: mysql -uroot -p #以…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...