计算机网络 E03:DNSSEC、DoT/DoH 与解析隐私
DNS 响应带有签名、查询通过 HTTPS 发送、递归解析器承诺不记录,这三件事解决的不是同一个问题。DNSSEC 验证数据来源与完整性,DoT/DoH 保护一段传输,递归端仍需要看到查询才能代为解析。 第 21 篇讨论递归与权威解析,第 24 篇讨论 TLS。本篇用同一查询的配置矩阵分别验证数据真实性、传输加密范围和递归端可见性。 DNSSEC 验证的是 DNS 数据 DNSSEC 为 DNS 数据加入 DNSKEY、DS、RRSIG 等记录。验证器从信任锚沿委派链检查签名,最终得到 Secure、Insecure、Bogus 或 Indeterminate 等结果。签名证明数据经过授权密钥签署且未被无痕修改,不为查询内容加密。 验证位置很重要。若递归解析器完成验证并给 stub 返回结果,stub 是否能信任该结论还依赖它与递归端之间的受信通道和配置。若 stub 本地验证,它需要取得并验证完整链。仅看到响应中的 AD 位,不能在任意不受信链路上自动等同于本地验证成功。 DNSSEC 也不隐藏域名。权威服务器和参与解析的递归端仍会处理相应名字,旁路观察者还可能从未加密 DNS...
计算机网络 E02:路由安全与 RPKI、路由泄漏
一条 BGP 通告的起源 AS 与 RPKI 授权一致,并不表示整条 AS_PATH 都可信。RPKI 来源验证回答“这个前缀是否允许由这个 AS 起源”,路由泄漏还涉及路径如何跨越自治系统之间的业务关系传播。 第 12 篇介绍 BGP 路径和策略,第 37 篇讨论信任边界。本篇只用离线通告构造来源验证和导入策略案例,不建立公网 BGP 会话。 ROA 约束前缀、起源与最大长度 RPKI(Resource Public Key Infrastructure)用可验证对象把互联网号码资源与授权关联。ROA(Route Origin Authorization)声明某个 AS 可以起源某个前缀,并可用 maxLength 限制更具体通告的最长前缀长度。 来源验证有三种结果。通告被至少一条覆盖 ROA 授权时为 Valid;存在覆盖 ROA,但起源 AS 或长度不满足时为 Invalid;没有任何覆盖 ROA 时为 NotFound。NotFound 不是“已经证明恶意”,它表示缺少可用于该判断的授权对象。 样例 ROA 授权 AS64500 起源 203.0.113.0/24,最大长...
计算机网络 E01:物理层与真实无线,编码、误码、链路预算与漫游
无线网卡显示某个标称速率,不等于应用能按该速率传输。发射功率、路径损耗、噪声、调制编码、重传和共享介质都会改变结果。最先需要分开的,是理论模型、协议协商值和设备实测值。 第 01 篇建立发送与传播成本,第 05 篇讨论 Wi-Fi 共享信道。本篇手算一个 5 GHz 链路预算和 Shannon 容量上界,并说明为什么它们不能代替真实无线观测。 编码把可靠性与速率绑定 物理层把比特映射为符号,并可加入纠错冗余。更高阶调制每个符号携带更多比特,但通常要求更好的信噪比;更强编码加入更多冗余,能修复一部分错误,却降低有效码率。 误码率必须连同调制、编码、信道模型、接收机和测量区间报告。仅写“SNR 为 20 dB,所以不会丢包”没有依据。MAC 重传还会把部分物理错误隐藏在应用吞吐之后。 Shannon 公式 C = B log2(1 + S/N) 给出指定带宽和信噪比下的理想信道容量上界。它不包含 802.11 前导码、导频、保护间隔、竞争退避、聚合、重传或实现损耗,因此不能直接当作 Wi-Fi PHY 速率,更不能当作应用吞吐。 模式提炼:从功率预算到协议结果逐层收窄 接收功率 → ...
计算机网络 39:独立研究小项目,复现一个拥塞、排队或协议性能结论
“发送的数据总量相同,完成时间就应接近”忽略了到达过程。固定出口每毫秒服务一个报文时,24 个报文均匀到达可以几乎不排队;同样 24 个报文在很短窗口内到达,最后一部分会等待多个服务周期。 本篇把这个判断做成一个小型可复现实验。研究问题是:总报文数、报文大小和服务率不变时,发送同步程度是否改变队列等待分布;pacing 能否在该模型内缩短尾部等待。第 19、20、35 篇提供拥塞、队列和 incast 前置知识。 假设、基线与判定标准 实验使用离散 FIFO 单服务台。每个报文的服务时间固定为 1000 微秒,每次运行处理 24 个等长报文。三种到达模式只改变时间分布: steady:单个来源每 1000 微秒提交一个报文,并加入 0–200 微秒固定种子抖动。 burst:24 个报文都在 0–200 微秒窗口到达。 paced:三批各有 8 个报文,批起点相隔 8000 微秒,每个报文再加 0–200 微秒的固定种子抖动。 种子固定为 7、19、43。每次运行保存每个报文的到达时间、服务开始/结束时间、等待值和到达时前方未完成报文数(包含正在服务的报文),并计算平均值、p...
计算机网络 38:一次 HTTPS 请求的完整解释,DNS、路由、传输、TLS、代理与后端
客户端显示“请求超时”时,失败可能发生在 DNS、路由、传输、TLS、代理或后端。完整解释不是把协议名按顺序罗列,而是为同一次请求建立可关联的事件链,并指出证据在哪一段中断。 第 21–24 篇覆盖 DNS、HTTP 与 TLS,第 31、32 篇覆盖转换和代理,第 36 篇给出故障证明方法。本篇只对一份合成案例表做推演和结构检查,没有建立 DNS、TLS 代理和后端组成的真实服务链,也没有执行故障注入。 正常请求需要跨越六个边界 合成基线把请求写为 https://api.lab.test/items,并预设解析结果为文档专用地址 192.0.2.20、最终状态为 HTTP 200。这些是案例输入,不是运行记录。真实请求若要建立同样的证据链,至少需要 DNS 答复、两端 TCP 观测、TLS 终止点记录、代理上游时间和后端日志。 每个阶段只证明自己的完成条件。DNS 答复不证明地址可达;TCP 建连不证明服务身份;TLS 成功不证明 HTTP 一定成功;代理收到 200 也不能证明所有副本健康。请求 ID 可以关联应用日志,但不会自动出现在 DNS 或 TCP 包中,跨层对齐还...
计算机网络 37:网络隔离能保护什么,信任边界、最小连通、认证与可用性
一条策略拒绝了测试客户端到数据库的连接,不能据此宣布数据库“安全”;另一条策略允许前端访问 API,也不能证明连接到的就是预期 API。网络隔离约束谁能建立哪些方向的连接,身份认证、机密性、完整性和可用性仍需其他机制。 第 24 篇讨论 TLS 身份,第 31 篇讨论过滤与连接状态,第 33、34 篇讨论容器和 Service。本篇建立一张最小连通矩阵,再把网络策略与 TLS 验证结果并排检查。 信任边界先于规则语法 信任边界是需要独立授权的资源或身份分界。把所有工作负载放入同一可达网络,相当于让网络层默认接受横向连接;把边界拆成前端、API、数据库和运维入口后,才有条件描述最小连通。 最小连通不是“全部拒绝”本身,而是只保留业务依赖需要的方向、协议和端口。固定样例允许 frontend → api:443 与 api → database:5432,拒绝 frontend → database:5432、batch → api:443 和明文 frontend → api:80。 Kubernetes NetworkPolicy 选择 Pod,并描述 ingress、egres...
计算机网络 36:网络故障怎样被证明,分层假设、双端抓包、指标与对照实验
“访问失败”可能表示名字没有解析、SYN 没有得到响应、TLS 身份校验失败,也可能是连接已经建立而后端迟迟不返回。只看客户端最后一行错误,会把不同层的故障压成同一个现象。 第 03 篇说明抓包的证据边界,第 09 篇讨论 MTU,第 21、30–32 篇建立名字、主机和服务链基础。本篇把诊断写成可证伪的过程:先列假设,再为每层寻找正反证,最后用受控对照只改变一个变量。 先把失败拆成可观察事件 一次 HTTPS 请求至少包含解析、选路与邻居可达、传输连接、TLS 握手、HTTP 请求、代理转发和后端处理。后一个事件未出现,只能说明断点不晚于那里;它不能自动指认前一个组件有错。 例如客户端没有收到 SYN-ACK,可能是请求未离开源端、路径丢弃、目标没有返回、回程不可达或观测点漏包。单端抓包能确认本端看见了什么,不能凭沉默定位远端。双端抓包的价值在于对齐同一报文是否到达两端,但时间同步、镜像丢包、卸载和抓取位置仍会改变表象。 模式提炼:每个结论同时写正证据与反证 假设 → 预期观察 → 实际观察 → 排除项 → 尚未解释项 只有支持证据而没有排除项,容易把相关性当成原因。若证据不足...
计算机网络 35:数据中心网络为何不同,Clos、ECMP、incast 与尾延迟
一台发送端向一台接收端发送数据时链路并不拥塞,八台发送端同时回复同一台接收端时却可能排队。数据中心网络的特殊之处并非使用了另一套 IP,而是短距离、高带宽、多路径和同步扇入把流量集中到很小的时间窗口。 第 11 篇讨论等价路径,第 19、20 篇讨论拥塞窗口和队列。本篇用两级 Clos 与固定突发模型解释路径多样性、ECMP 冲突、incast 和尾延迟,不给真实设备性能排名。 Clos 提供多条可用路径 两级 leaf-spine 拓扑中,每台 leaf 连接每台 spine。位于不同 leaf 的主机之间可以经任一 spine 转发。在端口速率相等且不存在超额订阅的理想条件下,这种结构能提供规则化的路径容量;实际网络还受上联数量、链路速率、故障和布线约束。 “存在两条等价路径”不代表一条流会同时均匀占用两条。常见 ECMP 实现对报文头字段计算哈希,把一个流放入某个下一跳桶。这样可避免普通流的包在不同延迟路径上频繁乱序,但多个大流可能哈希到同一条链路,另一条链路仍有空闲容量。 RFC 2992 分析的是一种等价多路径哈希算法。具体交换机使用哪些字段、哈希种子和重映射策略属于实...
计算机网络 34:Service 的虚拟入口怎样转发,服务发现、规则、后端集合与策略
客户端访问 Kubernetes Service 的 ClusterIP:port 时,目标地址通常没有对应的普通监听 socket。请求仍能到达 Pod,是因为控制面发布 Service 与 EndpointSlice,对应的数据面实现再把虚拟入口转换为一个可达后端。 第 21 篇讨论名字解析,第 32 篇讨论负载均衡和健康检查,第 33 篇讨论容器路径。本篇只解释固定 Service 的入口、后端集合和一次更新,不把 kube-proxy 的某种模式写成 Service 的固有协议。 Service 与 EndpointSlice 描述期望状态 Service 用稳定名字和虚拟 IP 表示一组后端。本文样例把 10.96.0.10:80/TCP 映射到后端端口 8080。Service 的 selector 可以驱动控制器生成 EndpointSlice,但数据面转发并不读取“Pod”这个抽象对象;它需要可以选择的地址、端口和就绪条件。 EndpointSlice 把后端分片保存,并为端点记录 ready、serving、terminating 等条件。ready: true...
计算机网络 33:容器如何联网,netns、veth、bridge、路由、VXLAN 与 CNI
容器拥有独立 IP,不代表它拥有一块独立物理网卡;两个容器地址能够互通,也不说明报文直接在二者之间移动。Linux 网络命名空间隔离协议栈状态,veth 搬运二层帧,bridge 或路由决定下一段路径,跨主机 overlay 还会增加外层封装。 第 08、09、10 篇给出 IP、MTU 与转发基础,第 30 和 31 篇说明主机路径与 NAT。本篇只追踪一份固定 bridge CNI 配置可能建立的对象,再计算 VXLAN 封装预算。CNI 是运行时调用网络插件的接口规范,不是一种固定数据面。 netns 隔离的是网络资源视图 Linux network_namespaces(7) 列出的隔离对象包括网络设备、IPv4/IPv6 协议栈、路由表、防火墙规则、/proc/net、端口与 socket。容器进程只看到所在命名空间里的这些对象;宿主仍负责创建连接命名空间的设备和规则。 veth 总成对出现。一端发送的帧会从另一端收到,因此常把一端移入容器 netns,另一端留在宿主并接入 bridge。veth 是一段虚拟二层链路,不负责自动分配地址、生成默认路由或提供跨主机可达性。...










