主题
软件生命周期与供应商锁定
在主题维度下,软件生命周期与供应商锁定主题情报把围绕同一具体议题、信号焦点或监测主题的 BTW.MEDIA 文章串联起来。页面为读者提供更完整的阅读路径,涵盖相关报道、证据来源、市场参与者和基础设施影响,并给出足够背景,帮助理解该主题为何在公司动态、治理决策、区域影响和运营风险中值得关注。读者可以比较反复出现的信号、受影响组织、公开证据、市场背景、服务连续性、采购、竞争、合规和战略规划等问题,而不是只看一份单薄的相关文章列表。页面还会说明该主题涵盖什么、涉及哪些基础设施参与方或政策、有哪些证据支撑报道,以及该主题对运营商、客户、投资者和关注政策的读者为何重要。

互联网历史
每经过一层缓存,数字就增长:HTTP Age 如何估算响应,而不是给对象定年
一篇写于数年前的文档,完全可能带着 `Age: 120` 抵达浏览器。这个数字没有抹去文档历史,也没有声称内容只存在了两分钟;它描述的是另一件更窄、更适合由分布式系统共同维护的事实:当前缓存响应自始发站生成或成功验证以来,估计经过了多少秒。
案例档案
路由树记住了它见过的目标,却没有权力批准绕行
SIP 的 History-Info 能留下请求改投、分叉和转发的结构化痕迹。它是一名有用的证人,却不是授权者,更不是对完整事实的最终裁决。

互联网历史
结束一条记录的那个比特:ONC RPC 如何在 TCP 字节流上重建消息边界
接收程序读到四个字节时,可能拿到一枚完整标记,也可能只拿到上一段数据的尾巴。TCP 保证顺序,却不替远程调用保存句号。ONC RPC 于是把句法写在流里:三十一位计算片段长度,最高一位只负责在这些字节之后结束记录。
案例档案
找到了对话,不等于获得了转接权:SIP Replaces 如何划定通话迁移的授权边界
夜班值守看到的是一条“转接成功”,客户听到的却仍是等待音乐。专席没有接入,原坐席也没有退出。问题未必出在某一条 SIP 报文,而可能出在平台把“接受了请求”“找到了对话”和“完成了交接”压成了同一个状态。

互联网历史
一封邮件分成多封抵达:MIME 如何把重组留给接收端
碎片可以分别排队、分别延误、分别留下投递记录,却在收件人的软件中还原成同一个有类型的对象。MIME 的巧妙之处,不是让每一片冒充整体,而是只规定跨系统协作所需的最小字段,把“整体是否已经成立”交给拥有实际数据的本地程序判断。

互联网历史
把区间变成整个文件的条件:HTTP If-Range 如何让残缺字节留在同一版本
一次传输在文件中途断开,客户端已经保存了前半段。它当然知道下一次该从哪个字节开始,却不知道服务器上的内容是否还是原来那一版。HTTP 用一个克制的分支回答:版本相同就续传,版本不同就忽略区间,发送当前完整表示。
案例档案
手机确认了人,却没确认那台设备:RFC 10027 揭示的跨设备授权断层
手机上的网址是真的,通行密钥是真的,批准动作也是真的。可访问权最后落到哪台设备,仍可能是假的。RFC 10027 处理的不是一次普通“扫码诈骗”,而是一种更难察觉的权力错配:用户在可信设备上证明了自己,却替未经认证的发起端完成了授权。
案例档案
计时器续上了,通话未必还活着:SIP 会话刷新与存续判断权
一张话单可以因为 200 OK 继续计时,一位用户却早已听不到声音。两条记录都可能是真实的。治理失败发生在系统把“信令状态获得延期”改写成“整个通话仍在产生服务”的那一刻。

互联网历史
向后生长的轨迹:Usenet Path 如何阻止中继把文章送回去
一篇网络新闻从 A 到达 B,B 最荒唐的下一步就是把它原样送回 A。A 的 Message-ID 历史库当然能认出重复件,但带宽已经浪费了。Usenet 的 `Path` 把“去过哪里”写进文章,让中继在发送之前就避开这趟必然无效的回程。
案例档案
两段网络一接通,旧分配器就回来了:RFC 10028 与 IPv6 多播迁移权
RFC 10028 把动态 IPv6 多播组 ID 重新划成互不重叠的区间。这项修订能消除规范内的冲突,却不会替运营者升级一台旧服务器、清空一条过期租约,或证明某个接收端收到了正确来源的流。真正的迁移证据必须回答:这枚 ID 是谁按哪一代规则产生的?

