Skip to content

嵌入式系统设计师考试 - 网络板块满分知识终极梳理

第一层:核心理论精讲(夯实满分地基)

1. 网络体系结构(必考1-2分)

  • OSI七层模型:不仅要背出名字和顺序,更要理解每一层的核心职责、数据单元(PDU)、典型设备与协议

    • 物理层:比特流,中继器、集线器。定义电压、接口、速率。
    • 数据链路层:帧,网桥、交换机。负责差错控制(CRC)、流量控制(停等协议、滑动窗口)、介质访问控制(CSMA/CD, CSMA/CA)。关键:MAC地址在此层生效。
    • 网络层:分组/包,路由器。负责路由选择(RIP, OSPF)、逻辑寻址(IP地址)。关键:IP协议、ARP/RARP, ICMP在此层。
    • 传输层:报文段/数据报,网关。负责端到端通信、可靠传输(TCP)、不可靠传输(UDP)、端口复用。关键:端口号(0-65535),常见端口(FTP 20/21, SSH 22, HTTP 80, HTTPS 443, DNS 53, DHCP 67/68)。
    • 会话层:建立、管理、终止应用程序之间的会话。注意:此层在TCP/IP模型中被合并到应用层。
    • 表示层:数据格式转换(ASCII/EBCDIC)、加密解密、压缩解压。注意:TLS/SSL协议工作在此层和传输层之间。
    • 应用层:为用户应用提供网络服务接口。协议:HTTP, FTP, SMTP, POP3, DNS, Telnet。
  • TCP/IP四层模型:应用层、传输层、网络层、网络接口层。必须能与OSI模型完美映射。

  • 数据封装与解封装(必考过程理解)

    • 发送端:用户数据 -> 应用层头部(如HTTP头) -> 传输层头部(TCP/UDP头,含端口) -> 网络层头部(IP头,含源IP和目标IP) -> 链路层头部(以太网头,含源MAC和目标MAC)+尾部(FCS) -> 物理层比特流。
    • 接收端:反向解封装。考题常问:“路由器能解封装到哪一层?”答案:网络层。

2. 核心协议深度解析(必考4-6分)

  • IP协议

    • IPv4:32位地址,点分十进制。分类(A, B, C, D, E类)子网划分(必算!VLSM/CIDR)特殊IP地址(网络号、广播地址、本机地址127.0.0.1、私有地址10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)。
    • IPv6:128位,冒号十六进制。优势:巨大的地址空间、自动配置、安全性(IPsec是内嵌的)、无广播风暴。地址类型:单播、多播、任播。考点:IPv4向IPv6的过渡技术(双协议栈、隧道技术)。
    • IP分片:MTU(最大传输单元,以太网通常1500字节),标志位(DF不分片,MF更多分片),片偏移。考题:给定一个大于MTU的数据包,问分片后的各片偏移量是多少。
  • TCP协议(满分重难点)

    • 报文段格式源/目的端口、序列号、确认号、数据偏移、控制位(URG, ACK, PSH, RST, SYN, FIN)、窗口大小、校验和、紧急指针。必须知道每个字段的含义。
    • 三次握手:SYN -> SYN/ACK -> ACK。追问:为什么要三次?防止已失效的连接请求报文突然又传送到了服务端,产生错误。
    • 四次挥手:FIN -> ACK -> FIN -> ACK。追问:为什么TIME_WAIT状态需要等待2MSL(最大报文生存时间)?保证最后一个ACK能让被动关闭方收到,并让本连接所有老报文在网络中消失。
    • 可靠传输机制序列号、确认应答、超时重传(RTO动态计算,Karn算法)、快速重传(收到三个重复ACK)、选择确认(SACK)
    • 流量控制滑动窗口,用于协调发送方和接收方的速率。
    • 拥塞控制慢启动、拥塞避免、快重传、快恢复。这是考试重点。
  • UDP协议:无连接、不可靠、面向报文。报文格式:源/目的端口、长度、校验和。适用场景:实时音视频、DNS、SNMP。

  • ARP协议IP地址解析为MAC地址。原理:广播ARP请求,单播ARP响应。考点:ARP欺骗、代理ARP、免费ARP(用于IP冲突检测)。

  • ICMP协议:传递控制/错误消息。常见类型与代码:0(Echo Reply,ping响应)、8(Echo Request,ping请求)、3(目标不可达)、11(超时,traceroute使用)。注意:ICMP是网络层协议,但封装在IP数据报中传输。

  • DNS协议:域名解析为IP。递归查询、迭代查询。DNS缓存。

