Кратко

  • RFC 3136 описал SPIRITS: событие, возникшее в телефонной сети, могло уведомить пользователя Интернета, а выбранная им обработка — вернуться к управлению вызовом.
  • Нажатие не было телефонным действием. Gateway и SPIRITS Client передавали выбор, SCF преобразовывала его в сервисную команду, а коммутатор возобновлял обработку до появления результата для звонящего.

Экран ответил раньше телефонной станции

При коммутируемом доступе одна линия обслуживала модем или голосовой звонок. Когда во время интернет-сеанса кто-то набирал тот же номер, телефонная сеть видела новый вызов к занятой линии, а компьютер — продолжающееся соединение данных.

Internet Call Waiting должен был связать эти состояния. Окно показывало номер или имя и предлагало принять звонок после отключения модема, перевести на другой номер, отправить в голосовую почту, воспроизвести запись или отклонить. Программа могла точно засвидетельствовать выбор абонента.

Но вызов находился не в программе. Его удерживал телефонный switch, возможно в приостановленном состоянии и с ограниченным временем ожидания. Между намерением пользователя и изменением вызова располагались разные системы, протоколы и владельцы решений.

RFC 3136 вышел в июне 2001 года как Informational. Это была архитектура компонентов и интерфейсов для услуг, начинавшихся в PSTN и требовавших участия Интернета, а не законченная спецификация протокола. Линия на схеме показывала необходимую связь, но не доказывала реализацию, совместимость или успешный исход.

Первое событие принадлежало телефонной сети

Service Switching Function, обычно внутри коммутатора, распознавала trigger Intelligent Network и взаимодействовала с Service Control Function. SCF исполняла сервисную логику и могла указывать switch, как продолжать вызов.

Уже здесь есть несколько квитанций: вызов достиг detection point; SSF распознала условие; событие дошло до SCF; управление решило передать уведомление в IP-домен. Один факт не удостоверял следующий.

SPIRITS Client представлял телефонную сторону. Он принимал запросы SCF и возвращал ответы. RFC разрешал совместить его с SCF или связать через интерфейс D. Логические блоки описывали обязанности, а не обязательные отдельные машины.

SPIRITS Gateway посредничал между доменами и мог быть совмещён с PINT-компонентами. SPIRITS Server завершал PSTN-запросы и взаимодействовал с абонентом: доставлял уведомление и передавал выбранную обработку. Название Server не давало прямой власти над коммутатором.

Пять интерфейсов свидетельствовали о разном

A передавал PINT-запросы от хоста к PINT Server. В SPIRITS он прежде всего регистрировал сеанс и активировал услугу на период, иногда обслуживал подписку. Успешная регистрация не доказывала будущий trigger и достижимость хоста.

B соединял SPIRITS Server и Gateway. В одну сторону шло уведомление и доступные данные звонящего, в другую — выбранная disposition. Доставка уведомления не доказывала обратную доставку, а приём Gateway не был приёмом SCF.

C связывал Gateway со SPIRITS Client. Gateway мог общаться с Server или выступать виртуальным сервером и завершать запрос самостоятельно. Запись “terminated” могла означать штатную точку завершения, а не сбой; смысл зависел от реализации.

D соединял Client и SCF. Параметры trigger шли к Client, выбор абонента — обратно. RFC 3136 говорил, что SCF «преобразует» disposition в подходящие действия, например объявление для звонящего, и возобновляет приостановленную обработку в SSP.

E доставлял PINT-запросы в SCF для исполнения. PINT начинался запросом Интернета к телефону; SPIRITS — телефонным событием к Интернету. Общие компоненты не объединяли направления в одну транзакцию.

Слово «отклонить» ещё не стало сигналом для звонящего

Пользователь нажимает «отклонить». Хост сохраняет личность, сеанс, время и кнопку. Server формирует сообщение, Gateway проверяет, Client передаёт SCF. Пока доказано только прибытие намерения к месту дальнейшего решения.

SCF должна сопоставить его с состоянием вызова, подпиской и политикой. Отказ может потребовать объявления и освобождения. SSP должен выполнить вовремя. Поздний ответ может быть подлинным и корректным, но уже не влиять на этот call.

Перенаправление добавляет новый путь. Номер может быть действительным, команда принята, а назначение занято или не отвечает. Голосовая почта может поднять линию, не сохранив пригодное сообщение. Принятие может потребовать сначала прекратить модемный сеанс. VoIP упоминался как вариант, но предложенная архитектура его не отражала.

