HTTP

Основные протоколы TCP/IP


Прикладной уровень 
HTTP, SMTP, FTP, DHCP, SSH, IRC, SNMP, DNS,
IMAP, NNTP, SIP, Telnet, BitTorrent, XDR, rlogin, RTP
Транспортный уровень 
TCP, UDP, SCTP, DCCP,RUDP
Сетевой уровень 
IPv4, IPv6, ARP, ICMP, IGMP
Канальный уровень 
Ethernet, 802.11 WiFi, Token ring, FDDI, PPP,
SLIP, ATM, DTM, Frame Relay, SMDS
Физический уровень 
RS-232, EIA-422, RS-449, EIA-485

HTTP (от англ. Hypertext Transfer Protocol — «протокол передачи гипертекста») — один из самых распространённых сетевых протоколов Интернета, основа Всемирной паутины. Порт по умолчанию 80.

HTTP используется для передачи информации в различных форматах, на различных языках и с различным набором символов. Синтаксис HTTP-сообщения основан на стандарте MIME.

Обычно по протоколу HTTP передаётся текст веб-страницы, размеченной с помощью языка HTML, или иной файл, например, изображение, который может быть показан в удобной для человека форме с помощью клиентавеб-браузера.

Содержание

История развития

HTTP/0.9

HTTP был предложен в марте 1990 года Тимом Бернерсом-Ли, работавшим тогда в CERN, как механизм для доступа к документам в Интернете и облегчения навигации посредством использования гипертекста. Самая ранняя версия протокола HTTP/0.9 была впервые опубликована в январе 1992 г. (хотя реализация датируется 1990 годом). Спецификация протокола привела к упорядочению правил взаимодействия между клиентами и серверами HTTP, а также чёткому разделению функций между этими двумя компонентами. Были задокументированы основные синтаксические и семантические положения.

HTTP/1.0

В мае 1996 года для практической реализации HTTP был выпущен информационный документ RFC 1945, что послужило основой для реализации большинства компонентов HTTP/1.0.

HTTP/1.1

Последняя версия протокола. Стандарт был принят в июне 1999 года. Новым в этой версии был режим «постоянного соединения»: TCP-соединение может оставаться открытым после отправки ответа на запрос, что позволяет посылать несколько запросов за одно соединение. Клиент теперь обязан посылать информацию о имени хоста, к которому он обращается, что сделало возможным более простую организацию вирутального хостинга.

Структура протокола

HTTP — протокол прикладного уровня, подобно FTP и SMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер, посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и заголовки запросов последних клиентов. Однако сам протокол не осведомлён о предыдущих запросах и ответах, в нём не предусмотрена внутренняя поддержка состояния, к нему не предъявляются такие требования.

Каждый запрос/ответ состоит из трёх частей:

  1. стартовая строка;
  2. заголовки;
  3. тело сообщения, содержащее данные запроса, запрашиваемый ресурс или описание проблемы, если запрос не был выполнен.

Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так:

‹Метод› ‹URI› HTTP/‹Версия›

где ‹Метод› может быть:

OPTIONS
Возвращает методы HTTP, которые поддерживаются сервером. Этот метод может служить для определения возможностей веб-сервера.
GET
Запрашивает содержимое указанного ресурса.
HEAD
Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Это полезно для извлечения мета-информации, заданной в в заголовках ответа без пересылки всего содержимого.
POST
Передаёт пользовательские данные (например из формы HTML) заданному ресурсу. Данные включаются в тело запроса.
PUT
Загружает указанный ресурс на сервер.
DELETE
Удаляет указанный ресурс
TRACE
Возвращает полученный запрос так, что клиент может увидеть, что промежуточные сервера добавляют к запросу или изменяют его
CONNECT
Для использования вместе с прокси-серверами, которые могут динамически переключаться в туннельный режим SSL.

В основном используются только методы GET и POST. Различаются они тем, что в методе GET данные запроса внедряются в URL ресурса (после вопросительного знака, например: http://server/document.html?param=value), а в методе POST они посылаются в теле сообщения.

Первая строка ответа выглядит так:

HTTP/‹Версия› ‹Код статуса› ‹Описание статуса›

Наиболее типичные статусы:

  • 200 OK — запрос выполнен успешно;
  • 403 Forbidden — доступ к запрошенному ресурсу запрещён;
  • 404 Not Found — запрошенный ресурс не найден.

Заголовки HTTP — это строки, каждая из которых состоит из имени параметра, за которым следует двоеточие и его значение. Они несут информацию для браузера или для серверных программ (таких, как CGI-приложения). Между заголовками и телом обязательно должна быть пустая строка.

Примеры HTTP

Запрос:

GET /wiki/HTTP HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Connection: close

Ответ:

HTTP/1.0 200 OK
Server: Apache
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
(далее следует текст запрошенной страницы)

См. также

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home