
网络设计第三问分层——7 层模型和 4 层的工程选择OSI 7 层模型是教科书教的。TCP/IP 4 层是工程实际跑的。为什么少了 3 层因为那 3 层的功能被并入了相邻层——不是不需要是不值得独立成层。文章目录网络设计第三问分层——7 层模型和 4 层的工程选择一、OSI 7 层每个字都定义了二、TCP/IP 的 4 层——少了 3 层三、分层的真正价值不在分四、各层的核心功能不只 7 层的定义五、你设计协议时该分几层六、总结一、OSI 7 层每个字都定义了OSI 七层模型的每一层都有一个明确的职责层名字职责7应用层用户接口——HTTP/FTP/SMTP6表示层数据格式转换——字符编码、加密、压缩5会话层会话管理——建立/维护/终止连接4运输层端到端可靠传输——分段、流控、纠错3网络层寻址与路由——IP 包转发2数据链路层相邻节点帧传输——MAC、差错检测1物理层比特流在线缆/光纤上的电信号OSI 要求的理想情况一层只和相邻层通信——每一层是一个独立的协议。但现实网络中是 TCP/IP 的 4 层模型。二、TCP/IP 的 4 层——少了 3 层层名字包含了 OSI 的哪些层4应用层应用 表示 会话3运输层运输层2网络互联层网络层1网络接口层数据链路 物理层为什么少了 3 层表示层——字符编码UTF-8、压缩gzip、加密TLS——这些在现代协议里都不是独立的一层。HTTP 头Content-Encoding: gzip管理压缩TLS 在 TCP 之上独立加密——没有人写一个独立的表示层协议再发给会话层。它们的逻辑存在但不成单独的一层——被并入了应用层HTTP和传输安全层TLS。会话层——连接的开启和关闭现在由 TCP 三次握手 TLS 握手完成。没有启动会话、恢复会话、结束会话这个独立协议——没有人在 TCP 之上再加一层独立的会话管理。物理层——在设计中几乎不被协议栈单独考虑。网线规格、光纤类型、无线频率——这些都交给了网卡硬件和驱动来管理——网络软件层面从帧开始——不再有一个独立运行的物理层协议处理实体。三、分层的真正价值不在分按照严格的 7 层模型开发意味着写一个 HTTP Server——必须用表示层的规范定义字符集变换、用会话层的协议控制是否保持连接——再交给运输层。今天没有人这么做——因为同层耦合已经足够低。有一个术语叫逻辑分界你在说网络层时——你指它为路由和寻址提供了一个标准 IP 协议——任何跑在这层的设备可以只查 IP 而不关心帧。物理层的电缆选择、帧的帧头格式——网络层不关心。逻辑分界的价值不在你是第几层——在**“这个变更需要改哪几层”**。如果换一种物理介质铜缆→光纤——在 TCP/IP 4 层体系里——你改的是网络接口层——IP 层继续工作——不需要动任何一条代码。如果改 IP 路由算法——数据链路层和 TCP 层继续工作——你不需要管收到的帧是什么格式。这才是分层真正的价值——变更控制。四、各层的核心功能不只 7 层的定义物理层关心同步接收方时钟对准、编码曼彻斯特/4B5B、调制ASK/FSK/PSK/QAM、介质特征最大线长/帧间隙/功耗/信号衰减帧层数据链路层关心寻址MAC 48 位、成帧定界符/帧长、差错检测CRC、流控PAUSE 帧、冲突避免CSMA/CD——历史和无线里仍存在网络层关心编址IPv4/IPv6、寻址路由表、最长前缀匹配、分组分片/重组、广播ICMP 的网络管理信息、报错TTL 超时、Destination Unreachable运输层关心连接管理三次握手/四次挥手、流量控制滑动窗口、拥塞控制慢启动/拥塞避免/快重传、错误检测校验和 重传应用层关心应用协议本身——HTTP、SMTP、WebSocket——和业务间的映射——请求/回复、消息发布/订阅、文件传输五、你设计协议时该分几层不要机械套 7 层。问你系统的需求数据是不是跨运营商——要不要在应用层补对账机制——因为 TCP 保数据到但不保对得上时延约束是多少——短 RTT 可以用更简单的握手序列长 RTT 需要在应用层减少交互回合是否需要加密——TLS 足够还是需要端到端的国密加密如社保的 SM4 内层加密分层不是教条——是你的系统在哪些点上需要独立控制。对社保跨省结算平台来说应用层要补上去的可靠性逻辑比下面四层加起来都多——因为 TCP 不保证你系统上的状态和远端系统的状态一致。六、总结7 层模型是教学用的——告诉你每一个功能属于哪个逻辑范畴。4 层模型是工程用的——表示、会话的职能被压缩到了应用层内。分层的目的不是分得细——是隔离变更。一个可靠的网络设计就是你改一根线、换一个算法、切一个 ISP——需要改的代码行数最少。余下的全由各层各自负责——直到你的应用只关心要发什么、不管它怎么到达。✅ 亮点不反复背 7 层定义而是用工程取舍视角讲清楚 7 层和 4 层的不同选择在哪、为什么。用社保跨省结算的实际接口设计做分层判断的案例。扩展方向SDN 如何打破分层封闭——控制面和数据面分离、QUIC 如何合并传输加密功能到应用层的逻辑。