Почему dial-up модем выжимал 56 килобит/сек. И то не всегда

Моя единственная любимая сцена из третьего «Терминатора» — когда героиня Кристанны Локен имитирует звук модема в телефонную трубку. Тогда это казалось жутко футуристично: мол, робот из будущего, конечно же, умеет в «современные технологии». И да, в 2003 году фраза «современные технологии» про модемное соединение через телефон была еще без кавычек.
Думаю, этот звук (Пиииии-врррр-кххх) помнят все, кто еще застал dial-up. Про эту ностальгическую технологию написано немало статей и подробно разобраны все технологии и механики ее работы. Но меня всегда интересовало другое.
Вспомним цифры. На коробке модема было написано 56k, а в окошке соединения — 33,6k, 48k, у везунчиков 52k. Число 56k там почти не появлялось.
Почему так? Считалось, что всему виной качество наших линий связи до АТС.
Но это очевидно не так: по этой же самой паре потом работал ADSL, сначала в десятки, а потом и в сотню раз быстрее. Значит, дело все-таки было не в проводах, а в технологии.
Так почему именно 56k? Разберемся.
Три килогерца на все про все
Телефонный канал — это полоса частот от 300 до 3400 Гц. Три с небольшим килогерца. Для голоса хватает: речь на таком диапазоне остается разборчивой и даже голос узнать можно, в отличие от рации.
Вопрос. А почему именно такая полоса? Неужели по меди нельзя передать что-то на 5 килогерцах?
Технически можно. Только не нужно. Окна в 3,1 кГц хватает на просто поговорить. Дальше начинается уже не физика, а экономика. Дело в том, что шикарный широкий медный канал идет только от телефона до АТС. От станции начинается совсем другая логика и уши ее растут из аппаратуры уплотнения.
По стандарту Международного союза электросвязи все, что выше 3400 Гц, положено подавить фильтрами. Дело в том, что в старых системах уплотнения каналы передавали, используя однополосную амплитудную модуляцию. То есть по одному (уже магистральному) кабелю гнали несколько разговоров, каждый в своем 4-килогерцовом окне. Поэтому разговор не мог занимать слишком широкую полосу, чтобы потом влезать в свою ячейку. Технологии уплотнения совершенствовались, но срез после 3,4 кГц так и остался. И модему надо было уметь с ним работать.
Сейчас вспомним еще один ныне подзабытый термин — бод. Если помните, была у модема такая характеристика, и далеко не каждый продавец в магазине электроники мог объяснить, чем она отличается от скорости в бит/с.
Разница в том, что бит/с измеряет скорость передачи информации, а бод — количество переданных символов в секунду. Сейчас приведу пример — станет понятнее.
Первые модемы посылали в телефонную линию два звуковых тона. Один соответствовал нулю, второй — единице. Каждый тон в данном случае представлял один символ. Если модем передавал 110 таких символов в секунду, его символьная скорость составляла 110 бод.
Но с такими технологиями сильно не разгонишься. Один из первых серийных модемов, Bell 101, работал со скоростью 110 бод. И поскольку каждый его символ нес ровно один бит информации, скорость передачи данных составляла те же 110 бит/с. В простейшем случае бод и бит/с численно совпадают: один символ = один бит.

А разве может быть по-другому? Может.
В следующих поколениях модемов стали применять более сложные виды модуляции, в том числе QAM. Здесь символ задается уже комбинацией амплитуды и фазы сигнала. А значит, возможных состояний может быть не два, а четыре, шестнадцать, двести пятьдесят шесть и даже больше.
Например, если возможны четыре разных состояния — условно 00, 01, 10 и 11, — каждый символ несет уже два бита информации. При символьной скорости 1 бод это даст 2 бит/с. При 2400 бод — уже 4800 бит/с.
Чем больше состояний способен надежно различить приемник, тем больше бит можно упаковать в один символ. У 16-QAM это 4 бита на символ, у 256-QAM — 8, а у 4096-QAM — уже 12. Последняя, например, применяется в современных стандартах Wi-Fi.

