TCP/IP 四层与五层模型:一次请求经过了哪些层

排查接口连接问题时,我经常会先问:是应用没有正确响应,还是连接建立失败,或者连目标地址都到不了?按层看网络,有助于把这些问题逐步缩小,而不是把所有故障都叫作“网络不通”。

TCP/IP 常用四层描述;教学中的五层模型,则进一步区分数据链路和物理传输。两者划分粒度不同,不代表某些网络可以不需要物理介质。

一、四层与五层如何对应?

TCP/IP 四层模型 常见五层教学模型 主要职责 示例
应用层 应用层 定义应用之间交换消息的格式与交互规则 HTTP、DNS、SMTP
传输层 传输层 提供端到端传输与端口复用,能力随协议不同 TCP、UDP
网际层 网络层 使用 IP 地址传递数据包,支持跨网络转发 IPv4、IPv6
链路层/网络接口层 数据链路层 在相邻链路上组织、传送帧并进行链路寻址 以太网、Wi-Fi 的链路机制
链路层/网络接口层 物理层 通过介质传递比特对应的电、光或无线信号 双绞线、光纤、无线电

RFC 1122 按应用、传输、网际、链路描述互联网协议栈。五层划分便于分别讨论帧和信号;OSI 七层模型又是另一套参考模型,不能直接说 TCP/IP 本身有七层。

二、传输层与网络层的区别

“负责两台主机之间传输”还不足以区分这两层。网络层更关心数据包如何到达目标 IP,传输层通过端口把数据交给相应应用端点,并提供协议所定义的传输能力。

TCP 提供有序、可靠的字节流,处理重传和流量控制等问题;UDP 提供数据报服务,不自带同样的可靠性与顺序保证。因此不能把所有传输层协议都说成“保证数据送达”。

三、以 HTTP/1.1 请求为例

下面只画出一个常见的 HTTP/1.1 over TCP/IP 场景,省略 TLS 等细节:

应用层:组织 HTTP 请求消息
↓
传输层:TCP 字节流按传输需要形成报文段
↓
网络层:IP 数据包携带源、目标 IP 地址
↓
数据链路层:在当前链路上封装成帧
↓
物理层:通过介质发送信号

接收端再逐步解析并交给应用。一个 HTTP 请求不一定只对应一个 TCP 报文段;经过路由器时,链路层封装也会随下一跳链路变化。

这个例子不能套到所有 HTTP 版本上,例如 HTTP/3 使用 QUIC,而 QUIC 基于 UDP。

四、用分层思路定位故障

现象 可以优先核对的方向
域名解析失败 DNS 配置、解析服务器及可达性
域名能解析,但 TCP 连接失败 路由、防火墙、目标端口及服务监听
连接建立成功,但返回 HTTP 500 应用日志、上游服务与业务处理
本地网口无链路或无线连接断开 介质、接口及链路状态

这些是排查入口,不是仅凭一个现象就能确定故障层。DNS 本身也依赖网络传输,HTTP 超时也可能发生在多个环节,仍应结合日志、抓包和具体错误进一步判断。


文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
赏

留言

想法、疑问或勘误,都可以写在这里。留言会公开显示。

正在准备留言区…

 本篇
TCP/IP 四层与五层模型:一次请求经过了哪些层 TCP/IP 四层与五层模型:一次请求经过了哪些层
排查接口连接问题时,我经常会先问:是应用没有正确响应,还是连接建立失败,或者连目标地址都到不了?按层看网络,有助于把这些问题逐步缩小,而不是把所有故障都叫作“网络不通”。 TCP/IP 常用四层描述;教学中的五层模型,则进一步区分数据链路和
下一篇 
MySQL 中 IN 与 EXISTS:语义、NULL 与执行计划 MySQL 中 IN 与 EXISTS:语义、NULL 与执行计划
“子查询表大用 EXISTS,子查询表小用 IN”是一条常见口诀,但我不会直接把它当成 SQL 改写依据。选择之前,先确认查询要表达什么,尤其是有没有 NULL,再看具体版本和执行计划。 本文的优化器说明按 MySQL 8.4 文档核对;较
2026-10-20