嵌入式系统设计师考试 - 网络板块满分知识终极梳理
第一层:核心理论精讲(夯实满分地基)
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数据结构,替代标准的
mbuf或sk_buff。pbuf结构(必须掌握):包含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层次(由低到高):
- RAW/Callback API:最高效,但编程复杂。核心数据结构是
tcp_pcb(TCP协议控制块)。通过注册回调函数(如accept,recv,sent,poll,err)处理事件。 - Netconn API:基于顺序模型,使用
netconn_new,netconn_connect,netconn_send,netconn_recv等阻塞式函数,代码类似Socket但更轻量。 - Socket API:最接近标准Berkeley Socket,兼容性好但开销相对最大。
- RAW/Callback API:最高效,但编程复杂。核心数据结构是
- 内存管理:使用pbuf数据结构,替代标准的
- 移植要点:需要实现
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()。
- TCP Server核心流程:
- 嵌入式下的并发模型(突破点):
- 多进程/多线程模型:每个客户连接分配一个进程/线程,开销大,嵌入式不常用。
- 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 RARP | IP -> MAC | MAC -> IP | A在 Address Resolution P (IP to MAC);RARP反向,现已废弃,被BOOTP/DHCP替代 |
| CSMA/CD vs CSMA/CA | 冲突检测,有线以太网 | 冲突避免,无线Wi-Fi | D 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_SIZE和MEM_SIZE配置)。 - 功耗管理:Wi-Fi模块进入Light-Sleep/Deep-Sleep模式,仅在发送数据时唤醒。使用低功耗TCP,通过调整TCP的保活时间和窗口尺寸。