资讯动态

ESP-IDF+vscode开发ESP32 联网篇第八讲——Wi-Fi 协议与通信基础

发布时间:2026/10/14 3:14:43 来源:尧图企业网站定制
目录前言一、802.11 协议栈1.1 IEEE 802结构图1.2 物理层PHY1.2.1 PLCP 与 PMD 的分工1.2.2 速率集与频段划分2.4 GHz 频段5 GHz 频段6 GHz 频段1.2.3 层间接口1.3 数据链路层MAC1.3.1 关键机制一信道接入1.3.2 关键机制二帧结构与地址语义1.3.3 关键机制之三聚合与重传1.3.4 层间接口1.4 逻辑链路层LLC1.4.1 层间接口1.5 网络层IP 与 ARP1.5.1 层间接口1.6 传输层TCP 与 UDP1.6.1 层间接口1.7 应用层1.8 各层作用总结二、数据往返示例2.1 发送方向设备至互联网2.2 接收方向互联网至设备三、IP 地址和 MAC 地址3.1 IP 地址3.1.1 本机 IP 地址3.1.2 子网掩码3.1.3 默认网关3.1.4 DNS 服务器3.1.5 示例3.1.6 IPv63.2 MAC地址3.3 IP 与 MAC 协作3.3.1 同网段通信3.3.2 跨网段通信3.4 ESP32 分配 IP 地址3.4.1 ESP32 作为 STA3.4.2 ESP32 作为 SoftAP四、局域网与广域网4.1 局域网4.1.1 局域网内通信4.2 广域网4.2.1 跨网段通信总结前言在前几讲中我们已经完成了 ESP32 的 STA 入网、SoftAP 建网、SmartConfig 配网以及 ESP-NOW 无连接通信等内容解决了设备“如何接入网络”的问题。但设备成功联网只是第一步真正的物联网应用还需要在设备、手机、局域网服务器和云端平台之间可靠地交换数据。本章将梳理 Wi-Fi 所依赖的 IEEE 802.11 协议栈说明物理层、MAC、LLC、IP、TCP 与应用层之间的职责和关系再结合一条 MQTT 状态上报链路展示数据从 ESP32 发往网络、再返回设备的完整过程。随后文章进一步介绍 IP、MAC、ARP、子网掩码、默认网关、DNS、DHCP、STA 与 SoftAP 等网络基础并区分局域网、跨网段通信与互联网访问为后续编写 ESP32 WIFI通信程序建立扎实的理论基础。一、802.11 协议栈该节以 IEEE 802 体系为框架按协议栈自底向上的顺序逐层考察无线局域网IEEE 802.11下称 WiFi的结构组成。 全文遵循一个基本结论802.11 标准的适用范围限于物理层与数据链路层的介质接入控制子层 逻辑链路控制子层及以上与 IEEE 802.3 有线以太网共用同一套协议实体因此上层软件在介质替换时保持不变。 各层依次讨论功能定位、关键机制、层间接口与典型失效模式四个要素并在分层论述之后给出接入过程的时序视图与故障归因表。再介绍TCP通信之前我们先来全面的了解一下WiFi 结构WIFI是基于IEEE 802.11技术协议实现的IEEE 802.11IEEE 制定的一组无线局域网WLAN标准规定设备如何在 MAC 层和 PHY 层通信例如信道、调制编码、帧格式、CSMA/CA 介质访问、速率和安全机制等。Wi‑FiWi‑Fi Alliance 推出的商标和互操作认证体系。产品通过相应测试后才可使用Wi‑Fi CERTIFIED标识。总的来说802.11 是技术标准Wi‑Fi 是基于该标准的产品技术品牌与认证体系。1.1 IEEE 802结构图IEEE 802 委员会把局域网标准切成一族802.3 是有线以太网802.11 是无线局域网802.15.1 是蓝牙。 它们的分工相同只定义最底下两层并且把数据链路层再拆成两半上半叫 LLC802.2各家共用 下半叫 MAC各介质自定。这一拆分正是换了介质、上层代码不用改的制度原因。类比802.11 之于网络相当于 SPI/I2C 驱动之于 C 程序。驱动只保证字节按某种时序送到对面芯片 不关心里面装的是传感器值还是配置字WiFi 也只保证帧按无线电规则送到对面网卡不关心里面是 MQTT 还是 HTTP。1.2 物理层PHY物理层负责将比特序列转换为可在无线电介质上传播的波形并在接收端完成反向变换与同步。 其规范由 PLCP 与 PMD 两个子层构成前者定义汇聚程序与帧前导后者定义具体调制方式。 物理层不处理信道竞争与传输确认两项职能由 MAC 子层承担。讨论物理层须先明确其所依赖的传输介质条件因为该条件决定了后续各层的设计取舍共享性同一信道内全部站点共用一条通信通道任一时刻仅允许一个帧在传输故必须建立接入次序。半双工性收发共用频率时发射信号将淹没接收无法在发送的同时检测冲突。多径与衰落同一信号经反射体产生时延差达数十至数百纳秒的多路副本叠加后造成符号间干扰。无线信道的主要损伤来源为多径而非加性噪声。1.2.1 PLCP 与 PMD 的分工MAC 子层交付的比特序列在物理层称为待调制比特流规范中为 PHY 业务数据。PLCP 子层为其添加前导与信令字段L-SIG、U-SIG 等 合成 PLCP 帧PMD 子层按所选 MCS 完成调制与射频发射。前导不承载业务数据其作用为接收端同步、 帧长判定与速率声明属纯开销项是标称速率高于实测吞吐的首要来源。1.2.2 速率集与频段划分标准频段信道带宽单流标称速率802.11b2.4 GHz22 MHz11 Mbps802.11g2.4 GHz20 MHz54 Mbps802.11n2.4 / 5 GHz20 / 40 MHz72.2 / 150 Mbps802.11ac5 GHz80 / 160 MHz433 / 866 Mbps802.11ax2.4 / 5 / 6 GHz20160 MHz约 143 Mbps20 MHz802.11be2.4 / 5 / 6 GHz320 MHz约 2.9 Gbps单流2.4 GHz 频段信道规划原理中心频率公式为 f(n)24125×(n−1) MHz。虽然相邻信道的中心频率只隔了 5 MHz但信号带宽是 20 MHz 因此只有中心频率相差至少 25 MHz 的信道才能完全避免邻频干扰ACI。1/6/11 的黄金法则在中国可用的 113 信道中只有 1、6、11 这三个信道组合能实现真正的“零重叠”。若使用 1/5/9 等非标组合即使中心频率不重合信号的旁瓣也会相互交叠导致全网性能急剧下降。SmartConfig 配网机制由于手机在配网时不知道设备当前监听哪个信道ESP-IDF 等框架的 SmartConfig/AirKiss 协议会在 1、6、11 三个信道上循环发送 UDP 广播包。设备端则在这三个信道间快速跳变扫描通过匹配特定的魔数和序列号完成握手。这也是为什么配网时路由器若强制固定在非 1/6/11 信道可能导致配网失败的原因。现实困境该频段蓝牙、ZigBee、微波炉共存底噪极高。实际部署中应优先将 AP 锁定在 1/6/11 之一并将带宽保持为 20 MHz开启 40 MHz 虽理论速率翻倍但在密集环境中因干扰概率倍增实测吞吐往往反而更低。5 GHz 频段5 GHz 频段的信道编号与中心频率遵循统一的线性关系公式为f(n)50005×n MHz该公式适用于所有标准 5 GHz Wi-Fi 信道36–165但不适用于信道 165 以上的非标准频段或 6 GHz 频段。5 GHz 频段支持多种带宽模式通过绑定相邻的 20 MHz 子信道实现带宽绑定方式典型可用信道组合中国备注20 MHz单个子信道所有可用信道基础带宽抗干扰最强40 MHz2×20 MHz38/46/54/62/102/110/118/126/134/142/151/159主信道辅信道需指定上下边带80 MHz4×20 MHz42/58/106/122/138/155主流高速带宽兼顾速率与可用性160 MHz8×20 MHz50/114理论速率翻倍但可用信道极少且易触发 DFSDFS 机制详解52505350 MHz信道 5272及部分高频段被气象雷达、军用雷达共用。AP 启动或切换至这些信道时必须执行CACChannel Availability Check静默监听 60 秒部分雷达类型需 10 分钟确认无雷达脉冲后方可发射。运行中一旦检测到雷达信号必须在 10 秒内停止发射并跳转到新信道同时通知已关联的 STA 迁移。160 MHz 带宽在中国仅2 个非重叠信道50 和 114且均位于 DFS 频段实际部署中极易因雷达避让而降级为 80 MHz。穿墙衰减5 GHz 波长较短墙体穿透损耗比 2.4 GHz 高约 10–15 dB。同一位置 2.4 GHz 可能还有 -65 dBm5 GHz 可能已跌至 -80 dBm 以下触发低速 MCS 甚至断连。因此 5 GHz 更适合视距或轻隔断覆盖。6 GHz 频段频谱红利6 GHz5925–7125 MHz提供高达 1200 MHz 连续频谱可容纳 7 个 160 MHz 或 3 个 320 MHz 信道且全频段无 DFS 要求中国目前开放 5925–6425 MHz 用于 RLAN6425–7125 MHz 仍在协调中。这意味着开机即用、无雷达避让延迟是 Wi-Fi 7 发挥 320 MHz 超大带宽的前提。安全强制为防止老旧设备误入造成干扰Wi-Fi Alliance 规定 6 GHz 仅允许 WPA3-SAE 加密不支持 WPA2/WEP。这既是安全升级也是天然的“设备过滤器”。标称速率不等于吞吐量。标称值只算在理想空口的比特率 里面已扣 FEC 冗余但还没扣前导、帧间隔、退避、ACK 与重传。工程经验下标准 11n 20 MHz 标称72.2 MbpsTCP 实测常在 3045 Mbps。1.2.3 层间接口向上物理层接收 MAC 子层交付的比特流规范中称 PHY 业务数据并提供速率切换接口速率自适应算法位于 MAC 侧或驱动侧。向下向介质输出 PLCP 帧对应的射频波形。接收方向上物理层向 MAC 提交解调后的比特流并附带信号强度与信道质量度量 供 MAC 决定重传与速率调整。应用侧可观测的接口仅为驱动上报的 RSSI 与协商速率。1.3 数据链路层MACMAC 层是 802.11 规范中内容最厚的部分其核心约束来自介质的共享性与半双工性。 职能包括信道接入调度、帧构造与解析、确认与重传、聚合、加密、省电管理与速率自适应。 与 802.3 的对比可说明其特殊性以太网依赖交换设备实现端口独占与全双工因而仅需简单的载波监听与冲突检测 无线局域网不具备该前提必须自行建立排队与确认机制。1.3.1 关键机制一信道接入冲突检测CSMA/CD在无线条件下不可行原因有三收发同频时发射自扰远端冲突信号经衰减后无法判别发射能耗高冲突即浪费。802.11 因此采用冲突避免CSMA/CA流程为发送前确认信道空闲、随机退避以错开竞争者、 发送后等待确认。分布式协调功能DCF实现该流程802.11e 的增强分布式信道接入EDCA在其上叠加优先级分类。图中所示流程包含五项机制分述如下。物理载波监听由射频前端判定信道能量是否低于门限。其局限在于隐藏终端问题 站点 A 与 C 均关联同一 AP 但彼此不可闻同时发送时在 AP 处发生碰撞。虚拟载波监听网络分配向量NAV为帧头 Duration 字段所设置的倒计时寄存器 语义为后续 N 微秒内不得发送。其判定依据为解码结果而非能量感知故可覆盖 A 听不见 C 的场景只要 A 能解码 AP 发出的帧。请求/发送预约RTS 与 CTS 帧以短帧握手预先声明占用使隐藏终端亦获通知。代价为额外两次交互 仅在长帧或干扰严重时具备效率优势多数 AP 将触发门限设得较高而实际处于关闭状态。二进制指数退避重传失败后竞争窗CW加倍上限为 CWmax。该机制构成信道负载升高时吞吐下降的内在原因。帧间隔分级SIFS 最短用于确认帧与 CTSDIFS 为数据帧接入前的等待时长。 5 GHz OFDM 条件下的典型值为 SIFS 16 μs、时隙 9 μs、DIFS SIFS 2 时隙 ≈ 34 μs。1.3.2 关键机制二帧结构与地址语义MAC 帧由 MAC 头2430 字节、负载、8 字节 MICCCMP/GCMP 完整性校验值与 4 字节 FCSCRC32 帧校验序列构成。按功能分为三类类别帧类型作用管理帧Beacon、Probe Req/Resp、Auth、Assoc Req/Resp、Deauth网络发现与成员管理不承载上层数据控制帧ACK、Block Ack、RTS、CTS为数据帧让路或收尾帧长短、间隔优先级高数据帧QoS Data、Null Data承载 MAC 业务数据EAPOL 握手帧与 DHCP 报文亦经此类型传输帧头含四个地址字段多于 802.3 的两个。其必要性来自分布式系统DS即 AP 间骨干网转发场景 帧在中继时须同时保留下一跳与真实收发双方地址。核心判据为 Addr1 表示下一跳接收方而非最终目的地址 该语义是理解转发与漫游的前提。地址字段与 ToDS/FromDS 标志的对应关系如下表ToDSFromDSAddr1Addr2Addr3Addr400目的 MAC源 MACBSSID不使用10BSSIDAP源 STA真实目的 MAC不使用01目的 STABSSIDAP真实源 MAC不使用11下一跳当前发送方真实目的真实源其中 BSSID基本服务集标识符为 AP 射频接口的 MAC 地址同时唯一标识该 BSS基础服务集。 SSID 为面向用户的字符串标识同一 SSID 下多台 AP 具备不同 BSSID构成漫游的前提条件。1.3.3 关键机制之三聚合与重传MAC 子层的输入即 IP 分组与 LLC/SNAP 头之和。加头尾后形成 MAC 帧为确认与重传的基本单位和提高空口效率标准定义两种聚合形式帧内聚合将多份上层数据装入同一帧的负载上限为 802.11n 的 7935 字节与 802.11ac 起的 11454 字节 省去重复的 MAC 头适用于小分组高频场景。帧间聚合将多个 MAC 帧在单次信道占用时间TXOP内连续发送由一个 Block Ack 位图统一确认未达者单独重传 为吞吐提升的主要手段。聚合引入一项副作用帧间聚合的单独重传机制使后发帧可能先达即产生链路层乱序。 传输层 TCP 将乱序判为丢包并触发快速重传构成跨层干扰的典型案例。1.3.4 层间接口向上接收 LLC 子层交付的 MAC 业务数据并以同样的形式向 LLC 提交接收结果 同时提供站点状态接口RSSI、协商速率、重传计数、关联状态。向下将 MAC 帧或聚合后的帧作为待调制比特流交付物理层 并接收物理层上报的信道质量以驱动速率自适应。加密、确认、退避等过程对上层不可见。1.4 逻辑链路层LLCLLC 为 802 体系中唯一由各介质共用的数据链路层功能单一在负载起始处放置协议标识 使接收端得以将分组交付正确的上层实体。其规范见 IEEE 802.2实现上表现为 LLC/SNAP 头。LLC/SNAP 头共 6 字节取值为AA AA 03 00 00 00其后紧跟 2 字节 EtherType 协议号 如0800表示 IPv40806表示 ARP86DD表示 IPv6。 需说明一项易被误解的事实该头在空口帧中并不占据独立字段而是位于 MAC 业务数据的起始处 在接收端剥离 MAC 头之后才予以解析。因此 LLC 子层的实际作用是一项跨介质约定而非独立的软件模块。1.4.1 层间接口向上以 EtherType 将分组分流至网络层的 IPv4、ARP 或 IPv6 处理实体。向下向 MAC 子层交付 MAC 业务数据。在 802.3 与 802.11 之间本层及其上的处理路径完全一致 故本节构成两种介质的分界点结构图中标注为与介质无关的区域自本层起始。1.5 网络层IP 与 ARP网络层提供逻辑寻址与跨网转发由 IP 协议承担选路、ARP 协议承担 IP 至 MAC 地址的映射、ICMP 承担差错与诊断报文。 该层不感知底层介质类型其输出IP 分组即是 MAC 业务数据的主体。关键机制如下地址分配STA 通常经 DHCP 取得地址、掩码、网关与 DNS亦支持静态配置。ARP 映射发往本网其他终端或网关的帧须先解析其 MAC 地址ARP 表项具有老化时间。MTU 与分片以太网 MTU 为 1500 字节802.11 链路须在同一净荷内额外容纳 MAC 头与 MIC 故实际可用净荷略小。叠加 PPPoE 或隧道封装时易触发 IP 分片。1.5.1 层间接口向上为传输层提供无连接的数据报服务向下经 LLC 子层向 MAC 提交分组并使用 ARP 获取下一跳 MAC 地址。 在嵌入式实现中本层与传输层由 lwIP 等协议栈提供应用侧仅通过 socket 接口间接使用。1.6 传输层TCP 与 UDP传输层提供进程间通信、端口标识与端到端控制。TCP 提供有序、可靠、面向连接的字节流 并以丢包作为拥塞判据UDP 提供无连接、不可靠但低开销的数据报服务。关键机制如下可靠传输序号、确认、超时重传与快速重传共同保证可靠性其前提是丢包主要源于网络拥塞。拥塞控制慢启动、拥塞避免与窗口收缩由丢包事件触发。连接管理三次握手建立、四次挥手释放keepalive 用于探测对端是否仍可达。1.6.1 层间接口向上以 socket 接口向应用层提供send、recv等系统调用向下向 IP 层提交段或数据报。 应明确该接口的语义边界connect()返回成功仅表明三次握手完成而握手过程本身可能在 MAC 层经历多次重传send()返回成功仅表明数据进入协议栈缓冲区尚未完成空口传输。1.7 应用层应用层协议直接面向业务语义。物联网场景常见组合为 MQTT发布/订阅基于 TCP、HTTP/HTTPS请求/响应、 DNS域名解析与 NTP时间同步。该层对下层介质的感知仅限于网络可达性与端到端时延统计。关键机制如下心跳与保活MQTT 的 keepalive 机制在 WiFi 场景下承担双重职能既维持代理侧的会话也弥补 TCP 无法感知链路层断链的缺陷。报文尺寸策略小分组高频发送的单位开销最高将周期性上报合并为批量消息可显著降低空口占用。服务质量声明应用层可通过 DiffServ 标记影响 EDCA 类别映射该映射仅改变接入次序。1.8 各层作用总结综合前述论述可将协议栈的作用概括为一条主线物理层负责把比特送上电波MAC 子层负责在共享信道上安排发送次序并保证帧的正确到达 LLC 子层负责标明数据所属的上层协议网络层负责跨网寻址传输层负责端到端的可靠与流控应用层负责业务语义。 每一层只处理本层的控制信息因而任一层被替换时其余层保持不变这正是 802.11 能够与 802.3 共存于同一设备的原因。下表汇总各层职责及其边界。协议层核心职责处理对象不负责的事项物理层比特与射频波形之间的转换含同步、调制与速率选择PLCP 帧不决定发送时机不判断接收方是否收到MAC 子层信道接入、成帧、加密、确认与重传、聚合、省电管理MAC 帧不识别上层协议不提供端到端可靠性LLC 子层以协议号标识上层实体构成介质无关的分界SNAP 头不参与差错控制与流量控制网络层逻辑寻址、路由与分片ARP 完成地址映射IP 分组不保证顺序与可靠交付传输层进程间通信、端到端可靠与拥塞控制段 / 数据报不感知链路类型不处理跨网转发应用层业务语义与会话语义如发布订阅、请求响应报文不介入任何下层封装过程需要强调两处易被混淆的边界。其一MAC 子层的确认仅覆盖单段无线链路与传输层的端到端确认互不替代 其二物理层的标称速率描述的是空口比特率与端到端吞吐之间隔着接入竞争、封装开销与重传三层因素。二、数据往返示例承接上一节。接入过程解决的是入网问题入网完成之后业务消息才开始传输。本节以一条状态上报为例 按时间顺序考察设备向互联网发送消息与从互联网获取消息时各层分别完成的工作。 设设备为运行 MQTT 客户端的 ESP32-C6 站点代理服务器位于公网应用载荷为 60 字节的主题与报文。2.1 发送方向设备至互联网步骤协议层执行的工作交付给下一层的对象①应用层MQTT 客户端构造 PUBLISH 报文主题、QoS 等级与载荷共 60 字节调用send()写入 socket应用报文②传输层TCP 分配序号与确认号附加源端口与目的端口 1883放入发送缓冲并启动重传计时器TCP 段③网络层查路由表判定下一跳为默认网关若 ARP 表无该项则先发出 ARP 请求填写总长度、TTL 与协议号IP 分组④LLC 子层在分组之前写入 6 字节 SNAP 头协议号取0800MAC 业务数据⑤MAC 子层执行 DIFS 监听与随机退避加帧头Addr1 为 BSSID、Addr3 为服务器或网关 MAC、置 Duration 字段、以 CCMP 加密并追加 MIC 与 FCS发送后等待 ACK失败则加倍竞争窗重传MAC 帧或聚合后的多帧⑥物理层PLCP 子层添加前导与信令字段PMD 子层按当前 MCS 完成调制PLCP 帧⑦无线介质电波传播至 AP 射频口AP 剥离 MAC 帧头后经骨干网转发沿途路由器仅处理至网络层—2.2 接收方向互联网至设备步骤协议层执行的工作交付给上一层的对象⑧无线介质代理返回的 SUBACK 由服务器经骨干网送达 APAP 依据关联表查得设备 AID 并以电波发出若设备处于省电模式该帧先被缓存至 DTIM 周期射频信号⑨物理层前导完成同步与自动增益控制按信令字段声明的速率解调输出比特流并附带 RSSI 与信道质量度量待调制比特流⑩MAC 子层校验 FCS 与 MIC以 PTK 解密核对重放计数在 SIFS 之后回复 ACK若为聚合帧则按 Block Ack 位图重排序再按 Addr1 判定是否为本机数据MAC 业务数据⑪LLC 子层读取 SNAP 头的协议号0800剥去该头并上送 IPv4 处理实体IP 分组⑫网络层校验首部校验和与目的 IPTTL 减一按协议号 6 上送 TCPTCP 段⑬传输层核对序号与校验和更新接收窗口并回复 ACK将字节按序放入接收缓冲若recv()在阻塞等待则唤醒该任务字节流⑭应用层MQTT 客户端解析 SUBACK标记订阅完成并通知业务逻辑业务事件三、IP 地址和 MAC 地址在大多数现代网络编程场景中客户应用开发者通常只需要关注应用层逻辑和通信协议底层、网络层等通信细节已被操作系统、运行时环境或框架封装。但其中有两个地址至关重要网络通信中也经常遇见我们具体看一下。IP 地址是网络层的可路由逻辑标识用于让分组跨越多个网络到达目标MAC 地址是数据链路层的链路接口标识用于在一个二层广播域内完成帧的逐跳交付。IP 决定“最终去哪里”MAC 决定“当前这一跳交给哪个接口”。在 TCP/IP 协议栈中IP 位于网络层MAC 位于数据链路层。3.1 IP 地址IP 地址是分配给网络接口的逻辑地址。一个主机可同时拥有多个接口和多个 IP例如电脑的以太网、Wi‑Fi、VPN、回环接口都可能各有 IP 地址。IPv4 地址固定为32 位通常按 8 位分成四段用点分十进制书写192.168.10.25。完整的IP 配置包括本机 IP、子网掩码、默认网关、DNS 服务器。它们通常由 DHCP 一次性下发给 ESP32、手机或电脑。在网络编程中DHCP动态主机配置协议是IP地址管理的关键DHCP能够自动为网络路由和其他设备分配网络配置参数包括IP地址、子网掩码、默认网关及DNS服务器极大地简化了网络配置过程。3.1.1 本机 IP 地址本机 IP 地址是分配给当前网络接口的三层逻辑地址用于标识设备在该 IP 网络中的位置也是其他设备向它发送 IP 数据包时使用的目标地址。例如 ESP32 获取到本机 IP192.168.1.100IP 应在当前网络内保持唯一若两台设备配置成同一个 IP就会产生IP 地址冲突表现为间歇性掉线、ARP 映射反复变化或完全无法通信。3.1.2 子网掩码子网掩码用于把 IPv4 地址划分为“网络部分”和“主机部分”使设备能够判断目标 IP 是在本地链路上还是必须交给路由器转发。DHCP 可将子网掩码作为客户端网络配置的一部分下发。例如本机 IP192.168.1.100子网掩码255.255.255.0CIDR 前缀/24网络地址192.168.1.0判断规则是网络地址IP 地址 子网掩码若本机与目标地址按位与掩码后的网络地址相同则目标被视为同网段否则是异网段。例如本机为192.168.1.100/24目标 IP判断发送方式192.168.1.20同网段网络地址均为192.168.1.0通过 ARP 获取目标设备 MAC直接发送二层帧192.168.2.20异网段将帧交给默认网关子网掩码配置错误会直接破坏路由判断。例如 ESP32 实际处于192.168.1.0/24却错误设为/16它可能误以为192.168.2.10也在本地尝试 ARP 查询对方 MAC但该设备实际在另一个子网ARP 广播通常不会被路由器转发因此通信失败。3.1.3 默认网关默认网关Default Gateway是本机路由表中的“默认下一跳路由器”。当目标 IP 不匹配任何更具体的路由项时设备将数据包交给默认网关例如本机 IP 192.168.1.100/24默认网关 192.168.1.1公网目标 IP 8.8.8.8ESP32 判断8.8.8.8不属于192.168.1.0/24于是将数据包交给网关192.168.1.1。没有正确默认网关时设备通常仍能访问同网段设备却无法访问外网或其他网段。例如 ESP32 仍可能连上192.168.1.20:8080但无法连接公网 MQTT 服务器。3.1.4 DNS 服务器DNSDomain Name System服务器负责将人类可读的域名解析为 IP 地址。例如把broker.example.com 解析为 203.0.113.10。DNS 的基本用途之一就是为主机名查询返回互联网主机地址。它只解决“域名对应哪个 IP”的问题得到 IP 后设备仍需依赖子网掩码和默认网关来实际建立连接。3.1.5 示例假设 ESP32 通过 DHCP 连接家庭 Wi‑Fi 后获得IP 地址 192.168.31.123子网掩码 255.255.255.0默认网关 192.168.31.1DNS 服务器 192.168.31.1、223.5.5.5那么访问电脑192.168.31.88属于同网段ESP32 ARP 获取电脑 MAC 后直接经 AP 发送。访问服务器1.2.3.4不属于本地网段ESP32 先将帧发送给网关192.168.31.1。访问api.example.comESP32 先向 DNS 请求该域名的 IP获得 IP 后再按上述规则决定直发还是交给网关。3.1.6 IPv6IPv6 被设计为 IPv4 的后继版本主要变化包括把地址长度由 IPv4 的 32 位扩展为 128 位并更新了协议报头和扩展能力。IPv6 使用冒号分隔的十六进制表示例如2001:db8:1234:5678::25/64。3.2 MAC地址MACMedia Access Control地址是 IEEE 802 网络中常用的链路层地址。最常见形式是EUI-48长度为48 位、6 字节IEEE 文档指出EUI-48 常作为 IEEE 802 网络硬件接口的地址历史上称为 MAC-48。它仅应理解为网络接口标识符而不是绝对不可变的“设备身份证”。操作系统、驱动或 Wi‑Fi 固件可以设置本地管理 MAC移动设备还常为隐私保护而针对不同 WLAN 使用随机 MAC。MAC 地址由 6 个八位组组成常见表示方法包括A4:CF:12:34:56:78A4-CF-12-34-56-78A4CF.1234.5678这三种写法表达的是同一个 48 位地址。3.3 IP 与 MAC 协作以 ESP32 为例设其网络参数如下ESP32 IP / MAC 192.168.1.100 / A4:CF:12:34:56:78PC IP / MAC 192.168.1.20 / 70:85:C2:11:22:33默认网关 IP / MAC 192.168.1.1 / 3C:84:6A:44:55:663.3.1 同网段通信ESP32 向同子网 PC192.168.1.20:8080发起 TCP 连接时过程可概括为ESP32 使用本机 IP 与掩码判断192.168.1.20属于本地子网。若 ARP 缓存中没有192.168.1.20的 MACESP32 发送 ARP Request目标以太网 MAC 为广播地址ARP 负载中询问“谁拥有192.168.1.20”。PC 返回 ARP Reply告知其 MAC 为70:85:C2:11:22:33。ESP32 封装数据IP 包的目的 IP 是192.168.1.20外层二层帧的目的 MAC 是70:85:C2:11:22:33。AP/交换机按 MAC 表转发该帧PC 解封装后将数据交给 IP、TCP最后交由端口8080对应的应用进程。ARP 的设计目的就是完成从 IP 等协议地址到以太网等本地网络地址的转换。3.3.2 跨网段通信若 ESP32 访问公网地址8.8.8.8它先依据掩码判断目标不在192.168.1.0/24本地子网因此下一跳必须是默认网关。网关收到帧后会执行去掉入站二层帧头和帧尾。根据 IP 包目的地址查询路由表确定下一跳和出口接口。在出口链路上重新封装新的二层帧源/目的 MAC 改为该链路相邻节点的 MAC。转发 IP 包。因此MAC 地址是逐链路、逐跳有效的IP 地址承担的是端到端的逻辑寻址与路由。IP 分组的目的地址是路由决策的依据。3.4 ESP32 分配 IP 地址ESP32 的 IPv4 地址可以通过 DHCP 自动获取也可以手动配置为静态 IP。两种方式的选择取决于 ESP32 当前运行模式、网络拓扑和设备部署需求。DHCP 会自动为设备下发本机 IP、子网掩码、默认网关和 DNS 服务器等网络参数静态 IP 则由开发者手动指定。对于多数接入家庭或企业网络的 STA 设备优先推荐 DHCP若确实需要地址固定优先推荐在路由器侧按设备 MAC 地址配置 DHCP 地址保留。DHCP 的作用就是向主机提供网络配置参数。3.4.1 ESP32 作为 STA当 ESP32 运行在 STAStation模式时它相当于手机、电脑一样的 Wi‑Fi 客户端需要加入已有的 AP 或无线路由器网络。例如家庭路由器的 LAN 网络为路由器 LAN IP192.168.31.1子网掩码 255.255.255.0DHCP 地址池 192.168.31.100 ~ 192.168.31.200ESP32 通过 DHCP 获取的参数可能是本机 IP 192.168.31.123子网掩码 255.255.255.0默认网关 192.168.31.1DNS 服务器 192.168.31.1此时ESP32 可以访问同网段设备也可以通过默认网关访问互联网。若 STA 模式下需要设置静态 IP设置时必须满足以下要求静态 IP 必须位于当前 LAN 的有效子网内例如192.168.31.50/24属于192.168.31.0/24。静态 IP 必须唯一不能与路由器、电脑、手机或其他 ESP32 重复。静态 IP 应避开 DHCP 地址池避免 DHCP 服务器把同一 IP 租给另一台设备。默认网关必须与 STA IP 处于同一子网例如192.168.31.50/24的网关可设为192.168.31.1不能设为192.168.1.1。若应用需要通过域名访问 MQTT、HTTP、NTP 等服务器必须配置可达的 DNS 服务器。另外注意STA 的网关不是 AP 管理地址在普通 AP 的桥接模式下AP 主要负责无线接入和二层帧转发不负责跨网段路由。因此连接到同一 SSID、同一 VLAN 的 STA 设备通常使用同一个默认网关但该网关一般是出口路由器或三层交换机而不是 AP 的管理 IP。无线 AP 的本质是连接无线网络与有线网络的接入设备。例如路由器/三层网关192.168.31.1AP 管理 IP 192.168.31.2ESP32 IP 192.168.31.50手机 IP 192.168.31.60ESP32 和手机的默认网关应为192.168.31.1而不是 AP 的管理地址192.168.31.2。只有当 AP 自身同时具备路由、DHCP 和 NAT 功能时例如无线路由器工作在路由模式或 ESP32 运行 SoftAP 网关模式它自身的 IP 才会成为客户端的默认网关。在 ESP-IDF 中配置 STA 静态 IP 时应先使用 esp_netif_dhcpc_stop() 函数停止 DHCP 客户端否则 DHCP 后续获取的租约可能覆盖手动设置的网络参数。如果长期部署多台设备建议让 ESP32 继续使用 DHCP然后在路由器侧根据 ESP32 的 STA MAC 地址创建 DHCP 地址保留。这样既能获得固定 IP又能避免设备侧静态配置与 DHCP 地址池冲突。3.4.2 ESP32 作为 SoftAP当 ESP32 工作在 SoftAP 模式时它会创建自己的无线局域网手机、电脑或其他 ESP32 可以作为 STA 连接到该热点。SoftAP 的 IP 地址通常应固定因为它不仅是 ESP32 自身的管理地址和本地服务地址也是接入该热点的 STA 设备的默认网关。SoftAP 的 IP、网关、子网掩码和 DHCP 地址池必须匹配同一个子网。ESP-IDF 默认 SoftAP 网络参数通常为SoftAP IP 地址192.168.4.1子网掩码 255.255.255.0默认网关 192.168.4.1连接到该热点的 STA 会通过 ESP32 的 DHCP Server 获取同网段地址例如手机 IP 192.168.4.2子网掩码 255.255.255.0默认网关 192.168.4.1SoftAP 的 IP、网关、子网掩码和 DHCP 地址池必须匹配同一个子网。需要遵循以下规则SoftAP 本机 IP 必须是该子网内的有效主机地址。SoftAP 的网关通常设置为自身 IP。DHCP 地址池必须与 SoftAP 位于同一子网。DHCP 地址池不能包含 SoftAP 自身 IP。DHCP 地址池不能包含网络地址或广播地址。对于192.168.10.0/24192.168.10.0是网络地址192.168.10.255是广播地址二者都不能分配给设备。要注意SoftAP 不等于互联网网关ESP32 仅运行WIFI_MODE_AP时接入 SoftAP 的设备通常只能访问 ESP32 本机和同一 SoftAP 子网内的其他客户端。这并不意味着手机可以经由 ESP32 访问互联网。ESP32 需要工作在WIFI_MODE_APSTA模式并实现 IP 转发、NAT/NAPT、DHCP 和 DNS 等网关相关功能仅仅同时启动 AP 与 STA 并不会自动完成网络共享。ESP-IDF 配置 SoftAP 静态 IP时应先通过esp_netif_dhcps_stop()停止 DHCP 服务再调用esp_netif_set_ip_info()更新 AP 的 IP、网关和掩码最后调用esp_netif_dhcps_start()重新启动 DHCP 服务。另外在 ESP-IDF 中soft AP模式的默认IP地址定义在《components\esp_netif\esp_netif_defaults.c》文件的_g_esp_netif_soft_ap_ip全局变量中const esp_netif_ip_info_t _g_esp_netif_soft_ap_ip { .ip { .addr ESP_IP4TOADDR( 192, 168, 4, 1) }, .gw { .addr ESP_IP4TOADDR( 192, 168, 4, 1) }, .netmask { .addr ESP_IP4TOADDR( 255, 255, 255, 0) }, };分别包含IP地址网关地址和子网掩码可以在这直接修改也能设置新的静态 IP。四、局域网与广域网前文介绍了 IP 地址、子网掩码、MAC 地址和默认网关。理解这些概念后就可以进一步区分设备是在局域网LAN内直接通信还是需要经过路由器访问更大范围的网络。局域网和广域网的核心差异不只是距离还包括网络的管理边界、数据转发方式、使用的设备和安全策略。4.1 局域网局域网Local Area NetworkLAN是覆盖较小地理范围的网络典型场景包括家庭、办公室、实验室、楼宇、工厂和校园内部网络。家庭路由器下连接的手机、电脑、ESP32、打印机、NAS 等设备通常共同构成一个局域网。局域网可以使用网线也可以使用 Wi-Fi。网线接入通常遵循 IEEE 802.3 以太网标准无线接入通常遵循 IEEE 802.11 Wi-Fi 标准两者都能承载 IPv4、IPv6、TCP、UDP、HTTP 和 MQTT 等上层协议。一个典型家庭局域网所有设备均使用255.255.255.0子网掩码均具有同样的网络地址。例如以下IP主机都在一个局域网下。网络地址192.168.31.0可用主机192.168.31.1 ~ 192.168.31.254广播地址192.168.31.2554.1.1 局域网内通信两台设备是否能够直接进行二层通信关键在于它们是否属于同一 IP 子网以及是否处于同一个二层广播域。例如 ESP32 与电脑的网络参数如下ESP32192.168.31.50/24电脑 192.168.31.88/24网关 192.168.31.1ESP32 访问电脑的 TCP 服务由于目的地址192.168.31.88与本机地址192.168.31.50的网络号都为192.168.31.0/24ESP32 判定目标在本地子网内。此时它不会将 IP 包交给默认网关而是使用 ARP 查询电脑的 MAC 地址然后把二层帧直接发往对方。因此同一子网设备之间的 TCP、UDP、HTTP、MQTT 或 ping 通信属于局域网通信不依赖互联网连接。即使路由器的 WAN 口断网、宽带到期或 DNS 不可用只要 ESP32、AP、交换机和目标设备仍正常工作局域网内的 IP 直连通信仍可继续进行。但要注意“本地通信不经过默认网关”不等于“一定没有中间设备”。Wi-Fi STA 向另一台设备发送数据时帧通常仍会先到 AP有线设备之间的帧通常也会经过交换机。AP 和交换机主要完成二层转发而不是根据 IP 路由表进行跨网段路由。4.2 广域网广域网Wide Area NetworkWAN是跨越较大地理范围、用于连接多个局域网或其他网络的网络范围可从城市、省份到国家甚至全球。运营商网络、企业异地专线、跨地区 VPN以及互联网中的大量骨干网络和接入网络都可以视为广域网环境或广域网连接的一部分。家庭路由器通常有两侧网络接口LAN 侧家庭内部网络例如 192.168.31.0/24WAN 侧运营商网络例如 PPPoE、DHCP 或光猫分配的地址在家庭网络中人们常把 WAN、外网、公网和互联网混用但它们的含义并不完全一样LAN本地范围内的网络例如家庭 Wi-Fi、办公室网络、ESP32 SoftAP 网络WAN连接不同地理位置网络的广域网络Internet由大量独立网络互联形成的全球公共网络公网 IP能够在互联网中被路由的地址通常由运营商或云服务商分配私有 IP仅用于内部网络的地址例如192.168.0.0/16、10.0.0.0/8和172.16.0.0/12所以互联网属于广域互联网络但广域网不一定就是互联网。例如一家公司用运营商专线连接北京与上海两个办公室即使这条专线不开放到公网它仍然属于广域网连接。4.2.1 跨网段通信初学者容易把“跨网段通信”和“访问互联网”视为同一件事但二者并不等价。假设存在两个内部网络网络 A192.168.10.0/24网关 A192.168.10.1网络 B192.168.20.0/24网关 B192.168.20.1设备地址如下ESP32 192.168.10.50/24服务器192.168.20.88/24ESP32 访问192.168.20.88时发现目标不属于192.168.10.0/24因此会将数据交给自己的默认网关192.168.10.1。路由器或三层交换机查询路由表后再将数据转发到192.168.20.0/24。这属于跨网段的三层路由通信但两端仍可能完全位于企业、工厂或实验室内部即使外网断开只要内部路由存在、回程路由正确且 ACL、防火墙或 VLAN 隔离策略未阻断它们仍可正常通信。真正访问互联网时路由器还通常要完成 NAT。家庭 LAN 设备一般使用私有地址不能直接在公网中路由路由器会将多个内部连接映射到自己的 WAN 地址再把返回流量正确转发给相应的内网设备。总结本文按照“无线接入、协议分层、地址寻址、网络转发”的逻辑建立了从 Wi-Fi 空口到应用数据的完整认知框架。IEEE 802.11 主要规范物理层和 MAC 层物理层负责把比特转换为无线信号MAC 层负责共享信道竞争、帧封装、确认、重传和加密LLC 层以上则可与有线以太网共用因此应用程序通常不需要因底层介质从网线改为 Wi-Fi 而重写 TCP 或 MQTT 逻辑。网络通信中IP 用于端到端寻址和跨网路由MAC 用于本地链路上的逐跳交付ARP 负责在本地网络中把下一跳 IP 解析为 MAC 地址。设备通过子网掩码判断目标是否在本地子网同网段设备可经 AP 或交换机直接转发不依赖互联网异网段设备则需要默认网关执行三层路由但这并不意味着一定要访问公网。ESP32 作为 STA 时通常通过 DHCP 获取 IP、网关和 DNS作为 SoftAP 时则为客户端提供本地网络。理解这些关系后后续进行 Socket、TCP、HTTP 或 MQTT 开发时便能更准确地定位连接失败、DNS 解析失败、路由错误及无线链路质量等问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