Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

анализ сетевых протоколов

.pdf
Скачиваний:
54
Добавлен:
13.05.2015
Размер:
3.13 Mб
Скачать

2.4.Вопросы для самопроверки

1.Какую роль выполняет транспортный протокол TCP в сети

Internet?

2.Что такое скользящее окно?

3.Что такое сокет?

4.В чем отличие протокола передачи сообщений UDP от протокола TCP?

5.Что протокол ARP позволяет определить передающему узлу?

6.В чем отличие форматов ARP-запроса и ARP-ответа?

7.Что такое фрагментация? Какие средства протокола IP управляют фрагментацией?

8.Каково назначение полей «Номер последовательности» и «Номер последовательности подтверждения» заголовка TCP?

9.Для чего предназначен протокол ICMP? Перечислите основные типы сообщений протокола ICMP.

10.Каково назначение сетевого монитора?

11.Какая информация отображается в Окне сбора данных и Окне записи данных сетевого монитора?

12.Какие способы фильтрации пакетов при захвате реализованы

всетевом мониторе?

13.Какие параметры протокола TCP позволяют однозначно идентифицировать каждое соединение?

50

Лабораторная работа № 3

Анализ протоколов прикладного уровня

3.1. Цель работы

Целью работы является изучение прикладных протоколов стека TCP/IP и приобретение практических навыков анализа протоколов с помощью программы Network Monitor.

3.2.Теоретический материал

3.2.1.Описание протокола HTTP

3.2.1.1.Назначение и принцип работы протокола HTTP

Протокол прикладного уровня для передачи гипертекста HTTP (HyperText Transfer Protocol) был разработан как основа Всемирной паутины WWW (World Wide Web) – распределенной системы, предоставляющей доступ к связанным между собой документам, расположенным на веб-серверах Интернета. Большинство ресурсов Всемирной паутины представляет собой гипертекст. Гипертекстовые документы, размещаемые во Всемирной паутине, называются веб-страницами. Несколько web-страниц, объединенных общей темой, дизайном, а также связанных между собой ссылками и обычно находящихся на одном и том же веб-сервере, называются веб-сайтом. Для загрузки и просмотра веб-страниц используются специальные программы – браузеры.

Основой HTTP является технология «клиент–сервер», т.е. про- грамма-клиент инициирует соединение и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос, производит необходимые действия и возвращает клиенту HTTP-ответ с результатом.

Протокол HTTP никак не связан со способом визуализации вебстраниц и определяет только метод обмена информацией между клиентом и сервером. Служба WWW, помимо протокола HTTP, базируется еще на трех стандартах:

универсальном способе адресации ресурсов в сети URL (Universal Resource Locator);

языке гипертекстовой разметки документов HTML (HyperText Markup Language);

51

универсальном интерфейсе шлюзов CGI (Common Gateway Interface), обеспечивающем взаимодействия HTTP-сервера с другими программами (например, СУБД).

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

Протокол HTTP поддерживает постоянные и непостоянные соединения. Непостоянное соединение состоит из единственного сообще- ния-запроса и сообщения-ответа. Для получения веб-страницы требуется многократное установление и завершение соединения. При этом необходимо учитывать, что каждое соединение требует от протокола TCP выделения буфера, а также ряда служебных переменных как на стороне клиента, так и на стороне сервера. Так как многие вебсерверы параллельно обслуживают сотни клиентов, подобная схема серьезно затрудняет процесс взаимодействия между клиентами и сервером. Кроме того, установление соединения для каждого объекта из-за времени оборота приводит к дополнительным временным затратам.

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

По умолчанию протокол HTTP 1.1 настроен на использование постоянных соединений с конвейеризацией. Это позволяет новому запросу направляться к серверу, не дожидаясь окончания обслуживания других запросов. Аналогично сервер, получая новые запросы, начинает их немедленное обслуживание. Таким образом, уменьшается время установления соединения и значительно сокращается время простоя сервера.

