Избыточное кодирование код рида соломона. Код Рида — Соломона. Реализация кодировщика и декодера Рида-Соломона. Аппаратная реализация

Nokia 28.02.2019
Nokia

Вредоносные программы могут проявляться не только в виде подозрительных процессов или файлов автозапуска, но и в виде сетевой активности. Черви используют сеть для распространения, троянские программы - для загрузки дополнительных компонентов и отсылки информации злоумышленнику.

Некоторые типы троянских программ специально предназначены для обеспечения удаленного управления зараженным компьютером. Для обеспечения доступа к компьютеру по сети со стороны злоумышленника они открывают определенный порт.

Что такое порт? Как известно, каждый компьютер обладает IP-адресом, на который этому компьютеру можно передавать данные. Но если на компьютере имеется несколько программ, работающих с сетью, например, почтовый сервер и веб-сервер, как определить, какие данные какой программе предназначены? Для этого и используются порты. За каждой программой, ожидающей данные из сети закрепляется определенное число - номер порта, а данные, пересылаемые на компьютер, кроме адреса компьютера содержат также и номер порта, чтобы было понятно, какая программа должна получить эти данные.

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

Аналогично почтовому серверу, вредоносные программы для приема команд или данных от злоумышленника используют определенный порт, постоянно ожидая сигналов на этот порт. В таких случаях принято говорить, что программа слушает порт.

Определить, какие порты слушаются на компьютере можно при помощи команды netstat -n. Для ее выполнения сперва нужно запустить командную оболочку. В случае Windows NT, 2000, XP и 2003 она запускается командой cmd.exe, а в Windows 98 и Me - command.com. Для запуска используются команды Выполнить в меню Пуск.

После выполнения в командной оболочке команды netstat -a в том же окне отображаются данные об установленных соединениях и открытых портах (тех, которые слушаются). Выглядит это как на рисунке 4.7.

Рис. 4.7.

Результатом выполнения команды является список активных подключений, в который входят установленные соединения и открытые порты. Открытые TCP-порты 2) обозначаются строкой LISTENING в колонке состояние. Часть портов связана с системными службами Windows и отображается не по номеру, а по названию - epmap, microsoft-ds, netbios-ssn. Порты, не относящиеся к стандартным службам, отображаются по номерам.

UDP-порты обозначаются строкой UDP в колонке Имя. Они не могут находиться в разных состояниях, поэтому специальная пометка LISTENING в их отношении не используется. Как и TCP-порты они могут отображаться по именам или по номерам.

Порты, используемые вредоносными программами, чаще всего являются нестандартными и поэтому отображаются согласно их номерам. Впрочем, могут встречаться троянские программы, использующие для маскировки стандартные для других приложений порты, например 80, 21, 443 - порты, используемые на файловых и веб-серверах.

Просто обнаружить неизвестные системе (и пользователю) порты мало. Нужно еще узнать, какие программы используют эти порты. Команда netstat не позволяет этого сделать, поэтому потребуется воспользоваться сторонними утилитами, например, утилитой tcpview.exe 3) . Эта утилита отображает более полную информацию о подключениях, включая данные о процессах, слушающих порты. Характерный вид окна утилиты представлен на рисунке 4.8.


Рис. 4.8.

Как несложно заметить, утилита TCPView отображает те же данные, что и команда netstat -a, но дополняет их информацией о процессах.

Что делать с результатами поиска

Итак, по результатам анализа процессов, параметров автозагрузки и соединений получен список подозрительных с точки зрения пользователя процессов (имен файлов). Для неопытного пользователя неизвестных, а значит подозрительных имен файлов может оказаться слишком много, поэтому имеет смысл выделить наиболее подозрительные из них - те, которые были обнаружены в двух и более источниках. Например, файлы, которые присутствуют в списке процессов и в списке автозагрузки. Еще более подозрительными являются процессы, обнаруженные в автозагрузке и слушающие порты.

Для выяснения природы подозрительных процессов проще всего использовать Интернет. В глобальной сети имеются сайты, собирающие информацию о различных процессах. Данных по всем процессам вредоносных программ на таких сайтах может и не быть, но во всяком случае на них есть информация о большом количестве неопасных процессов и таким образом можно будет исключить из списка те процессы, которые относятся к операционной системе или известным невредоносным программам. Одним из таких сайтов является http://www.processlibrary.com

