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

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

Для обнаружения пропажи данных применяется метод подтверждения доставки. При этом приемник и передатчик обмениваются сообщениями, подтверждающими прием неповрежденного пакета данных. Такой обмен сообщениями называется “рукопожатие” (handshake).

Для каждого принятого сообщения приемник посылает подтверждение (часто оно называется АСК (Acknowledged)). Обычно приемник остается пассивным участником обмена. То есть вся инициатива в обмене принадлежит передатчику, а приемник только отвечает сообщениями АСК.

 


Рис. 5. Пример реализации подтверждения о доставке.

Как изображено на рис. 5, когда приемник получает Сообщение 1, он отвечает, посылая Подтверждение 1. После того как передатчик получит Подтверждение 1, он посылает следующее Сообщение 2. Сообщение 3 не будет послано до тех пор, пока не вернется Подтверждение 2. Обычно, если передатчик не получает подтверждение о доставке в течение некоторого времени (тайм-аута), он посылает сообщение еще раз.

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

Приемник должен подтвердить доставку сообщения. Однако в нашем случае он не может этого сделать, так как данные повреждены. Если приемник пошлет нормальное подтверждение, то передатчик пошлет следующее, пребывая в неведении относительно настоящей судьбы поврежденного Сообщения 2.

Многие протоколы коррекции ошибок выходят из ситуации, посылая сообщение о недоставке — Сообщение NAK (Not Acknowledged). Например, при несовпадении старой и новой контрольных сумм в Сообщении 2 приемник пошлет обратно Сообщение NAK. Когда передатчик получит его, он узнает, что данные были повреждены. Передатчик немедленно высылает Сообщение 2 еще раз, а не ждет тайм-аут для повтора передачи. Таким образом устраняется задержка в обмене сообщениями.

Сообщения, посылаемые по сети, можно рассматривать, как поток данных. Для того чтобы передатчик не посылал данные быстрее, чем приемник может их обработать, сетевая служба должна управлять этим потоком. Такой режим службы называется –“управление потоком” (flow control). Он служит для того, чтобы приемник не переполнился и не начал терять данные в результате слишком быстрой передачи. Механизм управления потоком должен контролировать скорость передачи и учитывать размер буфера приемника.

Потоковая служба.

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

Службы конечной и промежуточной доставки

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