52

3.2.1.2.Структура HTTP-запроса

ВHTTP существуют два типа сообщений: запросы и ответы, которые представляет собой совокупность текстовых символов в коди-

ровке ASCII.

HTTP-запрос состоит из заголовка запроса и тела запроса, разделенных пустой строкой. Тело запроса может отсутствовать.

Заголовок запроса состоит из главной (первой) строки запроса и последующих строк, уточняющих запрос в главной строке. Последующие строки могут отсутствовать.

Запрос в главной строке состоит из трех частей, разделенных пробелами:

Метод Унифицированный идентификатор ресурса HTTP/Версия.

Метод (иначе говоря, команда HTTP) может иметь следующие значения:

GET – запрос документа, употребляется наиболее часто (в HTTP/0.9 был единственным);

HEAD – запрос заголовка документа, отличается от GET тем, что выдается только заголовок запроса с информацией о документе,

асам документ не выдается;

POST – применяется для передачи данных CGI-скриптам, а сами данные – в последующих строках запроса в виде параметров;

PUT – запрос на размещение документа на сервере, используется редко.

Унифицированный идентификатор ресурса URI (Uniform Resource Identifier) представляет собой путь к запрашиваемому документу (файлу) на сервере. Если запрашивается корневой файл из корневой директории веб-сервера, то URI может отсутствовать.

Если ресурс – просто какой-либо файл для считывания, сервер должен по этому запросу выдать его в теле ответа. Если же это путь к какому-либо CGI-скрипту, то сервер запускает скрипт и возвращает результат его выполнения. Благодаря такой унификации ресурсов для клиента практически безразлично, как ресурс представлен на сервере.

HTTP/Версия указывает на версию протокола HTTP, с которой работает клиентская программа (наиболее распространена версия

HTTP 1.1).

Строки после главной строки запроса задают параметры запроса и имеют формат Параметр: значениe. Наличие параметров необяза-

53

тельно, все строки после главной строки запроса могут отсутствовать; в этом случае сервер принимает их значение по умолчанию или по результатам предыдущего запроса. Некоторые наиболее употребительные параметры HTTP-запроса:

Connection – соединение. Может принимать значения KeepAlive и close. Keep-Alive («оставить в живых») означает, что после выдачи данного документа соединение с сервером не разрывается, и можно выдавать еще запросы. Большинство современных браузеров работают именно в режиме Keep-Alive, так как он позволяет за одно соединение с сервером получить как html-документ, так и рисунки вебстраницы. Единожды установленный режим Keep-Alive сохраняется до первой ошибки или до явного указания в очередном запросе Connection: close, требующего закрытия соединения после ответа на данный запрос;

User-Agent – список названий и версий браузера, например,

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 5.0 (build 02094);

Accept – список поддерживаемых браузером типов содержимого в порядке их предпочтения данным браузером, например,

Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/ vnd.ms: excel, application/msword, application/vnd.ms-powerpoint,*/*.

Это параметр нужен для случая, когда сервер может выдавать один и тот же документ в разных форматах и используется в основном CGIскриптами для формирования ответа, адаптированного для данного браузера;

Referer – ссылка, т.е. URL, с которого перешли на этот ресурс;

Host – имя хоста, с которого запрашивается ресурс;

Accept-Language – поддерживаемый язык. Имеет значение для сервера, который может выдавать один и тот же документ в разных языковых версиях;

Accept-Encoding – перечень поддерживаемых способов кодирования запрашиваемого документа при передаче. Например, большинство современных браузеров включают указание на возможность сжатия контента в каждый отсылаемый запрос: Accept-encoding: gzip, deflate.

Пример HTTP-запроса при обращении к главной странице сайта alice.pnzgu.ru:

54

GET / HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/ vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/ xaml+xml, */*

Accept-Language: ru UA-CPU: x86 Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 5.0 (build 02094); Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1); .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Host: alice.pnzgu.ru Connection: Keep-Alivе