После того, как список подозрительных процессов максимально сужен и в нем остались только те, о которых нет исчерпывающей и достоверной информации, остается последний шаг, найти эти файлы на диске и отправить на исследование в одну из антивирусных компаний для анализа.

Доступна на сайте http://www.sysinternals.com Для обмена данными между компьютерами могут использоваться различные протоколы, т. е. правила передачи информации. Понятие портов связано с использованием протоколов TCP и UDP. Не вдаваясь в подробности, стоит отметить, что в большинстве случаев применяется протокол TCP, но UDP также необходим для работы ряда служб и поддерживается всеми современными операционными системами. Доступна на сайте http://www.sysinternals.com

Инструкция

Обычно необходимость посмотреть активные соединения связана с подозрением на заражение компьютера шпионскими программами. Правильно настроенный компьютер должен соединяться с сетью только тогда, когда вы открываете какие-то страницы или во время обновления файлов ОС и баз антивирусной программы. Если индикатор сетевого соединения в трее то и дело «оживает» сам собой, и компьютер, независимо от вас, обменивается с интернетом какой-то информацией, необходимо выяснить причины подобной сетевой активности.

Откройте командную строку, для этого выполните: «Пуск» - «Все программы» - «Стандартные» - «Командная строка». В открывшемся окне введите команду netstat –aon и нажмите Enter. Вы увидите список всех сетевых соединений, активные будут отмечены в графе «Состояние» как ESTABLISHED.

Обратите внимание на графу «Внешний адрес» - в ней указаны ip, с которыми соединялся ваш компьютер, и порт соединения. Порт 80, например, характерен для веб-серверов. Но если вы видите какой-то другой порт, это уже повод для тревоги. В этом случае вам необходимо выяснить, какое установленное на вашем компьютере приложение открывает данное соединение.

Посмотрите на последнюю графу, в ней указаны идентификаторы процессов (PID). Запомните идентификатор подозрительного процесса, затем в том же окне наберите команду tasklist. Откроется список запущенных на компьютере процессов. В первой графе будут указаны имена процессов, во второй – их идентификаторы. Найдите идентификатор подозрительного процесса, затем, слева от него, посмотрите имя программы, которой он принадлежит.

Как быть, если имя процесса вам ничего не говорит? Наберите его в поисковике, и вы получите всю информацию о данном процессе. Если информации нет, то очень велика вероятность того, что вы «поймали» новую троянскую программу, сведения о которой еще не попали в интернет и в базы антивирусов.

Обращайте внимание на то, какой порт открывает подозрительный процесс – информация об открытых портах присутствует в графе «Локальный адрес». Проверяйте процессы, находящиеся в состоянии ожидания соединения – LISTENING. Именно так ведут себя бэкдоры – троянские программы, предназначенные для скрытного соединения с зараженным компьютером. Серверная часть такой программы всегда «висит» на каком-то порту и ждет подключения с компьютера хакера.

Для полного контроля за соединениями установите программу BWMeter. Это одна из лучших программ данного класса, она позволит вам видеть, с какими адресами соединяется ваш компьютер, есть возможность записывать информацию в лог.

Источники:

В случае необходимости узнать фактическую скорость интернет-соединения самым правильным будет выполнить проверку на своем компьютере или мобильном устройстве, поскольку информация от провайдера может оказаться недостоверной. В качестве инструмента для определения скорости приема и передачи данных следует использовать специализированные онлайн-ресурсы.

Инструкция

Одним из самых популярных сайтов, предназначенных для этой цели, считается www.speedtest.net. Откройте сайт, но перед проверкой выполните небольшую подготовительную работу. Дело в том, что некоторые службы и приложения могут работать в фоновом режиме, используя интернет-канал. Самые основные из них: антивирусная программа, торрент-клиент, служба автоматического обновления Windows. Отключите все подобные программы и службы, и только после этого приступайте к проверке скорости – так вы получите значение, максимально приближенное к действительности.

Для запуска процедуры определения скорости нажмите кнопку «Начать проверку» и дождитесь, пока вам не будет показан результат. После завершения проверки вы узнает показатель Ping (чем он меньше, тем лучше), скорость загрузки и скорость отдачи. Последние два показателя - и есть ваша реальная скорость интернет-соединения . Чем выше эти значения, тем быстрее будут открываться страницы в браузере, скачиваться программы, фильмы, и тем более комфортным (без пауз) будет просмотр - .

