Проектная лаборатория

Собственный DNS-сервер

0 / 8этапов пройдено

Этап 07 · Основные этапы

Разбор сжатого пакета

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе мы разберём раздел вопросов DNS, в котором последовательности меток сжаты. Вы получите несколько вопросов и должны разобрать их, а затем вернуть такой же раздел вопросов (сжатие не требуется) вместе с ответами. В разделе ответов верните запись типа A для каждого вопроса. Значения этих записей A можно выбрать произвольно.

Поскольку структура разделов вопросов и ответов уже известна из предыдущих этапов, здесь мы приведём только общее описание входящего пакета и ожидаемого ответа.

Тестирующая система отправит следующий пакет:

| ------------------------------------------ |
| Header                                     |
| ------------------------------------------ |
| Question 1 (un-compressed label sequence)  |
| ------------------------------------------ |
| Question 2 (compressed label sequence)     |
| ------------------------------------------ |

В ответ тестирующая система ожидает:

| ------------------------------------------ |
| Header                                     |
| ------------------------------------------ |
| Question 1 (un-compressed label sequence)  |
| ------------------------------------------ |
| Question 2 (un-compressed label sequence)  |
| ------------------------------------------ |
| Answer 1 (un-compressed label sequence)    |
| ------------------------------------------ |
| Answer 2 (un-compressed label sequence)    |
| ------------------------------------------ |

Сжимать ответ не требуется. Мы никогда не попросим сделать что-либо, что приведёт к превышению ограничения на размер UDP-буфера, поэтому о сжатии ответного пакета можно не беспокоиться. Если же хочется дополнительной сложности, можете сжимать DNS-пакет: тестирующая система поддерживает и такой вариант.

Тип вопроса всегда будет A, а класс — IN.

Механизм сжатия описан в этом разделе RFC.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init dns-server ./my-dns-server --language go

2. Откройте папку в IDE

cd ./my-dns-server

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage yc9

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста