分层解决什么问题
跳转到“分层解决什么问题”分层把通信任务分成可组合的职责:应用决定交换什么内容,传输机制处理端到端通信,网络层处理跨网络传递,链路与物理层处理当前一跳。OSI 是七层参考模型;实际互联网通常用 TCP/IP 的应用、传输、互联网与链路层描述。二者不能按每个协议严格一一对号。RFC 1122
| OSI 层 | 核心职责 | 理解时的例子 |
|---|---|---|
| 7 应用层 | 为应用提供通信语义 | HTTP、DNS 等协议的消息与操作 |
| 6 表示层 | 数据表示、编码与转换 | 字符编码、序列化等功能 |
| 5 会话层 | 对话与会话管理 | 建立和管理交互上下文 |
| 4 传输层 | 进程间传输 | TCP 字节流、UDP 数据报 |
| 3 网络层 | 跨网络寻址与转发 | IPv4/IPv6、路由 |
| 2 数据链路层 | 相邻节点间帧传输 | 以太网帧与链路地址 |
| 1 物理层 | 信号与比特传送 | 电、光或无线信号 |
表示、会话的功能在现实软件中常由应用或库实现。TLS 跨越安全与传输之间的功能,不宜用一张图断言它在所有体系中只属于某一层。
一次请求如何封装
跳转到“一次请求如何封装”以使用 HTTPS over TCP 的网页访问为例,省略缓存与代理差异:
- 应用取得目标主机地址,准备 HTTP 请求。
- TCP 建立连接并提供有序字节流,TLS 建立安全会话并保护应用数据。
- TCP 将字节组织成段,IP 负责把数据报送往目标网络。
- 当前链路用帧承载 IP 数据报,再转换为物理信号。
- 路由器逐跳处理链路封装并进行网络转发;目的端按相反方向解封装。
这是特定协议组合的例子。HTTP/3 使用 QUIC/UDP,不能套用成“所有网页都先建 TCP”。
三种标识不要混淆
跳转到“三种标识不要混淆”| 标识 | 回答的问题 | 范围 |
|---|---|---|
| 端口 | 交给哪个传输端点/服务 | 与传输协议、地址等共同使用 |
| IP 地址 | 网络层目标和源是什么 | 支持跨网络路由 |
| MAC 等链路地址 | 当前链路帧交给谁 | 当前二层链路 |
在典型以太网 IPv4 场景中,ARP 解析当前链路下一跳的 IP 到 MAC;跨网通信时,主机通常解析网关的 MAC,不是远端服务器的 MAC。路由逐跳变化时,二层头通常变化;经过 NAT 等设备,IP/端口也可能变化。
TCP 和 UDP 的边界
跳转到“TCP 和 UDP 的边界”TCP 提供可靠、有序的字节流,包含重传、流量控制等机制,但不保留应用消息边界。UDP 保留数据报边界,协议本身不保证送达或顺序,应用可在其上建立额外机制。TCP 建立连接需要同步双方序列状态,常见为三次握手;关闭是双向独立过程,报文数可能因合并确认等因素变化,不应机械记成永远固定四包。TCP 规范 RFC 9293
排障时按“物理/链路 → 地址和路由 → 端口与连接 → 应用响应”逐层缩小范围,比根据一张旧协议图猜测问题更可靠。