Если вам нужно узнать скорость соединения на вашем мобильном устройстве, например, на iPad, iPhone, HTC, Samsung и др. (iOs и Android), вы можете установить на свой девайс специальное приложение, загрузить которое можно на том же сайте в разделе «Мобильность» или в онлайн-магазинах AppStore и Android Market. После установки такого приложения вы сможете проверить скорость получения и передачи данных на своем или и узнать, отвечает ли заявленная провайдером скорость в сети 2G или 3G фактическим показателям.

Видео по теме

Полезный совет

Помимо сайта Speedtest.net вы можете воспользоваться аналогичными ресурсами: www.internet.yandex.ru, www.speed.yoip.ru, www.speed-tester.info и другими.

Благодаря наличию в трее иконки в виде двух компьютеров пользователь может в общих чертах судить о сетевой активности его машины. В том случае, если даже простаивающий компьютер активно общается с интернетом, возникает необходимость более полного контроля трафика.

Вам понадобится

  • - права на запуск приложений на локальном компьютере.

Инструкция

Правильно настроенный компьютер никогда не будет сам лезть в сеть. Исключением являются лишь запланированные обновления операционной системы и антивирусной программы. Если компьютер постоянно лезет в сеть, можно предположить его неправильную настройку или вирусную активность .

Чтобы посмотреть сетевую активность компьютера, запустите командную строку: «Пуск – Все программы – Стандартные – Командная строка». Введите команду netstat –aon и не забудьте нажать Enter. Перед вами появится таблица из пяти столбцов. В первом будет указан протокол – UDP или TCP. Во втором перечислены все активные подключения, при этом вы можете видеть и открытые на вашей машине порты. Третий столбец показывает внешний адрес, четвертый состояние подключения. В пятом вы можете видеть PID – цифровой идентификатор процесса.

Указанные во второй колонке порты говорят о том, что их открыли какие-то программы, среди которых вполне могут быть и троянские. Для того чтобы понять, какая программа открывает тот или иной порт, в том же окне введите команду tasklist – вы увидите список запущенных процессов. При этом сразу после названия исполнимого файла будет идти идентификатор процесса.

Допустим, вы видите, что у вас открыт порт 1025, его PID – 1480 (у вас он может быть другим). Найдите этот идентификатор в списке процессов и посмотрите, какой программе он принадлежит. Если вы не знаете, что это , наберите ее название в поисковике.

Колонка «Состояние» дает вам возможность видеть состояние соединения. Например, строка LISTENING говорит о том, что программа находится в состоянии ожидания соединения. Именно так ведут себя бэкдоры – троянские программы, серверная часть которых находится на компьютере жертвы. Но в этом состоянии могут находиться и другие программы – например, сервисы Windows. В операционной системе Windows XP некоторые потенциально опасные порты можно закрыть с помощью утилиты wwdc, ее можно скачать в интернете.

Если вам нужен полный анализ трафика, воспользуйтесь программой BWmeter. Она отследит все подключения к вашему компьютеру с указанием ip-адресов, данные можно записывать в лог. Программа полезна как для вычисления шпионских программ, так и для выявления и последующего отключения всевозможных служб, лезущих в сеть без разрешения владельца компьютера.

Задача определения используемых портов, статистики и активных подключений протокола TCP/IP в операционной системе Microsoft Windows может быть решена стандартными средствами самой системы с использованием консольной утилиты netstat.

Инструкция

Введите значение cmd в поле «Открыть» и подтвердите выполнение команды запуска инструмента «Командная строка» нажатием кнопки OK.

Введите значение netstat -ano в тестовое поле интерпретатора команд Windows и подтвердите выполнение команды нажатием функциональной клавиши Enter.

Запомните синтаксис используемой консольной команды:
- a - отображение всех используемых соединений и портов;
- n - отображение не псевдонимов и DNS-имен, а действительных числовых значений портов и IP-адресов соединений;
- o - отображение PID (Process ID) - цифрового идентификатора процесса, использующего данное соединение или порт.

Определите приложение, ответственное за конкретное соединение через выбранный порт и запомните его идентификатор.

Вернитесь в диалог «Выполнить» и еще раз введите значение cmd в поле «Открыть» для определения необходимого процесса.