第二层:嵌入式特有技术深度剖析(满分决胜点)

1. 轻量级TCP/IP协议栈:lwIP(重点攻关对象)

  • 设计目标:在几十KB RAM/ROM的环境下运行。
  • 核心特点
    • 内存管理:使用pbuf数据结构,替代标准的mbufsk_buffpbuf结构(必须掌握):包含next指针、payload指针、len(当前pbuf中数据长度)、tot_len(链上所有pbuf的总长度)、ref(引用计数)。类型:PBUF_RAM(堆分配,通常用于存放将要发送的数据)、PBUF_ROM/PBUF_REF(指向外部ROM/静态RAM,不复制数据)、PBUF_POOL(从固定大小的内存池中分配,速度快,用于接收)。
    • 操作系统封装层:提供sys_mbox(消息邮箱,用于模块间通信)、sys_sem(信号量,用于同步)、sys_thread_new(创建新线程)。
    • API层次(由低到高):
      1. RAW/Callback API最高效,但编程复杂。核心数据结构是tcp_pcb(TCP协议控制块)。通过注册回调函数(如acceptrecv, sent, poll, err)处理事件。
      2. Netconn API:基于顺序模型,使用netconn_newnetconn_connectnetconn_sendnetconn_recv等阻塞式函数,代码类似Socket但更轻量。
      3. Socket API:最接近标准Berkeley Socket,兼容性好但开销相对最大
  • 移植要点:需要实现sys_arch.c(操作系统接口),提供临界区保护创建任务申请/释放信号量和邮箱,并提供系统滴答时钟(用于sys_check_timeouts处理TCP超时重传等)。

