Задачи

Для допуска экзамену в течение семестра надо сдать 3 задачи из каждой темы.

  1. низкий уровень, задачи 1 – 3.
  2. система доменных имен, задача 4.
  3. прикладные протоколы и API, задачи 5 – 8.

Можно сдавать больше задач, набирая баллы за работу в семестр.

Общие замечания

  1. Язык реализации любой.
  2. Документация, справка по использованию.
  3. Тестирование (примеры запуска).
  4. Не использовать готовые модули, решающие существенную часть задачи.
  5. Со студентами, поступающими нечестно, преподаватели имеют право поступить справед- ливо. База задач за последние 5 лет у нас хранится.

Задачи

  1. Стоимость = 8 баллов. Трассировка автономных систем. Пользователь вводит доменное имя или IP адрес. Осуществляется трассировка до указанного узла (например, с использованием tracert), т. е. мы узнаем IP адреса маршрутизаторов, через которые проходит пакет. Необходимо определить к какой автономной системе относится каждый из полученных IP адресов маршрутизаторов. Для определения номеров автономных систем обращаться к базам данных региональных интернет регистраторов.

    Выход: для каждого IP-адреса – вывести результат трассировки (или кусок результата до появления ***), для “белых” IP-адресов из него указать номер автономной системы.

    В итоге должна получиться такая таблица

    # по порядку IP AS
         

    Стоимость = 10 баллов. То же, что на 8 баллов + определять страну и провайдера.

  2. Стоимость = 8 баллов. Сервер точного времени, который «врет» на заданное в своем конфи- гурационном файле число секунд. Сервер прослушивает 123 порт UDP. Время сервер узнает либо у ОС, либо у другого надежного сервера точного времени, например, time.windows.com. В конфигурационном файле сервера указано, на сколько секунд он должен «врать», т. е. из точного времени сервер вычитает или прибавляет указанное число секунд.

  3. Сканер TCP и UDP портов. Стоимость = 5 баллов. Определить, какие TCP порты открыты в заданном диапазоне.

    Стоимость = 10 баллов. То же, что на 5 баллов + параллельная реализация + проверять UDP порты. Если послать UDP-пакет на закрытый порт, система ответит сообщением ICMP «порт недоступен». Отсутствие такого сообщения можно истолковать как сигнал того, что порт от- крыт. С UDP портами может возникнуть проблема – если порт блокируется брандмауэром, метод неверно покажет, что порт открыт. Если заблокированы ICMP-сообщения о недоступности порта, все порты будут казаться открытыми. Также, может быть установлено ограничение на частоту использования ICMP-пакетов, что также влияет на результаты, даваемые методом. Такие проблемы (в реальной среде) не являются препятствием для сдачи задачи, но в специально подготовленной среде (например, сервер поднят на localhost) сканер UDP портов должен правильно работать.

    Стоимость = 15 баллов. То же, что на 10 баллов + определять протокол, который работает на открытом порте. Имеется в виду не «приписывать» номеру хорошо известных портов имена соответствующих протоколов, а реально определять протокол, посылая запрос (возможно некорректный) и анализируя ответ. Если http сервер будет запущен на 110 TCP порту, это надо уметь понимать. Достаточно распознавать http, smtp, pop3, dns, sntp.

  4. Стоимость = 20 баллов. Кэширующий DNS сервер. Сервер прослушивает 53 порт. При первом запуске кэш пустой. Сервер получает от клиента рекурсивный запрос и выполняет разрешение запроса. Получив ответ, сервер разбирает пакет ответа, извлекает из него ВСЮ полезную информацию, т. е. все ресурсные записи, а не только то, о чем спрашивал клиент. Полученная информация сохраняется в кэше сервера. Например, это может быть два хэш-массива.

    Доменное имя IP адрес
       
    IP адрес Доменное имя
       

    Сервер регулярно просматривает кэш и удаляет просроченные записи (использует поле TTL). Сервер не должен терять работоспособность (уходить в бесконечное ожидание, падать с ошибкой и т. д.), если старший сервер почему-то не ответил на запрос. Во время штатного выключения сервер сериализует данные из кэша, сохраняет их на диск. При повторных запусках сервер считывает данные с диска и удаляет просроченные записи, инициализирует таким образом свой кэш.

  5. Стоимость = 10 баллов. SMTP клиент. В отдельной папке лежит конфигурационный файл, текстовый файл с письмом и файлы-аттачменты (картинки, документы и т. д.). В текстовом файле пользователь пишет письмо (plain text) на английском или русском языке. В конфигураци- онном файле пользователь задает адрес получателя(лей), тему (возможно на русской языке) и имена файлов-аттачментов для отсылки в виде вложения.

    На сервера mail, yandex, rambler письма с вложениями должны доходить и быть читабельными.

  6. Стоимость = 10 баллов. POP3 клиент. Пользователю было послано письмо (на русском или английском языках) на почтовый сервер mail, yandex или rambler. В письмо было сделано вложение, например, картинка. Пользователь запускает программу для скачивания письма с почтового сервера. Может запросить заголовки: тему, дату, отправителя и т. п. Может запросить TOP (несколько строк) сообщения. Может скачать письмо с вложением.

  7. Стоимость = 10 баллов. HTTP proxy. Прокси сервер слушает порт, например, 8080. Браузер пользователя настроен работать через прокси сервер (в настройках прописать). Пользователь обращается к некоторому веб сайту, запрос отправляется прокси серверу. Прокси сервер, проанализировав запрос пользователя, передает запрос нужному веб серверу и, получив от него ответ, обрабатывает и обработанный ответ перенаправляет пользователю. Обработка заключается, например, в том, чтобы вырезать с сайта рекламные баннеры.

    Поскольку произвольного сайта затруднительно понять, где именно находится реклама, прокси может вырезать её, например, только с сайта e1.ru или только с сайта vk.com.

  8. Стоимость = 10 баллов. Использование API. Требуется, используя, API В Контакте (или Facebook, yandex) получить информацию и вывести ее в удобочитаемом виде. Например, вывести список друзей указанного пользователя, вывести названия фотоальбомов указанного пользователя и т. п.