Подтвердите выполнение команды запуска интерпретатора команд Windows нажатием кнопки OK и введите значение tasklist | find сохраненный_PID в текстовое поле инструмента «Командная строка».

Подтвердите выполнение команды нажатием функциональной клавиши Enter или выполните одновременное нажатие функциональных клавиш Ctrl+Shift+Esc для запуска встроенной утилиты «Диспетчер задач Windows».

Перейдите на вкладку «Процессы» открывшегося диалогового окна диспетчера и раскройте меню «Вид» верхней панели инструментов.

Укажите команду «Выбрать столбцы» и примените флажок на поле PID (Process Identifier).

Здравствуйте!

Следует понимать, что IP-адрес - это идентификатор не человека в Интернете, а устройства, которое он использует для выхода в сеть. То есть, например, у вашего смартфона и модема, который вы подключаете к компьютеру, IP-адреса разные, хотя оба эти устройства принадлежат одному человеку - вам.

Давайте рассмотрим вариант получения какой-либо информации по IP-адресу, которым обычно пользуются чаще всего. Это адрес ПК пользователя. Именно при работе с ПК происходит основная активность обычного пользователя в Сети.

Итак, кто-то узнал ваш IP-адрес. Для этого есть много способов, среди которых сайты-ловушки (фейки), взлом сайтов и форумов, на которых вы зарегмстрированы, определение адреса в процессе общения в различных соц. сетях и прочих средствах Интернет-коммуникаций и т.д. В общем, частное лицо узнать ваш IP вполне может, это факт. И если это лицо обладает некоторым опытом или просто умеет пользоваться поиском в Интернете и способно разобраться с приводимыми в результатах поиска инструкциями, оно сможет получить о вас определённую информацию.

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

Также, IP-адрес можно просканировать на наличие открытых портов. И если один из этих портов окажется открытым уязвимой программой (а неуязвимых в принципе быть не может), можно будет получить доступ к информации на вашем ПК, вашим аккаунтам в Сети или даже удалённому управлению вашим компьютером. А хотя бы один открытый порт значит, что пользователь с этим IP в сети (вы как раз этим вопросом интересовались).

Я сейчас объяснил довольно примитивно, на пальцах, но этого достаточно, чтобы понимать возможности, которые открывает злоумышленнику знание вашего IP. Далее я опишу способы защиты.

Обычному пользователю достаточно установить фаервол и поддерживать его обновления в актуальном состоянии. Он обеспечит именно ЗАЩИТУ от злоумышленников. Если же вам нужна АНОНИМНОСТЬ, то можно пользоваться динамическим IP (изменяется при каждом подключении), прокси-сервером или цепочкой из них и т.д. Первое средство менее надёжно (у провайдера можно при наличии полномочий или взломе его базы данных узнать, кто пользовался IP в определённое время и даже какие действия этот человек совершал). С прокси всё так же, но вот проделать это действие с цепочкой из нескольких серверов потребует времени. И пока дойдёт до последнего, информация о вас уже может быть удалена за давностью.

Хочу отметить, что все эти средства поддержания анонимности полезны, например, для хакеров, которые совершают противоправные действия и не хотят понести за них ответственность. А обычном пользователю они не требуются. Вы можете спокойно общаться в сети, читать статьи, смотреть фильмы, слушать музыку и играть в игры. Ни спецслужбы, не толпы хакеров не горят желанием узнать подробности этого=) Фаервола, а также антивируса (или комбинированного решения из этих и других программ для безопасности) будет вполне достаточно, а абсолютная анонимность подавляющему большинству пользователей Интернета совсем не нужна, так как информация о их действиях просто напросто не представляет особой ценности.

5 года назад от Gelor (71,760 баллов)

Давайте взглянем на ваш вопрос более грамотно. Во-первых Вы не являетесь компьютером или каким-нибудь киборгом и не можете быть подключены к интернету лично. Лично Вы можете использовать для выхода в интернет любой доступный аппарат, будь то компьютер/ноутбук или смартфон/планшет. В наше время даже телевизоры подключаются к интернету, и это вовсе не значит что люди которые их смотрят "находятся в сети".