互联网历史
从未离开消息的链接:MIME Content-ID 如何标记内嵌部件
一封 HTML 邮件里的图片可以拥有看似 URL 的地址,阅读器却无须访问任何网站。`cid:` 指向的对象已经装在同一封消息中。MIME 为这种向内的链接提供了标识,却把解析权留给了消息结构、存储系统和接收应用。

互联网历史
一个 Call-ID,多段对话:SIP 如何用 tag 为分叉命名
一份邀请可以发往一个地址,却在多台终端上响起并返回多个答案。SIP 没有把 Call-ID 当成唯一的“通话编号”,而是让通信双方各自贡献一半标记,为每份持续状态补全名字。
案例档案
会话把四路流归为一组,却没有重建场景:RFC 10034 与 V3C 完成权
体积视频抵达接收端时,往往已经被拆成图集、占用、几何与属性等相互依赖的分量。RFC 10034 让这些分量能够在 RTP 与 SDP 中被准确命名和组合;它没有把“同属一组”升级成“场景已经完整重建”。真正的完成证据仍在跨流对齐、参数状态、来源绑定、解码结果与应用验证之中。

互联网历史
连接断了,会话没有:RTSP 如何把控制状态留在 TCP 之外
承载 PLAY 的 TCP 连接可以消失,媒体服务器却仍记得已经建立的播放上下文。RTSP 为这份临时记忆分配了独立标识,也明确限制了它的权力:它不是资源名称,不是媒体通路,更不是操作者身份。
案例档案
Header 请求流式转发,Proxy 仍掌握放行:RFC 10036 与 HTTP 消息释放权
源站可以立即写出第一条事件,连接也可以始终处于健康状态,读者却可能一个字节都看不到。中间某一层若坚持等到完整正文再转发,长连接就会把“稍后”变成“永远”。`Incremental: ?1` 让发送者能够明确表达需求,但它不会远程接管沿途每一个 buffer。

互联网历史
不懂就必须拒绝:X.509 关键扩展如何给证书变更划界
新规则写进证书时,旧软件可能连它的名字都没见过。X.509 v3 没有假装所有接收者会同步升级,而是把兼容性选择一并签进证书:有些未知信息可以略过,有些信息若不能理解,验证就不得成功。
案例档案
服务器分配了 Locator,网络还没有接纳路由:RFC 10038 与 SRv6 可达性的权责边界
一条 DHCPv6 Reply 可以把“谁获得哪段 SRv6 Locator、结构怎样、何时到期”写得很清楚。但这条消息并没有穿过路由策略,也没有替远端设备写入 FIB,更不会在终端自动生成预期的 SID 行为。RFC 10038 的治理价值,正在于把分配说清楚,同时不把分配夸大成可达。

互联网历史
一个 XID,两次执行:RPC 为什么还需要编号之外的记忆
远程调用超时之后,客户端重发同一个编号,并不能把已经丢失的历史一起送回服务器。ONC RPC 解决了“这份回复属于哪次调用”,NFS 的演进才说明“这项操作是否已经执行过”需要付出怎样的状态成本。
案例档案
令牌对上了,写入权仍未成立:WebDAV 锁令牌的权限边界
一次成功续锁、一个完全相同的令牌,紧接着却是 423、412 或 403。三种拒绝看似都在说“锁有问题”,实际分别指向缺少锁证据、条件不成立和权限不足。把它们压成一个红灯,系统就会失去解释自己决策的能力。

全球云服务趋势
Veeva 的 Salesforce CRM 设有单客户 150% 席位上限,并将在 2030 年退出
这套旧 CRM 既没有立即停摆,也不再拥有正常扩张的自由。Veeva 与 Salesforce 的协议把它改造成一条逐步收窄的迁移通道:新客户不能进入,存量客户只能在各自上限内扩容,而支持终点和最终销售禁令分别落在 2029 年与 2030 年。