В эту игру с QAM можно играть почти бесконечно. Но бесконечно мы сможем играть лишь в чистом эфире или на линии хорошего качества, чтобы приемник мог правильно интерпретировать изменения амплитуд и фаз. Одно дело — понять, амплитуда положительна или отрицательна, и совсем другое — ее еще измерить и отличить уровень +1 от уровня +2. И вот тут у нас и проблема. Напоминаю, что мы живем в парадигме телефонной линии. А это 3,1 кГц и много паразитных шумов. Насколько это критично и что там такое шумит?
Скрытый текст
Раз уж заговорили про историю dial-up, приведу тут краткий список протоколов соединений с их максимальными скоростями. Список неполный, только основное:
V.21 — 0,3 кбит/сек
V.22 — 1,2 кбит/сек
V.32 — 9,6 кбит/сек
V.34 — 28,8 кбит/сек, позднее 33,6 кбит/сек
V.90/V.92 — 56 кбит/сек
Последние двое и есть наши герои.
Предел Шеннона
В 1948 году Клод Шеннон вывел формулу, которая ограничивает любой канал связи. Пропускная способность равна полосе, умноженной на логарифм отношения сигнала к шуму. Точнее, C = B · log₂(1 + S/N). Ничего сложного, если подставить числа.
Полоса у нас около 3100 Гц. Отношение сигнал/шум на хорошем телефонном тракте «абонент — абонент» — 30–35 дБ, то есть сигнал сильнее шума в тысячу–три тысячи раз. Честно скажу — не ахти какое качество. Для сравнения: норма в коаксиале аналогового ТВ 43–44 дБ.
Что же там такого шумит? Да много всего. «Лапша» телефонного кабеля в километр длиной сама по себе создает тепловой шум. Плюс входные каскады АТС, скрутки пар, наводки электросети и, конечно, шум квантования (о нем ниже). Все это дает те самые 35 дБ, которые на слух мы воспринимаем как характерное шипение.
Вернемся к Шеннону. Логарифм по основанию два от (1 + S/N) — около десяти–двенадцати. Умножаем и получаем 31–36 тысяч бит в секунду.
Это потолок. Выше — только если убрать шум или расширить полосу, а ни то ни другое модему не подвластно. Оговорюсь: телефонная линия не всегда укладывается в модель «полоса + белый шум», ниже мы поймем, почему. Потому предел Шеннона тут дан как общий ориентир, а не число до запятой. Но оценка понятна.
Протокол V.34 вышел в 1994 году со скоростью 28,8 кбит/с. В 1996-м его дополнили до 33,6k. Это было уже на пределе: на хорошей линии V.34 работал в паре децибел от Шеннона. Дальше — все, даже пытаться не стоит.
И тут через год на прилавках появляются модемы с надписью 56k. Как?
Станция давно цифровая
Многие привыкли думать о телефонной сети как о проводе: от абонента до станции, между станциями, до второго абонента. Так оно и было, но к середине 1990-х — только на первом и последнем участке. Между станциями уже давно бегала цифра. И если вы сейчас подумали, что это может нам помочь, то в первом приближении цифра делала ситуацию только хуже, так как добавляла тот самый шум квантования.
Работает это так. На стыке аналогового и цифрового участков стоит АЦП, который 8 000 раз в секунду измеряет напряжение в вашей линии и записывает результат одним байтом. Один уровень из 256 возможных. Восемь тысяч байт в секунду — это 64 кбит/с, стандартный цифровой канал. Из таких каналов собраны потоки T1 в Америке и E1 в Европе и у нас.

