Примеры сетевых топологий


Протокол обмена UUCP - часть 7


Контрольная сумма вычисляется для всех байтов поля данных.

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

В пакетах управления поле ххх может принимать следующие значения:

CLOSEСоединение должно быть оборвано немедленно (например, обнаружено слишком много ошибок).
RJ или NAKПоследний пакет доставлен с ошибкой. В поле ууу записан номер последнего пакета, доставленного корректно.
SRJВыборочный отказ. Поле ууу содержит номер пакета, доставленного с ошибкой. Пакет должен быть послан повторно. В UUCP обычно не используется.
RR или ACKПодтверждение получения пакета. Поле ууу содержит код номера последнего пакета, полученного корректно.
INITAПервый пакет инициализации. Поле ууу содержит код максимального размера окна.
INITBВторой пакет инициализации. Поле ууу содержит код размера пакетов, который планируется использовать.
INITCТретий пакет инициализации. Поле ууу содержит размер окна, который будет использован.

Контрольная сумма управляющего пакета равна 0хаааа - с, где с - контрольный байт заголовка. Контрольная сумма информационного пакета равна 0хаааа - (check ^ c), где ^ обозначает операцию исключающее ИЛИ, а check результат работы программы, приведенной ниже и обрабатывающей поле данных. Исходными параметрами для этой программы является указатель на начало блока данных z и число байтов в блоке c.

Int
igchecksum (z, c)

register const char *z;

register int c;

{
register unsigned int ichk1, ichk2;
ichk1 = 0xffff;
ichk2 = 0;
do

{

register unsigned int b;




Начало  Назад  Вперед