001、网络协议栈基础:从OSI七层模型到TCP/IP四层模型上周调一个设备联网问题,折腾到凌晨三点。现象是嵌入式设备能ping通服务器,但TCP连接死活建不起来。抓包一看,三次握手根本没发出去。最后发现是防火墙规则写在了错误的网络层——本应在传输层拦截的端口规则,被配在了网络层。这个坑让我重新意识到,脑子里那张清晰的协议栈分层图,才是网络调试的根。分层思想:为什么需要模型?实际开发中,我们很少从头实现整个网络栈。但当你需要定制协议、优化性能或解决跨平台兼容性问题时,分层模型就成了最重要的思维框架。早年各家厂商自搞一套,设备互连像方言交流,混乱不堪。ISO推出OSI七层模型,与其说是为了直接落地,不如说是给业界立了个“理想参照系”。OSI模型分得细:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。每层职责清晰,理论完美。但现实是,TCP/IP凭借其实用主义设计,在互联网战争中胜出。它的四层模型(网络接口层、网际层、传输层、应用层)更像工程师的产物——该合并的合并,该简化的简化。TCP/IP四层:工程师的实际地图网络接口层对应OSI的物理层+数据链路层。这里处理的是比特流和帧。搞嵌入式的最熟悉这一层,要操心PHY芯片的寄存器配置、MAC地址过滤、以太网帧格式。曾经有个项目,设备偶尔收不到数据,最后发现是接收缓冲区溢出导致帧丢失——问题就出在这一层。