2. 常见物理网络接口

  • 以太网
    • MAC控制器:芯片内的外设,负责实现MAC层(CSMA/CD, 帧的封装与解析)。
    • PHY芯片:物理层接口芯片,负责模数转换、线路编码(MLT-3, PAM5)、自动协商。
    • MII/RMII/GMII/RGMII接口:MAC和PHY之间的连接总线。RMII减少引脚数(9根线),常用。考点:PHY地址配置、自动协商的管理通过MDC/MDIO接口进行。
  • 无线网络(高频考点)
    • Wi-Fi (802.11系列)站点(STA), 接入点(AP)。模式:Infrastructure (通过AP连接互联网) vs Ad-Hoc/IBSS (设备直连,无AP)。考点:CSMA/CA(避免碰撞,通过RTS/CTS握手解决隐藏节点问题) vs 有线以太网的CSMA/CD(检测碰撞)。节能模式:PS-Poll。
    • Bluetooth/BLE:主从架构,微微网(Piconet)(1主7从),散射网(Scatternet)(多个微微网互联)。蓝牙协议栈:物理层、链路层(广播、连接、加密)、L2CAP(逻辑链路控制和适配协议,负责分段重组,多路复用)。GATT(通用属性协议,蓝牙数据交互的核心协议,定义了客户端/服务器架构,通过特征值(Characteristic)服务(Service) 组织数据。关键:Attribute Protocol (ATT)。
    • ZigBee (802.15.4)低速率,低功耗,自组网。网络拓扑:星型、树型、网状(Mesh)。设备类型:协调器(Coordinator, 创建网络,唯一)、路由器(Router, 中继路由)、终端设备(End Device, 低功耗,可休眠)。考点:使用AODV(按需距离矢量路由协议)进行Mesh网络路由。CSMA/CA。

3. 嵌入式网络编程(必有代码或设计题)

  • Socket编程模型:务必亲手写过一个完整的TCP/UDP通信代码。
    • TCP Server核心流程socket() -> bind() -> listen() -> while(1){ accept() -> fork()/处理 -> recv() -> send() -> close() }
    • TCP Client核心流程socket() -> connect() -> send() -> recv() -> close()
    • UDP通信流程:两端都只 socket() -> bind() (可选) -> sendto() / recvfrom()
  • 嵌入式下的并发模型(突破点)
    • 多进程/多线程模型:每个客户连接分配一个进程/线程,开销大,嵌入式不常用。
    • select/poll模型:单线程监听多个文件描述符,实现I/O多路复用必考select的fd_set操作、返回值、缺点(文件描述符上限、线性扫描)。
    • epoll模型 (Linux下高级I/O):事件驱动,高效。嵌入式如果跑Linux会考。模式:水平触发(LT, Level Triggered) vs 边缘触发(ET, Edge Triggered)。

第三层:易混淆考点终极辨析(扫清满分障碍)

对比项考点A考点B区分点与记忆技巧
TCP vs UDP面向连接/可靠/有序/重量无连接/不可靠/无序/轻量考应用场景:TCP用于HTTP/FTP;UDP用于DNS/RTP/SNMP
ARP vs RARPIP -> MACMAC -> IPAAddress Resolution P (IP to MAC);RARP反向,现已废弃,被BOOTP/DHCP替代
CSMA/CD vs CSMA/CA冲突检测,有线以太网冲突避免,无线Wi-FiD for Detect;A for Avoid;有线能“听”,无线“半双工”且“隐蔽终端”
停等协议 vs 后退N帧 vs 选择重传发1 -> 等ACK,效率低连续发N,出错则重传后续所有(浪费)只重传出错的具体帧(高效,需缓存)
802.3 (Ethernet) vs 802.11 (Wi-Fi)标准的MAC帧结构Wi-Fi的MAC帧结构802.11有更多的帧控制字段(如4个地址字段:源、目的、发、收)
lwIP RAW API vs Socket API回调事件驱动,最高效,难用顺序阻塞模型,易用,开销大复杂高吞吐场景用RAW,简单周期性通信用Socket。考试问“内存极小,要求极致性能”选RAW。

第四层:案例分析题破题思路(冲刺满分大题)

典型题目示例:“设计一个基于STM32+ENC28J60/W5500的远程温湿度采集器,通过Wi-Fi上传至云平台”。

破题步骤与标准答案要素:

1. 硬件选型与接口

  • 主控:STM32F103/F407(Cortex-M系列)。
  • 以太网控制器
    • W5500:集成硬件TCP/IP协议栈,内嵌PHY,全硬件处理TCP/IP,通过SPI接口与MCU通信,极大减轻MCU负担。
    • ENC28J60:仅提供MAC/PHY,需MCU运行lwIP。
  • Wi-Fi模块ESP8266(常见,AT指令集操作)或 ESP32(双核,可直接编程)。

2. 软件架构设计(必画图)

  • 分层:应用层(数据采集、逻辑控制)、中间层(lwIP协议栈、状态机)、驱动层(SPI、GPIO、USART)、硬件层。
  • 任务划分:传感器采集任务(周期触发)、网络处理任务(事件触发,处理lwIP回调)、数据显示任务。

3. 通信协议设计(考点)

  • 应用层协议选择:轻量级。
    • MQTT:基于发布/订阅模式,非常适合物联网设备,节省电量,协议简单。
    • CoAP:基于UDP,类似HTTP的RESTful风格。
  • 数据格式
    • JSON:通用性好,但解析开销大。
    • CBOR/MessagePack:二进制,更节省空间,考试可能作为亮点。
  • 心跳机制:解决TCP长连接下,中间NAT设备(路由器)会清理空闲连接的问题。客户端每隔一定时间(如50秒)发送一个极小的数据包(PingReq/PingResp)。

4. 可靠性设计(高分亮点)

  • 断线重连:检测到连接断开(如recv返回0或err回调),启动指数退避重连策略(1s, 2s, 4s, 8s...),避免风暴。
  • 数据缓存:网络不稳定时,待发送数据存入Flash(如W25Q64),待网络恢复后续传。实现数据完整性
  • 看门狗:为网络协议栈任务设置独立看门狗,防止死锁或协议栈挂死。

5. 性能与功耗分析

  • 吞吐量瓶颈:MCU主频、SPI速率、lwIP的内存池大小(PBUF_POOL_SIZEMEM_SIZE配置)。
  • 功耗管理:Wi-Fi模块进入Light-Sleep/Deep-Sleep模式,仅在发送数据时唤醒。使用低功耗TCP,通过调整TCP的保活时间和窗口尺寸。

基于 VitePress 构建,按考试重点持续整理。