Сетевые Технологии
Программа лабораторных занятий
IV Семестр (2 курс)

Автор: Антон Злыгостев
ФИТ НГУ

Источники: Михаил Родионов
Игорь Журавлев
Опубликовано: 04.03.2003
Версия текста: 1.31

I. Сетевой уровень
1. ARP
2. ICMP
3. IP
4. DNS
5. DNS + ICMP
6. Стек протоколов
II. Транспортный уровень
7. UDP
8. TCP
9. Реализация потокового протокола поверх UDP
III. Прикладной уровень
10. Упражнения с утилитами
11. Проверка обновлений.
12. Chat

Наполнил зернами бессмертный Ловчий сети,
И дичь попала в них, польстясь на зерна эти.
Назвал он эту дичь людьми и на нее
Взвалил вину за зло, что сам творит на свете.
Омар Хайям, рубаи ©198, пер. О.Румера

I. Сетевой уровень

Цели данного раздела:

  1. Дать студентам понимание работы стека протоколов TCP/IP и отдельных протоколов, его составляющих
  2. Обучить их работе со стандартными сетевыми утилитами командной строки

Все упражнения рассчитаны на выполнение на занятии.

Упражнения 1-5 демонстрируют использование соответствующих протоколов. В упражнении 6 (его первая часть может быть выполнена в время выполнения первых четырех упражнений) студенты <заглядывают внутрь> этих протоколов. Вторая часть упражнения 6 знакомит студентов с более сложными случаями использования стека протоколов. Ее надо использовать для:

  1. Демонстрации того, как протоколы в стеке используют друг друга
  2. Обучению пользованию утилитой Ethereal
  3. Обсуждения элементарных представлений о безопасности сетевых коммуникаций (в слишком глубокие подробности вдаваться не стоит, соответствующий курс у них будет только через год)

Все задания в этом разделе рассчитаны на выполнение за 4 занятия.

1. ARP

Определить MAC-адрес по IP-адресу 192.168.200.12 (или по любому другому)

Материалы: STD 0037, утилита "arp" (WinHelp/man)

2. ICMP

  1. Определить задержку передачи от ccfit.nsu.ru до taurus.novosoft.ru, taurus2.novosoft.ru, microsoft.com, пользуясь ping.
  2. Выяснить, через сколько узлов проходят пакеты от терминального класса до novosoft.ru, microsoft.com,
  3. Выяснить, какой из участков сети вызывает макс. задержку при обмене с microsoft, при помощи pathping.
  4. Теоретический вопрос: Как реализовать передачу данных с хоста А на хост Б средствами ICMP?

Материалы: RFC 0792

3. IP

Выяснить, на каких портах есть открытые соединения (командой netstat)

  1. На локальной машине
  2. На ccfit.nsu.ru

4. DNS

Выяснить DNS и IP адрес сервера (серверов), отвечающих за входящую почту в указанном домене при помощи nslookup/dig. Домен выбрать по усмотрению преподавателя.

  1. Любой. Желательно, чтобы MX-записи не совпадали с A-записями, и чтобы их было более чем 1.)
  2. mail.ru
  3. hotmail.com
  4. nsu.ru
  5. ccfit.nsu.ru
  6. novosoft.ru

Материалы: RFC 1034, RFC 1035

5. DNS + ICMP

Используя ICMP и DNS (ping и nslookup) продемонстрировать список пингуемых в заданном домене узлов. Также список должен включать в себя информацию о том, какие узлы домена являются почтовыми серверами. Рекомендуется выдать студентам различные домены во избежание повторного использования результатов.

На тройку: привести сам список

На четверку: продемонстрировать процесс получения списка при помощи nslookup и ping

На пятерку: написать скрипт или программу для автоматизации процесса.

Материалы: RFC 1034, RFC 1035, RFC 2821 section 5

6. Стек протоколов

  1. Продемонстрировать работу вышеперечисленных протоколов при помощи перехватчика пакетов Ethereal на примере тех же задач. Рассказать, какое место в стеке протоколов занимает каждый протокол.
  2. Продемонстрировать передачу пароля по FTP, HTTP, POP3 используя Ethereal. (Использовать стандартных клиентов данных протоколов.)

Материалы: RFC 894; Ethereal Users Guide

II. Транспортный уровень

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

Задачи даны по нарастанию сложности. Важно контролировать как понимание принципов работы протоколов, так и библиотек реализации. Особое внимание уделить вопросам корректности работы сетевых приложений, таким как:

7. UDP

Написать приложение, которое показывает количество запущенных копий себя в локальной сети. (1 занятие)

Материалы:

8. TCP

Реализовать передачу/прием данных:

  1. Написать приложение, которое "слушает" на указанном порту. При открытии соединения читает из порта, данные никуда не сохраняет, постоянно выводит мгновенную/среднюю скорость передачи. (1 занятие)
  2. Написать приложение, которое умеет передавать указанный файл на указанный IP адрес/порт, используя TCP. (1 занятие)
  3. Модифицировать приложение 1 для одновременного приема данных с нескольких клиентов.

Материалы:

9. Реализация потокового протокола поверх UDP

Реализовать свой потоковый протокол с гарантией доставки поверх UDP. Сравнить быстродействие с TCP, модифицировав программы из задания 8 для использования этого протокола. Модифицировать программу так, чтобы она сохраняла данные в указанный файл, и использовать это для сравнения отправленного/принятого файла значительной длины при наличии сбоев в работе сети (2 занятия)

III. Прикладной уровень

Задачи этого раздела направлены на ознакомление с основными прикладными протоколами Internet. Первая задача (точнее, набор упражнений) дает возможность "заглянуть внутрь" прикладных протоколов и играет такую же роль в понимании соответствующих RFC, как сниффер в понимании работы протоколов более низких уровней.

10. Упражнения с утилитами

1 занятие на все:

POP3

Забрать почту через POP3, пользуясь telnet.

Материалы: RFC 1939

SMTP

Отправить почтовое сообщение через SMTP на адрес преподавателя, пользуясь Telnet.

Материалы: RFC 2821

FTP

Продемонстрировать разницу между активным и пассивным режимами работы FTP-сервера

Материалы: STD 0009

HTTP

Используя программу telnet, получить главную страницу сервера stud.novosoft.ru

Материалы: RFC 2616

11. Проверка обновлений.

Написать приложение для проверки обновления опубликованных данных. Общий алгоритм таков: с заданным интервалом приложение должно соединиться с отслеживаемым сервером, и проанализировать, произошли ли изменения с заданного момента. В случае обнаружения изменений вывести на экран соответствующую информацию. Компонент, выполняющий непосредственное соединение с сервером и проверку изменений, реализовать с учетом возможности легкой замены. Сделать любые две из следующих подзадач:

POP3

Проверка почты. Указывается POP3-подключение. Новизну почты проверять, анализируя заголовки received-by, и сравнивая со временем "последнего прочитанного".

Материалы: RFC 1939

IMAP

То же самое, но на IMAP сервере. Использовать флаг \Recent для определения новой почты

Материалы: RFC 2060

HTTP

Указывается URL,. Следить за указанным файлом на HTTP и при его изменении скачать его в текущий локальный фолдер.

+ Дополнительный бонус за выбор регулярности проверки на основе заголовка Content-Expiration

Материалы: RFC 2616

FTP

То же самое. Дополнительно указывается имя пользователя и пароль.

Материалы: STD 0009

12. Chat

Написать multi-room chat систему, используя IMAP. Использовать соответствия фолдер - комната; письмо - сообщение.

Материалы: RFC 2060