Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепция информатизации общества.docx
Скачиваний:
12
Добавлен:
23.08.2019
Размер:
5.71 Mб
Скачать
  1. Псевдокод программы алгоритма ожидания следующей попытки доступа в сеть типа ethernet. (Backoff алгоритм)

19. Псевдокод программы алгоритма ожидания следующей попытки доступа в сеть типа ethernet. (Backoff алгоритм)

Кода не нашел, написал, всю инфу что нашел по этому поводу.

Если во время передачи кадра рабочая станция обнаруживает другой сигнал, занимающий передающую среду, она останавливает передачу, посылает jam signal и ждёт в течение случайного промежутка времени (известного как «backoff delay» и находимого с помощью алгоритма truncated binary exponential backoff), перед тем как снова отправить кадр.

Truncated binary exponential back off (усеченная двоичная экспоненциальная отсрочка) – задержка перед следующей попыткой передачи пакета после коллизии (допускается максимум 16 попыток). Вычисляется она по следующей формуле:

RAND(0,2min(N,10)) x 512 x ВТ

где N – значение счетчика попыток, RAND(a, b) – генератор случайных нормально распределенных целых чисел в диапазоне а...b, включая крайние значения. Дискрет изменения данного параметра равен минимальной длине пакета или максимально допустимой двойной задержке распространения сигнала в сети (PDV).

  • ВТ (Bit Time, битовый интервал) — длительность передачи одного бита.

(ниже перевод статьи с английского)

Этот пример взят из протокола Ethernet, [2], в которой отправитель может знать, когда столкновение произошло (то есть, другой хозяин попытался передать), когда он посылает кадр. Если оба хоста пытался повторно, как только произошло столкновение, было бы еще одно столкновение - и картина будет продолжаться вечно. Хозяева должны выбрать случайное значение в допустимых пределах, чтобы этой ситуации не бывает.Экспоненциальный алгоритм отката поэтому используется. На рисунке 51.2μs был дан здесь в качестве примера. Тем не менее, 51.2μs (миллисекунды) можно заменить на любое положительное значение на практике. При столкновении произойдет раньше, отправить “Jamming signal”, чтобы предотвратить дальнейшее передаче данных.

  1. Пересылка кадров либо после 0 секунд или 51.2μs, выбранных наугад.

  2. Если это не удается, повторно рамки либо после 0s, 51.2μs, 102.4μs или 153.6μs.

  3. Если это все еще не работает, повторно кадр после к · 51.2μs, где к является случайным числом между 0 и 23 - 1.

  4. В общем, после неудачной c-той попытки, повторно кадр после к · 51.2μs, где k является случайным числом между 0 and 2c − 1 , где c – номер коллизии

bool результат = послатьКадрПосле(случайноеЗначениеИз(0s; 51.2μs));

if (результат <> true )

then

bool второйРезультат = послатьКадрПосле (случайноеЗначениеИз (0s; 51.2μs; 102.4μs; 153.6μs ));

if (второйРезультат <> true )

then begin

int k = случайноеЗначениеИз(0; 23 -1;)

bool третийРезультат = послатьКадрПосле (к · 51.2μs);

end;

if (третийРезультат <> true )

then begin

int k = случайноеЗначениеИз(0; 2c-1;)

bool третийРезультат = послатьКадрПосле (к · 51.2μs);

end;