Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы 1-10.docx
Скачиваний:
18
Добавлен:
25.09.2019
Размер:
54.49 Кб
Скачать

10). Протокол http - история возникновения, основные возможности, формат сообщений, программная реализация на стороне клиента и сервера, области применения.

HTTP — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является Технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации свеб-сайтов. В 2006 году в Северной Америке доля HTTP-трафика превысила долю P2P-сетей и составила 46 %, из которых почти половина — это передача потокового видео и звука.

HTTP используется также в качестве «транспорта» для других протоколов прикладного уровня, таких как SOAP, XML-RPC, WebDAV.

Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (англ. Uniform Resource Identifier) в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. (В частности для этого используется HTTP-заголовок.) Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.

История возникновения:

Http/0.9

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

Http/1.0

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

Http/1.1

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

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

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

стартовая строка

заголовки

тело сообщения, содержащее данные запроса, запрашиваемый ресурс или описание проблемы, если запрос не был выполнен

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

<Метод> <URI> HTTP/<Версия>

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

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

Первая цифра кода статуса предназначена для определения класса ответа.

1: запрос получен, продолжается обработка.

2: успех, запрос был полностью получен, понят и принят к обработке.

3: перенаправление, клиенту следует предпринять дальнейшие действия для успешного выполнения запроса.

4: ошибка клиента - запрос, содержащий неправильные синтаксические конструкции, который не может быть успешно выполнен (ошибка была допущена со стороны клиента).

5: ошибка сервера - сервер не смог дать ответ на корректно поставленный запрос, сервер либо знает, что он допустил ошибку, либо не способен обработать запрос.

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

В цепочке запросов/ответов HTTP могут присутствовать один или несколько посредников. Существуют три основных разновидности посредников: прокси-сервера, шлюзы и туннели.

Прокси-сервер - агент-посредник, который получает запросы на некоторый URI, изменяет всё сообщение или его часть и отсылает измененный запрос серверу, идентифицированному URI.

Шлюз (gateway) - сетевое yстpойство, котоpое пеpедает пpотоколы одного типа физической сpеды в пpотоколы дpyгой физической сpеды (сети).

Туннель - действует между двумя соединениями, не изменяя сообщения; туннели используются, когда связь нужно производить через посредника (например Firewall), который не понимает содержание сообщений.

Некоторые опции HTTP-соединения применимы только к соединению с ближайшим не туннельным соседом, некоторые - только к конечным точкам цепочки, а некоторые - ко всем соединениям в цепочке.

Любая сторона соединения, которая не действует как туннель, может использовать внутренний кэш для обработки запросов. Не все ответы полезно кэшировать, а некоторые запросы могут содержать модификаторы, которые включают специальные требования, управляющие поведением кэша.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]