比较两张 VPN 数据包示意图前先标明模式
两张 VPN 数据包示意图可以不一致,而且都对。比较任何报头之前,先写明模式、信道、外层传输和有效载荷。
两张示意图可能都对,却看起来不同,因为它们描述的可能是不同的数据包。一次协商报文和一个应用数据包即使在同一个会话里也不共用同一种布局,传输模式与隧道模式同样如此。不说明各自代表哪个数据包、哪种模式就比较图,只会就本不该一致的报头争论。比较开始前,先由四个标签把这件事定下来。
在每张图旁边写下实现与模式、信道、外层传输以及所承载的有效载荷。
传输模式与隧道模式移动报头的方式不同
在传输模式下,ESP 位于 IP 报头之后、所承载协议之前,因此原始 IP 报头留在保护之外。在隧道模式下,新的外层 IP 报头寻址两个 IPsec 对等端,受保护的内部数据包保留自己的 IP 报头。两者都由 RFC 4303 定义,也都对各自的模式成立。省略尾部与完整性字段的简化草图适合说明位置,用来数字节则毫无用处。
传输并不特指 TCP 或 UDP。所承载的下一层协议可以是任何东西,把传输模式等同于某一种协议的图,悄悄多了一个假设。
控制报文不是数据报文
L2TP 区分两类报文:承载 PPP 帧的数据报文,以及建立、维护和拆除隧道及其呼叫的控制报文。控制信道可靠,而丢失的数据报文 L2TP 干脆不重传。因此含 PPP 的图可能描述的是数据报文承载的有效载荷,而不是每个受保护会话都必须有的报头。把 L2TP 与保护结合,只是在上面加上所选的安全安排,并不会让所有报文变得一样。
如果一张图声称两类报文看起来相同,它描述的就是另一种协议或另一个范围。
比较等效的抓包位置
在外层接口抓包看到保护与传输报头;解封装之后在内层抓包看到所承载的数据包。两者都不算错,把其中一个与另一个相比,报头就会显得缺失或重复。为 NAT 穿越定义的 UDP 封装,又加了一层原生 ESP 图上没有的外层。两张图都可能是对不同传输安排的有效描述。
把抓包位置与图一起写明,并比较等效模式下的等效报文。只有当两张图声称的是同一位置、同一报文类型时,缺失的报头才是故障的证据。
把标签与图放在一起
没有标签的图很快过时,因为下一个读者会自行补上假设。加上那四个标签,标出保护边界,并注明这张图是用于说明位置还是用于计算大小。若要计算大小,请用完整规范而不是草图。标签的成本是一分钟;它们避免的争论的成本是一下午。
两份文档不一致时,先比较它们的标签。模式或信道层面的分歧就能完全解释差异,其实并没有任何报头缺失。
记录这张图显示的是哪个数据包、哪种模式、哪个抓包位置。这条记录就是图的另一半。