3.2.1.3. Структура HTTP-запроса

Формат ответа очень похож на формат запроса: он также имеет заголовок и тело, разделенное пустой строкой.

Заголовок также состоит из основной строки и строк параметров, но формат основной строки отличается от таковой в заголовке запроса.

Основная строка запроса состоит из трех полей, разделенных пробелами: HTTP/Версия Код ошибки Описание ошибки:

версия протокола – аналогичен соответствующему параметру запроса;

код ошибки – кодовое обозначение «успешности» выполнения запроса;

словесное описание ошибки – расшифровка предыдущего кода. Наиболее часто встречающиеся: 200 OK – документ отправлен, 404 Not Found – документ не найден (ошибка URL), клиент должен проверить правильность написания URL, если не помогает, значит, документ уже удален, 500 Internal Server Error – внутренняя ошибка сервера.

Наиболее употребительные параметры HTTP-ответа:

Connection – аналогичен соответствующему параметру запроса. Если сервер не поддерживает Keep-Alive, то значение Connection в ответе всегда close;

55

Content-Type – тип содержимого ответа. В зависимости от значения Content-Type браузер воспринимает ответ как HTML-страницу

(Content-Type: text/html), картинку (Content-Type: image/jpeg), простой текст (Content-Type: text/plain). Значение Content-Type для браузера аналогично значению расширения файла для Windows;

Content-Length длина содержимого ответа в байтах;

Last-Modified – дата последнего изменения документа;

Date – дата и время генерации ответа;

Server – список названий и версий веб-сервера и его компонен-

тов. Server: Apache/2.0.53 (Linux/SUSE).

Пример HTTP-ответа, полученного при обращении к главной странице веб-сайта alice.pnzgu.ru:

HTTP/1.1 200 OK

Date: Thu, 09 Sep 2010 07:01:05 GMT

Server: Apache/2.0.53 (Linux/SUSE) Accept-Ranges: bytes Content-Length: 116

Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html

<html> <head> <title> </title> <meta http-equiv="refresh" content="0; url=/cms2"Content-Type> </head> <body> </body> </html>

Последние две строки представляют тело ответа, которое передается после заголовка.

3.2.2.Описание протокола FTP

3.2.2.1.Назначение и принцип работы протокола FTP

Протокол прикладного уровня передачи файлов FTP (File Transfer Protocol) используется службой передачи файлов в Интернете. Протокол FTP позволяет подключаться к серверам FTP, просматривать содержимое их каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами.

Протокол FTP для передачи данных использует транспортный протокол TCP, причем, в отличие от большинства других протоколов, FTP использует сразу два TCP-соединения: одно для управления, а

56

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

мерами > 1024).

Служба FTP построена по хорошо известной схеме клиент сервер. FTP-клиент посылает запросы серверу и принимает файлы. FTP-сервер обрабатывает запросы клиента на получение файла. Схема взаимодействия клиента и сервера показана на рис. 3.1.

 

Клиент

 

 

Сервер

 

 

 

 

 

 

 

 

 

 

Пользователь

 

 

Интерфейс

 

Протокольный

 

 

 

 

 

пользователя

 

Интерпретатор

 

 

 

 

 

Протокольный

 

сервера

 

 

 

 

 

Интерпретатор

Команды

 

 

 

 

 

 

 

пользователя

и ответы

Порт 21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс

 

Процесс

 

 

 

 

 

передачи

 

передачи

 

 

 

 

 

данных

Данные

данных

 

 

Файловая

 

 

 

 

Порт 20

 

 

Файловая

система

 

 

 

 

 

 

 

система

Рис. 3.1. Схема взаимодействия клиента и сервера FTP

Возможны два режима установления соединений в протоколе FTP – активный и пассивный.

Действия сервера и клиента в активном режиме:

клиент инициирует TCP-соединение с динамического порта N (N > 1024) к порту номер 21 на FTP-сервере;

