Skip to content

模型Model

网络分层与逐跳封装

Network layering · Encapsulation · Link frame · IP datagram

区分应用消息、传输段、IP数据报与链路帧,沿一条两跳路径核对每层地址、长度与可变字段。

形式陈述 ​

一段应用数据到达另一台主机,会经过不同范围的协议对象。链路帧负责同一链路上的一次传送;IP数据报携带跨网络的源、目的地址;TCP段或UDP数据报再带端口等端点信息;应用自行解释数据内容。这里的“包”只是统称,计算长度或确认含义时必须指出具体层。

封装把上层对象作为下层的载荷。写作 P=H‖D,表示首部 H 后接字节序列 D;若链路还有尾部,则为 F=HL‖P‖TL。字段是按协议解释的定宽位串,不是把整个结构当成本机整数。下层只负责自己合同内的对象,不必理解载荷是否是一条完整业务请求。

本页固定无隧道、无NAT、无分片的IPv4路径 A→R→B。A把IP数据报封装进面向R的链路帧。R检查并去掉入站链路封装,依据IP目的地址选择出接口,递减TTL并更新IPv4首部校验和,再为出站链路构造新帧。IP源、目的地址不变,链路源、目的地址按本跳重建。若TTL耗尽、首部无效或没有可用出口,转发可以失败,不能保证数据报交付。

路由器的IP转发通常不需要读取应用消息边界。链路交换机、IP路由器和应用代理处理的协议对象不同;代理可能终止一条传输连接并另起一条,因此不能把所有中间设备都画成完全透明的“线”。

直觉

每层首部像写给不同范围收件人的说明。链路地址告诉本跳“交给谁”,IP地址告诉路由器“最终去哪里”,端口帮助端系统选择接收入口。包每过一跳可以换外层包装,而不是把终点地址改成下一站。

分层的价值是接口可替换:相同IP载荷可以经过不同链路。但这种组合有条件,例如每个链路的最大载荷不同;上层不能只看本地网卡,就假定整个路径都装得下同样大的包。

例子与边界

一段12字节数据的账本 ​

选定以太网教学封装,不计VLAN、前导码和帧间隙:以太网首部14字节、尾部FCS 4字节;IPv4无选项首部20字节;UDP首部8字节。应用12字节先得到UDP长度20,再得到IP总长度40。以太网数据区最少46字节,因此补6字节填充,帧长为 14+46+4=64 字节。填充不属于IP数据报,也不属于应用消息。

A的IP为192.0.2.10,B的IP为198.51.100.20,初始TTL=64。第一跳帧的链路目的地址是R入接口的地址。R转发后,IP源、目的仍为A、B,TTL=63;第二跳链路源地址改为R出接口,目的地址改为B。UDP端口和这12字节载荷保持不变。首部字段改变不等于应用内容改变。

若R的下一链路不是以太网,不能沿用64字节的帧账本;应使用该链路自己的封装与最小长度。若加入NAT、隧道或选项,地址和长度规则也要重新说明。本例的“IP地址不变”只属于已声明路径。

推论与应用

观察一次丢包应先定位对象:链路校验失败、路由器丢弃、传输重传和应用拒绝,发生在不同接口。抓到一个IP包也不证明服务端已读取其中的数据。TCP在IP之上重新组织字节,但业务执行还在更高一层。

后续最长前缀转发决定出接口,路径MTU限制每跳可承载的IP大小。分层不是“每层必定可靠”的阶梯,而是一组需要逐项核查的合同。

参考资料
  • Larry Peterson、Bruce Davie,Computer Networks: A Systems Approach,在线6.2-dev版,§3.3.2,IP服务模型、封装与逐跳重封装;2026-10-08实读。
  • RFC 791,1981,§§2.1、3.1,IPv4首部、TTL与校验;本页不将该IPv4格式套用于IPv6。
  • RFC 894,1984,IP以太网封装与最小数据字段;长度账本另计以太网14字节首部和4字节FCS。
关系图谱15 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组