В лабораторной работе предлагается исследовать ряд аспектов протокола ICMP:
- ICMP-сообщения, генерируемые программой Ping
- ICMP-сообщения, генерируемые программой Traceroute
- Формат и содержимое ICMP-сообщения
Программа Ping на исходном хосте посылает пакет на целевой IP-адрес; если хост с этим адресом активен, то программа Ping на нем откликается, отсылая ответный пакет хосту, инициировавшему связь. Оба этих пакета Ping передаются по протоколу ICMP.
Выберите какой-либо хост, расположенный на другом континенте (например, в Америке или
Азии). Захватите с помощью Wireshark ICMP пакеты от утилиты ping.
Для этого из командной строки запустите команду (аргумент -n 10
означает, что должно быть
отослано 10 ping-сообщений): ping –n 10 host_name
Для анализа пакетов в Wireshark введите строку icmp в области фильтрации вывода.
- Каков IP-адрес вашего хоста? Каков IP-адрес хоста назначения?
- Почему ICMP-пакет не обладает номерами исходного и конечного портов?
- Рассмотрите один из ping-запросов, отправленных вашим хостом. Каковы ICMP-тип и кодовый
номер этого пакета? Какие еще поля есть в этом ICMP-пакете? Сколько байт приходится на поля
контрольной суммы, порядкового номера и идентификатора?
- Рассмотрите соответствующий ping-пакет, полученный в ответ на предыдущий.
Каковы ICMP-тип и кодовый номер этого пакета? Какие еще поля есть в этом ICMP-пакете?
Сколько байт приходится на поля контрольной суммы, порядкового номера и идентификатора?
Программа Traceroute может применяться для определения пути, по которому пакет попал с исходного на конечный хост.
Traceroute отсылает первый пакет со значением TTL = 1, второй – с TTL = 2 и т.д. Каждый маршрутизатор понижает TTL-значение пакета, когда пакет проходит через этот маршрутизатор. Когда на маршрутизатор приходит пакет со значением TTL = 1, этот маршрутизатор отправляет обратно к источнику ICMP-пакет, свидетельствующий об ошибке.
Задача – захватить ICMP пакеты, инициированные программой traceroute, в сниффере Wireshark.
В ОС Windows вы можете запустить: tracert host_name
Выберите хост, который расположен на другом континенте.
- Рассмотрите ICMP-пакет с эхо-запросом на вашем скриншоте. Отличается ли он от ICMP-пакетов
с ping-запросами из Задания 1 (Ping)? Если да – то как?
- Рассмотрите на вашем скриншоте ICMP-пакет с сообщением об ошибке. В нем больше полей,
чем в ICMP-пакете с эхо-запросом. Какая информация содержится в этих дополнительных полях?
- Рассмотрите три последних ICMP-пакета, полученных исходным хостом. Чем эти пакеты
отличаются от ICMP-пакетов, сообщающих об ошибках? Чем объясняются такие отличия?
- Есть ли такой канал, задержка в котором существенно превышает среднее значение? Можете
ли вы, опираясь на имена маршрутизаторов, определить местоположение двух маршрутизаторов,
расположенных на обоих концах этого канала?
Напишите консольное приложение, которое выведет IP-адрес вашего компьютера и маску сети на консоль.
todo
Выведите все доступные (свободные) порты в указанном диапазоне для заданного IP-адреса. IP-адрес и диапазон портов должны передаваться в виде входных параметров.
todo
Разработать приложение, подсчитывающее количество копий себя, запущенных в локальной сети. Приложение должно использовать набор сообщений, чтобы информировать другие приложения о своем состоянии. После запуска приложение должно рассылать широковещательное сообщение о том, что оно было запущено. Получив сообщение о запуске другого приложения, оно должно сообщать этому приложению о том, что оно работает. Перед завершением работы приложение должно информировать все известные приложения о том, что оно завершает работу. На экран должен выводиться список IP адресов компьютеров (с указанием портов), на которых приложение запущено.
Приложение считает другое приложение запущенным, если в течение промежутка времени, равного нескольким интервалам между рассылками широковещательных сообщений, от него пришло сообщение.
*Такое приложение может быть использовано, например, при наличии ограничения на количество лицензионных копий программ.
Пример GUI:
todo
Пусть за период времени, в который изменяется скорость соединения с
- Докажите, что частота потери
$L$ (доля потерянных пакетов) равна$$L = \dfrac{1}{\frac{3}{8} W^2 + \frac{3}{4} W}$$ - Используйте выше полученный результат, чтобы доказать, что, если частота потерь равна
$L$ , то средняя скорость приблизительно равна$$\approx \dfrac{1.22 \cdot MSS}{RTT \cdot \sqrt{L}}$$
todo
Рассмотрим модификацию алгоритма управления перегрузкой протокола TCP. Вместо
аддитивного увеличения, мы можем использовать мультипликативное увеличение.
TCP-отправитель увеличивает размер своего окна в небольшую положительную
константу
- Найдите функциональную зависимость между частотой потерь
$L$ и максимальным размером окна перегрузки$W$ . - Докажите, что для этого измененного протокола TCP, независимо от средней пропускной
способности, TCP-соединение всегда требуется одинаковое количество времени для
увеличения размера окна перегрузки с
$\frac{W}{2}$ до$W$ .
todo