Пример 4-битовой (16-ти уровневой) ИКМ. Очень хорошо показывает, где теряется часть сигнала при квантовании
Где именно стоит этот АЦП — зависит от станции. В цифровой АТС — прямо в абонентском комплекте. В российских координатных АТС 1990-х — чаще на выходе, в аппаратуре ИКМ-30, которая паковала тридцать разговоров в один поток до соседней станции. Для нашей истории неважно, где. Важно, сколько их по дороге.
Скрытый текст
Схема кодирования называется PCM (pulse-code modulation, импульсно-кодовая модуляция), а конкретные правила записаны в рекомендации G.711. Байт кодирует напряжение нелинейно: тихие звуки записываются с мелким шагом, громкие — с крупным. Так восемь бит дают динамический диапазон, как у тринадцати–четырнадцати линейных. Вариантов кривой две: μ-law в США и Японии, A-law в Европе и у нас. Разница для нашей истории небольшая, кроме одного случая: на международном стыке байты пересчитывают из одного закона в другой, и это еще одно преобразование.
Теперь проследим путь сигнала при обычном модемном соединении. Ваш модем издает звук, и аналоговый сигнал бежит по паре до станции. На станции его оцифровывают — раз. Дальше он в виде байтов летит по сети до станции, к которой подключен провайдер, и там его превращают обратно в аналог — два. По паре он приходит к модему провайдера.
Два преобразования, но округляет только первое. АЦП разбивает все напряжение на 256 ступенек и записывает номер ближайшей, а то, что между ступеньками, теряется. Это называется шумом квантования, и он ничем не лучше обычного шума в линии. ЦАП на другом конце ничего не портит: он честно выдает ту ступеньку, которую ему прислали.
Для голоса незаметно, а для модема, который пытается различать мелкие штрихи в буквах, это критично. То есть цифровой сигнал нам не то что не помогает, а еще и мешает.
Но… если то самое преобразование, которое шумит, выкинуть?
Минус одно преобразование
Первым идею запатентовал канадец Брент Таунсенд. Он делал сервис MusicFax — доставку музыки по телефонным линиям — и уперся в ту же стену. Ему нужно было гнать данные с цифрового сервера сразу на много аналоговых модемов. И он заметил простую вещь: на стороне сервера от аналога можно избавиться.
Справедливости ради сама возможность к тому времени уже была посчитана. В 1993 году трое инженеров Bell Labs — Калет, Мазо и Зальцберг — опубликовали работу о пропускной способности PCM-канала и показали, что 33,6k — не предел. Таунсенд первым превратил расчет в схему модема.
Схема работает следующим образом. Крупный провайдер подключается к станции не парой проводов, а сразу цифровым потоком — E1 или T1. Его «модем» стоит по ту сторону АЦП. Ему не нужно переводить свою цифру в аналог, он может просто выставлять байты напрямую: вот тебе код 137, вот 201, вот 18.
Что с ними делает сеть? В идеале ничего. Байты до абонента идут как есть. А там ЦАП превратит каждый байт в ступеньку напряжения и отправит по паре к пользователю. Одно преобразование вместо двух. И оно к тому же цифро-аналоговое, без округления. Не без погрешности: у ЦАП и у самой петли остается свой шум, но он гораздо меньше шума квантования.
Формула Шеннона никуда не делась — изменился сам канал. Из нисходящего тракта исчезло лишнее аналого-цифровое преобразование, а вместе с ним один из важнейших источников искажений. Между серверным модемом и последним ЦАП теперь лежала цифровая сеть, которая передавала PCM-коды без аналогового шума. Аналоговой оставалась только абонентская линия. Как мы узнаем из опыта ADSL, «лапша» не так уж проста, как многим кажется.
Таунсенд подал заявку на патент в декабре 1994 года и пошел к US Robotics. К началу 1997-го его алгоритм лег в основу первых серийных 56k-модемов. Rockwell и Lucent пришли к той же схеме своим путем и узнали о патенте уже на заседаниях МСЭ, после чего долго и дорого договаривались.
Есть одно «но», и даже два. Первое — трюк работает, только если провайдер действительно сидит на цифровом потоке. Если он подключен пучком обычных телефонных линий — а в России в конце 1990-х таких провайдеров было полно, — АЦП на его стороне никуда не делся, и никакие 56k не светят, какой бы ни была сеть.
Второе — трюк работает только в одну сторону. Ваш модем по-прежнему стоит на аналоговой паре, и на пути к провайдеру АЦП станции никуда не делся, так что восходящий канал остался обычным V.34 на 33,6. Отсюда асимметрия: 56k вниз и 33,6k вверх. Но это все равно прогресс, ибо в Интернете начала нулевых в основном качали к себе, нежели закачивали на сервер.
Хорошо, канал стал цифровым. 8 000 байт в секунду или 64 000 бит в секунду. Значит, 64 кбит/с? Откуда тогда 56k?
Куда делись восемь килобит
Помните, что PCM кодирует напряжение неравномерно? У нуля ступеньки стоят очень плотно, и для тихого голоса это хорошо. Но в реальной линии есть шум, и разница между соседними «тихими» кодами тонет в нем целиком. Различить код 3 от кода 4 приемник не сможет никогда.
Поэтому пользовательский модем не берет все 256 кодов, а выбирает из них столько, сколько различает на этой конкретной линии. Плотные коды у нуля выкидываются первыми. На хорошей линии остается до 128 уровней.
Дальше либо пропустите и поверьте на слово, либо следите за руками, ибо тут нужно немного внимательности.
128 уровней — это 7 бит, 2 в степени 7.
В секунду у нас 8 000 отсчетов.
7 × 8000 = 56 000.
Вот и все. 7 бит на отсчет при 8 000 отсчетов в секунду дают ровно 56k.
Скрытый текст
На самом деле кодер V.90 устроен несколько хитрее. Там учитываются особенности PCM-кодирования, расположение сигнальных уровней, допустимая мощность сигнала, искажения линии и способ распределения битов между несколькими последовательными символами. Но нам для понимания вполне хватит объяснения выше и в самые дебри не полезем.
Но ведь такая схема будет работать, только если модем распознал все 128 уровней. А если качество связи позволяет ему распознать 97 или 89 уровней? То есть число, не являющееся степенью двойки? Будем снижать скорость по биту, то есть на 8 кбит/сек?
Различаем не 128, а 127 уровней и все — минус 8 кбит/сек. Нет, это слишком жирно.
Поэтому тут придумали еще одну хитрость. Биты пакуют не в один отсчет, а в кадр из шести отсчетов подряд. В кадр кладут целое число бит, а как они разойдутся по шести уровням, дело кодера. Отсюда шаг всей сетки скоростей: 8000 / 6 = 1333⅓ бит/с. То есть скорость опускается ступеньками по 1333 бит/с: 53,333k, 52k, 50,666k, 49,333k и т. д. Это куда более экономно. Математика окончена, можете читать дальше более расслабленно.
В США были свои проблемы в довесок к тому, что выше. В потоках T1 сигнализацию, то есть служебные сообщения о снятой трубке и набранных цифрах, передавали прямо внутри голосовых байтов: в каждом шестом кадре младший бит канала отбирали под эти нужды. Называлось это robbed-bit signaling — «сигнализация с кражей бита». Голосу это было незаметно, а модему критично. Потому приходилось снижать скорость.
Кроме того, в США правила FCC (Федеральная комиссия по связи) ограничивают среднюю мощность сигнала, которую можно подавать в телефонную линию. Касается это и цифрового модема провайдера: его байты в конце концов превратятся в напряжение на чьей-то петле. Оказалось, что для полного набора кодов, нужных на 56k, мощность выходит за норму, и пришлось выкинуть еще несколько самых «громких» уровней. Итог — 53 333 бит/с. Именно поэтому американские модемы даже на идеальной линии показывали 53,3k, а не 56k.
В России, как всегда, был слегка свой путь, даже по чужой колее. Трюк с одним преобразованием работает, только если от провайдера до вашего ЦАП сигнал идет цифрой без единого захода в аналог.
Сама по себе старая координатная АТС этому не мешала. Если на ее выходе стояла аппаратура ИКМ-30, АЦП в тракте был ровно один, и V.90 через такую станцию соединялся на свои 40–48 кбит/сек. Ломал все аналоговый участок посередине: транзитный узел на координатном оборудовании, физическая соединительная линия между станциями или старая система уплотнения по частоте. Цифра превращается в аналог, потом обратно в цифру. Два АЦП. И все. Модем может поднять только V.34, а это 28,8 или 33,6 кбит/сек.
В Москве и Петербурге между многими станциями к концу 1990-х уже лежали цифровые потоки, хотя сами станции в большинстве оставались аналоговыми еще лет десять. В областных и особенно районных сетях аналоговый транзит был нормой. Отсюда и картина: один и тот же модем в столице показывает 48k, а в областном городе с тем же провайдером — 26k. Провода в обоих случаях обычные. Разной была дорога между станциями.
Небольшая драчка стандартов
90-е были временем, когда развернулась не одна война стандартов. И модемные пулы эта битва не обошла стороной. В начале 1997 года US Robotics выпустила модемы X2. Название означало «в два раза быстрее», чем 28,8. Почти одновременно Rockwell вместе с Lucent выкатили K56flex, к которому потом примкнула и Motorola. Важно было то, что между собой эти два решения были несовместимы.

