摘要

  • RFC 741 没把分组语音当作一串采样值:两台主机要先对呼叫、编码、发送节奏和就绪状态达成一致,语音数据才开始流动。
  • 它定义的四种单向控制与数据角色、编码协商和人工接听状态,说明 NVP 实际规定了什么;文中列出的四个站点并不能证明协议得到广泛部署。

分析

四个逻辑方向:控制消息与语音数据分开

RFC 741 的出发点是主机间协议与实时语音不匹配:ARPANET 的 host-to-host 协议针对数据传输优化,作者认为它不适合交互语音。因此 NVP 把控制消息与语音数据分开。文中把 12 位 MESSAGE-ID 的高 8 位称为 LINK,低 4 位称为 SUB-LINK。这些是逻辑消息标识,不是四条物理线路,也不是现代 IP 端口。

一通语音通信有四种单向角色:L 传递呼叫方到应答方的控制消息,K 传递反方向的控制消息;语音数据则分别经 L+1 和 K+1 传送。L 与 K 取自八进制 340 至 375,且允许相同。初始接触使用链路 377。

呼叫方先在 377 上说明谁呼叫谁,并提出 K。应答方可以拒绝,也可以接受并分配 L。随后呼叫方在 L 上再次呼叫,应答方开始兼容性协商。一方提出 WHAT 参数和 HOW 选项,另一方逐项接受或拒绝。协商项目可以包括语音编码、采样周期、协议版本、最大消息长度和语音包大小。RFC 列出 LPC、CVSD 等方案。两端不必使用相同的机器,但必须找到双方都能处理的配置。

READY 不是连通标志:它等待人的回应

首次协商成功后,应答方会响铃并发送 RINGING。有人接听之后,READY 信号才表示语音数据可以开始传送。规范也允许没有先发送 RINGING 就出现 READY,但它仍区分技术上的连接兼容与人的接听状态。

链路分配后,任一方还可以请求重新协商;链路号保持不变,之前商定的参数则需重新确认。在 READY 确认成功前,双方应忽略语音数据。可选的 ECHO REQUEST 能帮助测量延迟;RFC 明确说此功能不强制实现,未收到回声也不能作为终止呼叫的理由。它是测量入口,不是时延保证。

因此,不能把 RFC 741 直接描述成现代 IP 语音的早期版本。WHO 和 WHOM 字段编码主机、IMP 与扩展号,用来寻址通信单元;它们不验证某个人的身份,也不决定谁获准发言。安全语音是更大项目的目标,前言把加密交给既有设备。NVP 说明了如何建立和协调语音交换,却没有单独提供安全电话服务。

1986 年的 RFC 980 将 NVP-II 列在“次要主机协议”一栏。这证明的是目录如何分类它,并不能说明有多少网络还在运行。更稳妥的历史结论是:到 20 世纪 70 年代中期,ARPANET 研究人员已在多个站点实现语音通信,并写下让异构机器协商、分配消息标识、等待人工就绪的规则。语音数据要等主机先谈妥才会流动。

从 1973 年试验到 RFC 741:证据边界在哪里

一次通话开始之前,两个系统必须找到对方,判断彼此的语音设备能否采用兼容的表示方式,并确认接收端已经准备好。文件传输可以在消息丢失后重试;实时谈话中的一句话若晚到,再发送一次也无法让它回到原来的谈话时刻。

Danny Cohen 在 RFC 741 中把这种差异写进了协议。RFC 封面标注 1977 年 11 月 22 日;标题页则称其为 1976 年 1 月 29 日的 NSC Note 68,并说明它修订了此前三份说明。ARPA 的 Network Secure Communications 项目希望验证一种低带宽、高质量、全双工数字语音能否通过分组交换网络传输。前言说,数字语音可以由既有加密设备保护。NVP 是这个项目的一部分,本身不是加密协议。

致谢部分为这项工作提供了具体边界。Cohen 写道,NVP 于 1973 年 12 月首次实现,此后已在 ARPANET 上用于本地及跨网络实时语音通信。他列出 Information Sciences Institute、Lincoln Laboratory、Culler-Harrison 和 Stanford Research Institute,并记录各站使用的机器与语音编码组合。这是关于多站协作的直接报告,却不是用户数、通话质量或公共电话服务的统计。

来源