摘要
- RFC 3136 描述了一条跨域控制链:电话网中的触发事件可以通知正在上网的用户,用户选择的处理方式也可以返回电话业务控制系统。
- 点击本身不是呼叫处理结果。SPIRITS Gateway 与 Client 仍要传递选择,Service Control Function 仍要把它转换成电话动作,交换机还要恢复并完成呼叫处理。
一根电话线上的两套事实
拨号上网时代,一根铜线很难同时承担调制解调器连接与普通语音来电。用户正在浏览网页时,如果有人拨入,电话网先看见的是一个落到忙线上的呼叫;电脑看见的则是一条仍在工作的互联网连接。
Internet Call Waiting 试图让这两个世界交换一次决定。屏幕弹出窗口,显示来电号码或姓名,并让用户选择:断开上网后接听、转到另一个号码、送进语音信箱、播放预录消息,或者拒绝。界面让用户觉得决定已经发生,因为按钮确实是由用户按下的。
可交换机并没有感知鼠标。它掌握的是呼叫状态、触发点与等待时间。互联网主机掌握的是用户输入。连接这两组事实,需要多个逻辑角色分别观察、验证、转换和执行。
RFC 3136 于 2001 年 6 月以 Informational RFC 发布。它题为 The SPIRITS Architecture,目的不是给出一套完整协议,更不是证明某种服务已经普及,而是标出由电话网发起、又必须使用互联网能力的服务由哪些组件承担。架构图能说明信息应该经过哪里,却不能替代运行中的收据。
呼叫先在电话网里成为事件
链条的起点是 Service Switching Function。它通常位于电话交换机内,识别 Intelligent Network 的触发条件,并与 Service Control Function 交互。SCF 执行业务逻辑,能够影响交换机如何继续完成呼叫。
这意味着“有人来电”至少要拆成几件事:呼叫抵达某个状态;交换侧识别了相应触发点;触发信息进入业务控制;业务控制决定是否生成互联网侧事件。任何一步成功,都不能自动证明下一步已经发生。
RFC 3136 把 SPIRITS Client 放在电话控制一侧。它接收 SCF 的请求,并把响应送回。它可以与 SCF 共置,也可以通过 D 接口通信。因此,图中的两个方框不是必须存在的两台机器,而是两项必须能够追责的职责。
再往互联网方向,SPIRITS Gateway 担任中介,也可以与 PINT 组件共置。SPIRITS Server 终止来自 PSTN 的请求,负责和用户互动:通知来电,并转交用户选择的处理方式。“Server”这个名称没有赋予它直接控制交换机的权力;“Client”也不意味着电话侧只是被动接收者。
五条接口不是同一张成功证明
A 接口把 PINT 请求从用户主机送往 PINT Server。在 SPIRITS 场景中,它主要用于业务会话注册,从而在一定时间内激活服务,也可以承担订阅。注册成功说明关系被建立,不说明未来某次电话触发一定出现,也不说明届时主机仍然在线。
B 接口位于 SPIRITS Server 与 Gateway 之间。一条方向把来电以及可能存在的姓名、号码送给用户;另一方向把用户即时选择的 disposition 送回。通知能够抵达,不代表回程选择能够抵达;Gateway 接收选择,也不代表电话控制已经接收。
C 接口连接 Gateway 与 SPIRITS Client。RFC 3136 允许 Gateway 继续与 Server 通信,也允许它作为虚拟服务器直接终止请求。因此,日志中的“terminated”究竟是正常终止点还是失败,取决于具体实现,不能只看一个词。
D 接口连接 Client 与 SCF。触发参数从 SCF 发往 Client,用户选择则返回 SCF。RFC 3136 在这里给出了最关键的动作边界:SCF 要把用户 disposition “转换”为适当动作,例如向主叫方播放消息,然后恢复 SSP 中暂停的呼叫处理。
E 接口则把 PINT 请求交给 SCF 执行。PINT 的方向与 SPIRITS 不同:前者从互联网请求电话服务,后者从电话事件请求互联网服务。共用组件并没有把注册、通知、选择和执行合并成一个事实。
“拒绝来电”还要变成电话动作
假设用户点击“拒绝”。电脑可以准确记录用户、会话、按钮与时间。Server 可以把选择编码。Gateway 可以验证消息。Client 可以把 disposition 交给 SCF。做到这里,系统最多证明意图抵达了业务控制入口。
SCF 仍要结合当前呼叫状态、订阅资格与本地策略解释这项选择,再把抽象的“拒绝”转换为交换机能够执行的动作。可能需要播放一段语音,随后释放呼叫;也可能需要在某个超时之前返回特定控制信息。SSP 或 SSF 还要真正恢复处理。
“转接”更能暴露证据链。目标号码可能有效,转接指令可能被交换机接受,另一端却可能忙线、无人接听或被另一个网络拒绝。“语音信箱”可能接通平台,却不保证留下可用录音。“接听”可能必须先结束调制解调器会话,才能让同一根线恢复语音。RFC 3136 提到 VoIP 接听选项,也明确说明其架构不包含这一功能。
时间同样决定语义。用户选择完全真实,消息也可能格式正确,但如果到达时交换机已经因超时继续处理,它就无法再改变那次呼叫。迟到的指令不是虚假的指令;它只是失去了针对该状态的权力。
因此,一次完整审计至少要分开:会话注册、电话触发、通知生成、通知送达与显示、用户或配置文件作出选择、Server/Gateway/Client 接收、SCF 转换、交换机执行、目标端结果,以及独立回读。前面的收据不能借用后面的权威。
自动规则也没有绕过执行链
SPIRITS 允许用户预先设置一般规则,或针对特定主叫号码设置不同 disposition。来电时,系统可以不弹出窗口,而是按配置自动处理,之后让用户查看日期、时间、主叫号码、姓名与处置结果。
这份日志很重要,但它仍然属于某个观察者。“forwarded”可能表示匹配了转接规则,可能表示 Gateway 接收了请求,也可能表示交换侧接受了指令。除非日志说明观察点与完成条件,否则它不能证明目标号码响铃,更不能证明有人接听。
RFC 2995 在 RFC 3136 之前调查了四种 pre-SPIRITS 实现。四者都支持 Internet Call Waiting,多数使用 SIP,电话侧都采用 Intelligent Network 方案。但文档也明确指出,它们并非全部互操作,即使都使用 SIP,也未必采用相同版本。“SPIRITS server”在不同实现中也没有统一含义。
这些运行代码证明有人真实搭建过类似服务,也证明不同路径确实存在;它们不证明 RFC 3136 的每条接口都已普遍部署,更不把某个实现记录的 success 变成人类结果的独立证据。
得到通知,不等于得到呼叫控制权
后来的 RFC 3298 进一步拆开了通知与控制。它要求最小 SPIRITS 协议能够只支持基本通知,不依赖 PINT,也不依赖与 PSTN 的持续交互。因此,一个系统可以如实告诉互联网主机“电话事件发生了”,却不给它改变呼叫的能力。
如果需要处置,RFC 3298 画出的顺序是:注册、事件通知、用户 disposition、Service Control、SSP。它把“对通知作出反应”称为交付 SPIRITS 服务仍需完成的环节,并列出接受、拒绝与重定向等基本消息。通知卡片与控制按钮可以出现在同一界面,但它们代表不同授权关系。
2004 年的 RFC 3910 用 SIP SUBSCRIBE/NOTIFY 和 XML 规定了后续协议。为减少 client/server 名称造成的混乱,它把互联网侧称为事件 subscriber,把电话侧称为 notifier。谁订阅、谁观察、谁通知,比谁叫“服务器”更能说明证据来源。
RFC 3910 还区分 Request 与 Notification 类型的 detection point。Request 类型会让 SSP 暂停呼叫处理,等待 SCP 响应;Notification 类型只报告事件,交换机随后可以继续。收到同样主题的 NOTIFY,并不能证明电话网正在等互联网作决定。
订阅成功也被拆成多个阶段。202 可以表示请求已接收并正在处理,随后先发 NOTIFY 告知此状态;检测点真正初始化后,还要再发一次。未来触发事件时,才产生事件通知。“接受”“准备完成”“事件发生”各有自己的收据。
真正改变呼叫的接口仍由本地策略决定
RFC 3910 主要规定 B 与 C 接口,却明确把 D 接口视为 PSTN 运营者的本地策略:它可以是功能接口,也可以是消息通道。恰恰在互联网选择将要变成 SCF 动作的位置,公共协议没有宣称一套全球统一实现。
这不是标准缺口,而是权限边界。公共规范可以统一事件名称、必要参数与 XML 结构;运营者仍要决定身份是否对应这条电话线、订阅是否有效、当前呼叫是否允许该动作,以及如何把动作映射到本地业务逻辑。
可移植语法减少跨系统误解,却不会让 Gateway 成为交换机的主权者,也不会让用户意图绕过电话网的现行规则。信息能够跨界,权力仍需在接收方被验证。
攻击面沿着 disposition 一起移动
RFC 3136 认为 B 接口通常经过公共互联网,因此最容易遭遇信息窃取与拒绝服务。C 接口可能位于运营者内网,但接入互联网的 Gateway 把外部风险带到边界,单靠防火墙可能不足。
伪造注册可能把 caller-ID 通知送给错误的人。被修改的 disposition 可能把“语音信箱”变成“转接”。过期消息可能被套用到下一次来电。即使用户身份真实,他与电话号码的绑定也可能已经变化。
所以,身份认证、消息完整性、时间新鲜度、线路关联、用户处置权限、SCF 策略、交换机执行与最终结果必须各自验证。“用户点击了”只回答其中一个问题。
拨号上网消失,控制距离仍然存在
今天的控制台仍给用户一个看似直接的按钮:切流、撤销凭证、迁移工作负载、取消支付、转移对话。按钮产生意图,网关验证,策略引擎解释,控制器转换,设备执行,另一个观察者确认结果。
RFC 3136 的诚实之处,是没有把这整条链称作一次点击。用户可以选择来电如何处理;网络还必须把这项选择变成事实。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
