- •Протоколы
- •Адресация в ip сетях
- •Соглашение о специальных ip-адресах
- •Использование масок в ip-адресации
- •Протокол arp
- •Протокол rarp
- •Протокол ip версии 4
- •Фрагментация ip-датаграмм
- •Формат ip-пакета
- •Маршрутизация пакетов с помощью ip-адресов
- •Перекрывающиеся маршруты
- •Протоколы ip версии 6.
- •Адресация ip-версии 6.
- •Протокол icmp.
- •Протоколы транспортного уровня
- •Алгоритм скользящего окна
- •Таймеры, протоколы тср
- •Методология атак с использованием протокола тср
- •Протокол bootp
- •Протокол dhcp
- •Протокол http
- •Механизм аутентификации
- •Протоколы передачи файлов
- •Протокол sftp
- •Протокол ftp
- •Передача данных между передачи между ftp серверами
- •Протокол Telnet
- •Расширенный протокол smtp (esmtp)
- •Протокол рор
- •Протокол imap (получение почтовых сообщений)
Протокол http
HTTP (Hyper Text Transfer Protocol)
В 1972 году было предложено совместить гипертекст с Интернетом.
Рассмотрим структуры http запроса:
Method Request-URL HTTP-Version |
|
|
[Generate Header] |
|
|
Date |
|
|
Pragma |
|
|
[Request Header] |
|
|
Authorization |
|
|
From: |
|
|
If-Modified |
|
|
Refer: |
|
|
Accept: |
|
|
User-Agent: |
|
|
[Entity-Header] |
|
|
Allow: |
|
|
Content-Encoding |
|
|
Content-Type |
|
|
Content-Length |
|
|
Exiris: |
|
|
Last-Modified |
|
|
|
|
|
[Entity-Body] |
|
|
Каждая страница в протоколе определяется по унифицированному указателю ресурсов URL. URL имеет следующую структуру:
<схема://><доменное имя> <Номер порта>:/<путь к файлу>?<параметры>
Сема: определяет тип ресурса (http:// ftp:// smtp:// txt://)
Доменное имя: все знают
Путь к файлу: здесь не допускается пробел, вместо него используется &.
Метод содержит идентификатор метода обращения к http серверу, метод определяет состав и структуру остальных заголовков запроса.
Метод Get – запрашивает инф-цию о ресурсе, расположенному о заданному URL. Данный метод не имеет тела запроса. Все параметры передаются в первой строке.
telnet в командной строке и доменное имя, например google.ru Get/ (на экзамен)
Метод Head – аналогичен Get за исключением того, что сервер возвращает только заголовок ответа. Этод метод используется для тестирования доступа к ресурсу.
Метод Put – используется, когда клиент желает сохранить исходные данные на сервере, этот метод запрещен для большинства виртуальных каталогов.
Метод Post – используется для передачи клиентом на сервер запроса какого-либо ресурса, отличие от предыдущего – параметры передаются в теле запроса. При доступе к серверным web приложениям этот метод предпочтительней предыдущего, т.к. снимает длину передаваемых параметров.
Метод Delete – используется для удаления ресурса, определяемого URL, обычно все виртуальные каталоги запрещают этот метод.
HTTP-Version – версия протокола, записывается в виде HTTP/1.1
Рассмотрим поля общего заголовка General Header. Эти поля используются, как в заголовке запроса, так и в заголовке ответа.
Date – Определяет время построения запроса
Pragma – Используется для установки спец директив для участников запроса (no-cash – не кэшировать запрос и ответ).
GET/main.doc.html HTTP/1.C
Date: Wed, 21, Nov 2012 05:10:30 GMT
Pragma: no-cash
Request Header – заголовок запроса
Authorization – авторизация, содержит аутотентификационные данные пользователя, обычно запросы этого поля не кэшируются.
From – Может содержать e-mail отправителя. Оычно это поле используется сервером для формирования журнала заходов на сервер и рассылки празднцичных поздравлений наиболее активным пользователям.
If-Modified-Since – используется полем Get, если запрашиваемый ресурс не изменялся с момента, указанного в этом параметре, то данный ресурс не возвращается, возвращается только его заголовок.
Refer – содержит URL предшествующего ресурса, этот параметр может использовать администратор сервера для выявления попыток атаки.
Accept – Появилось с версии http/4.0 и предписывает отвечающему серверу использовать только указанные форматы данных.
Accept: text/html
Accept: image/gif
User-Agent – содержит информацию о ПО клиента.
Entity-Header – содержит информацию о структуре и формате тела запроса.
Allow – содержит список методов поддерживаемых ресурсов (get, post, head)
Content-Encoding – содержит идентификатор дополнительной кодировки ресурса, например,
MIME
x-qzip
Content-Type – содержит тип ресурса и таблицу кодировки ресурса.
Text/html;charset=koi-8
Content-Length – длина тела сообщения
Expires – используется в механизме кэширования для удаления устаревших ресурсов. Содержит дату срока окончания ресурса.
Last-Modified – содержит дату и время последнего изменения ресурса.
Структура http-Ответа.
HTTP-Version State-Code Reason-Phrase
[General Header]
[Responce-Header]
Location:
Server:
WWW:Authentification:
[Entuty-Header]
[Entity-Body]
Первая строка ответа начинается с версии протокола.
State-Code – код состояния, обычно в большинстве протоколов прикладного уровня, используется число состоящее из 3-х цифр. 1: определяет вид ошибки, а 2,3: поясняют первую. 11 – временный предварительный ответ. 101 – сервер понимает запрос клиента и желает его выполнить, если протокол программы будет изменен на тот, который указан в заголовке сообщения.
2ХХ – успешное выполнение запроса. 200 – okey.
3ХХ – перенаправление. 301 – ресурс перенесен на другой сервер.
4ХХ – ошибка носит временный характер и может быть исправлена в текущей сессии, считается, что эта ошибка со стороны киента.
5ХХ – код ошибки сервера, они не могут быть исправлены в текущей сессии.
Reason-Phrase – Поясняющая фраза.
Location – содержит полный URL запроса, поле используется, когда ресурс перемещен на другой сервер и здесь указывается поле другого сервера.
Server – содержит спецификацию ПО сервера, отвечающего на запрос.
WWW:Authentification – содержит параметры схемы и пространство аутентификации, например
WWW – Authentificate: Basic realm = “Hello” данные находятся в зашифрованной области, для доступа к этим данным надо указать логин и пароль (method base64 три восьмибитовых слова разбиваются на четыре шетсибитовых и каждое из этих слов передается в отдельном байте).
