Существуют и другие методы, но на практике они практически не используются.
URI (Uniform Resource Identifiers) – универсальный идентификатор ресурса, в HTTP используется его частный вид — URL (Uniform Resource Locators), универсальный указатель ресурса. Он имеет вид:
http: // host [ : port ] [ path ]
host – доменное имя (или IP адрес) WEB сервера; если номер порта не указан, предполагается порт 80.
path — путь к ресурсу (информация о месте ресурса на сервере).
В URL также могут использоваться дополнительные параметры, описанные в RFC 1738.
Если ресурс – просто какой-либо файл для считывания, сервер должен по этому запросу выдать его в теле ответа. Если же это путь к какому-либо CGI-скрипту, то сервер запускает скрипт и возвращает результат его выполнения. Кстати, благодаря такой унификации ресурсов для клиента практически безразлично, что он представляет собой на сервере.
Версия в настоящее время может принимать значения HTTP/1.0 или HTTP/1.1.
Заголовки запроса HTTP
Заголовки запроса могут фигурировать только в запросах. В последней версии протокола HTTP/1.1 двадцать заголовков запроса. Заголовки имеют формат:
Параметр: значение.
Для простоты восприятия удобно разбить заголовки запроса на четыре класса:
1. Предпочтения в ответе
Accept Предпочтительные типы содержимого
Accept-Charset Предпочтительные наборы символов
Accept-Encoding Предпочтительный метод кодирования содержимого
Accept-Language Предпочтительные языки
ТЕ Предпочтительные схемы кодирования при передаче
2. Информация, передаваемая вместе с запросом
Authorization Полномочия пользователя (логин/пароль)
From Адрес электронной почты пользователя
Referer URI, от которого получен URI запроса
User-Agent Информация о клиентском браузере
Proxy-Authorization Авторизация клиента прокси-сервером
Cookie Содержимое, хранящееся на стороне клиента
3. Условные запросы
If-Modified-Since Сравнение с временем последнего изменения
If-Match Сравнение на равенство идентификатора содержимого
If-None-Match Сравнение на неравенство идентификатора содержимого
If-Unmodified-Since Сравнение с временем последнего изменения
If-Range Отправить диапазон, только если содержимое изменено
4. Ограничения, накладываемые на сервер
Host Хост(домен) запрошенного ресурса
Expect Реакция сервера, ожидаемая клиентом
Max-Forwards Допустимое число прокси-серверов при передаче данных
Range Запрос диапазона содержимого
Например:
Accept – список поддерживаемых браузером типов содержимого в порядке их предпочтения данным браузером :
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd. ms-excel, application/msword, application/vnd. ms-powerpoint, */*
Полный перечень значений параметров для каждого заголовка приведен в RFC 2616 [6]
HTTP ответ
Начальная строка ответа называется <Status-line> - Строка статуса.
Далее могут следовать заголовки ответа и тело ответа.
Строка статуса имеет следующий формат:
Формат: <HTTP-VERSION> <Status-Code> <Reason-Phrase>
или
<Версия><Код><Пояснение>
Версия в настоящее время может принимать значения HTTP/1.0 или HTTP/1.1.
Код — возвращаемый код состояния и Пояснение.
Элемент код состояния (Status-Code) - это целочисленный трехразрядный код результата понимания и удовлетворения запроса.
Пояснение
(Reason-Phrase) предназначено для короткого текстового описания кода состояния. Код состояния (Status-Code) предназначен для использования автоматами, а поясняющая фраза предназначена для живых пользователей. От клиента не требуется исследовать или отображать поясняющую фразу (Reason-Phrase).
Первая цифра кода состояния определяет класс ответа. Последние две цифры не имеют определенной роли в классификации. Имеется 5 значений первой цифры:
1xx: Информационные коды – запрос получен, продолжается обработка.
2xx: Успешные коды – действие было успешно получено, понято и обработано.
3xx: Коды перенаправления – для выполнения запроса должны быть предприняты дальнейшие действия.
4xx: Коды ошибок клиента – запрос имеет плохой синтаксис или не может быть выполнен.
5xx: Коды ошибок сервера – сервер не в состоянии выполнить допустимый запрос.
Заголовки ответа HTTP
Заголовки ответа могут фигурировать только в сообщениях-ответах. В последней версии протокола HTTP/1.1 тринадцать заголовков ответа. Заголовки имеют формат:
Параметр: значение.
Для простоты восприятия удобно разбить заголовки ответа на четыре класса:
Заголовок Краткое описание
1. Переадресация
Location Переадресация на указанный URL
2. Дополнительная информация
Server Идентификация сервера
Retry-After Величина задержки перед повторной попыткой запроса
Accept-Ranges Частичный запрос
Alternates Альтернативные способы представления ресурса
Set-Cookie Содержимое Сookies для записи на стороне клиента
Public Список доступных методов для всего сервера
Keep-Alive Поддержание TCP соединения
3. Безопасность
www-Authenticate Запрос информации для аутентификации
Proxy-Authenticate Запрос информации для аутентификации прокси-сервером
4. Кэширование
ETag Проверка непрозрачности
Age Время с момента создания ответа
Vary Выбор варианта ресурса
Полный перечень значений параметров для каждого заголовка приведен в RFC 2616 [ 6]
Кроме описанных заголовков запросов и ответов существуют так называемые общие заголовки, они могут идти до заголовков запросов и ответови применяются как для сообщений запросов, так и для сообщений ответов. Эти поля заголовка применяются только к передаваемому сообщению, то есть могут присутствовать только при наличии тела сообщения.
Общие заголовки
Date Дата/время создания сообщения
Pragma Директива сообщения
Cache-Control Директива кэширования
Connection Упр-е соединением при промежуточных передачах
Trailer Список заголовков в конце сообщения
Transfer-Encoding Преобразование тела сообщения
Upgrade Переход на другие протоколы
Via Информация о промежуточных серверах
Warning Уведомление об ошибке
Полный перечень значений параметров для каждого заголовка приведен в RFC 2616 [6].
Сообщения запросов и ответов могут передать тело сообщения (объект), если иное не установлено методом запроса или кодом состояния ответа. Объект состоит из полей заголовка объекта (entity-header) и тела объекта (entity-body), хотя некоторые ответы могут включать только заголовки объекта (entity-headers).
Заголовки объекта
Allow Методы, применимые к ресурсу
Content-Encoding Кодирование содержания, примененное к телу содержимого
Content-Length Длина тела содержимого
Content-Type Тип тела содержимого
Expires Продолжительность актуальности тела содержимого
Last-Modified Время последней модификации ресурса
Content-Language Язык содержимого
Content-Location Альтернативный адрес ресурса
Content-Range Положение диапазона в теле содержимого
Например,
Content-Type ("тип содержимого") – содержит обозначение типа содержимого ответа.
В зависимости от значения Content-Type браузер воспринимает ответ как HTML-страницу, картинку gif или jpeg, как файл, который надо сохранить на диске, или как что-либо еще и предпринимает соответствующие действия. Значение Content-Type для браузера аналогично значению расширения файла для Windows.
Некоторые типы содержимого:
text/html - текст в формате HTML (веб-страница);
text/plain - простой текст;
image/jpeg - картинка в формате JPEG;
image/gif - то же, в формате GIF;
application/octet-stream - поток "октетов" (т. е. просто байт) для записи на диск.
Полный перечень значений параметров для каждого заголовка приведен в RFC 2616 [6].
Все указанные особенности протокола HTTP (методы, заголовки и их значения, URL) можно использовать для «тонкой» фильтрации трафика протокола HTTP. Это требует точного понимания подробностей и тонкостей использования HTTP при сетевом взаимодействии и может быть достигнуто только практическим исследованием реального HTTP трафика.
Нужно отметить, что в современных сетях роль протокола HTTP шире, чем просто обеспечение получения информации с WEB серверов. На его базе работают так называемые WEB службы (Web Services - WS), используя HTTP как транспорт для передачи своих сообщений (например SOAP - Simple Object Access Protocol чаще всего используется поверх HTTP).
При решении практических задач разграничения доступа (фильтрации) WEB трафика следует учитывать и особенности «внутреннего» содержание передаваемой информации от сервера клиенту, в частности HTML конструкций, JavaScript, Java-апплетов, управляющих элементов ActiveX, flash-файлов и пр., то есть всего того, что используется при создании WEB страниц.
1.2.1.2 FTP — протокол передачи файлов
FTP (File Transfer Protocol) – (RFC-959) – один из старейших протоколов прикладного уровня, остаётся практически неизменным с 1985г. Он использует в качестве транспортного протокол TCP и работает по традиционной технологии клиент — сервер. Программа - клиент позволяет подключиться к удалённому серверу, просматривать оглавление каталогов, загружать файлы с сервера или на сервер, в зависимости от наличия прав выполнять дополнительные действия на сервере (удалять и создавать каталоги, файлы).
Протокол FTP обеспечивает вход на сервер с авторизацией, то есть запрашивается логин и пароль. После аутентификации сервер разрешает доступ к своей файловой системе с заранее определёнными правами доступа. Естественно, что на сервере должна быть заранее создана соответствующая учётная запись.
Анонимный FTP (anonymous FTP) – это вариант обычного FTP с той разницей, что он не требует идентификации пользователя. Это прекрасный способ для предоставления доступа к файловому серверу заранее неизвестным (анонимным) пользователям. В этом случае сервер настраивается так, что в качестве логина нужно указать слово anonymous (или ftp), а в качестве пароля – адрес электронной почты. Пароль не проверяется, а просто записывается в файл протокола доступа. Пользователь anonymous не имеет никаких прав на сервере, кроме чтения файлов из строго определенных каталогов.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 |