Для того чтобы передать информацию в интернет о том что вы в данный момент доступны, потребуется установить или использовать кое-какие программы или сервисы, отображающие вашу активность в реальном времени, но все эти сервисы вы можете самостоятельно держать под контролем и не давать через них информацию которой вы не желаете делится с людьми.

Для примера. Раньше для определения онлайн-статуса повсеместно люди использовали ICQ. Заметим, что они сами устанавливали себе клиент программы потому что им было необходимо делится этой информацией с людьми. Соответственно, отсутствие или отключение ICQ-клиента приводило к невозможности связи с человеком. Сейчас по подобию ICQ уже были сделаны десятки различных служб, которые имеются на большинстве популярных сайтов и служб. Это выглядит как чат, и его теперь даже не требуется отдельно устанавливать на компьютер - все будет работать через браузер где бы вы его ни запустили.

Отличие такого мессенджера от IP заключается в том, что для того что-бы использовать мессенджеры вы должны использовать логин и пароль, которые должны быть по правилам, известны только вам одному и больше никому. Это подтверждает вашу личность в интернете. Если же обнаружен вход с определенного IP-адреса, то это подтверждает соединение определенной единицы техники, которой может пользоваться кто угодно, и личность вашу не подтвердит. К тому-же большинство IP-адресов сейчас обычно выделяется в произвольном порядке провайдерами, и определить что происходило в какой-то определенный момент времени можно только изучая логи на серверах вашего провайдера.

Так что же значит понятие "я нахожусь в сети"? Вот у меня есть смартфон, подключенный к интернет постоянно. Он постоянно со мной и через него я могу получить сообщения от людей из интернет даже если я сам им не пользуюсь. Я могу водить машину, сидеть в кафе, в библиотеке или в кинотеатре имея при себе этот смартфон. Так вот скажите, нахожусь-ли я в сети в этот момент? Ответ прост - смартфон находится в сети, а я занимаюсь другими делами, но у меня есть возможность связи с людьми через интернет, даже если я не сижу и не смотрю безотрывно в экран. Да, впрочем, я точно также все время доступен и для телефонного звонка, если кому-то захочется поговорить, но только номер своего телефона я не буду сообщать тем, с кем не желаю разговаривать. И в интернете я имею возможность не сообщать другим людям свои контактные данные, оставаясь доступным для друзей.

Используйте то чем располагаете с умом, и не надо вести себя как параноик и боятся всего вокруг. Вы всегда имеете возможность не давать о себе ту информацию которую не хотите давать. Для этого просто не нужно ее печатать или говорить где попало и кому попало.

Введение

TCPView - это программа, предназначенная для операционной системы Windows, которая выводит на экран списки конечных точек всех установленных в системе соединений по протоколам TCP и UDP с подробными данными, в том числе с указанием локальных и удаленных адресов и состояния TCP-соединений. В операционных системах Windows NT, 2000 и XP программа TCPView также сообщает имя процесса, которому принадлежит конечная точка. Программа TCPView является дополнением программы Netstat, поставляемой вместе с ОС Windows, и предоставляет расширенный набор сведений в более удобной форме. В комплект загрузки программы TCPView входит программа Tcpvcon с теми же функциональными возможностями, предназначенная для работы в режиме командной строки.

Программа TCPView работает в операционных системах Windows NT/2000/XP и Windows 98/Me. Программу TCPView можно использовать также в операционной системе Windows 95 при условии установки пакета обновления Winsock 2 для ОС Windows 95, предоставляемого корпорацией Microsoft.

Использование программы TCPView

При запуске программа TCPView формирует список всех активных конечных точек соединений по протоколам TCP и UDP, отображая все IP-адреса в виде доменных имен. Чтобы переключить режим отображения для просмотра адресов в цифровом виде, можно использовать кнопку панели инструментов или пункт меню. В операционных системах Windows XP программа TCPView для каждой конечной точки отображает имя процесса, которому эта точка принадлежит.

По умолчанию программа TCPView обновляет информацию один раз в секунду, но период обновления можно изменить с помощью пункта Refresh Rate (Период обновления) в меню Options (Параметры). Если в период между обновлениями состояние конечной точки изменилось, она выделяется желтым цветом, если конечная точка удалена - красным цветом, новые конечные точки отображаются зеленым цветом.

Чтобы закрыть установленные подключения по протоколам TCP/IP (с отметкой состояния ESTABLISHED (установлено)), можно выбрать пункт Close Connections (Закрыть подключения) в меню File (Файл) или щелкнуть правой кнопкой мыши какое-либо подключение и выбрать в контекстном меню пункт Close Connections .