Провайдерам пришлось держать два пула модемов, а пользователям помнить, по какому телефону звонить. Правда, тут договорились быстро: в феврале 1998 года МСЭ опубликовал проект V.90, в сентябре его утвердили, обе армии обновили прошивки, и война закончилась.
В ноябре 2000-го вышел V.92. Модем научился запоминать характеристики линии и соединяться быстрее, ставить сессию на удержание ради входящего звонка и гнать PCM в обратную сторону — до 48 кбит/с вверх. В Америке к этому моменту уже тянули ADSL, и там V.92 мало кто заметил. У нас этот процесс запоздал лет на пять: «Стрим» в Москве пошел массово только в 2004-м, и даже в 2005-м у МТУ-Интел абонентов на модемах было вдвое больше, чем на ADSL.
Скрытый текст
56 килобит в секунду не предел. Позже на коробках писали 115 200 или даже 230 400 — «с компрессией». Это протокол V.42bis. Внутри сидел алгоритм из семейства Lempel–Ziv. Текст и HTML он ужимал в два-три раза, а в удачных случаях — до четырех. Физическая скорость линии при этом оставалась максимум 56 кбит/с, однако за то же время можно было передать больший объем исходной информации. А вот архивы, картинки и MP3 уже были сжаты, поэтому выигрыша на них почти не было.
Теперь еще один интересный вопрос. А как модем вообще понимал, на каком протоколе ему работать? Тут все просто. И интересно, ибо для ответа на этот вопрос нам надо разобрать мелодию того самого «пиииии-врррр-кххх».
Что там пищит
Динамик в модеме — вообще не для модема. Он для человека. Модем набирает номер, и вы слышите, что происходит: «занято» или голос ошарашенного человека, которому позвонил компьютер. Как только связь установлена, динамик выключают. Все, что вы слышали до этого, — переговоры двух устройств, которые ничего друг о друге не знают.

