В рамках данной работы вы будете реализовывать клиентскую и серверную части нескольких широко используемых протоколов, основанных на UDP:
Основной проверкой будет работа с уже существующими реализациями.
Реализуемые каждым студентом клиент и сервер должны работать с разными протоколами.
RFC
Все выбранные для данного задания протоколы имеют подробно описание в соответствующих Request for Comments (RFC). Стоить отметить, что многие из данных протоколов появились на заре развития интернета и за долгое время претерпели значительные изменения, DNS тому отличный пример.
Для облегчения навигации обсудим важные секции заголовка многих из таких RFC.
Obsoleted by:
- рассматриваемый RFC целиком устарел и основными документами стоит считать указанныеObsoletes:
- ссылка на старую версию RFC, заменяемую текущейUpdated by:
- список RFC, вносящих коррективы в отдельные части рассматриваемого RFCUpdates:
- ссылка на основную версию RFC, в которую вносятся данные измененияErrata Exist
- для рассматриваемого RFC существуют правки, доступные в шапке -[Errata]
На момент создания данной страницы мы указываем ссылки на последние основные RFC (т.е. для них нет Obsoleted by
).
DHCP
RFC: 2131
Клиенту не требуется реально устанавливать ip узла* TODO: проверить не нужно ли клиенту отвечать с нового IP адреса.
Популярные имлементации:
- Self Hosted серверы:
- isc dhcp server (dhcpd)
DNS
В рамках данного задания не нужно реализовывать все спецификации DNS.
Для сервера и клиента требуется реализовать только следующие типы записей: A
, MX
, AAAA
, TXT
Серверу достаточно отвечать только запросы к одному доменному имени и заранее заложенными значениями, т.е. нет необходимости реализовывать полноценный процесс разрешения имени.
Популярные имлементации:
- Клиенты:
- drill
- dig
- nslookup
- Публичные серверы:
- 1.1.1.1
- 8.8.8.8
- Self Hosted серверы:
- bind9 (named)
- dnsmasq
TFTP
RFC:
Популярные имлементации:
- Linux (в Ubuntu:
apt search tfpt
): - Windows
- Клиент - встроенный компонент (нужно включить в компонентах windows)
NTP
RFC: 5905
В реализации сервера нет необходимости гарантировать точное время, подходит время сервера.
Популярные имлементации:
- https://www.pool.ntp.org/ - пул публичных серверов
- Клиенты встроены в большинство настольных ОС
- chrony - открытые сервер и клиент
- Список лучших общедоступных серверов времени
SNMP
RFC: v1: 1157, v2: 1901, v3: 3411
Популярные имлементации:
- TODO: примеры реализаций для каждого из приведённых протоколов
- TODO: подробные требования к реализации (subset требуемых фич)
- TODO(?): готовые сетапы для тестирования (скорее всего vagrant)