Данные, отображенные в окне программы TCPView, можно сохранить в виде файла с помощью пункта меню Save (сохранить).

Применение программы Tcpvcon

Применение программы Tcpvcon аналогично применению служебной программы netstat, которая встроена в операционную систему Windows.

Применение: tcpvcon [-a] [-c] [-n] [имя процесса или PID]

Исходный текст программы Netstatp

Хотите знать, как работает программа TCPView? На примере исходного текста программы Netstatp показано, как можно запрограммировать некоторые функции программы TCPView. На примере этой программы показано, как использовать интерфейсы IP Helper (см. описание в документах на узле MSDN), чтобы получить список конечных точек соединений по протоколу TCP/IP. Однако обратите внимание, что программа netstatp не выводит имена процессов в системах NT 4 и Windows 2000, как это делают программы TCPView и TCPVCon.

Статья базы знаний Microsoft о программе TCPView

Данная статья базы знаний Майкрософт посвящена программе TCPView:

Взаимосвязанная служебная программа

TDImon - показывает активность с использованием протоколов TCP и UDP в реальном времени.

Если вам понравилась программа TCPView, то программа TCPView Pro понравится вам еще больше. Программа TCPView Pro, разработанная компанией Winternals Software, обладает рядом функций, благодаря которым она является намного более мощным и полезным средством, чем программа TCPView. Это такие функции: просмотр данных о процессах, которым принадлежат конечные точки открытых соединений (также действует в системе Windows 9x)

  • просмотр активности процессов с использованием протоколов TCP и UDP в реальном времени
  • использование усовершенствованных методов фильтрации для показа только необходимых данных.
  • и многое другое...

Программа TCPView Pro поставляется в составе пакета Winternals Administrator"s Pak.

В современных системах цифрового телевидения для обеспечения помехоустойчивой передачи цифровых телевизионных сигналов по радиоканалу используются наиболее совершенные коды Рида-Соломона (Reed-Solomon),требующие добавления двух проверочных символов в расчете на одну исправляемую ошибку . Коды Рида-Соломона обладают высокими корректирующими свойствами, для них разработаны относительно простые и конструктивные методы кодирования. Коды Рида-Соломона не являются двоичными. Это надо понимать в том смысле, что символами кодовых слов являются не двоичные знаки, а элементы множества чисел, состоящего более чем из двух знаков (хотя, конечно, при передаче каждый символ заменяется соответствующей двоичной комбинацией).

Коды Рида-Соломона, относящиеся к классу циклических кодов , образуют подгруппублоковых кодов . Они получаются из любой разрешенной комбинации путем циклического сдвига ее разрядов. Кодирование и декодирование, обнаруживающее и исправляющее ошибки, – это вычислительные процедуры, которые для циклических кодов удобно выполнять как действия с многочленами и реализацию в виде цифровых устройств на базе регистров сдвига с обратными связями.

Чтобы получить более детальное представление о кодах Рида-Соломона посмотрим, какое место они занимают в классификации корректирующих кодов (рис. 4.4).

Корректирующие коды разделяются на блочные и сверточные (непрерыв­ные). Блочные коды основаны на перекодировании исходной кодовой комбина­ции (блока), содержащейk информационных символов, в передаваемую кодо­вую комбинацию, содержащуюn >k символов. Дополнительныер = n k сим­волов зависят только отk символов исходной кодовой комбинации. Следова­тельно, кодирование и декодирование осуществляются всегда в пределах од­ной кодовой комбинации (блока). В противоположность этому всверточных кодах кодирование и декодирование осуществляются непрерывно над после­довательностью двоичных символов.

Блочные коды бывают разделимые и неразделимые. В разделимых кодах можно в каждой кодовой комбинации указать, какие символы являются инфор­мационными, а какие проверочными. Внеразделимых кодах такая возмож­ность отсутствует.

Следующая ступень классификации – систематические коды . Они отлича­ются тем, что в них проверочные символы формируются из информационных символов по определенным правилам, выражаемым математическими соотно­шениями. Например, каждый проверочный символх pj получается как линейная комбинация информационных символов

Рис. 4.4. Место кодов Рида-Соломона в классификации корректирующих кодов

