Протокол Передачи ГИПЕРтекста HTTP для Чайников ты должен знать
HTTP расшифровывается, как Hypertext Transfer Protocol — протокол передачи гипертекста. Этот протокол являются основой системы world wide web, именно его мы используем, когда просматриваем странички в браузере.
Web придумал Тим Бернерс-Ли, когда работал в ЦЕРН в 1989 году. Кроме протокола HTTP, веб включал язык разметки HTML, Web-сервер и Web-браузер. Веб-браузер ЦЕРН работал в текстовом виде. Вскоре после этого, появились графические веб браузеры, которыми оказалось очень легко пользоваться. Именно благодаря графическим браузерам и вебу интернет стал очень популярен. Сейчас Тим Бернерс-Ли является директором консорциума W3C, которая издает стандарты для World Wide Web.
Гипертекст и HTMLГипертекст это специальный тип разметки, которую вы добавляйте в текстовые документы, для того чтобы определить, как показывает ту или иную часть текста. В языке HTML для этих целей используются теги.
Например, тег ˂h2˃ говорит, что дальше идет заголовок Протокол HTTP и закрывающийся тег ˂h2˃ заголовок закончился. Тег ˂u1˃ означает список, а ˂li˃ элемент списка.
Вот как этот гипертекстовый HTML документ показывает браузер.
Заголовок Протокол HTTP. Обычный текст, который был указан без разметки “Тим Бернер-Ли в ЦЕРН предложил концепцию Web в 1989 году”. И список.
URL — уникальное положение ресурсаБольшую роль в работе web и http играет URL (Uniform Resource Locator) — уникальное положение ресурса, по-русски его часто называют ссылка. Это уникальный адрес веб-страницы в интернете.
Рассмотрим, как устроены ссылки. Например, https://www.zvondozvon.ru/tehnologii/protokoli. Сначала идет название протокола, в нашем случае https. Затем :// и доменное имя сервера www.zvondozvon.ru на котором размещена страница, либо здесь может находиться IP-адрес сервера. После этого через слеш указывается имя конкретной страницы, которую мы хотим загрузить /tehnologii/protokoli.
URL рассчитаны не только на работу с http и html, но и например с другими протоколами, можно указать защищенный протокол https или протокол ftp. Также не обязательно использовать гипертекст, на веб-серверах могут размещаться обычные текстовые страницы.
Место протокола HTTP в стеке протоколов TCP/IPПротокол http находятся на прикладном уровне в стеке протоколов TCP/IP.
Он использует протокол транспортного уровня TCP, веб-сервер работает на 80 порту для клиента номер порта генерируются автоматически операционной системой. HTTP работает в режиме запрос-ответ. Клиент пересылают серверу запрос на передачу веб-страницы и сервер в ответ эту веб-страницу пересылает.
В отличии от некоторых других протоколов, которые были рассмотрены ранее на сайте в разделе протоколы в HTTP, нет какого-то жестко заданного формата пакетов, используется обычный текстовый режим.
Версии протокола HTTPЕсть несколько версий протокола HTTP. Первая, экспериментальная версия HTTP 0. 9 была разработана в ЦЕРН в 1991 году. Первая официальная версия HTTP 1.0 была принята в качестве стандарта в 1996 году и почти сразу же после этого в 1997 году была принята расширенная версия протокола HTTP 1.1. Именно эта версия используется до сих пор. В 2015 году появилась новая версия протокола HTTP 2 сейчас эта версия только вводится в эксплуатацию она поддерживается еще не всеми браузерами и не всеми веб-серверами.
Структура пакета HTTPПакет HTTP состоит из 3 частей. Первая часть это запрос, либо со стороны клиента, либо от статус ответа со стороны сервера. Например, запрос GET означает, что клиент просит передать ему web-страницу, которая находится на сервере вот по такому пути GET/tehnologii/protokoli в ответ сервер пересылает статус выполнения операции код и символьное сообщение, например 200 OK. Это означает, что страница нашлась на сервере и сервер передает ее в теле сообщения.
Затем могут идти и заголовки, которых может быть несколько. В версии HTTP 1. 0 заголовки были не обязательны, но в версии HTTP 1.1 в запросе обязательно использовать заголовок Host:www.zvondozvon.ru, где указываются доменное имя сервера, у которого вы хотите запросить веб-страницу. Это сделано из-за того, что на одном и том же IP-адресе, может работать несколько веб-сайтов и в web серверу необходимо знать с какого сайта вы хотите загрузить страницу.
Также могут быть другие заголовки, например тип передаваемого сообщения в примере Content-Type: text/html; charset=UTF-8, размер передаваемого сообщения Content-Length: 5161 байт.
И затем может идти тело сообщения в котором передается запрашиваемая веб-страница или передаются какие-то параметры на сервер. Тело сообщения является необязательным например, в запросе клиента на передачу веб-страницы с сервера тело не нужно.
Методы HTMLКлиент при обращении к серверу в запросе указывает метод, который он хочет использовать.
- Самые популярные методы это GET запрос на передачу веб-страницы, именно этот запрос используются чаще всего.
- POST передача данных на веб-сервер для обработки. Метод post используется например, когда вы пишите комментарии к роликам youtube, остальные методы, кроме get и post используются значительно реже.
- Метод HEAD запрашивает заголовок страницы, то же самое, что и GET только без тела сообщения, хотя HTTP разрабатывался для передачи веб-страниц, создатели HTTP предусмотрели возможность его использования для работы с ресурсами других типов.
- Метод PUT помещение ресурса на веб-сервер.
- Метод DELETE удаление страницы или ресурса с веб-сервера для выполнения этих методов необходимо иметь соответствующие права доступа.
- Метод TRACE позволяет отслеживать, что происходит со страницей, кто вносит в нее какие изменения.
- Метод OPTIONS позволяет узнать, какие именно методы поддерживаются для конкретного ресурса на веб-сервере.
- Метод CONNECT позволяет подключиться к веб-серверу через прокси.
В ответе сервера первое поле это статус обработки запроса, статусы сгруппированы в пять групп и для каждой группы используется код статуса состоящий из трехзначного числа.
- Статусы, которые начинаются на единицу (1ХХ), используются для передачи информационных сообщений.
- Статусы, которые начинаются на двойку (2ХХ), говорят о том, что запрос выполнен успешно, например наиболее популярный статус (200 OK), означает что страница найдена и она передается клиенту.
- Статусы, которые начинаются на тройку (3ХХ), говорят о перенаправлении, например статус 301 — постоянное перенаправление, говорит о том что страница была перемещена на другой адрес и все последующие запросы должны передаваться на этот новый адрес. Статус 307 тоже говорит о перенаправлении, но временном, сейчас доступ к странице можно получить по другому адресу, но через некоторое время необходимо снова обращаться к исходному адресу.
- Статусы, которые начинаются с четверки (4ХХ), говоря о том, что произошла какая-то ошибка на стороне клиента. Чаще всего встречается ошибка 404 — страница, которую запросил клиент не найдена на сервере. Также возможна ошибка 403 доступ к ресурсу, который запросил клиент запрещен и другие ошибки.
- Статусы начинающиеся на пять (5ХХ) говорят об ошибке на стороне сервера, например 500 — внутренняя ошибка сервера.
Рассмотрим примеры запроса и ответа HTTP.
Подключение по TCP к серверу www.zvondozvon.ru, порт 80.
————————————————
GET /tehnologii/protokoli HTTP 1.1
Host: www.zvondozvon.ru
HTTP работают в текстовом режиме, нам необходимо подключиться к веб-серверу, например www.zvondozvon.ru к порту 80 по протоколу TCP. Дальше мы пишем запрос, используем метод GET хотим получить ресурс /tehnologii/protokoli и указываем версию протокола по которой мы хотим работать HTTP 1.1. Так как мы используем версию 1.1 нам необходимо указать заголовок host, доменное имя сервера с которым мы работаем www.zvondozvon.ru, этого вполне достаточно для того чтобы веб-сервер нам ответил.
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Content-Length: 5161
˂html lang=”ru-RU”˃
˂head˃
…
˂/html˃
Ответ веб-сервера начинается со статуса 200 ok, обработка запроса произошла успешно, также вначале указываются версия протокола, которая используется HTTP 1.1. Затем идут несколько заголовков реализации веб-сервера nginx, тип передаваемой страницы текста html кодировка utf-8, длина страницы 5161 байт, также здесь могут идти другие заголовки, которые вам передал сервер.
Затем идет пустая строка и код веб-страницы. После передачи web страницы, соединение tcp разрывается, можно оставить соединение открытым для последующей работы, но для этого необходимо использовать дополнительный заголовок.
Продолжение про протокол HTTP читайте в статье постоянное соединение и кэширование протокола HTTP.
Терминология — HTTP — AlterBit.ru
HTTP (HyperText Transfer Prоtocоl) — протокол передачи гипертекста. Специальный протокол для передачи данных, имеет прикладной уровень, первоначально был представлен в виде гипертекстовых документов.
В основе HTTP лежит технология «клиент-сервер», которая, как ясно из названия, предполагает наличие определенных потребителей, инициирующих соединение и отсылающих запросы, а также, соответственно, поставщиков, ожидающих получение запроса и производящих последующее соединение.
На сегодняшний день, HTTP широко применяется по Всемирной паутине для скачивания информации с веб-сайтов. Также, HTTP используется в виде «транспорта» для других протоколов (SOAP, XML-RPC, WebDAV).
Главным объектом манипуляции в протоколе HTTP выступает ресурс, на который в запросе клиента ссылается URI (Uniform Resource Identifier). Зачастую, эти ресурсы — ничто иное, как файлы, хранящиеся на определенном сервере. Впрочем, это могут быть и логические объекты.
Характерным свойством протокола HTTP является возможность указать в запросе/ответе способ представления ресурса по различным параметрам (формату, кодировке, языку и прочее). Для этих целей применяется HTTP-заголовок. За счет возможности указать способ кодирования сообщения клиент и сервер могут осуществлять обмен двоичными данными, впрочем такой протокол является текстовым.
Аналогичными протоколу HTTP высупают протоколы FTP и SMTP (тоже прикладные). Однако, в отличие от других протоколов, HTTP не может сохранять свое состояние, отсюда и невозможность сохранить промежуточное состояние между парами «запрос-ответ».
Использующие протокол HTTP компоненты способны самостоятельно осуществлять сохранение информации о последних запросах и ответах. Этой информацей являются cookie, в случае с клиентом, и «сессии», в случае с сервером. Посылающий запросы браузер в состоянии отслеживать задержки ответов. На сервере хранятся IP-адреса и заголовки запросов от последних клиентов. Впрочем, сам протокол не имеет информации о предыдущих запросах и ответах, этого в нем не предусмотрено.
Название |
Hypertext Transfer Protocol |
Семейство |
TCP/IP |
Год создания |
1992 |
Порт/ID: |
80/TCP |
Спецификация |
RFC 1945, RFC 2616 |
Клиенты |
Веб-браузеры |
Серверы |
Apache, IIS и др. |
Очень прост в реализации. Дает возможность легко и просто создавать клиентские приложения. Легко-расширяемые возможности, доступные благодаря внедрению собственных заголовков, которые позволяют достичь необходимой функциональности, при решении определенных задач. Также, существует глубокая совместимость и с другими клиентами/серверами. Неизвестные заголовки в таком случае будут просто игнорироваться.
Кроме того, протокол обладает широкой распространенностью, что приводит к изобилию различной документации по нему на многих языках мира. Также средства разработки включены в популярные IDE. Протокол поддерживается и программным обеспечением, клиенту предлагается богатый выбор хостинговых компаний, работающих с серверами HTTP.
Недостатки HTTPНесмотря на то, что протокол создавался в качестве средства работы с сервером и его ресурсами, он не содержит в себе средства навигации по ним. К примеру, у клиента нет возможности прямо запросить список доступных файлов, как это возможно в протоколе FTP. Предполагалось, что клиенту знаком URI необходимого ему документа, загрузив который, он будет перемещаться по нему, используя гиперссылки. Такая схема вполне приемлема для пользователя, но крайне неудобна для средств автоматической обработки и анализа сервера и его ресурсов. Данная проблема решается исключительно разработчиками приложений, работающих на данном протоколе.
К примеру, со стороны клиента применяются веб-пауки (такие программы, составляющие список ресурсов сервера). Сервер решает данную проблему благодаря «карте сайта» (site map). Карта полезна не только клиентам, но и самим роботам-паукам, поскольку она позволяет сократить минимальное число переходов с главной страницы веб-сайта. Эти же цели реализуют и специальные файлы формата sitemap, предназначенные непосредственно для роботов.
Данная проблема нашла полное решение только в расширяющем HTTP протоколе WebDAV. В нем добавили метод PROPFIND, который позволяет получить доступ не только к дереву каталогов, но и к списку параметров каждого ресурса.
HTTP создавался с целью решения обычных бытовых задач: предполагалось, что протокол будет обладать весьма коротким времем обработки запроса. Однако, в промышленных целях, где применялись распределенные вычисления с высокими нагрузками на сервер, протокол был непригоден. В 1998 году был предложен альтернативный протокол HTTP-NG (HTTP Next Generation), который полностью заменял собой устаревший протокол. Новый имел акцент именно в этом моменте. Актуальность данного протокола была поддержана серьезными специалистами по распределенным вычислениям, однако, несмотря на это, протокол и по сей день находится в стадии разработки.
ПОПрограммное обеспечение, предназначенное для работы с протоколом HTTP, условно можно разделить на три типа:
- Серверы;
- Клиенты;
- Прокси по выполнению транспортных функций.
Чтобы разделять конечные сервера от прокси в официальной документации применяется такой термин, как «исходный сервер».
Один и тот же программный продукт может одновременно быть как клиентом, так и сервером, либо же посредником, в зависимости от поставленных задач. Спецификации протокола HTTP содержат в себе описание подробного поведения, в каждой из этих ролей.КлиентыИзначально, HTTP создавали с целью организации доступа к гипертекстовым документам Глобальной сети. Отсюда, основными реализациями клиентов являются браузеры, они выступают в роли так называемых «агентов» пользователя. Чтобы просмотреть содержимое веб-сайтов, сохраненное на ПК, не имея интернет-соединения, были созданы специальные офлайн-браузеры. А в случае нестабильного интернет-соединения, для скачивания из Интернета файлов большого объема используются специальные менеджеры закачек, которые позволяют докачивать выбранные файлы даже после потери (и последующего восстановления) соединения с веб-сервером.
Интересные факты:
- Виртуальные атласы (Google Планета Земля и NASA World Wind) также применяют протокол HTTP.
- Довольно-таки часто HTTP применяется в программах для скачивания обновлений.
Комплекс программ-роботов применяется в поисковых системах. Среди них веб-пауки (так называемые краулеры), выполняющие проход по гиперссылкам. Они формируют базу данных ресурсов серверов, а также сохраняют их содержимое для последующего анализа.
Исходные серверыОсновными выступают:
- Apache,
- Internet Information Services (IIS),
- lighttpd,
- nginx.
Основными выступают:
- Squid,
- UserGate,
- Multiproxy,
- Naviscope,
- Nginx.
Протокол HTTP был предложен в марте 1991 года. Его разработчиком является Тим Бернерс-Ли. В то время, он работал в компании CERN. Первоначально, протокол задумывался создателем в виде механизма для доступа к документам в Интернете, а также для облегчения навигации, которого предполагалось достигнуть благодаря применению гипертекста.
Самая ранняя версия протокола HTTP/0.9 впервые была опубликована в январе 1992 года, несмотря на то, что реализация протокола датируется 1990 годом. Данная спецификация протокола демонстрировала упорядочение правил взаимодействия между клиентами и серверами. Кроме того, в ней было реализовано четкое разделение функций между ними. Были задокументированы основные синтаксические и семантические положения.
В мае 1996 года для осуществления практической реализации протокола HTTP был выпущен специальный документ RFC 1945. Это событие стало толчком для создание основы под реализацию большинства компонентов новой версии протокола — HTTP/1.0.
Следующая версия протокола — HTTP/1.1 — была принята в июне 1999 года. Главным нововведением в ней послужило «постоянное соединение». Согласно спецификации, TCP-соединение могло оставаться открытым после отправки ответа на запрос. Это позволяло посылать сразу несколько запросов в течение одного соединения. Клиент стал обязанным посылать информацию об имени хоста, что привело к упрощению организации виртуального хостинга.
Структура HTTPHTTP-сообщение состоит из трех частей. Эти части передаются в строгом порядке:
- Стартовая строка. Она определяет тип сообщения;
- Заголовки. Характеризуют тело сообщения, параметры передачи и другую информацию;
- Тело сообщения. Это сами данные сообщения. Они обязательно должны быть разделены пустой строкой от заголовков.
Заголовков и тела сообщения может не быть, но вот стартовая строка — обязательный элемент, поскольку она указывает на тип запроса/ответа. Исключением является только HTTP/0.9, где сообщение содержит только стартовую строку, а ответ — лишь тело сообщения.
Характерные особенности HTTPВ большей части протоколов задумано установление TCP-сессии. В ходе ее работы единожды проводится авторизация, а все дальнейшие операции выполняются в рамках пройденной авторизации.
В случае с HTTP, протокол устанавливает отдельную TCP-сессию на каждый запрос. Более поздние версии могут производить несколько запросов в ходе одной TCP-сессии, однако браузеры, как правило, запрашивают исключительно одну страницу, а также включенные в нее объекты, и уже потом моментально разрывают TCP-сессию. Чтобы организовать авторизованный доступ, в HTTP применяются cookies. Такой метод авторизации позволяет сохранить сессию даже после перезагрузки клиента/сервера.
Перед передачей данных протокол HTTP осуществляет передачу заголовка «Content-Type: тип/подтип», который позволяет клиенту однозначно определить, каким именно образом производить обработку полученных данных. Это крайне важно при работе с CGI-скриптами (расширение имени файла указывает на необходимость запуска данного файла на сервере, а также последующей отправки результатов клиенту, которые записываются в отдельном файле).
Также, в рамках HTTP имеется возможность прислать на сервер клиенту определенные параметры, которые передаются потом CGI-скрипту. Для этого в HTML ввели формы.
По сути, HTTP провел коммерциализацию Интернета: появились компании, основным полем деятельности которых стало предоставление доступа в Интернет (провайдеры) и создание сайтов.
Что такое протокол передачи гипертекста (HTTP)?
Что означает протокол передачи гипертекста?
Протокол передачи гипертекста или HTTP — это основной протокол, используемый в Интернете для управления передачей данных на хост-сервер и с него при взаимодействии с веб-браузером.
Рекламные объявления
HTTP является основным средством связи между веб-пользователями и серверами, которые поддерживают сами веб-сайты.
Techopedia объясняет протокол передачи гипертекста
Будучи протоколом без сохранения состояния, HTTP по своей сути не сохраняет пользовательские настройки, поэтому такие элементы, как файлы cookie, используются, чтобы помочь веб-сайтам и серверам «запомнить» действия пользователя.
Использование инструментов, доступных пользователю, означает, что пользователи могут выбрать удаление файлов cookie и других инструментов и начать все заново как анонимные пользователи или сохранить эти маркеры, чтобы они могли снова обойти все это «знакомство» с сайтом хостинг-сервера.
В некотором смысле HTTP был полезен для перехода от использования Интернета к действительно стабильному результату с отслеживанием состояния, но пользователи, которые удаляют все файлы cookie и сохраненные данные в первый раз, могут быть встревожены тем, насколько скомпрометирована их повседневная работа в Интернете.
Ранний HTTP
Давайте поговорим о некоторых важных частях заголовка HTTP. Заголовки запросов и ответов HTTP определяют рабочие параметры транзакций HTTP.
Структура запроса обычно содержит URL с методом и определяет протокол.
Кроме того, есть различные стандартные и нестандартные поля запроса, которые вызывают различные взаимодействия.
Простой способ представить это так: коды и поля HTTP — это, опять же, способ общения двух транзакционных сторон: браузеры отправляют запрос на сервер, а серверы отправляют ответы, также в синтаксисе HTTP.
Универсализация этого в контексте синтаксиса гипертекста имеет смысл и является частью того, как такие группы, как World Wide Web Consortium или W3C, подошли к созданию Интернета в том виде, в каком он существует сегодня.
Обеспечение безопасности HTTP
Со временем появился новый протокол HTTPS, который шифрует содержимое сообщений HTTP с помощью протоколов Transport Layer Security и Secure Dockets Layer или TLS/SSL.
До этого во многих случаях хакеры могли просто войти и ввести дополнения или поправки к фактическому запросу в строке URL своего браузера, прежде чем инициировать сам запрос. Это привело к всевозможным уязвимостям безопасности, когда злоумышленники получали контроль над системами или доступ к ним.
Поскольку протокол HTTPS шифрует фактический синтаксис HTTP, он эффективно защищает от подобных действий.
Отслеживание и интерактивность
По мере усложнения Интернета развивается и HTTP. Способы взаимодействия веб-пользователей и сайтов претерпели довольно значительные изменения за последние пару десятилетий.
Например, в целом эпоха Web 2. 0 была временем, когда корпоративные и другие веб-сайты стали более интерактивными. В веб-страницы в целом встроено больше полей регистрации пользователей и других пользовательских событий, и всем этим нужно управлять с помощью HTTP или, точнее, HTTPS.
Кроме того, есть новости о будущем веб 3.0, который будет опираться на такие технологии, как JSON, для обеспечения большего отображения данных, большего семантического соединения и большей автоматизации взаимодействия браузера и сервера.
Сам HTTP в будущем может претерпеть гораздо больше изменений, чтобы приспособиться к этому, но на данный момент HTTPS остается основополагающим аспектом безопасности и функционирования Интернета.
Реклама
HTTP — протокол передачи гипертекста
следующий → ← предыдущая
Особенности HTTP:
HTTP-транзакцииНа приведенном выше рисунке показана транзакция HTTP между клиентом и сервером. Клиент инициирует транзакцию, отправляя сообщение запроса на сервер. сообщенияHTTP-сообщения бывают двух типов: запрос и ответ. Оба типа сообщений имеют одинаковый формат сообщения. Сообщение запроса: Клиент отправляет сообщение запроса, которое состоит из строки запроса, заголовков и иногда тела. Ответное сообщение: Сервер отправляет клиенту ответное сообщение, которое состоит из строки состояния, заголовков и иногда тела. Единый указатель ресурсов (URL)
|