Skip to content

ifmo-ctd-2012-networks/labs

Repository files navigation

Первая лабораторная

UDP Broadcast Announce.

Каждый экземпляр программы с периодичностью 1 раз в 5 секунд рассылает UDP broadcast сообщение со следующей информацией:

  • MAC ADDRESS, (6 bytes BE)
  • Hostname string length, (1 byte)
  • Hostname, (UTF-8 string)
  • UNIX Timestamp,

Каждый экземпляр ведет актуальный список имеющихся в сети экземпляров других экземпляров, включая себя. И обновляет его каждые 5 секунд. Список сортируется по MAC address. Ведется счетчик пропущенных announce-packet от каждого хоста в списке, если количество пропущенных пакетов достигает 5, экземпляр ударяется из списка. На одном хосте может быть запущен только 1 экземпляр. При проектировании разнести по разным потокам серверную часть, клиентскую часть, вывод. Вывод можно оставить консольный.

Сделанную лабу оттестировать, и залить в репозиторий в свою папку в подпапку Lab1.

Вторая лабораторная

Реализовать распределённое вычисление числа п. Нужно на базе стека TCP/IP имитировать виртуальную token ring-сеть.

  1. Инициализация (удобно с помощью UDP broadcast), генерация токена.

  2. Каждый узел вычисляет 20 цифр в числе п. Нужно передать всё число п, вычисленное раньше, и прибавить свои 20 знаков.

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

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

Задание делается в группах до семи человек, совместимость нужна внутри группы.