Протокол 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://)

Доменное имя: все знают J

Путь к файлу: здесь не допускается пробел, вместо него используется &.

 

Метод содержит идентификатор метода обращения к 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 – содержит дату и время последнего изменения ресурса.