| Модемы и сетевое оборудование |
| Обнаружение и коррекция ошибок |
| Все мы знаем, что такое плохая телефонная связь, когда из-за шума и треска трудно бывает расслышать голос собеседника. Правда, поскольку человеческий голос представляет собой аналоговый сигнал, он допускает довольно сильные искажения без потери информации. И все же, если качество связи слишком плохое, мы вынуждены применять некоторые методы коррекции ошибок. Модему же, который обязан абсолютно точно передать каждый бит, приходится прибегать к этим методам гораздо чаще.
teasernet_blockid = 181683;
teasernet_padid = 62962;
r />Что мы делаем, когда голос в трубке едва слышен? Во-первых, если мы не расслышали какое-то слово, мы просим собеседника его повторить. Так же поступает, и модем. Он передает информацию не сплошным потоком74 а разделяя на блоки, и после передачи каждого такого блока ждет ответа от модема на другом конце линии — все ли понято правильно. Если принимающий модем не смог расслышать очередной блок, он просит его повторить. Вот почему при плохой связи скорость передачи снижается — часть информации приходится посылать по нескольку раз. Такой принцип коррекции ошибок называется ARQ (Automatic Repeat reQuest, автоматический запрос на повторение). Во-вторых, можно попросить собеседника говорить погромче. Модем не может говорить громче или тише1, но зато он может менять скорость передачи — снижение темпа речи помогает разобрать слова даже эффективнее, чем увеличение громкости. Поэтому почти все протоколы связи (их мы будем подробно рассматривать ниже) отслеживают количество ошибок и, если оно превышает некоторую величину, предлагают модему-собеседнику перейти на более низкую скорость или уменьшить размер блоков (т. е. «говорить по буквам»). Вы можете спросить, как же принимающий модем узнает, что информация передана с ошибкой? Ведь он, в отличие от человека, не может решать, есть ли смысл в том, что он слышит, — для него это просто последовательность битов. Чтобы можно было без долгих размышлений придти к выводу, что информация передана верно, передающий модем добавляет к каждому блоку информации своего рода «опись содержимого» — некое число, полученное с помощью арифметических действий над всеми битами блока. Алгоритм получения этого числа выбирается так, чтобы при изменении даже одного-единственного бита в передаваемом блоке результат (его называют контрольной суммой)тоже был другим. Принимающий модем знает этот алгоритм и, получив очередной блок, сам вычисляет контрольную сумму и сравнивает ее с полученной. Если эти две контрольные суммы совпадают, блок считается переданным правильно. Если же совпадения нет, приемник решает, что при передаче произошла ошибка, и просит прислать этот блок еще раз. Конечно, ошибка может произойти и при передаче контрольной суммы, а не самого блока информации. В этом случае повторная пересылка блока, понятно, не обязательна — но, конечно, лучше перестраховаться. Более того, может случиться так, что и сам блок информации, и его контрольная сумма будут содержать ошибки. Но вероятность того, что испорченная контрольная сумма будет соответствовать испорченным данным, практически равна нулю. Поэтому метод контрольной суммы обеспечивает почти стопроцентное обнаружение ошибок. У семи нянек... Как показывает опыт, наибольшую путаницу в умах неискушенных пользователей вызывает не сам принцип коррекции ошибок, а то, как и когда эта коррекция работает при передаче данных. Дело в том, что коррекция ошибок может осуществляться как минимум в двух местах — в коммуникационной программе, которая реализует какой-то протокол передачи файлов (например, Xmodem), и в самом модеме, если в нем встроен аппаратный протокол коррекции ошибок (например, V.42). Друг другу эти две коррекции не мешают (хотя одна из них, если активна другая, явно лишняя), но пользователя они могут запутать довольно основательно. Не меньшая путаница порождается и сжатием данных, о котором мы говорили выше. На сей раз есть уже три действующих лица, которые горят желанием сжать передаваемые данные, — кроме протокола передачи файлов и аппаратного протокола сжатия данных (например, V.42bis), сам пользователь тоже зачастую архивирует файлы перед посылкой! Понятно, что после программ-архиваторов (например, aij или zip) другим компрессорам делать уже нечего — но так ли это очевидно для свежеиспеченного владельца модема? |
