Часть 1. Описание используемого программного обеспечения.
Введение.
Цель создания данного методического пособия – описание курса лабораторных работ по предмету «Сети ЭВМ и телекоммуникации» для более успешного освоения материала. Курс предназначен для студентов средних и старших курсов.
Перед началом выполнения лабораторных работ студент должен иметь элементарное представление о принципах передачи информации в сетях, знать модель взаимодействия открытых систем ISO, протоколы канального, сетевого, транспортного и прикладного уровней, стек протоколов TCP/IP.
В лабораторных работах используется прикладное ПО и команды, работу которых также необходимо изучить перед началом выполнения работ; часть первая данного методического пособия.
Предполагается, что после выполнения курса работ студент:
1. Научится фиксировать сетевой трафик по указанным критериям и проводить анализ трафика при помощи программы Ethereal.
2. Изучит структуру пакета IP, назначение полей заголовка пакета на примере работы реальной сети.
3. Изучит назначение и функционирование протоколов ARP и DNS, формат пакетов протоколов.
4. Изучит назначение и функционирование утилит tracert и ping, использующих протокол ICMP.
5. Изучит назначение и особенности функционирования протокола транспортного уровня TCP.
6. Изучит взаимодействие хостов в рамках системы передачи почтовых сообщений Internet. Ознакомится с базовым набором команд и особенностями функционирования протоколов.
Часть 1. Описание используемого программного обеспечения.
Интерактивный браузер сетевого трафика «Ethereal».
Общие сведения.
Данное ПО позволяет в режиме реального времени захватывать пакеты из сети, и анализировать их структуру. Также можно анализировать структуру пакетов из файла, содержащего трафик, полученный, например, программой «tcpdump».
Основное окно (см. Рисунок 1) делится на 3 фрейма (панели). Размер каждого фрейма можно менять по своему усмотрению.
Рисунок 1
- Верхняя панель
Верхняя панель содержит список пакетов, захваченных из сети. Список можно отсортировать по любому полю (в прямом или обратном порядке) - для этого нажать на заголовок соответствующего поля.
Каждая строка содержит следующие поля (по умолчанию):
· Порядковый номер пакета;
· Время поступления пакета;
· Источник пакета;
· Пункт назначения (адресат);
· Протокол;
· Информационное поле.
Список отображаемых полей настраивается в Edit/Perferencis/ Columns. Для того, чтобы изменения возымели эффект необходимо перезапустить программу, предварительно нажав кнопку Save.
При нажатии правой кнопки мыши на том или ином пакете, появится контекстное меню. Нажатием на среднюю кнопку мыши можно помечать группу интересующих нас пакетов.
- Средняя панель
Средняя панель содержит т.н. «Дерево протоколов» для выбранного в верхнем окне пакета. В этой панели в иерархическом виде отображается вложенность пакетов в соответствии с моделью взаимодействия открытых систем OSI. По нажатию на правую кнопку мыши вызывается контекстное меню.
- Нижняя панель
Нижняя панель содержит 16-ое представление выбранного пакета. При выборе того или иного поля в средней панели автоматически будет подсвечиваться соответствующий участок 16-ого представления.
Фильтры отображения.
Фильтры отображения представляют собой достаточно мощное средство отображения трафика. Фильтры задаются в строке, располагающейся внизу основного экрана. Простейший фильтр отображения, позволяет отобрать пакеты по тому или иному протоколу. Для этого в строке требуется указать название протокола (например IPX) и нажать кнопку «Aplay». После этого в верхнем окне останутся пакеты, принадлежащие этому протоколу. Кнопкой «Reset» действие фильтра отменяется.
Для работы с фильтрами можно вызвать окно Edit/Display Filters. Можно сохранять созданные выражения под определенными именами для последующего использования и т.д.
С помощью логических операций (синтаксис языка Си) можно составлять логические выражения. Логическая истина - 1, ложь - 0.
Список логических операций:
eq | == | Равенство |
ne | != | не равно |
gt | > | больше чем |
Lt | < | меньше чем |
ge | >= | больше равно |
Le | <= | меньше равно |
Например: tcp.port == 80 || tcp.port == 53
Структура окна захвата.
В окне задаются параметры для настройки режима захвата пакетов из сети.
Рисунок 2
Окно вызывается через меню Capture/Start, или по комбинации клавиш CTRL+K.
Рассмотрим основные параметры:
1. Interface
Выбирается сетевой интерфейс (реальный или виртуальный), через который будет осуществляться захват.
2. Filter
По нажатию на кнопку «Filter» можно применить тот или иной фильтр отбора (из ранее сохраненных). Если таковых не имеется, его можно указать явно в строке редактирования.
3. Update list of packets in real time
Обновление списка захваченных пакетов в режиме реального времени.
4. Набор параметров Capture limits
Позволяют задать то или иное значение при достижении, которого процесс захвата пакетов прекратится.
5. Набор параметров разрешения имен
Позволяют определить какие из способов разрешения имен должны использоваться.
Фильтры захвата
С помощью данных фильтров можно захватывать из сети только те пакеты, которые подходят под критерий отбора. Если не задано никакого фильтра, то будут захватываться все пакеты. В противном случае только пакеты, для которых указанное выражение будет истинным. Выражение состоит из одного или более примитивов разделенных пробельными символами.
Существует три различных типа примитивов:
Type
Спецификатор type определяет тип параметра. Возможные параметры:
· host;
· net;
· port.
Например:
host unicorn
net 172.23.0
port 20
Если не указано никакого типа предполагается что это параметр host.
Dir
Спецификатор определят направление передачи. Возможные направления:
· src;
· dst;
· src or dst;
· src and dst.
Например:
src unicorn
dst net 172.23
src or dst port ftp-data
Если не определено направление то предполагается направление «src or dst». Для протоколов типа point-to-point используются спецификаторы inbound и outbound.
Proto
Спецификатор определят тип протокола, которому принадлежит пакет.
Возможные протоколы:
· ether;
· fddi;
· tr;
· ip/ipv6;
· arp/rarp;
· decent;
· tcp;
· udp.
Например:
ether src unicorn
arp net 128.3
tcp port 21
Если протокол не определен, то будут захватываться пакеты всех протоколов. То есть: «src unicorn» означает «(ip or arp or rarp) src unicorn», «net bar» означает «(ip or arp or rarp) net bar» «port 53» означает «(tcp or udp) port 53».
Также существует несколько специальных спецификаторов, которые не попадают в описанные выше случаи:
· gateway;
· broadcast;
· less;
· greater;
· арифметические выражения.
Сложные фильтры захвата строятся с использованием логических выражений and, or and not.
Например:
host foo and not port ftp and not port ftp-data
Полный список примитивов:
Dst host host
Истина, если поле назначения пакета IPv4/v6 равно указанному
значению host.
Src host host
Истина, если поле адресата пакета IPv4/v6 равно указанному значению host.
Host host
Истина, если поле адресата ИЛИ источника пакета IPv4/v6 равно указанному значению host.
Ether dst ehost
Истина, если MAC-адрес адресата равен указанному значению поля ehost.
Ether src ehost
Истина, если MAC-адрес источника равен указанному значению поля ehost.
Ether host ehost
Истина, если MAC-адрес источника ИЛИ адресата равен указанному значению поля ehost.
Gateway host
Истина, если пакет использует указанный host как гейтвей.
Dst net net
Истина, если адрес назначения пакета IPv4/v6 - номер сети net.
Src net net
Истина, если адрес источника пакета IPv4/v6 - номер сети net.
Net net
Истина, если адрес источника ИЛИ назначения IPv4/v6 - номер сети net.
Net net mask mask
Истина, если IP адрес совпадает c сетью net и подходит под указанную маску сети mask. (только для IPv4).
Net net/len
Истина, если адрес назначения пакета IPv4/v6 является адресом сети net, с заданной маской /len, где len-число бит отведенных под номер сети. Может быть дополнено спецификатором dir (src или dst).
Dst port port
Истина, если пакет – пакет протоколов ip/tcp, ip/udp, ip6/tcp или ip6/udp и его порт назначения port. Значение порта может быть указано как число (/etc/services).
Например: dst port 513
Src port port
Истина, если пакет – пакет протоколов ip/tcp, ip/udp, ip6/tcp или ip6/udp и его порт источника port. Значение порта может быть указано
как число (/etc/services).
Например: src port 513
Port port
Истина, если номер порта соответствует указанному значению port.
Направление передачи не учитывается.
Less length
Истина, если длинна пакета меньше или равна указанному значению
length. len <= length
Greater length
len >= length
Ip proto protocol
Истина, если пакет является пакетом IP. Значение параметра protocol может быть следующее icmp, icmp6, igmp, igrp, pim,ah, esp, udp, или tcp.
Ether broadcast
Истина, если пакет - широковещательный (ключевое слово ether можно опустить)
Ip broadcast
Истина, если пакет - широковещательный пакет IP.
Ether multicast
Истина, если пакет - мультикастовый.
Ip multicast
Истина, если пакет - мультикастовый пакет IP.
Tcp, udp, icmp
Сокращения для: ip proto p or ip6 proto p, где p один из перечисленных выше протоколов.
Expr relop expr
Истина, если результат выражения true. relop - логическая операция >, <, >=, <=, =, !=, а expr - арифметическое выражение, константа или выражение полученное с помощью арифметических операций +, -, *, /, &, |. Для доступа к данным, находящимся внутри пакета используется следующий синтаксис:
proto [expr : size]
· proto - протокол - ether, fddi, tr, ip, arp, rarp, tcp, udp, icmp.
· expr - байт смещения от начала пакета.
· size - опциональный параметр, означает количество байт в интересующем поле пакета. По умолчанию - 1.
Примитивы могут объединятся посредством логических операций. Список операций:
not | ! | отрицание |
and | && | конкатенация (логическое И) |
or | || | альтернатива (логическое ИЛИ) |
Примеры фильтров захвата.
1. Захват всех пакетов на сетевом интерфейсе хоста sundown:
host sundown
2. Захват трафика между хостом helios И хостами hot ИЛИ ace:
host helios and ( hot or ace )
3. Захват всех IP-пакетов между хостом ace и каждым хостом за исключением helios:
ip host ace and not helios
4. Захват всего ftp-трафика проходящего через Internrt-гейтвей snup:
gateway snup and (port ftp or ftp-data)
5. Захват пакетов ни сгенерированных ни адресованных локальными хостами:
ip and not net localnet
6. Захват IP-пакетов размером больше чем 576 байт, проходящих через гейтвей snup:
gateway snup and ip[2:2] > 576
7. Захват всех ICMP пакетов, за исключением пакетов ping:
icmp[0] != 8 and icmp[0] != 0
Команда arp.
Команда ARP позволят просматривать и изменять информацию содержащуюся в таблицах ARP (т.н. «Internet-to-Ethernet address translation tables») используя протокол разрешения адресов ARP (address resolution protocol).
Без параметров команда выводит текущее состояние таблицы адресов для данного хоста. Хост может быть задан сетевым адресом, либо символьным именем.
Синтаксис:
arp -aarp -d inet_addrarp -s inet_addr ether_addr Основные параметры:§ -a – Выводит текущее состояние таблицы ARP. Информация выводится по каждому интерфейсу в системе. Если указан IP-адрес, выводится информация только по указанному адресу.
§ -d - Удаляет запись об указанном IP-адресе из таблицы ARP. * - удаляет все записи.
§ -s - inet_addr ether_addr - Создает запись в таблице ARP. inet_addr – числовой составной адрес. ether_addr – аппаратный адрес, представленный шестью 16-ричными числами.
Команда ping.
Посылает ECHO_REQUEST датаграммы для получения ICMP протоколом ответа ICMP ECHO_RESPONSE с узла или шлюза, с целью определить, существует ли в данный момент соединение локального компьютера с удаленным хостом, а также время прохождения информации (пакетов) до него.
Эта команда предназначена для использования при тестировании сетей, управления сетями и измерения характеристик работы сети.
Синтаксис:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] destination-list
Основные параметры:
§ -t - Не прекращать работу до принудительного завершения пользователем. Для просмотра статистики и продолжения работы - Control-Break. Для прекращения работы - Control-C.
§ -a - Разрешать числовые составные адреса в символьные имена.
§ -n count - Остановить работу после передачи count пакетов ECHO_REQUEST, ping ждет count пакетов ECHO_REPLY, пока не закончится таймаут.
§ -l size - Определяет размер пакетов для пересылки. По умолчанию 24, преобразующиеся в 32 ICMP байтов данных при комбинации с 8 байтами ICMP заголовка.
§ -i TTL - Устанавливает время жизни IP для пакетов.
§ -v TOS - Устанавливает качественную связь. RFC1349 определяет следующие значения:
§ 0-зарезервировано;
§ 1-4 - тип сервиса;
§ 5-7 для предпочитаемых значений.
Возможные значения для типа сервиса:
§ минимальное время: 0x02,
§ надежность: 0x04;
§ пропускная способность: 0x08;
§ задержка: 0x10.
Установка нескольких битов TOS не должна производиться одновременно. Возможный диапазон для особых предпочитаемых значений: от приоритетного (0x20) до сетевого управления (0xe0).
§ -r count - Показать буфер маршрута для возвращенных пакетов. Принимаемые параметры ключа от 1 до 9; - количество записей буфера. Многие узлы игнорируют или не обрабатывают этот параметр.
§ -s count - Устанавливает специальную временную метку IP. Принимаемые значения ключа от 1-4; - количество временных меток на каждый ECHO_REQUESTпакет.
§ -w timeout - Ожидать timeout миллисекунд пакета ECHO_REPLYна каждыйECHO_REQUESTпакет.
Если ping не получает ответных пакетов, то она завершит работу с кодом выхода 1. Иначе программа завершает работу с кодом 0. Эти значения позволяют использовать коды выхода для определения работоспособности серверов и компьютеров в программах и скриптах.
Описание пакетов ICMP
Заголовок IP без параметров имеет размер в 20 байтов. Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов к ICMP заголовку, сопровождаемые случайным количеством данных. Когда задано packetsize , то определяется и размер дополнительного блока данных. Поэтому количество принятых данных внутри IP пакета типа ICMP ECHO_REPLY всегда будет на 8 байтов больше, чем заданный ( ICMP заголовок).
Если размер данных всего 8 байт, то ping использует их для включения временной метки, используемой для измерения времени прохода. Если указано менее 8 байт, то время прохода не будет определено.
TTL
Значение TTL для IP пакетов есть то максимальное количество IP маршрутизаторов, через которое пакет еще будет пытаться проходить, а не считаться утерянным. Каждый маршрутизатор в сети уменьшает поле TTL четко на единицу.
Спецификация TCP/IP определяет, что поле TTL для пакетов TCP должно быть установлено в 60, но многие системы используют меньшие значения (4.3 BSD использует 30, 4.2 использует 15).
Максимальное значение данного поля равно 255, и многие системы устанавливают поле TTL для пакетов ICMP ECHO_REQUEST в 255.
При нормальных операциях ping выводит значения времени жизни принятых (возвращенных) пакетов. Когда удаленная система принимает пакет, она может сделать одну из трех возможных операций с полем TTL в ответ:
· Не изменять его; это делали системы Berkeley Unix до выпуска BSD 4.3 tahoe TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов.
· Устанавливает его в 255; это то, что системы Berkeley Unix делают сейчас. В этом случае значение TTL в принятом пакете будет 255 минус количество пройденных маршрутизаторов от удаленной системы до ping-уемого компьютера.
· Устанавливает его в какое-либо другое значение. Некоторые машины используют то же значение для пакетов ICMP , что они используют для TCP пакетов, например либо 30 либо 60. Некоторые могут использовать вообще непредсказуемые значения.
Команда tracert.
Данная команда позволяет "протрассировать", т.е. проследить путь прохождения информации (пакетов) до указанного хоста в сети.
Синтаксис:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
Опции:
§ -d – Не разрешать составные числовые адреса в символьные имена.
§ -h maximum_hops – Максимальное количество хопов, которое можно совершить в поисках хоста.
§ -w timeout – Ожидать каждого ответа timeout миллисекунд.
Команда tracert выводит путь прохождения пакетов в сети и время отклика от каждого промежуточного "узла" в миллисекундах. Таким образом, при проблемах с доступом к определенному хосту можно определить, в каком месте сети происходит "затор".
Примечание. Некоторые сайты специальным образом закрыты от команды tracert.
Список литературы.
1. Компьютерные сети. Принципы, технологии, протоколы / В.Г. Олифер, Н.А. Олифер. – Спб; Издательство «Питер», 2000 (http://sk2.tpi.trg/discipl/telecomm.html)
2. Сети ЭВМ: протоколы, стандарты, интерфейсы. / Ю.Блэк.- М.; Мир, 1990.
3. man tcpdump (http://www.tcpdump.org/tcpdump_man.html).
4. http://www.opennet.ru/ - удобный поиск по существующим man-страницам (протоколы, команды etc.)
Введение.
Цель создания данного методического пособия – описание курса лабораторных работ по предмету «Сети ЭВМ и телекоммуникации» для более успешного освоения материала. Курс предназначен для студентов средних и старших курсов.
Перед началом выполнения лабораторных работ студент должен иметь элементарное представление о принципах передачи информации в сетях, знать модель взаимодействия открытых систем ISO, протоколы канального, сетевого, транспортного и прикладного уровней, стек протоколов TCP/IP.
В лабораторных работах используется прикладное ПО и команды, работу которых также необходимо изучить перед началом выполнения работ; часть первая данного методического пособия.
Предполагается, что после выполнения курса работ студент:
1. Научится фиксировать сетевой трафик по указанным критериям и проводить анализ трафика при помощи программы Ethereal.
2. Изучит структуру пакета IP, назначение полей заголовка пакета на примере работы реальной сети.
3. Изучит назначение и функционирование протоколов ARP и DNS, формат пакетов протоколов.
4. Изучит назначение и функционирование утилит tracert и ping, использующих протокол ICMP.
5. Изучит назначение и особенности функционирования протокола транспортного уровня TCP.
6. Изучит взаимодействие хостов в рамках системы передачи почтовых сообщений Internet. Ознакомится с базовым набором команд и особенностями функционирования протоколов.
Часть 1. Описание используемого программного обеспечения.