Книга Компьютерные сети. 6-е изд. - Эндрю Таненбаум
Шрифт:
Интервал:
Закладка:
Впрочем, скремблирование не гарантирует отсутствия длинных цепочек. Иногда просто не везет. Если данные полностью совпадают со случайной последовательностью, в результате операции XOR получаются сплошные нули. Такой исход маловероятен при длинной псевдослучайной последовательности, которую трудно предсказать. Но в случае коротких или легко предсказуемых последовательностей злоумышленники могут отправлять битовые паттерны, образующие после скремблирования длинные цепочки нулей. В результате происходит сбой связи. Подобным недостатком страдали ранние версии стандартов отправки IP-пакетов по каналам SONET в телефонной системе (см. Малис и Симпсон; Malis and Simpson, 1999). Пользователи могли отправлять определенные «пакеты-убийцы», которые гарантированно вызывали проблемы.
Симметричные сигналы
Сигналы, в которых доля положительного напряжения равна доле отрицательного даже за короткий промежуток времени, называются симметричными (balanced signals)20. Их среднее значение равно нулю, а значит, в них отсутствует составляющая постоянного тока. Это является преимуществом, поскольку некоторые каналы связи (например, коаксиальный кабель и линии с трансформаторами) сильно ослабляют составляющую постоянного тока из-за их физических свойств. Кроме того, при подключении приемника к каналу связи методом емкостного соединения (capacitive coupling) передается только переменная составляющая тока. В любом случае при отправке сигнала с ненулевым средним значением только впустую тратится энергия, ведь составляющая постоянного тока будет отфильтрована.
Симметрирование кабеля обеспечивает тактовые переходы для синхросигналов благодаря сочетанию положительного и отрицательного напряжения. Также оно позволяет легко настраивать приемники, ведь среднее значение сигнала всегда можно измерить и использовать как порог решения для декодирования символов. Если сигналы несимметричны, среднее значение может отклоняться от истинного уровня принятия решения, например, из-за плотности единиц. Таким образом, большее число символов будет декодировано с ошибками.
Простейший способ реализации симметричного кода — использовать в качестве логической «1» и логического «0» два разных уровня напряжения. Например, +1 В для бита 1 и –1 В для бита 0. Для отправки «1» передатчик чередует уровни +1 В и –1 В, чтобы среднее значение всегда было нулевым. Это биполярное кодирование (bipolar encoding). В телефонных сетях оно называется кодированием с чередованием полярности (Alternate Mark Inversion, AMI) в соответствии со старой терминологией, в которой «1» называлась «отметка» («mark»), а «0» — «пробел» («space»). Пример приведен на илл. 2.14 (д).
При биполярном кодировании добавляется еще один уровень напряжения, чтобы достигнуть баланса. Для этой цели также можно воспользоваться кодом, аналогичным 4B/5B (как и для получения тактовых переходов при восстановлении синхросигналов). Пример подобного симметричного кода — линейный код 8B/10B. В нем 8 бит входного сигнала соотносится с 10 битами выходного, так что его КПД составляет 80 % (как и в случае 4B/5B). 8 бит разбиваются на две группы: из 5 бит (которые сопоставляются с 6 битами) и из 3 бит (сопоставляются с 4 битами). Далее 6-битный и 4-битный символы объединяются. В каждой группе некоторые входные паттерны можно соотнести с симметричными выходными паттернами с тем же числом нулей и единиц. Например, «001» соответствует симметричный паттерн «1001». Впрочем, возможных сочетаний недостаточно, чтобы все выходные паттерны были симметричными. В подобных случаях входной паттерн сопоставляется с двумя выходными, у одного из которых будет лишняя единица, а у второго — лишний ноль. Например, паттерн «000» ассоциируется с паттерном «1011» и дополнительным к нему паттерном «0100». При сопоставлении входных битов с выходными, кодировщик запоминает дисбаланс (disparity) предыдущего символа. Этот дисбаланс равен общему количеству нулей или единиц, которых сигналу не хватает до симметричности. Далее кодировщик выбирает либо выходной паттерн, либо дополнительный к нему для снижения дисбаланса. В случае кода 8B/10B максимальный дисбаланс равен 2 битам. Следовательно, сигнал никогда не будет сильно отличаться от симметричного. Также в нем не будет более пяти последовательных единиц или нулей, что удобно для восстановления синхросигнала.
Передача в полосе пропускания
Передача сигналов в базовой полосе частот лучше всего подходит для проводной связи: по витой паре, коаксиальному или оптоволоконному кабелю. В других случаях (особенно в беспроводных сетях или радиосвязи) для передачи информации используется диапазон частот, не начинающийся с нуля. Отправлять сигналы очень низкой частоты по беспроводным каналам не имеет смысла, поскольку длина антенны должна составлять определенную долю длины волны сигнала. При низкочастотной передаче она окажется довольно большой. В любом случае выбор частот обычно диктуется нормативными ограничениями и желанием избежать помех. Даже при проводной передаче данных ограничение сигнала определенной полосой частот позволяет различным видам сигналов одновременно проходить по каналу. Этот процесс называется передачей в полосе пропускания, поскольку для нее используются произвольные полосы частот.
К счастью, все основные результаты, представленные в этой главе, сформулированы на языке пропускной способности, то есть ширины диапазона частот. Абсолютные величины частот не влияют на производительность. Это значит, что при сдвиге сигнала, занимающего основную полосу частот от 0 до B Гц, на полосу частот от S до S+B Гц объем информации в сигнале не поменяется, хотя сам он будет выглядеть иначе. А чтобы обработать сигнал на приемнике, его можно сдвинуть назад до основной полосы частот, где удобнее находить символы.
При полосовой передаче сигналов цифровая модуляция производится путем модуляции несущего сигнала таким образом, чтобы он располагался в нужной полосе частот. Модулировать можно амплитуду, частоту и фазу несущего сигнала. У всех этих методов есть названия.
При кодировании со сдвигом амплитуды (Amplitude Shift Keying, ASK) «0» и «1» соответствуют две различные амплитуды. Пример с нулевым и ненулевым уровнями приведен на илл. 2.16 (б). Для кодирования символов из нескольких битов можно использовать более двух уровней.
Аналогично при кодировании со сдвигом частоты (Frequency Shift Keying, FSK) используется две или более различные тональности. В примере на илл. 2.16 (в) используются лишь две частоты. В простейшем варианте кодирования со сдвигом фазы (Phase Shift Keying, PSK) фаза несущей волны периодически смещается на 0 или 180 градусов на границе каждого символа. Этот вариант называется двоичным кодированием со сдвигом фазы (Binary Phase Shift Keying, BPSK), поскольку фаз две. «Двоичный» тут относится к двум символам, а не к тому, что каждый символ соответствует двум битам. Пример этого кодирования приведен на илл. 2.16 (г). В усовершенствованной схеме, более эффективно использующей полосу пропускания, для передачи 2 бит информации на символ применяется четыре сдвига, например, на 45, 135, 225 и 315 градусов. Такая версия называется квадратурным кодированием со сдвигом фазы (Quadrature Phase Shift Keying, QPSK).
Эти схемы