Принципы и понятия сетевой архитектуры, страница 3

Режим службы, ориентированной на соединение, это почти то же самое, что и двухточечное соединение. Ориентированная на соединение служба образует виртуальное двухточечное соединение, создавая впечатление, что устройства соединены между собой физически. Разумеется, это только впечатление — на самом деле двухточечного физического соединения нет. Несмотря на это, для взаимодействующих сетевых приложений создается видимость наличия неразрывного канала связи. Таким образом, служба, ориентированная на соединение, создает для приложения условия двухточечного непосредственного соединения.

Служба, не ориентированная на соединение

Тогда как ориентированная на соединение служба подобна телефонному разговору, служба, не ориентированная на соединение, похожа на доставку корреспонденции. Разница между двумя режимами служб состоит в том, что не ориентированная на соединения служба не устанавливает двухточечного соединения.

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

Контроль последовательности

Данные могут разбиваться сетью на пакеты различной длины. Компьютер, посылающий сообщение, передает данные, разделенные на пакеты, в той последовательности, в которой они поступили. Однако не исключено, что пакеты появятся в пункте назначения совсем в другой последовательности. Контроль последовательности (sequencing) определяет порядок, в котором пакеты данных должны появиться на приемном конце соединения. Некоторые протоколы гарантируют, что данные будут доставлены в той последовательности, в которой были посланы, а некоторые — нет. В любом случае приемник сообщения должен собрать из пакетов первоначальное сообщение. Большинство ориентированных на соединение протоколов гарантируют правильную последовательность данных. Другими словами, для ориентированного на соединение протокола доставить данные в той же последовательности, в которой они были посланы но каналу связи, — обычное явление. Протоколы, не ориентированные на соединение, наоборот, обычно не гарантируют правильной последовательности принятых пакетов данных.

Контроль ошибок

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

Система контроля ошибок обязана обнаруживать и обрабатывать два вида повреждения данных: их искажение или исчезновение. Другими словами, контроль ошибок обязан узнать, что в процессе передачи данные подверглись модификации. Либо он обязан узнать, что данные исчезли по пути к получателю. Это может произойти, например, в случае физического обрыва линии связи. Как правило, протоколы коррекции ошибок используют контрольную сумму и ее разновидность - CRC (Cyclic Redundancy Check). Значения контрольной суммы или CRC используются программами для проверки данных на наличие ошибок.

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

Для вычисления контрольной суммы данные делятся на части одинаковой длины. Например, приложения Интернет обычно делят данные на сегменты размером в 16 бит. Программа трактует такие сегменты как целые числа. Эти числа суммируются, и полученный результат (контрольная сумма) посылается вместе с самим блоком данных.