сервер посылает ответ на порт N клиента;

сервер устанавливает связь для передачи данных по порту 20 на порт клиента N+1.

Действия сервера и клиента в пассивном режиме:

клиент устанавливает связь и посылает запрос, сообщая, что надо работать в пассивном режиме, на 21-й порт сервера с динамического порта N (N > 1024);

сервер посылает ответ и сообщает номер порта для канала данных P (P > 1024) на порт N клиента;

57

клиент устанавливает связь для передачи данных по порту N+1 на порт сервера P.

Главное отличие между активным и пассивным режимами FTP – это та сторона, которая открывает соединение для передачи данных. В активном режиме клиент должен принять соединение от FTP-сер- вера. В пассивном режиме клиент всегда инициирует соединение.

Хотя активный FTP и удобен для сервера, но попытка соединения со стороны сервера с высокими (по номеру) портами на клиенте будет блокирована брандмауэром на стороне клиента.

Пассивный режим предназначен для соединения через брандмауэр на стороне клиента, инициатором установления всех соединений является FTP-клиент.

3.2.2.2. Управление обменом файлов в протоколе FTP

Работа FTP на пользовательском уровне содержит несколько этапов:

идентификация (ввод имени и пароля);

выбор каталога;

определение режима обмена (поблочный, поточный, ASCII или двоичный);

выполнение команд обмена;

завершение процедуры.

Протокол FTP определяет запрос-ответный способ взаимодействия между клиентом и сервером, который реализуется обменом командами и ответами.

Команды передаются серверу в текстовом виде. Команда состоит из четырехбуквенного имени, за которым может следовать аргумент (там, где он требуется). Аргумент отделяется от команды пробелом. Например, команда авторизации, передающая на сервер имя учетной записи «anonymous», выглядит так: user anonimus.

Основные команды FTP:

ABOR – прервать предыдущую команду FTP и любую передачу данных;

CWD имя директории – имя новой рабочей директории;

CDUP – перейти на один уровень директории вверх;

LIST список файлов – список файлов или директорий;

58

MODE режим передачи – режим передачи данных (S – потоковый, B – блочный, C – сжатый);

PASS пароль – пароль на сервере;

PORT n1, n2, n3, n4, n5, n6 – IP-адрес клиента (n1.n2.n3.n4) и порт (n5*256 + n6);

QUIT – закрыть бюджет на сервере;

RETR имя файла – получить файл;

STOR имя файла – положить файл;

SYST сервер – возвращает тип системы;

TYPE тип – указать тип файла (A для ASCII, I для двоичного);

USER имя пользователя – имя пользователя на сервере.

Ответы сервера представляют собой код результата выполнения команды, состоящий из трех цифр в формате ASCII, за которым следует текст, отделенный от кода пробелом. Код предназначен для анализа FTP-клиентом. По нему можно однозначно определить статус выполнения команды. Текст является комментарием к коду, предназначенным для пользователя. Пример ответа сервера на команду user anonimus: 331 Guest login ok, send your complete e-mail address as password.

Каждая из трех цифр в коде отклика имеет собственный смысл. Так, значения первых и вторых цифр в коде отклика означают:

1yz – положительный предварительный отклик, т.е. действие началось, однако необходимо дождаться еще одного отклика перед отправкой следующей команды;

2yz – положительный отклик о завершении, может быть отправлена новая команда;

3yz – положительный промежуточный отклик, когда команда принята, однако необходимо отправить еще одну команду;

4yz – временный отрицательный отклик о завершении, требуемое действие не произошло, однако ошибка временная, поэтому команду необходимо повторить позже;

5yz – постоянный отрицательный отклик о завершении, когда команда не была воспринята и повторять ее не стоит;

x0z – синтаксическая ошибка;

x1z – информация;

x2z – соединения. Отклики имеют отношение либо к управляющему, либо к соединению данных;

59