где
– коэффициенты, принимающие значения 0 или 1;
. Соотношение для формирования контрольного бита проверки на четность является частным случаем.

Перейдем к более подробному знакомству с циклическими кодами .

В первую очередь введем запись кодовой комбинации или, как часто назы­вают ее в литературе, кодового вектора в виде полинома. Пусть имеется кодо­вая комбинация a 0 a 1 a 2 ...a n –1 , гдеа 0 – младший разряд кода,a n –1 – старший раз­ряд кода. Соответствующий ей полином имеет вид

,

где х – формальная переменная, вводимая только для получения записи кодо­вой комбинации в виде полинома.

Над полиномами, представляющими кодовые комбинации, определена ма­тематическая операция умножения. Особенность этой операции по сравнению с общепринятой заключается в том, что коэффициенты при х всех степеней суммируются по модулю 2, а показатели степених при перемножении сумми­руются по модулюn , поэтомух n = 1.

Далее введем понятие производящего полинома . Производящим полино­мом порядка (n k ) может быть полином со старшей степенью х , равной (n k ), на который без остатка делится двучлен (1 + х n ). Разрешенные кодовые комби­нации получаются перемножением полиномов порядка k – 1, выражающих исходные кодовые комбинации, на производящий полином.

Циклические коды имеют следующее основное свойство. Если кодовая ком­бинация a 0 a 1 a 2 ...a n –1 является разрешенной, то получаемая из нее путем цик­лического сдвига кодовая комбинацияa n –1 a 0 a 1 ...a n –2 также является разрешен­ной в данном коде. При записи в виде полиномов операция циклического сдви­га кодового слова сводится к умножению соответствующего полинома нах с учетом приведенных ранее правил выполнения операции умножения.

Циклический код с производящим полиномом
строится следующим об­разом.

1. Берутся полиномы
,
,
, ...,
.

2. Кодовые комбинации, соответствующие этим полиномам, записывают в виде строк матрицы G , называемойпроизводящей матрицей .

3. Формируется набор разрешенных кодовых комбинаций кода. В него вхо­дит нулевая кодовая комбинация, k кодовых комбинаций, указанных в п. 1, а также суммы их всевозможных сочетаний. Суммирование осуществляется по­разрядно, причем каждый разряд суммируется по модулю 2 . Общее число полученных таким образом разрешенных кодовых комбинаций равно 2 k , что соответствует числу информационных разрядов кода.

Для построения декодера в первую очередь получают производящий поли­ном
порядкаk для построенияисправляющей матрицы Н :

.

Строками исправляющей матрицы Н будут кодовые комбинации, определяемые полиномами
,
, ...,
, где
– это записанный в об­ратном порядке полином
. Исправляющая матрица имеетn столбцов иn k строк.

При декодировании принятая кодовая комбинация a 0 a 1 a 2 ...a n –1 скалярно умножается на каждую строку исправляющей матрицы. Эта операция может быть записана в виде соотношения:

где h ji – элементыj -той строки матрицыН . Полученныеn k чиселc j образуютисправляющий вектор илисиндром . Если ошибок нет, то всеc j = 0. Если же при передаче данной кодовой комбинации возникла ошибка, то некоторые из чиселc j не равны 0. По тому, какие именно элементы исправляющего вектора отличны от нуля, можно сделать вывод о том, в каких разрядах принятой кодо­вой комбинации есть ошибка и, следовательно, исправить эти ошибки.

Рассмотрим пример, часто встречающийся в литературе. Построим цикли­ческий код с n = 7;k = 4. Для этого представим двучлен 1 +х 7 в виде произве­дения :

В обычной алгебре это равенство, конечно, не выполняется, но если ис­пользовать для приведения подобных вместо обычного сложения операцию суммирования по модулю 2, а при сложении показателей степеней – операцию суммирования по модулю 7, то равенство окажется справедливым.

В качестве производящего многочлена возьмем 1 + х +х 3 . Умножаем его нах ,х 2 их 3 и получаем многочленых +х 2 +х 4 ;х 2 +х 3 +х 5 ;х 3 +х 4 +х 6 . Затем запи­сываем производящую матрицуG , причем в каждой строке матрицы младший разряд кодовой комбинации расположен первым слева.

.