Поэтому аудит разделяет регистрацию, trigger, создание и доставку уведомления, показ окна, ручной или профильный выбор, приём Server/Gateway/Client, преобразование SCF, действие switch, результат назначения и независимый readback. Ранняя квитанция не наследует смысл поздней.

Автоматическое правило не обходило исполнителей

Абонент мог заранее установить общую обработку или правила для отдельных номеров. Тогда живого окна не требовалось; позже журнал показывал дату, время, имя или номер и disposition.

Журнал оставался взглядом одной системы. “Forwarded” мог означать срабатывание правила, отправленную инструкцию или локально классифицированный ответ. Без точки наблюдения и критерия завершения он не доказывал звонок на назначении и человеческий ответ.

RFC 2995 описал четыре pre-SPIRITS-реализации. Все поддерживали Internet Call Waiting, большинство использовало SIP, все применяли IN на телефонной стороне. Однако документ прямо отмечал отсутствие полной совместимости; даже SIP-варианты могли поддерживать разные версии.

Значение “SPIRITS server” тоже менялось по контексту. Работающий код доказывал реальные системы и различия, но не универсальную схему и не человеческий исход каждого success.

Уведомление не выдавало полномочие управлять звонком

Позднее RFC 3298 потребовал, чтобы минимальный SPIRITS мог давать базовое уведомление без PINT и постоянного взаимодействия с PSTN. Система могла сообщить событие, не предоставив возможности изменить вызов.

Для управления RFC 3298 показал последовательность: регистрация, event notification, disposition, Service Control, SSP. Реакция на уведомление была ещё одним необходимым элементом услуги. В базовый словарь входили принять, отклонить и перенаправить; VoIP оставался вне области.

Честный интерфейс различает: событие получено, выбор отправлен, политика принята, switch исполнил, назначение ответило. Одна зелёная отметка стирает различия полномочий.

RFC 3910 в 2004 году специфицировал SPIRITS через SIP SUBSCRIBE/NOTIFY и XML. Интернет-сторона стала event subscriber, телефонная — notifier. Кто заказывает наблюдение и кто его выпускает, точнее определяло смысл, чем названия client/server.

Документ разделил Request и Notification detection points. Request приостанавливал обработку SSP до ответа SCP. Notification позволял продолжить после сообщения. Полученный NOTIFY не доказывал, что switch ждёт интернет-решения.

Принятие подписки тоже имело фазы. После 202 NOTIFY сообщал, что запрос принят и обрабатывается; другой — что точки детекции инициализированы. Реальное событие позже создавало ещё одно уведомление. Принято, подготовлено и сработало были разными состояниями.

Последний мост остался локальной политикой

RFC 3910 сосредоточился на B и C, а D назвал локальной политикой оператора PSTN. D мог быть функциональным интерфейсом или обменом сообщений. Общий протокол заканчивался до места, где интернет-намерение превращалось в действие SCF.

Это сохраняло ответственность. Общие названия событий, обязательные параметры и XML помогали обмену. Оператор всё ещё проверял связь личности с линией, актуальность подписки, доступность действия и его отображение в текущий call state. Корректный синтаксис не становился универсальным приказом.

Минимальный общий слой позволял разным сетям принимать будущие решения локально, не маскируя различия как будто они уже стандартизованы.

Поверхность атаки двигалась вместе с распоряжением

RFC 3136 считал B через публичный Интернет особенно уязвимым для кражи и denial of service. C мог находиться в интранете провайдера, но интернет-Gateway открывал границу; одного firewall могло быть недостаточно.

Поддельная регистрация могла увести caller ID. Подмена могла заменить голосовую почту перенаправлением. Replay — применить старое решение к новому вызову. Даже настоящая личность могла уже не владеть линией.

Аутентификация, целостность, свежесть, привязка линии, право распоряжения, политика SCF, исполнение switch и исход назначения — отдельные проверки. Клик подтверждает намерение, не остальные стадии.

Модем исчез, расстояние управления осталось

Современная панель предлагает переключить трафик, отозвать доступ, перенести workload или отменить операцию. Кнопка создаёт намерение; gateway проверяет; policy решает; controller переводит; устройство действует; поздний наблюдатель подтверждает.

RFC 3136 был честен, не называя всю цепь кликом. Абонент выбирал. Сеть ещё должна была сделать выбор реальностью.