Первое, что делает модем провайдера, сняв трубку, — подает ответный тон в районе 2100 Гц. Вызывающему модему (и вам) он сообщает: «Ответил модем, а не человек», но один из важных адресатов этого сигнала — сама телефонная сеть.
На междугородних и международных линиях давно применялись устройства борьбы с эхом. Для обычного разговора они полезны, а модемному соединению могут серьезно мешать. Старый эхоподавитель работает довольно грубо: когда говорит одна сторона, он ослабляет или вовсе глушит встречное направление, чтобы человек не слышал собственный голос с задержкой. Для модема, который должен одновременно передавать и принимать данные, такой режим неприемлем. Поэтому специальный тон около 2100 Гц служит для эхоподавителя командой: перед тобой не обычный разговор, отключайся.
Позже появились более умные эхокомпенсаторы. Они уже ничего не глушат, а строят модель эха: знают, какой сигнал только что отправили в линию, вычисляют, каким должно быть его отражение, и вычитают эту копию из принятого сигнала. Но алгоритмы такой обработки тоже способны искажать модемный сигнал, поэтому при установлении соединения эхокомпенсатор нужно вывести из работы. Для этого у 2100-герцевого тона примерно каждые 450 миллисекунд переворачивают фазу на 180 градусов. Именно по таким разворотам сеть распознает модемное соединение и отключает эхокомпенсацию.
У более поздних модемов этот начальный сигнал устроен еще хитрее: в протоколе V.8 используется ответный тон ANSam — несущая около 2100 Гц дополнительно слегка модулируется по амплитуде. Поэтому первая нота после набора номера и не звучит как идеально ровный чистый писк: если прислушаться, она действительно немного «дрожит».
Дальше короткий обмен по протоколу V.8: кто что умеет. Поддерживаешь V.90? А V.34? Компрессию? И так далее. Обе стороны объявляют возможности и выбирают максимальное общее.
Потом — то самое «врррр». Модемы по очереди посылают наборы тонов на разных частотах и слушают, что дошло. Так они измеряют собственную линию: где полоса срезана, на каких частотах шум, какая задержка. В V.34 по результатам этих измерений модем подбирает параметры модуляции и скорость символов. В V.90 задача другая: клиентский модем дополнительно изучает PCM-тракт и выясняет, какие уровни от станционного ЦАП он способен надежно различать. Чем сильнее линия срезает верх полосы и чем больше в ней шума, тем меньше уровней ЦАП модем сумеет различить.
И вместо 52k покажет 44k, о чем узнает еще до передачи первого байта.
Следом — обучение. Модем передает заранее известную последовательность, а приемник настраивает по ней эквалайзер, чтобы компенсировать искажения линии.
Если соединение по V.90, в этот момент пользовательский модем еще и учится различать те самые ступеньки ЦАП и выясняет, не крадет ли сеть биты по дороге.
Наконец, финальное шипение — переход к данным. Шипит оно потому, что хорошо упакованные данные от шума на слух неотличимы. Весь писк — это переговоры: «выключите лишнее», «кто вы такие», «покажите линию», «настроимся», «поехали». Двадцать секунд, и вы в сети.
Вместо заключения. Медь ни при чем?
В нулевых по той же телефонной паре пришел ADSL. Потолок первого стандарта — восемь мегабит вниз. Реальный «Стрим» 2004 года давал от 160 килобит до мегабита.
Как?
Никакого чуда: ADSL просто не использует голосовой спектр линии, потому с ним по телефону еще и позвонить можно одновременно с передачей данных.
Работает это так: у абонента ставят сплиттер, который разделяет все ниже 4 кГц и все, что выше. Голос идет в АТС, как раньше. Данные же занимают полосу до 1,1 МГц и уходят в отдельный ящик — DSLAM. Он стоит в том же здании, но с голосовым трафиком никак не связан.
То есть телефонная лапша все это время могла пропускать через себя мегабиты. Ее ограничивал только голосовой канал и необходимость преобразования из аналога в цифру.
Настоящий виновник тут — вся модель аналоговой и цифро-аналоговой телефонии. И чем больше АТС обрастала системами передачи трафика, тем выше становилась скорость.
Казалось, что это прогресс. Но нет. Выделенная линия нокаутировала ADSL буквально за несколько лет. Так что последняя уже стала каким-то архаизмом. А уж про dial-up вообще все забыли. Он сейчас используется только в нескольких узких областях и очень точечно. А когда-то его звук был одним из гимнов целого поколения. Такая вот история.
Размещайте облачную инфраструктуру и масштабируйте сервисы с надежным облачным провайдером Beget.
Эксклюзивно для читателей Хабра мы даем бонус 10% при первом пополнении.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.