Далее формируем набор из 15 допустимых кодовых комбинаций: 00000000, 1101000, 0110100, 0011010, 0001101, 1011100, 0101110, 0010111, 1000110, 0100011, 1111111, 1010001, 1000110, 0100011, 1001011. В этих записях млад­шие биты слева, а старшие – справа.

Перемножив первые два сомножителя в, получаем производящий мно­гочлен для исправляющей матрицы: 1 + х +х +х 4 . Затем умножаем его нах их 2 и получаем еще две строки этой матрицы, которая в результате имеет такой вид (в отличие от матрицыG здесь младшие разряды соответствующих поли­номов расположены справа):

.

Пусть принята кодовая комбинация 0001101, входящая в набор допустимых. Найдем скалярные произведения этой кодовой комбинации со всеми строками матрицы Н :

Пусть теперь принята кодовая комбинация 0001100, в которой последний (старший) бит содержит ошибку. Скалярные произведения принятой кодовой комбинации на строки исправляющей матрицы имеют вид:

Таким образом, получен синдром (1, 0, 0). Если ошибка оказывается в другом бите кодовой комбинации, то получается другой синдром.

Одним из важных достоинств циклических кодов является возможность построения кодирующих и декодирующих устройств в виде сдвиговых регистров с обратными связями через сумматоры по модулю 2.

Различные виды циклических кодов получаются с помощью различных про­изводящих полиномов. Существует развитая математическая теория этого во­проса . Среди большого количества циклических кодов к числу наиболее эффективных и широко используемых относятся коды Бозе-Чоудхури-Хоквингема (ВСН-коды – по первым буквам фамилий Bose,Chaudhuri,Hockwinhamили в русскоязычной записи БЧХ-коды), являющиесяобобщением кодов Хемминга на случай направления нескольких ошибок. Они образуют наилучший среди известных класснеслучайных кодов для каналов, в которых ошибки в последовательных символах возникают независимо. Например, БЧХ-код (63, 44), используемый в системе спутникового цифрового радиовещания, по­зволяет исправить 2 или 3 ошибки, обнаружить 4 или 5 ошибок на каждый блок из 63 символов. Относительная скорость такого кода равнаR = 44/63 = 0,698.

Одним из видов ВСН-кодов являются коды Рида-Соломона. Эти коды отно­сятся к недвоичным кодам , так как символами в них могут быть многоразряд­ные двоичные числа, например, целые байты. В Европейском стандарте циф­рового телевидения DVB используется код Рида-Соломона, записываемый как (204, 188, 8), где 188 – количество информационных байт в пакете транс­портного потока MPEG-2, 204 – количество байт в пакете после добавления проверочных символов, 8 – минимальное кодовое расстояние между допусти­мыми кодовыми комбинациями. Таким образом, в качестве кодовых комбина­ций берутся целые пакеты транспортного потока, содержащие 1888 = 1504 информационных бита, а добавляемые проверочные символы содержат 168 = 128 бит. Относительная скорость такого кода равна 0,92. Этот код Рида-Соломона позволяет эффективно исправлять до 8 принятых с ошибками байт в каждом транспортном пакете.

Отметим также, что используемый в цифровом телевизионном вещании код Рида-Соломона часто называют укороченным . Смысл этого термина состоит в следующем. Из теории кодов Рида-Соломона следует, что если символом кода является байт, то полная длина кодового слова должна составлять 255 байт (239 информационных и 16 проверочных). Однако, пакет транспортного потокаMPEG-2 содержит 188 байт. Чтобы согласовать размер пакета с параметра­ми кода, перед кодированием в начало каждого транспортного пакета добав­ляют 51 нулевой информационный байт, а после кодирования эти дополни­тельные нулевые байты отбрасывают.

В приемнике для каждого принятого транспортного пакета, содержащего 204 байта, вычисляются синдромы и находятся два полинома: «локатор», корни ко­торого показывают положение ошибок, и «корректор» (evaluator), дающий зна­чение ошибок. Ошибки корректируются, если это возможно. Если же коррекция невозможна (например, ошибочных байт более 8) данные в пакете не изме­няются, а сам пакет помечается путем установки флага (первый бит после синхробайта), как содержащий неустранимые ошибки. В обоих случаях 16 избы­точных байт удаляются, и после декодирования длина транспортного пакета становится равной 188 байт.



Рекомендуем почитать

Наверх