Http протокол что это: 🤷🏽♀️ Page not found | MDN Web Docs
Содержание
Что такое HTTP?
HTTP (HyperText Transfer Protocol) — это набор правил, которым сервер должен следовать, когда дело доходит до передачи файлов (изображений, видео, аудио и других форм файлов) через Всемирную паутину (WWW). Когда пользователь открывает браузер, он уже использует HTTP. По сути, это протокол приложения, который проходит через верхнюю часть набора протоколов TCP/IP.
Функциональность
Механизм и концепция HTTP включает в себя то, что файлы связаны с другими файлами через ряд ссылок. Этот выбор вызовет дополнительные запросы на передачу. Любое устройство веб-сервера на самом деле содержит программу, которая называется HTTP-демоном, которая предназначена для прогнозирования HTTP-запросов и обработки их по их получении. Типичный веб-браузер — это HTTP-клиент, который постоянно посылает запросы на серверные устройства. Пользователь вводит запросы в файл, проходя через веб-файл, который в данном случае обычно является URL-адресом, или нажимает на ссылку; браузер формирует HTTP-запрос, а затем отправляет его на IP-адрес, указанный через URL.
HTTP следует заданному циклу всякий раз, когда посылает запрос:
- Браузер запросит HTML-страницу. Затем сервер возвращает HTML-файл с хоста.1
- Браузер запросит таблицу стилей. Затем сервер возвращает файл CSS.
- Браузер запрашивает изображение в формате JPG. Сервер возвращает файл JPG.
- Браузер запросит код JavaScript (язык программирования). После этого сервер возвращает JS-файл.
- Браузер запрашивает различные формы данных. Сервер возвращает данные в виде XML или JSON файлов.
Различие между HTTP и HTTPS
Большинство людей не знают о различиях между http:// и https://, поскольку оба они почти визуально схожи. Знание различий между ними имеет первостепенное значение для поддержания безопасного и эффективного сайта, способного защитить информацию и данные. Браузеры были разработаны таким образом, что строка URL-адреса будет выделять буквы S в HTTPS другим цветом, чтобы пользователи могли их заметить.
Вот некоторые очевидные различия между ними:
- HTTP — В настоящее время шифрование данных не осуществляется.
- Каждая URL-ссылка использует HTTP в качестве основного типа протокола передачи гипертекста. Учитывая это, HTTP уподобляется системе, которая не принадлежит ни одному государству. Это позволяет включить любое соединение по требованию.
- По сути, этот протокол является протоколом прикладного уровня. Это означает, что он больше фокусируется на информации, которая предоставляется пользователю, но не на том, как эти данные передаются от узла-источника к получателю. Это может нанести ущерб, так как это средство доставки может быть легко перехвачено и отслежено злоумышленниками сторонних пользователей (обычно известными как хакеры).
- HTTPS — Данные зашифрованы.
- По сравнению с HTTP, информация о пользователе, такая как номера кредитных карт и другие формы важной личной информации, зашифрована. Это предотвращает доступ вредоносных пользователей третьих сторон к этим формам конфиденциальных данных в любой форме.
- При более безопасной сети пользователи будут иметь более высокий уровень доверия при использовании сайта, поскольку их данные зашифрованы, а пользователям со злым умыслом будет трудно взломать свои данные.
- Статистика показывает, что 84% покупателей покидают веб-сайты после того, как узнают, что веб-сайт передает данные по незащищенному каналу.
- 29% пользователей осознают разницу между HTTP и HTTPS и активно ищут эту разницу в адресной строке.
- Являясь новой формой технологии, HTTPS все еще имеет несколько особенностей, которые до сих пор считаются экспериментальными. В связи с этим более старые типы браузеров будут испытывать трудности с адаптацией к этим веб-сайтам.
- По сравнению с простой настройкой сайта с HTTP, переход на HTTPS требует от пользователя прохождения нескольких юридических процедур для получения SSL-сертификата. Это означает, что владельцы страниц и сайтов вынуждены тратить деньги. Получение SSL-сертификатов является платной услугой от центра сертификации.
- Благодаря процессу кодирования сервер направляет энергию и время обработки на кодирование информации до того, как она будет передана.
Резюме технических различий между HTTP и HTTPS:
- HTTP небезопасен, в то время как HTTPS является безопасным протоколом.
- HTTP использует TCP порт 80, в то время как HTTPS использует TCP порт 4433.
- HTTP работает на прикладном уровне, в то время как HTTPS работает на транспортном уровне безопасности (TLS).
- Для HTTP не требуется сертификат SSL, но HTTPS требует, чтобы сертификат SSL был подписан и внедрен центром сертификации (ЦС).
- HTTP не обязательно требует подтверждения домена, в то время как HTTPS в обязательном порядке требует подтверждения домена и определенных сертификатов, которые требуют юридического оформления.
- Во время зашифровки данных непосредственно перед их передачей для протокола HTTPS шифрование данных в HTTP не выполняется.
- HTTPS является расширением протокола HTTP. В этом случае он работает совместно с другим протоколом, а именно Secure Sockets Layer (SSL) для безопасной передачи данных.
- Как HTTP, так и HTTPS не обращаются к данным, которые будут передаваться по назначению. И наоборот, SSL не имеет никакого отношения к тому, как будут выглядеть данные.
Пользователи часто ошибочно полагают, что HTTPS и SSL являются одними и теми же протоколами. HTTPS безопасен, так как использует SSL для передачи данных. В настоящее время TSL медленно сворачивает использование SSL, поскольку это еще более безопасный способ шифрования данных, который будет отправляться.
HTTPS и HTTP — Что это такое? Чем отличается HTTP и HTTPS протокол сайта — Wiki HOSTiQ.ua
HTTP (от англ. HyperText Transfer Protocol — протокол передачи гипертекста) — это прикладной протокол передачи данных в сети. На текущий момент используется для получения информации с веб-сайтов. Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат.
HTTPS (от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста) — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов SSL и TLS.
Чем отличаются HTTP от HTTPS
- HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP с надстройкой шифрования;
- передаваемые по протоколу HTTP данные не защищены, HTTPS обеспечивает конфиденциальность информации путем ее шифрования;
- HTTP использует порт 80, HTTPS — порт 443.
Использование HTTPS
Обеспечение безопасной передачи данных необходимо на сайтах, где вводится и передается конфиденциальная информация (личные данные пользователей, детали доступа, реквизиты платежных карт) — на любых сайтах с авторизацией, взаимодействием с платежными системами, почтовыми сервисами. Шифрование таких данных позволит предотвратить их получение и использование третьими лицами.
Для реализации передачи данных посредством HTTPS на веб-сервере, обрабатывающем запросы от клиентов, должен быть установлен специальный SSL-сертификат. Есть сертификаты, защищающие только один домен. А есть сертификаты, которые обеспечивают защиту информации на всех поддоменах, и это Wildcard SSL. Также, если вы решили купить VPS для серьезного бизнес-проекта, то, вероятно, вам понадобится TrueBusinessID with EV сертификат, обеспечивающий высший уровень безопасности вашего домена и добавляющий зеленую строку в окне браузера. Шифрование происходит в обе стороны — как данных, полученных клиентом, так и данных, отправленных на сервер.
Наличие SSL-сертификата является одним из факторов ранжирования Google, поэтому переход на протокол HTTPS повышает позиции в поисковой выдаче Google. Хотя на текущий момент этот фактор не имеет основополагающего значения, его влияние на поисковой результат может увеличиваться в будущем.
SSL-сертификаты для любых сайтов
У нас вы найдёте сертификаты от популярных провайдеров Comodo, GeoTrust, Thawte и VeriSign — для защиты одного или нескольких доменов, а также домена и всех его субдоменов.
При покупке хостинга у нас сразу на длительный срок сертификат будет бесплатным. Если понадобится, служба поддержки поможет с активацией и установкой.
Выбрать SSL
Читайте также
Всё что нужно знать про HTTP. Перевод статьи Goran Aviani HTTP and… | by Daria Moreno-Gogoleva
HTTP-запросы
В HTTP каждый запрос должен иметь URL-адрес. К тому же, запросу необходим метод. Четыре главных HTTP метода это:
Я объясню эти и другие методы в разделе «HTTP-методы» этой статьи.
Эти методы прямо соответствуют действиям:
- читать
- обновить
- создать
- удалить
Все HTTP-сообщения имеют один или несколько заголовков, за которыми следует необязательное тело сообщения. Тело содержит данные, которые будут отправлены с запросом, или данные, полученные с ответом.
Первая часть каждого HTTP-запроса содержит три элемента:
Например:
- _GET/adds/search-result?item=vw+beetleHTTP/1.1_
Когда URL содержит знак «?» это означает, что он содержит запрос. Это означает, что он отправляет параметры запрошенного ресурса.
- Первая часть — это метод, который сообщает, какой метод HTTP используется. Чаще всего используется метод GET. Метод GET извлекает ресурс с веб-сервера, и поскольку у GET нет тела сообщения, после заголовка ничего не требуется
- Вторая часть — запрошенный URL.
- Третья часть — используемая версия HTTP. Версия 1.1. является наиболее распространенной для большинства браузеров, однако, версия 2.0 становится популярнее.
В HTTP-запросе есть и другие интересные вещи:
Referer header — сообщает URL-адрес, с которого поступил запрос.
User-Agent header — дополнительная информация об используемом браузере.
Host header — показывает имя хоста. Его следует уникально идентифицировать, это необходимо, когда несколько веб-страниц размещаются на одном сервере.
Cookie header — отправляет дополнительные параметры на клиент.
HTTP-ответы
Как и HTTP-запросы, HTTP-ответы состоят из трех элементов:
Например:
_HTTP/1.1 200 OK_
- Первая часть — версия HTTP.
- Вторая часть — цифровой код результата запроса.
- Третья часть — текстовое объяснение второй части.
В HTTP-ответе есть и другие интересные вещи:
Server header — показывает программное обеспечение сервера.
Set-Cookie header — используется для создания cookie в браузере.
Message body — обычно HTTP-ответ содержит тело сообщения.
Content-Length header — сообщает размер тела сообщения в байтах.
HTTP-методы
Наиболее распространёнными методами являются GET и POST, но бывают и другие.
GET — используется для запросы данных с определенного ресурса, на котором данные не изменяются, поскольку GET-запросы не изменяют состояние ресурса.
POST — используется для отправки данных на сервер для создания ресурса.
PUT — метод для обновления существующего на сервере ресурса, используя содержимое тела запроса.
HEAD — этот метод выполняет ту же функцию, что и GET-метод, но с той разницей, что HEAD не содержит тело запроса. Но он вернёт те же заголовки, что и метод GET. Метод HEAD используют для проверки существования ресурса, перед выполнением метода GET.
TRACE — метод предназначен для диагностических целей. Ответ будет содержать в своем теле точное содержание запроса.
OPTIONS — этот метод используется для описания параметров связи (методов HTTP), доступных для целевого ресурса.
PATCH — используется для применения частичных модификаций к ресурсу..
DELETE — удаляет определённый ресурс.
Что такое протокол HTTP?
HTTP — широко распространённый протокол передачи данных, изначально предназначенный для передачи гипертекстовых документов (то есть документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам).
Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol, «протокол передачи гипертекста».
Задача, которая традиционно решается с помощью протокола HTTP — обмен данными между пользовательским приложением, осуществляющим доступ к веб-ресурсам (обычно это веб-браузер) и веб-сервером. На данный момент именно благодаря протоколу HTTP обеспечивается работа Всемирной паутины.
HTTP протокол — по сути это обычный текстовый протокол, по которому идет обмен данных между сайтом и сервером.
Что такое URL?
URL является неотъемлемой частью HTTP протокола, который позволяет понять к какой части (ресурсу) сайта мы обращаемся. Так же URL является общепринятым стандартом записи адреса и указания на расположение ресурса в интернете. URL расшифровывается как Uniform Resource Locator, это переводится как единый указатель ресурсов. Однако можно встретить также более раннюю расшифровку этой аббревиатуры URL как — Universal Resource Locator (универсальный локатор ресурсов).
Формат URL
Основной формат записи структуры URL адреса выглядит вот так: ://login:password@host:port/path?params
— чаще всего имеется в виду протокол.
login – логин пользователя, используемый для авторизации на ресурсе.
password – пароль пользователя для авторизации.
host – доменное имя хоста.
port – порт хоста, используемый во время подключения.
path– путь, по которому находится запрашиваемый ресурс на сервере.
params – значение переменных и идентификатор на определенном ресурсе.
Вот например самый распространенные форматы урлов:
https://ru.wikipedia.org/wiki/Заглавная_страница
https://ru.wikipedia.org/wiki/Заглавная_страница?page=2
https://ru.wikipedia.org/wiki/Заглавная_страница/Раздел_математика#целые_числа
Как отправить HTTP-запрос?
Для этого вы можете воспользоваться любой подходящей утилитой командной строки. Например, встроенной утилитой telnet, для этого в командной строке :
telnet gogogogogo.xyz 80
После того, как вы подключитесь к серверу, нужно отправить HTTP-запрос. Это, кстати, очень легко — HTTP-запросы могут состоять всего из двух строчек.
GET / HTTP/1.1
Host: gogogogogo.xyz
При этом учитывайте, что для перевода строки следует использовать символ возврата каретки CR (Carriage Return), за которым следует символ перевода строки LN (Line Feed). После объявления последнего заголовка последовательность символов для перевода строки добавляется дважды.
После этого в ответ вы получите что то вида:
HTTP/1.1 200 OK
Server: nginx/1.3.1
Date: Sat, 25 Mar 2014 22:53:46
GMT Content-Type: application/octet-stream
Content-Length: 7
Last-Modified: Sat, 08 Mar 2014 22:53:30 GMT
Connection: keep-alive
Accept-Ranges: bytes
Ниже будет содержимое страницы сайта в виде HTML кода, которое следует через два перевода строки после последнего заголовка.
Еще по теме HTTP протокол
Коды ответа HTTP сервера
Коды ответа сервера. Самые распространенные коды (коды состояния HTTP)
Что такое протокол HTTP/2
Что такое протокол HTTP?
Понимание, что такое протокол HTTP и как он работает очень важная задача для любого веб-мастера. Имея эти знания, вы можете значительно упростить себе жизнь в будущем и избавиться от множества проблем, которые могут у вас возникать.
В этой заметке давайте разберемся с самыми основами: что же такое протокол HTTP и зачем он нужен.
Итак, первое, что нужно понимать, протокол HTTP – это всего лишь один, из множества протоколов (почитайте об этом здесь), которыми можно пользоваться в сети Интернет. У него есть собственные цели и задачи.
Программное обеспечение, которое работает с этим протоколом, называется браузер. Знакомая программа, правда?
Когда вы заходите в браузер, не важно, какой именно браузер у вас установлен, и вводите в адресную строку адрес к сайту, то браузер автоматически прибавляет к адресу приставку «http://». Единственное, эта приставка может быть по умолчанию скрыта, но если скопировать адрес и вставить его в другое место, то ее без труда можно будет увидеть.
Эта приставка обозначает, что вы будете обращаться к ресурсу по протоколу HTTP.
Основная задача протокола HTTP – это прием и передача гипертекстовых документов. Т.е. тех веб-страниц, которые мы просматриваем в браузере.
Сторона, которая принимает содержимое веб-страниц — браузер (еще его называют клиентом), а сторона, которая отдает содержимое веб-страниц — сервер.
Больше моих уроков по серверному программированию здесь.
Технологию, по которой происходит этот обмен, называют «клиент-серверной» технологией.
По сути, протокол HTTP – это инструмент, с помощью которого можно передавать веб-странички в сети Интернет. А, что собой представляет веб-страница, которую мы получаем в ответе сервера? На самом деле это обычный HTML-код , который получает браузер и соответствующим образом его интерпретирует.
Работает это следующим образом.
1 этап. Клиент (браузер) отправляют строку запроса (HTTP-запрос), которая создается по определенным правилам, и запрашивает нужную веб-страничку на сервере.
2 этап. Сервер принимает запрос и ищет у себя эту веб-страницу. По результатам этого поиска создается ответ клиенту (HTTP-ответ). Этот ответ тоже оформляется по определенным правилам.
Если все прошло успешно и страница найдена, то в этом ответе будет передан код нужной веб-страницы + дополнительная служебная информация.
Если произошел, какой-то сбой, то будет передан код ошибки и дополнительная служебная информация.
В общих чертах, это основа работы протокола HTTP. Всегда нужно держать в голове эту картину и тогда остальные тонкости, что именно передается в запросах и ответах, станет намного понятнее.
Если вы знаете английский, то вы можете почитать стандрат протокола HTTP 1.1 в оригинале.
http://tools.ietf.org/html/rfc2616
Кроме того, есть перевод этого стандарта на русский язык здесь:
http://www.lib.ru/WEBMASTER/rfc2068/
Больше моих уроков по серверному программированию здесь.
В чем различия между HTTP и HTTPS и зачем нужен SSL-сертификат
HTTPS и HTTP – два протокола, с помощью которых передается информация в Интернете. Они предназначены для передачи текстовых данных между клиентом и сервером, а главное различие между ними – в наличии и отсутствии шифрования передаваемых данных.
Важной задачей владельца сайта является обеспечение безопасности при передаче информации и ее сохранности. Передача данных по протоколу HTTPS является таким решением.
Что такое HTTP — особенности протокола
HTTP представляет собой прикладной протокол 7 уровня. Действие осуществляется в следующем порядке: клиент направляет запрос к серверу расположения ресурса, протокол форматирует данные нужным образом и предоставляет результат, затем браузер отображает полученные данные. В общем, HTTP – это набор правил передачи информации между браузером пользователя и сервером сайта. В основе его работы находится существующая клиент-серверная передача данных:
- Пользователь составляет и вводит запрос
- Серверное программное обеспечение обрабатывает запрос, систематизирует его, преобразует, а далее отправляет пользователю.
В настоящее время HTTP протокол считается основным фактором нормальной работы интернета, обеспечивая передачу информации между серверами и браузером пользователя. К его достоинствам относятся:
- Простота в использовании;
- Быстрый обмен данными, у HTTP передаваемый объем меньше, чем у HTTPS;
- Популярность данного протокола и его распространенность.
Но есть один момент. Ресурсы с HTTP в основном используются в информационных и развлекательных сайтах, где безопасность данных не столь существенный вопрос, вследствие чего к нему меньше доверия клиентов.
Что такое HTTPS — достоинства и характеристики
HTTPS поддерживает шифрование с повышенным уровнем безопасного обмена данными. Домены, на которых установлен SSL-сертификат, являются платформой для применения данного расширения. Технологии для шифрования применяются во всех этапах обмена информации. Преимущества следующие:
1. Гарантированная безопасность — это решающий фактор при работе с конфиденциальными и финансовыми инструментами. Все ресурсы, работающие с обработкой персональных и финансовых данных работают по протоколу HTTPS;
2. Защита от хакерских атак, направленных на прослушивание соединения;
3. Поисковые системы настоятельно рекомендуют всем ресурсам перейти на HTTPS протокол;
4. Скорость загрузки данных практически одинакова с показателем HTTP. Безопасность важнее, чем несущественный прирост скорости передачи данных.
По протоколу HTTPS в большинстве случаев работают: интернет-магазины, сервисы-кэшбэк, платежные ресурсы с электронными кошельками, различные финансовые подразделения, транспортные предприятия, государственные сайты и другие подобные ресурсы.
На данный момент, фактически, использование HTTPS с сертификатом SSL — стандарт «де-факто» практически для любого сайта.
Различия SSL сертификатов
SSL-сертификаты имеют несколько разновидностей. Они классифицируются следующим доверительным факторам:
1. Проверка в упрощенном виде — DV (domain validation). Подтверждение права на пользование доменом. Обычно такой сертификат можно получить бесплатно.
2. Стандартная проверка OV (organization validation). Кроме права на владение доменом, подтверждается фактическое существование организации.
3. Расширенная проверка EV (extended validation). Подтверждает большую степень доверия – к перечисленным выше факторам прибавляется правомерное осуществление работы компании.
Применяя SSL-сертификат для ресурса, его владелец автоматически увеличивает степень доверия потенциальных клиентов и поисковиков. В момент загрузки страницы в адресной строке появляется надпись «Защищено» или «Secure» — клиенты уже знают, что данные не попадут к мошенникам. Помимо безопасности, переход на HTTPS способствует повышению позиций сайта в поисковой выдаче и предупреждает уход потенциальных клиентов к конкурентам.
HTTP протокол
HTTP протокол
Протокол передачи гипертекста (Hypertext Transfer Protocol — HTTP) — это прикладной протокол* для передачи гипертекстовых документов, таких как HTML.
HTTP протокол описывает взаимодействие между двумя компьютерами (клиентом и сервером), построенное на базе сообщений, называемых запрос (Request) и ответ (Response).
Каждое сообщение состоит из трех частей:
- Cтартовая строка
- Заголовки
- Тело
При этом обязательной является только стартовая строка.
Стартовые строки для запроса и ответа имеют различный формат — нам интересна только стартовая строка запроса, которая выглядит так:
METHOD URI HTTP/VERSION
Он создан для связи между веб-браузерами и веб-серверами, хотя HTTP может использоваться и для других целей. Протокол следует классической клиент-серверной модели, когда клиент открывает соединение для создания запроса, а затем ждет ответа. HTTP — это протокол без сохранения состояния, относит каждый запрос к независимой транзакции, которая не связана с предыдущим запросом, то есть сервер не сохраняет никаких данных (состояние) между двумя парами «запрос-ответ».
Несмотря на то, что HTTP основан на TCP/IP, он также может использовать любой другой протокол транспортного уровня с гарантированной доставкой.
Справочно:
*Протокол прикладного уровня (Application layer) — протокол верхнего (7-го) уровня сетевой модели OSI, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя иметь доступ к сетевым службам, таким, как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления (уровень представления — отвечает за преобразование протоколов и кодирование/декодирование данных.
Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На этом важном уровне может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
Обзор HTTP — HTTP
HTTP — это протокол, который позволяет получать ресурсы, такие как документы HTML. Это основа любого обмена данными в Интернете, и это протокол клиент-сервер, что означает, что запросы инициируются получателем, обычно веб-браузером. Полный документ реконструируется из различных извлеченных суб-документов, например текста, описания макета, изображений, видео, сценариев и т. Д.
Клиенты и серверы общаются посредством обмена отдельными сообщениями (в отличие от потока данных).Сообщения, отправленные клиентом, обычно веб-браузером, называются запросами , а сообщения, отправленные сервером в качестве ответа, называются ответами .
Разработанный в начале 1990-х годов HTTP — это расширяемый протокол, который со временем развивался. Это протокол прикладного уровня, который пересылается через TCP или TCP-соединение с шифрованием TLS, хотя теоретически можно использовать любой надежный транспортный протокол. Благодаря своей расширяемости он используется не только для получения гипертекстовых документов, но также изображений и видео или для публикации контента на серверах, например, с результатами HTML-форм.HTTP также можно использовать для получения частей документов для обновления веб-страниц по запросу.
HTTP — это протокол клиент-сервер: запросы отправляются одним объектом, пользовательским агентом (или прокси от его имени). В большинстве случаев пользовательским агентом является веб-браузер, но это может быть что угодно, например робот, который просматривает Интернет, чтобы заполнить и поддерживать индекс поисковой системы.
Каждый отдельный запрос отправляется на сервер, который обрабатывает его и предоставляет ответ, называемый ответом .Между клиентом и сервером существует множество объектов, вместе называемых прокси-серверами, которые выполняют различные операции и действуют, например, как шлюзы или кеши.
На самом деле между браузером и сервером, обрабатывающим запрос, больше компьютеров: есть маршрутизаторы, модемы и т. Д. Благодаря многоуровневой структуре Интернета они скрыты на сетевом и транспортном уровнях. HTTP находится сверху, на уровне приложения. Несмотря на важность диагностики сетевых проблем, лежащие в основе уровни в основном не имеют отношения к описанию HTTP.
Клиент: пользовательский агент
Пользовательский агент — это любой инструмент, который действует от имени пользователя. Эту роль в первую очередь выполняет веб-браузер; другие возможности — это программы, используемые инженерами и веб-разработчиками для отладки своих приложений.
Браузер всегда объект, инициирующий запрос. Это никогда не сервер (хотя с годами были добавлены некоторые механизмы для имитации инициируемых сервером сообщений).
Для представления веб-страницы браузер отправляет исходный запрос на выборку HTML-документа, представляющего страницу.Затем он анализирует этот файл, делая дополнительные запросы, соответствующие сценариям выполнения, информации о макете (CSS) для отображения и подресурсам, содержащимся на странице (обычно изображения и видео). Затем веб-браузер смешивает эти ресурсы, чтобы представить пользователю полный документ, веб-страницу. Сценарии, выполняемые браузером, могут извлекать больше ресурсов на более поздних этапах, и браузер соответствующим образом обновляет веб-страницу.
Веб-страница — это гипертекстовый документ. Это означает, что некоторые части отображаемого текста являются ссылками, которые могут быть активированы (обычно щелчком мыши) для получения новой веб-страницы, что позволяет пользователю управлять своим пользовательским агентом и перемещаться по сети.Браузер переводит эти направления в HTTP-запросы и дополнительно интерпретирует HTTP-ответы, чтобы предоставить пользователю четкий ответ.
Веб-сервер
На противоположной стороне канала связи находится сервер, который обслуживает документ по запросу клиента. Сервер виртуально выглядит как одна машина: это потому, что на самом деле это может быть набор серверов, разделяющих нагрузку (балансировка нагрузки) или сложная часть программного обеспечения, опрашивающего другие компьютеры (например, кэш, сервер БД или электронная коммерция). серверов), полностью или частично генерируя документ по запросу.
Сервер не обязательно является одной машиной, но на одной машине могут размещаться несколько экземпляров серверного программного обеспечения. С HTTP / 1.1 и заголовком Host
они могут даже использовать один и тот же IP-адрес.
Прокси-серверы
Между веб-браузером и сервером множество компьютеров и машин передают сообщения HTTP. Из-за многоуровневой структуры веб-стека большинство из них работают на транспортном, сетевом или физическом уровнях, становясь прозрачными на уровне HTTP и потенциально оказывая значительное влияние на производительность.Те, которые работают на прикладных уровнях, обычно называются прокси . Они могут быть прозрачными, перенаправляя запросы, которые они получают, не изменяя их каким-либо образом, или непрозрачными, и в этом случае они изменят запрос каким-либо образом, прежде чем передать его серверу. Прокси могут выполнять множество функций:
- кеширование (кеш может быть общедоступным или частным, как кеш браузера)
- фильтрация (например, антивирусное сканирование или родительский контроль)
- балансировка нагрузки (чтобы несколько серверов могли обслуживать разные запросы)
- аутентификация (для управления доступом к разным ресурсам)
- ведение журнала (позволяет хранить историческую информацию)
HTTP — это просто
HTTP обычно разрабатывается таким образом, чтобы быть простым и читаемым человеком, даже с добавленной сложностью, введенной в HTTP / 2 путем инкапсуляции сообщений HTTP во фреймы.Сообщения HTTP могут быть прочитаны и поняты людьми, что упрощает тестирование для разработчиков и снижает сложность для новичков.
HTTP является расширяемым
Заголовки HTTP, введенные в HTTP / 1.0, позволяют легко расширять этот протокол и экспериментировать с ним. Новые функции могут быть даже введены путем простого соглашения между клиентом и сервером о семантике нового заголовка.
HTTP без состояния, но не без сеанса
HTTP без состояния: нет связи между двумя запросами, последовательно выполняемыми в одном и том же соединении.Это сразу может стать проблематичным для пользователей, пытающихся связно взаимодействовать с определенными страницами, например, используя корзины покупок электронной коммерции. Но хотя ядро HTTP не имеет состояния, файлы cookie HTTP позволяют использовать сеансы с отслеживанием состояния. Используя расширяемость заголовка, HTTP-файлы cookie добавляются в рабочий процесс, что позволяет создавать сеанс для каждого HTTP-запроса, чтобы использовать один и тот же контекст или одно и то же состояние.
HTTP и соединения
Соединение контролируется на транспортном уровне и поэтому принципиально выходит за рамки HTTP.Хотя HTTP не требует, чтобы базовый транспортный протокол был основан на соединении; только требуя, чтобы он был надежным или не терял сообщения (так как минимум представляя ошибку). Среди двух наиболее распространенных транспортных протоколов в Интернете TCP является надежным, а UDP — нет. Таким образом, HTTP полагается на стандарт TCP, основанный на соединении.
Прежде чем клиент и сервер смогут обмениваться парой HTTP-запрос / ответ, они должны установить TCP-соединение, процесс, который требует нескольких циклов приема-передачи.По умолчанию HTTP / 1.0 открывает отдельное TCP-соединение для каждой пары HTTP-запрос / ответ. Это менее эффективно, чем совместное использование одного TCP-соединения, когда несколько запросов отправляются в близкой последовательности.
Чтобы смягчить этот недостаток, HTTP / 1.1 представил конвейерную обработку (что оказалось трудно реализовать) и постоянных соединений. : базовое TCP-соединение может частично контролироваться с помощью заголовка Connection
. HTTP / 2 пошел еще дальше, мультиплексировав сообщения через одно соединение, что помогло сохранить соединение теплым и более эффективным.
Продолжаются эксперименты по разработке лучшего транспортного протокола, более подходящего для HTTP. Например, Google экспериментирует с QUIC, который основан на UDP, чтобы обеспечить более надежный и эффективный транспортный протокол.
Эта расширяемая природа HTTP со временем позволила расширить контроль и функциональность сети. Кэширование или методы аутентификации были функциями, которые обрабатывались на ранних этапах истории HTTP. Возможность ослабить ограничение происхождения , напротив, была добавлена только в 2010-х годах.
Вот список общих функций, управляемых с помощью HTTP.
- Кэширование
Кэширование документов можно контролировать с помощью HTTP. Сервер может указывать прокси и клиентам, что кэшировать и на какой срок. Клиент может дать указание промежуточным прокси-серверам кеширования игнорировать сохраненный документ. - Ослабление ограничения происхождения
Чтобы предотвратить отслеживание и другие нарушения конфиденциальности, веб-браузеры обеспечивают строгое разделение между веб-сайтами.Только страницы из того же источника могут получить доступ ко всей информации веб-страницы. Хотя такое ограничение является бременем для сервера, заголовки HTTP могут ослабить это строгое разделение на стороне сервера, позволяя документу превратиться в лоскутное одеяло из информации, полученной из разных доменов; для этого могут быть даже причины, связанные с безопасностью. - Аутентификация
Некоторые страницы могут быть защищены, чтобы к ним могли получить доступ только определенные пользователи. Базовая аутентификация может быть предоставлена по протоколу HTTP, либо с использованиемWWW-Authenticate
и аналогичных заголовков, либо путем установки определенного сеанса с использованием файлов cookie HTTP. - Прокси-сервер и туннелирование
Серверы или клиенты часто находятся в интрасетях и скрывают свой истинный IP-адрес от других компьютеров. Затем HTTP-запросы проходят через прокси-серверы, чтобы преодолеть этот сетевой барьер. Не все прокси являются HTTP-прокси. Например, протокол SOCKS работает на более низком уровне. Эти прокси могут обрабатывать другие протоколы, например ftp. - Сеансы
Использование файлов cookie HTTP позволяет связывать запросы с состоянием сервера.Это создает сеансы, несмотря на то, что базовый HTTP является протоколом без состояния. Это полезно не только для корзин покупок в электронной коммерции, но и для любого сайта, позволяющего пользователю настраивать вывод.
Когда клиент хочет связаться с сервером, конечным сервером или промежуточным прокси-сервером, он выполняет следующие шаги:
- Открытие TCP-соединения: TCP-соединение используется для отправки запроса или нескольких запросов и получения ответа. Клиент может открыть новое соединение, повторно использовать существующее соединение или открыть несколько TCP-соединений с серверами.
- Отправить сообщение HTTP: сообщения HTTP (до HTTP / 2) читаются человеком. В HTTP / 2 эти простые сообщения инкапсулируются во фреймы, что делает невозможным их прямое чтение, но принцип остается тем же. Например:
GET / HTTP / 1.1 Хост: developer.mozilla.org Принимаю-Язык: fr
- Прочтите ответ, отправленный сервером, например:
HTTP / 1.1 200 ОК Дата: сб, 09 октября 2010 г., 14:28:02 GMT Сервер: Apache Последнее изменение: Вт, 1 декабря 2009 г., 20:18:22 GMT ETag: "51142bc1-7449-479b075b2891b" Accept-Ranges: байты Длина содержимого: 29769 Тип содержимого: текст / html
- Закройте или повторно используйте соединение для дальнейших запросов.
Если активирована конвейерная обработка HTTP, можно отправить несколько запросов, не дожидаясь полного получения первого ответа. Конвейерная обработка HTTP оказалась сложной для реализации в существующих сетях, где старые части программного обеспечения сосуществуют с современными версиями. Конвейерная обработка HTTP была заменена в HTTP / 2 более надежным мультиплексированием запросов внутри кадра.
HTTP-сообщения, определенные в HTTP / 1.1 и более ранних версиях, удобочитаемы. В HTTP / 2 эти сообщения встроены в двоичную структуру, фрейм , что позволяет выполнять такие оптимизации, как сжатие заголовков и мультиплексирование. Даже если в этой версии HTTP отправляется только часть исходного сообщения HTTP, семантика каждого сообщения остается неизменной, и клиент воссоздает (виртуально) исходный запрос HTTP / 1.1. Поэтому полезно понимать сообщения HTTP / 2 в HTTP / 1.1 формат.
Существует два типа HTTP-сообщений, запросов и ответов, каждый со своим собственным форматом.
Запросы
Пример HTTP-запроса:
Запросы состоят из следующих элементов:
- Метод HTTP, обычно глагол, например
GET
,POST
или существительное, напримерOPTIONS
илиHEAD
, который определяет операцию, которую хочет выполнить клиент. Обычно клиент хочет получить ресурс (используяGET
) или опубликовать значение HTML-формы (используяPOST
), хотя в других случаях может потребоваться больше операций. - Путь к извлекаемому ресурсу; URL-адрес ресурса, лишенный очевидных из контекста элементов, например без протокола (
http: //
), домена (здесьdeveloper.mozilla.org
) или порта TCP (здесь80
). - Версия протокола HTTP.
- Необязательные заголовки, передающие дополнительную информацию для серверов.
- Или тело для некоторых методов, таких как
POST
, аналогично ответам, которые содержат отправленный ресурс.
Ответы
Пример ответа:
Ответы состоят из следующих элементов:
- Версия протокола HTTP, которому они следуют.
- Код состояния, указывающий, был ли запрос успешным и почему.
- Сообщение о состоянии, неполное краткое описание кода состояния.
- HTTP-заголовков, как и для запросов.
- Необязательно тело, содержащее извлеченный ресурс.
Наиболее часто используемым API на основе HTTP является API XMLHttpRequest
, который можно использовать для обмена данными между пользовательским агентом и сервером. Современный Fetch API
предоставляет те же функции с более мощным и гибким набором функций.
Другой API, события, отправленные сервером, представляет собой одностороннюю службу, которая позволяет серверу отправлять события клиенту, используя HTTP в качестве транспортного механизма. Используя интерфейс EventSource
, клиент открывает соединение и устанавливает обработчики событий.Клиентский браузер автоматически преобразует сообщения, поступающие в поток HTTP, в соответствующие объекты Event
, доставляя их обработчикам событий, которые были зарегистрированы для событий типа
, если они известны, или обработчику событий onmessage
, если нет Создан типовой обработчик событий.
HTTP - это расширяемый протокол, который прост в использовании. Структура клиент-сервер в сочетании с возможностью добавления заголовков позволяет развивать HTTP вместе с расширенными возможностями Интернета.
Хотя HTTP / 2 добавляет некоторую сложность, встраивая сообщения HTTP во фреймы для повышения производительности, основная структура сообщений осталась прежней с HTTP / 1.0. Поток сеанса остается простым, что позволяет его исследовать и отлаживать с помощью простого монитора сообщений HTTP.
HTTP: краткая история HTTP
(О'Рейли)
Введение
Протокол передачи гипертекста (HTTP) - один из самых распространенных
и широко распространенные протоколы приложений в Интернете: это
общий язык между клиентами и серверами, обеспечивающий современный Интернет.Начиная с простого ключевого слова и пути к документу, он имеет
стать протоколом выбора не только для браузеров, но и для виртуальных
каждое подключенное к Интернету программное и аппаратное приложение.
В этой главе мы сделаем краткий исторический тур по эволюции
протокола HTTP. Полное обсуждение различной семантики HTTP приведено ниже.
выходит за рамки этой книги, но понимание ключевого дизайна
изменения HTTP и мотивы, стоящие за каждым из них, дадут нам
необходимый фон для наших обсуждений производительности HTTP, особенно
в контексте многих предстоящих улучшений в HTTP / 2.
§HTTP 0.9:
Однострочный протокол
Первоначальное предложение HTTP Тима Бернерса-Ли было разработано с
простота в виду , чтобы помочь с принятием его другого
зарождающаяся идея: всемирная паутина. Стратегия, похоже, сработала:
начинающим разработчикам протоколов, обратите внимание.
В 1991 году Бернерс-Ли изложил мотивацию нового протокола и
перечислил несколько высокоуровневых целей дизайна: функциональность передачи файлов,
возможность запросить индексный поиск гипертекстового архива, формат
согласование и возможность направить клиента на другой сервер.К
доказывая теорию в действии, был построен простой прототип, который
реализовано небольшое подмножество предлагаемого функционала:
Клиентский запрос представляет собой одну строку символов ASCII.
Запрос клиента завершается возвратом каретки (CRLF).
Ответ сервера - это поток символов ASCII.
Однако даже это звучит намного сложнее, чем есть на самом деле.Эти правила позволяют использовать чрезвычайно простой, дружественный к Telnet протокол,
которые некоторые веб-серверы поддерживают по сей день:
$> telnet google.com 80 Подключен к 74.125.xxx.xxx ПОЛУЧИТЬ / о нас / (гипертекстовый ответ) (соединение закрыто)
Запрос состоит из одной строки: GET
метод и
путь к запрашиваемому документу. Ответ представляет собой одинарный гипертекст
документ - никаких заголовков или каких-либо других метаданных, только HTML.Это реально
не может быть проще. Кроме того, поскольку предыдущее взаимодействие является
подмножество предполагаемого протокола, он неофициально получил HTTP 0.9
этикетка. Остальное, как говорится, уже история.
С этого скромного начала в 1991 году HTTP начал жить собственной жизнью.
и быстро развивалась в последующие годы. Давайте быстро резюмируем
особенности HTTP 0.9:
Клиент-сервер, протокол запрос-ответ.
- Протокол
ASCII, работающий по каналу TCP / IP.
Предназначен для передачи гипертекстовых документов (HTML).
Соединение между сервером и клиентом закрывается после каждого
запрос.
Популярные веб-серверы, такие как Apache и Nginx, по-прежнему поддерживают
Протокол HTTP 0.9 - отчасти потому, что в нем нет ничего особенного! Если ты
любопытно, откройте сеанс Telnet и попробуйте получить доступ к google.com или вашему
собственный любимый сайт, через HTTP 0.9 и проверьте поведение и
ограничения этого раннего протокола.
§HTTP / 1.0: быстрый рост и информация RFC
Период с 1991 по 1995 год был периодом быстрой коэволюции HTML.
спецификации, нового поколения программного обеспечения, известного как "веб-браузер", и
появление и быстрый рост ориентированного на потребителя общедоступного Интернета
инфраструктура.
§Идеальный шторм: Интернет-бум начала 1990-х
Основываясь на первоначальном прототипе браузера Тима Бернер-Ли, команда
Национальный центр суперкомпьютерных приложений (NCSA) решил
реализовать свою версию.Таким образом, первым популярным браузером стал
родился: NCSA Mosaic. Один из программистов в команде NCSA, Марк
Андреессен в партнерстве с Джимом Кларком основал Mosaic Communications в
Октябрь 1994 г. Позднее компания была переименована в Netscape, и она начала поставки.
Netscape Navigator 1.0 в декабре 1994 года. К этому моменту он уже был
ясно, что во всемирной паутине должно было быть намного больше , чем
просто академическое любопытство.
Фактически, в том же году была проведена первая конференция World Wide Web.
организованный в Женеве, Швейцария, что привело к созданию
Консорциум World Wide Web (W3C), помогающий направлять эволюцию HTML.Аналогичным образом была создана параллельная рабочая группа HTTP (HTTP-WG).
в IETF, чтобы сосредоточиться на улучшении протокола HTTP. Обе эти
группы продолжают играть важную роль в развитии Интернета.
Наконец, чтобы создать идеальный шторм, CompuServe, AOL и Prodigy
начал предоставлять коммутируемый доступ в Интернет для населения в том же
Период 1994–1995 гг. На этой волне быстрого внедрения Netscape
вошла в историю благодаря чрезвычайно успешному IPO 9 августа 1995 г.
Наступил Интернет-бум, и каждый хотел получить от него кусок!
Растущий список желаемых возможностей зарождающейся сети и их
варианты использования в общедоступной сети быстро выявили многие фундаментальные
ограничения HTTP 0.9: нам нужен протокол, который мог бы служить более чем
просто гипертекстовые документы, предоставляют более подробные метаданные о запросе и
ответ, включение согласования содержимого и многое другое. В свою очередь зарождающиеся
сообщество веб-разработчиков отреагировало созданием большого количества
экспериментальные реализации HTTP-сервера и клиента через специальную
процесс: внедрить, развернуть и посмотреть, примут ли его другие люди.
Из этого периода быстрых экспериментов, набор лучших практик и
начали появляться общие шаблоны, и в мае 1996 г. рабочая группа HTTP
(HTTP-WG) опубликовал RFC 1945, в котором задокументировано «общее использование»
много HTTP / 1.0 реализаций, найденных в дикой природе. Обратите внимание, что это было только
информационный RFC: HTTP / 1.0, как мы знаем, не является формальным
спецификация или интернет-стандарт!
Сказав это, пример запроса HTTP / 1.0 должен выглядеть очень
знакомые:
$> telnet website.org 80 Подключен к xxx.xxx.xxx.xxx ПОЛУЧИТЬ /rfc/rfc1945.txt HTTP / 1.0 Пользовательский агент: CERN-LineMode / 2.15 libwww / 2.17b3 Принимать: */* HTTP / 1.0 200 ОК Тип содержимого: текст / простой Длина содержимого: 137582 Истекает: Thu, 01 Dec 1997 16:00:00 GMT Последнее изменение: среда, 1 мая 1996 г., 12:45:26 GMT Сервер: Apache 0.84 (ответ в виде простого текста) (соединение закрыто)
Строка запроса с номером версии HTTP, за которой следует запрос
заголовкиСтатус ответа, за которым следуют заголовки ответа
Предыдущий обмен не является исчерпывающим списком HTTP / 1.0.
возможности, но он действительно иллюстрирует некоторые ключевые изменения протокола:
Запрос может состоять из нескольких полей заголовка, разделенных новой строкой.
Объект ответа предваряется строкой состояния ответа.
Объект ответа имеет собственный набор заголовков, разделенных новой строкой
поля.Объект ответа не ограничен гипертекстом.
Соединение между сервером и клиентом закрывается после каждого
запрос.
Заголовки запроса и ответа сохранялись в кодировке ASCII, но
сам объект ответа может быть любого типа: HTML-файл, простой
текстовый файл, изображение или любой другой тип содержимого.Следовательно, «гипертекст
передача "часть HTTP стала неправильным употреблением вскоре после его появления.
На самом деле HTTP быстро превратился в гипермедиа .
транспорт , но прижилось оригинальное название.
Помимо согласования типа носителя, RFC также задокументировал
ряд других обычно реализуемых возможностей: кодирование контента,
поддержка набора символов, составные типы, авторизация, кеширование, прокси
поведение, форматы даты и многое другое.
Почти каждый сервер в сети сегодня может и будет говорить
HTTP / 1.0. Кроме того, к настоящему времени вы должны знать лучше! Требуется новый
TCP-соединение на запрос значительно снижает производительность
HTTP / 1.0; см. Трехстороннее рукопожатие,
с последующим медленным запуском.
§HTTP / 1.1: Интернет-стандарт
Работа над превращением HTTP в официальный стандарт Интернета IETF
продолжалось параллельно с документацией по HTTP / 1.0 и
произошло примерно за четыре года: с 1995 по 1999 год.
Фактически, первый официальный стандарт HTTP / 1.1 определен в RFC 2068, который
был официально выпущен в январе 1997 года, примерно через шесть месяцев после
публикация HTTP / 1.0. Затем, два с половиной года спустя, в июне
1999 г. был внесен ряд улучшений и обновлений в
стандарта и были выпущены как RFC 2616.
Стандарт HTTP / 1.1 разрешил множество обнаруженных неоднозначностей протокола
в более ранних версиях и представил ряд критических показателей производительности
оптимизации: соединения keepalive, передача кодирования фрагментов,
запросы байтового диапазона, дополнительные механизмы кэширования, кодировки передачи,
и запросить конвейерную обработку.
Имея эти возможности, теперь мы можем проверить типичный
Сеанс HTTP / 1.1, выполняемый любым современным браузером и клиентом HTTP:
$> telnet website.org 80 Подключен к xxx.xxx.xxx.xxx ПОЛУЧИТЬ /index.html HTTP / 1.1 Хост: website.org Пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_7_4) ... (фрагмент) Принять: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Принятие кодировки: gzip, deflate, sdch Accept-Language: en-US, en; q = 0.8 Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3 Cookie: __qca = P0-800083390 ... (фрагмент) HTTP / 1.1 200 ОК Сервер: nginx / 1.0.11 Подключение: keep-alive Тип содержимого: текст / html; charset = utf-8 Через: HTTP / 1.1 GWA Дата: среда, 25 июля 2012 г., 20:23:35 GMT Истекает: Wed, 25 Jul 2012 20:23:35 GMT Cache-Control: max-age = 0, без кеширования Кодирование передачи: фрагментированное 100 (вырезать) 100 (вырезать) 0 ПОЛУЧИТЬ /favicon.ico HTTP / 1.1 Хост: www.website.org Пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_7_4)... (вырезать) Принимать: */* Референт: http://website.org/ Подключение: закрыть Принятие кодировки: gzip, deflate, sdch Accept-Language: en-US, en; q = 0,8 Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3 Cookie: __qca = P0-800083390 ... (фрагмент) HTTP / 1.1 200 ОК Сервер: nginx / 1.0.11 Тип содержимого: изображение / значок x Длина содержимого: 3638 Подключение: закрыть Последнее изменение: чт, 19 июля 2012 г., 17:51:44 GMT Cache-Control: max-age = 315360000. Accept-Ranges: байты Через: HTTP / 1.1 GWA Дата: сб, 21 июля 2012 г., 21:35:22 GMT Истекает: Thu, 31 Dec 2037 23:55:55 GMT Etag: W / PSA-GAu26oXbDi (данные значка) (соединение закрыто)
Запрос HTML-файла с кодировкой, кодировкой и cookie
метаданныеРазделенный ответ на исходный HTML-запрос
Число октетов в блоке, выраженное в шестнадцатеричном формате ASCII
число (256 байт)Конец ответа на фрагментированный поток
Запрос файла значка, сделанный в том же TCP-соединении
Сообщите серверу, что соединение не будет повторно использоваться
Ответ на значок с последующим закрытием соединения
Уф, там много чего происходит! Первый и самый очевидный
разница в том, что у нас есть два объектных запроса, один для HTML-страницы и
один для изображения, оба доставляются через одно соединение.Это
соединение keepalive в действии, что позволяет нам повторно использовать существующий TCP
соединение для нескольких запросов к одному и тому же хосту и доставить много
более быстрое взаимодействие с конечным пользователем; см. Оптимизация для TCP.
Чтобы завершить постоянное соединение, обратите внимание, что второй клиент
запрос отправляет явный закрывающий токен
на сервер через
Соединение
заголовок. Точно так же сервер может уведомить
клиент намерен закрыть текущее TCP-соединение после того, как
ответ передан.Технически любая сторона может завершить TCP.
соединение без такого сигнала в любой точке, но клиенты и серверы
должен предоставлять его, когда это возможно, чтобы обеспечить более эффективное повторное использование соединения
стратегии с обеих сторон.
HTTP / 1.1 изменил семантику используемого протокола HTTP.
соединение поддерживает активность по умолчанию. Это означает, если не указано иное (через
Connection: закрыть заголовок
), сервер должен сохранить
соединение открыто по умолчанию.
Однако эта же функциональность была также перенесена на HTTP / 1.0 и
активируется через заголовок Connection: Keep-Alive
. Следовательно, если
вы используете HTTP / 1.1, технически вам не нужен
Подключение : заголовок Keep-Alive
, но многие клиенты предпочитают
тем не менее предоставить это.
Дополнительно в протокол HTTP / 1.1 добавлен контент, кодировка, символ
установка и даже согласование языка, кодирование передачи, кеширование
директивы, клиентские файлы cookie, а также десяток других возможностей, которые могут быть
оговаривается по каждому запросу.
Мы не будем останавливаться на семантике каждой функции HTTP / 1.1.
Это тема для отдельной книги, и многие замечательные из них были
написано уже. Вместо этого предыдущий пример служит хорошим
иллюстрация быстрого прогресса и эволюции HTTP, а также
запутанный и сложный танец каждого обмена клиент-сервер.
Там много чего происходит!
Для хорошей справки обо всей внутренней работе протокола HTTP,
ознакомьтесь с изданием O’Reilly HTTP: The Definitive Guide от Дэвида
Горли и Брайан Тотти.
§HTTP / 2:
Повышение производительности транспорта
С момента публикации RFC 2616 послужил основой для
беспрецедентный рост Интернета: миллиарды устройств всех форм
и размеров, от настольных компьютеров до крошечных веб-устройств в наших карманах,
говорить по протоколу HTTP каждый день, чтобы доставлять новости, видео и миллионы других веб-сайтов
приложения, от которых мы все стали зависеть в нашей жизни.
То, что начиналось как простой однострочный протокол для получения гипертекста
быстро превратился в универсальный гипермедийный транспорт, и вот уже десять лет
Позже можно использовать практически для любого варианта использования, который вы можете себе представить.Оба
повсеместное распространение серверов, говорящих по протоколу, и широкий
доступность клиентов для использования означает, что многие приложения
теперь разработан и развернут исключительно поверх HTTP.
Нужен протокол для управления кофейником? RFC 2324 поможет вам
с протоколом управления гипертекстовым кофейником (HTCPCP / 1.0) - первоначально
шутка IETF, посвященная Дню дураков, и все чаще что угодно, только не шутка в
наш новый сверхсвязанный мир.
Протокол передачи гипертекста (HTTP) - это протокол уровня приложений.
протокол для распределенной, совместной, гипермедийной информации
системы.Это общий протокол без сохранения состояния, который можно использовать для многих
задачи, выходящие за рамки его использования для гипертекста, такие как серверы имен и
системы управления распределенными объектами, путем расширения его запроса
методы, коды ошибок и заголовки. Особенностью HTTP является набор и
согласование представления данных, позволяющее строить системы
независимо от передаваемых данных.RFC 2616: HTTP / 1.1, июнь 1999 г.
Простота протокола HTTP - вот что позволило его оригинальному
принятие и быстрый рост.На самом деле, сейчас не редкость найти
встроенные устройства - датчики, исполнительные механизмы и кофейники - использующие HTTP как
их первичные протоколы управления и данных. Но под собственным весом
успеха и по мере того, как мы все больше и больше продолжаем переносить наши повседневные
взаимодействие с Интернетом - социальные сети, электронная почта, новости и видео, и все чаще
все наше личное и рабочее пространство - оно также начало проявлять признаки
стресс. Пользователи и веб-разработчики теперь требуют почти реального времени
отзывчивость и производительность протокола HTTP / 1.1, который просто
не могу встретиться без некоторых доработок.
Для решения этих новых задач HTTP должен продолжать развиваться, и, следовательно,
рабочая группа HTTPbis объявила о новой инициативе для HTTP / 2 в начале
2012:
Появляется опыт внедрения и интерес к
протокол, который сохраняет семантику HTTP без наследия
Создание и синтаксис сообщений HTTP / 1.x, которые были определены как
снижение производительности и поощрение неправильного использования лежащих в основе
транспорт.Рабочая группа разработает спецификацию нового выражения
текущей семантики HTTP в упорядоченных двунаправленных потоках. Как и в случае с
HTTP / 1.x, основной целевой транспорт - TCP, но он должен быть
возможно использование других видов транспорта.Устав HTTP / 2, Январь 2012 г.
Основное внимание HTTP / 2 уделяется повышению производительности транспорта и
обеспечивая как меньшую задержку, так и более высокую пропускную способность.Основная версия
приращение звучит как большой шаг, который есть и будет, насколько
производительность обеспокоена, но важно отметить, что ни один из
затрагивается семантика протокола высокого уровня: все HTTP-заголовки, значения и
варианты использования такие же.
Любой существующий веб-сайт или приложение может и будет доставлено через
HTTP / 2 без изменений: вам не нужно изменять ваше приложение
разметка, чтобы воспользоваться преимуществами HTTP / 2. HTTP-серверы должны будут говорить
HTTP / 2, но это должно быть прозрачное обновление для большинства
пользователей.Единственная разница, если рабочая группа достигает своей цели, должна быть
что наши приложения доставляются с меньшей задержкой и лучше
использование сетевой ссылки!
Сказав это, не будем забегать вперед. Прежде чем мы доберемся до
новые возможности протокола HTTP / 2, стоит сделать шаг назад и
изучение существующих передовых практик развертывания и производительности для
HTTP / 1.1. Рабочая группа HTTP / 2 быстро продвигается по новому
спецификации, но даже если окончательный стандарт уже был готов,
нам все равно придется поддерживать более старый HTTP / 1.1 клиентов на обозримое время
будущее - реально, десятилетие или больше.
Что такое HTTP
HTTP обозначает H yper T ext T ransfer P rotocol
WWW предназначен для связи между веб-клиентами и серверами
Обмен данными между клиентскими компьютерами и веб-серверами осуществляется путем отправки
HTTP-запросов и получение HTTP-ответов
Интернет-коммуникация
Всемирная паутина - это связь между веб-клиентами и
web серверов .
Клиенты часто являются браузерами (Chrome, Edge, Safari), но они
может быть любой тип программы или устройства.
Серверы - это чаще всего компьютеры в облаке.
Веб-клиент
Облако
Веб-сервер
HTTP-запрос / ответ
Связь между клиентами и серверами осуществляется посредством запросов и ответов :
- Клиент (браузер) отправляет HTTP-запрос в Интернет
- Веб-сервер получает запрос
- Сервер запускает приложение для обработки запроса
- Сервер возвращает HTTP-ответ (вывод) браузеру
- Клиент (браузер) получает ответ
Круг HTTP-запроса
Типичный круг HTTP-запроса / ответа:
- Браузер запрашивает HTML-страницу.Сервер возвращает HTML-файл.
- Браузер запрашивает таблицу стилей. Сервер возвращает файл CSS.
- Браузер запрашивает изображение в формате JPG. Сервер возвращает файл JPG.
- Браузер запрашивает код JavaScript. Сервер возвращает файл JS
- Браузер запрашивает данные. Сервер возвращает данные (в формате XML или JSON).
XHR - запрос XML Http
Все браузеры имеют встроенный объект XMLHttpRequest (XHR) .
XHR - это объект JavaScript, который используется для передачи данных между веб-браузером и веб-сервером.
XHR часто используется для запроса и получения данных с целью изменения веб-страницы.
Несмотря на XML и Http в названии, XHR используется с другими протоколами, кроме HTTP,
и данные могут быть разных типов, например
HTML, CSS,
XML, JSON и простой текст.
Объект XHR - это мечта веб-разработчиков , потому что вы можете:
- Обновить веб-страницу без перезагрузки страницы
- Запросить данные с сервера - после загрузки страницы
- Получить данные с сервера - после загрузки страницы
- Отправить данные на сервер - в фоновом режиме
Объект XHR является базовой концепцией AJAX, и
JSON :
Простое понимание веб-протоколов
Знаете ли вы, что 68% пользователей Интернета считают, что действующие законы для защиты их прав недостаточно хороши?
Каждый раз, когда Google вводит новое предпочтение, Интернет принимает / вынужден принимать это к сведению.Нечто подобное произошло, когда Google объявил, что веб-сайты с сертификатом SSL / протоколом HTTPS будут предпочтительнее в результатах поиска. Я постараюсь охватить основы протоколов HTTP и HTTPS
Прежде чем мы углубимся в понимание протоколов HTTP и HTTPS, давайте попробуем понять значение слова протокол.
Что такое протокол?
Протокол - это набор правил, которые мы используем для определенных целей. В текущем сценарии, когда мы говорим о протоколах , речь идет о протоколах , то есть о том, как мы разговариваем друг с другом.Например, читатель новостей говорит по-английски, и, поскольку вы понимаете английский, вы и в состоянии понять. Английский - это протокол.
В тот момент, когда программа чтения новостей начинает говорить на языке, который вы не понимаете, протокол достигает своей цели. Таким образом, нам нужно, чтобы обе стороны согласились с набором правил для общения. В данном случае протокол предназначен для связи.
Теперь, говоря о сети, в частности, для связи используются несколько протоколов. В первую очередь для конечных пользователей наиболее важными и видимыми протоколами являются HTTP и HTTPS. Хотя существует множество других протоколов, протоколы HTTP и HTTPS обслуживают большую часть населения.
Что такое HTTP?
HTTP - протокол передачи гипертекста. Проще говоря - Правила отправки и получения текстовых сообщений. Как мы все знаем, компьютеры работают на языке единиц и нулей, то есть на двоичном языке. Следовательно, потенциально каждый набор единиц и нулей что-то конструирует, это может быть слово.
Допустим, я хочу написать «а». Теперь, если 0 означает «a», 1 означает «b», а 01 означает «c», я могу сделать вывод, что комбинация нулей и единиц также может составлять слово. В этом случае текст уже создан и отправляется по сети. Компьютер работает на многих языках - чисто двоичном, текстовом и некоторых других форматах, таких как байтовые коды. Здесь передается текст. Я подчеркиваю «текст», потому что этот текст интерпретируется браузером, и в тот момент, когда браузер интерпретирует его, он становится гипертекстом, а протокол, который передает текст, называется протоколом передачи гипертекста - HTTP.
Используя HTTP, вы определенно можете передавать изображения, текст и даже звук, но не видео.
Что такое HTTPS?
Hyper Text Transfer Protocol Secure (HTTPS) - это безопасная версия HTTP, протокола, по которому данные передаются между вашим браузером и веб-сайтом, к которому вы подключены. Буква «S» в конце HTTPS означает «безопасный». Это означает, что все коммуникации между вашим браузером и веб-сайтом зашифрованы. HTTPS часто используется для защиты конфиденциальных онлайн-транзакций, таких как онлайн-банкинг и формы заказа онлайн-покупок.
В чем важность HTTPS?
Мы договорились о том, что из одной точки в другую передается текст. Чтобы понять, почему протокол HTTPS, мы сначала должны знать, как работают маршрутизаторы Wi-Fi. Допустим, вы находитесь в аэропорту и подключаетесь к Wi-Fi, который является собственностью третьей стороны. Теперь, когда вы общаетесь по HTTP, текст передается их маршрутизатором. И если я перейду на младшую версию роутера, я могу с комфортом проверить и прочитать передаваемый текст.Это может быть пароль, который я могу использовать для входа на сайт вашего банка и выполнения мошеннической транзакции !. Смысл бытия - это в корне небезопасно. Это называется человек в средней атаке.
И поэтому нам нужен https, когда кажется, что HTTP достаточно.
Теперь, чтобы уберечь наши данные от таких атак, нам нужно их зашифровать.
Фактически, чтобы реализовать расширенное безопасное соединение для пользователей, в 2014 году гигант поисковых систем объявил HTTPS как сигнал ранжирования.И вот как на это отреагировали различные отрасли.
Уровни шифрования и шифрования
Шифрование простыми словами - это сокрытие информации. Это можно сделать разными способами. Вы, должно быть, слышали эти термины - 128-битное шифрование HTTPS и 64-битное шифрование HTTPS. 128-битное шифрование - это высокотехнологичный метод шифрования, который очень сложно расшифровать (декодировать). В случае HTTPS, когда данные передаются по проводам, человек в середине может все еще знать, что передается, но не может понять из этого, поскольку данные зашифрованы.Только браузер расшифрует его и покажет, а сервер расшифрует его и будет использовать для транзакций.
Для любопытных - Есть еще фильм о шифровании «Имитационные игры». Весь сюжет фильма был основан на расшифровке немецких кодов, которые должны были реформировать весь ход войны. Эти коды было очень сложно расшифровать, но как, наконец, это делает Алан Тьюринг.
Как это происходит, когда вы запрашиваете открытие сайта в браузере?
Чтобы понять это, давайте представим, что есть один сервер , который находится где-то и обслуживает все запросы для одного домена.Теперь, когда я набираю xyz.com, это сервер, к которому я подключаюсь, беру данные и отображаю их в браузере.
Для дальнейшего упрощения представьте, что доменное имя google.com транслируется с одного сервера. Где-то находится одна машина, подключенная к Интернету, и в тот момент, когда вы говорите google.com в своем браузере, вы подключаетесь к этой машине, выбираете данные с этой машины и показываете их в браузере. Если вы сохранили свое изображение, оно будет загружено на эту машину. Теперь, если вы хотите увидеть это изображение, вы заходите в Google.com / show-me-my-picture, который передает изображение с машины в браузер для просмотра.
Этот процесс не может быть завершен, если я не могу связаться с этой конкретной машиной. Для этого у каждой машины есть адрес (как у нас есть номер мобильного телефона), он называется IP-адресом, и у каждого домена есть IP-карта. В тот момент, когда вы вводите этот удобный для пользователя URL-адрес - google.com, он преобразует это имя пользователя в IP-адрес и подключается к маршрутизатору, чтобы обратиться к той конкретной служебной строке, связанной с этим URL-адресом.Как только он достигает сервера, он запрашивает то, что необходимо. Он представлен как 'google.com/s=', помогая пользователю понять сделанный им запрос. В результате сервер выдает ему результаты в соответствии с вашим запросом, которые отображаются в браузере.
Перенаправьте посетителей вашего сайта с помощью персонализированных push-уведомлений с помощью iZooto. Начать БЕСПЛАТНУЮ пробную версию.
Что происходит, когда делается запрос URL-адреса веб-сайта по протоколу HTTP?
В качестве первого шага работа HTTP заключается в обнаружении сервера, и после установления маршрута связи сервер отправляет текст в браузер.Этот текст может быть либо в чистом виде, либо в зашифрованном виде, который затем отображается браузером или используется для любых целей, которые он должен использовать.
Есть еще фильм о шифровании - Имитационные игры. Сюжет фильма строился на расшифровке главных героев немецких кодов, призванных реформировать весь ход войны. Эти коды было очень сложно расшифровать, но Алан Тьюринг наконец-то сумел это сделать.
Поскольку должно быть измерение этого коэффициента сложности, мы интерпретируем, что чем больше количество битов, тем труднее расшифровать.Однако это только увеличивает уровень сложности, что делает его очень трудным для дешифрования, но не невозможным.
Выбор между HTTP и HTTPS
Источник: http://en.flossmanuals.net/basic-internet-security/_all/
Все и вся личное. Если вы ищете «Как установить сертификат SSL», этот поиск будет частным для вас, не так ли? Если вы просматриваете или ищете продукт, читаете статью, вы обычно не хотите, чтобы другие узнали о нем.Как конечный пользователь, я хотел бы сохранить его конфиденциальность. Есть вещи, которые я, возможно, не хочу хранить в секрете, и для них я могу использовать HTTP. Однако для личной информации, банков и транснациональной информации HTTPS стал стандартом.
HTTPS звучит отлично. Что еще нужно знать об этом?
Нельзя отрицать тот факт, что конфиденциальность имеет свою цену. Есть парочка минусов -
- HTTPS-запросы требуют больше времени для обработки.
- Поскольку для обработки требуется больше времени, требуется больше оборудования - сервера, который вы используете.Это также означает дополнительные расходы
Принимая во внимание, что для HTTP вы используете меньше энергии по сравнению с HTTPS, поскольку связь происходит быстрее (без шифрования и дешифрования). Однако я не буду называть это ограничением для HTTPS. Это очень субъективно и личное, я считаю, что это очень низкая цена, которую мы платим за обеспечение нашей конфиденциальности.
Идея создания безопасного Интернета существует уже давно. Создание безопасного Интернета в качестве повестки дня продвигается такими компаниями, как Google, Facebook, Akamai и т. Д., Как я уже упоминал, это в первую очередь из-за следующих двух причин -
- Пользовательские данные и конфиденциальность пользователей. Использование HTTPS гарантирует, что вы, как разработчик, цените пользовательские данные, конфиденциальность и безопасность пользователей.
- Защита ваших данных: как разработчик мы никогда не хотели бы передавать наши важные данные злоумышленникам
Что будет на кону, если вы не перейдете на HTTPS?
Вот некоторые из функций, которые теперь доступны только на HTTPS.
- GeoLocation: вы больше не можете искать местоположение пользователя, если используете HTTP
- Web Push-уведомление: Push-уведомления доступны только по HTTPS.
- GetUserMedia: вы больше не можете активировать разрешения на использование камеры / микрофона пользователя, если вы используете HTTP
- HTTP / 2: все основные браузеры теперь поддерживают HTTP / 2 для HTTPS.
.
.
Скоро будут удалены:
- AppCache: функция, которая позволяет разработчикам кэшировать контент в браузере и делать его доступным для просмотра в автономном режиме, скоро будет ограничена только HTTPS-сайтами.
- Encrypted Media Extensions: Возможность управлять воспроизведением защищенного контента.
Как с точки зрения безопасности, так и с точки зрения взаимодействия с пользователем, выбранный вами тип сертификата может иметь значение. Подумайте, как разные сертификаты влияют на то, как ваш веб-сайт отображается в адресной строке веб-браузера.
Некоторые часто задаваемые вопросы
Какова «стоимость» переноса веб-сайта с привлечением пользователей X с HTTP на HTTPS?
Типичный вопрос, но, боюсь, на него нет ответа. Стоимость не будет зависеть ни от чего, кроме объема передаваемых данных. Есть много переменных, которые будут влиять на стоимость, а не только на количество пользователей. Здесь, если мы говорим о банковских данных, вам придется нести расходы, какими бы значительными или незначительными они ни были.
Весь расчет стоимости очень субъективен, и у меня нет точных цифр.
Влияет ли HTTPS на время загрузки вашего сайта?
Да, безусловно!
Зачем веб-push-уведомлениям нужен SSL?
Да, push-уведомления существуют уже давно и могут работать только на веб-сайтах, использующих протокол HTTPS.Прежде чем мы ответим на этот вопрос, давайте разберемся, как это работает на самом деле -
Причина, по которой веб-push-уведомления работают только по протоколу HTTPS, заключается в том, что данные, которые отправляются и принимаются, являются личными данными. Для обеспечения конфиденциальности он поддерживается только по протоколу HTTPS.
Уведомления по сути являются личными для пользователей. Мы определенно хотим, чтобы это общение было безопасным. В этом конкретном случае сервер может проверить связь с браузером.
Когда писалась книга протоколов, упоминалось, что HTTP - это протокол без установления соединения.Это означает, что сервер, находящийся в дата-центре, не может ничего делать, пока браузер не вызовет / не сделает запрос. И как только ответ будет получен, браузер решит, хочет он что-то с этим сделать или нет. Это полностью решение браузера, сервер не может приказать браузеру предпринять действия. Идея случайного сервера, управляющего вашим браузером или вашим экраном / машиной, пугает. Чтобы предотвратить эту возможность, HTTP является и остается протоколом без подключения.
Привлекайте посетителей вашего сайта, даже если они не на вашем сайте.Отправляйте контекстные уведомления с iZooto. Начать БЕСПЛАТНУЮ пробную версию.
Популярные заблуждения или мифы
- Мой веб-сайт не носит транзакционного характера. Зачем мне нужен протокол HTTPS?
- SSL-сертификаты дорогие
- Переход на протокол HTTPS с HTTP сильно повлияет на производительность веб-сайта
- Влияние на другие третьи стороны.
Посмотрите это видео с Саммита по прогрессивным веб-приложениям, чтобы опровергнуть все эти заблуждения
Подробнее о push-уведомлениях в Интернете
Интересно, что в случае веб-push-уведомлений на самом деле сервер отправляет данные в браузер.Но он сохраняется таким образом, что сервер только отправляет в браузер сообщение , указывая на то, что вас ждет уведомление - вот и все. Вот пошаговый процесс того, что происходит на самом деле -
- Сервер отправляет сообщение в браузер
- Затем срабатывает протокол, запрашивая данные. Эти данные могут быть очень персонализированы. Возможно, я отправляю вам сообщение: «Вы провели транзакцию на сумму XX».
- Уведомление извлекается сервисным работником и отображается конечному пользователю.
Если мне нужно выбрать протокол сегодня, который потенциально может быть чрезвычайно персонализированным (поскольку уведомления персонализированы), я определенно хотел бы сделать его безопасным.
Может ли Web Push работать по HTTP? Конечно.
Должен ли он работать по HTTP? Строгое №
Идея Service-Worker
Есть еще один аспект - чтобы сохранить работоспособность HTTP, у нас есть сервис-воркеры. Поскольку сервер просто отправляет сообщение , что у вас есть уведомление. Он переключается на старый традиционный протокол без установления соединения и спрашивает, что мне нужно показать, и он это показывает. Итак, сервер не отправляет данные. Он просто говорит им, что что-то есть. Да, это становится немного сложнее, но те, кто разбирается в сервис-воркерах, знают, что это означает, что HTTP должен быть таким же священным, как и предполагалось.
Полезные ресурсы
Прочтите наш следующий пост, чтобы начать переход с протокола HTTP на протокол HTTPS, выбрав правильного поставщика сертификатов SSL для своего домена.
HTTP (протокол передачи гипертекста) Определение
означает «Протокол передачи гипертекста». HTTP - это протокол, используемый для передачи данных через Интернет. Он является частью набора интернет-протоколов и определяет команды и службы, используемые для передачи данных веб-страницы.
HTTP использует модель сервер-клиент. Например, клиентом может быть домашний компьютер, ноутбук или мобильное устройство. HTTP-сервер обычно представляет собой веб-хост, на котором запущено программное обеспечение веб-сервера, такое как Apache или IIS.Когда вы заходите на веб-сайт, ваш браузер отправляет запрос на соответствующий веб-сервер, и он отвечает кодом состояния HTTP. Если URL-адрес действителен и соединение разрешено, сервер отправит вашему браузеру веб-страницу и связанные файлы.
Некоторые общие коды состояния HTTP включают:
- 200 - успешный запрос (веб-страница существует)
- 301 - перемещен навсегда (часто перенаправляется на новый URL)
- 401 - несанкционированный запрос (требуется авторизация)
- 403 - запрещено (доступ к странице или каталогу запрещен)
- 500 - внутренняя ошибка сервера (часто вызвана неправильной конфигурацией сервера)
HTTP также определяет такие команды, как GET и POST, которые используются для обработки отправки форм на веб-сайтах.Команда CONNECT используется для обеспечения безопасного соединения, зашифрованного с помощью SSL. Зашифрованные HTTP-соединения осуществляются через HTTPS, расширение HTTP, предназначенное для безопасной передачи данных.
ПРИМЕЧАНИЕ. URL-адресов, начинающихся с «http: //», доступны по стандартному протоколу передачи гипертекста и по умолчанию используют порт 80. URL-адреса, начинающиеся с «https: //», доступны через безопасное соединение HTTPS и часто используют порт 443.
Обновлено: 28 мая 2015 г.
TechTerms - Компьютерный словарь технических терминов
Эта страница содержит техническое определение HTTP.Он объясняет в компьютерной терминологии, что означает HTTP, и является одним из многих Интернет-терминов в словаре TechTerms.
Все определения на веб-сайте TechTerms составлены так, чтобы быть технически точными, но также простыми для понимания. Если вы сочтете это определение HTTP полезным, вы можете сослаться на него, используя приведенные выше ссылки для цитирования. Если вы считаете, что термин следует обновить или добавить в словарь TechTerms, отправьте электронное письмо в TechTerms!
Подпишитесь на рассылку TechTerms, чтобы получать избранные термины и тесты прямо в свой почтовый ящик.Вы можете получать электронную почту ежедневно или еженедельно.
Подписаться
Особенности HTTP:
HTTP-транзакцииНа приведенном выше рисунке показана транзакция HTTP между клиентом и сервером. Клиент инициирует транзакцию, отправляя сообщение запроса на сервер. Сервер отвечает на сообщение запроса, отправляя ответное сообщение. СообщенияHTTP-сообщения бывают двух типов: запрос и ответ. Оба типа сообщений соответствуют одному и тому же формату сообщений. Сообщение запроса: Сообщение запроса отправляется клиентом, которое состоит из строки запроса, заголовков, а иногда и тела. Ответное сообщение: Ответное сообщение отправляется сервером клиенту и состоит из строки состояния, заголовков, а иногда и тела. Единый указатель ресурсов (URL)
|
HTTP
HTTP
Протокол передачи гипертекста (HTTP) Протокол
Протокол HTTP - это сердце Интернета.Это хорошо продуманный протокол, который, следовательно, имеет множество применений помимо
связь между веб-браузерами и веб-серверами.
Эта презентация описывает HTTP с использованием информации и терминологии из
Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщения и
Маршрутизация и Протокол передачи гипертекста (HTTP / 1.1): семантика
и Content , первые две части самой последней версии Интернета.
Спецификация Engineering Task Force (IETF) для HTTP / 1.1.
Раздел «Ссылки» данной презентации содержит ссылки на
полная спецификация.
Реферат в этом документе содержит хорошее резюме целей
HTTP:
Протокол передачи гипертекста (HTTP) - это протокол уровня приложений без сохранения состояния.
протокол для распределенной совместной гипертекстовой информации
системы.
Протокол HTTP
- объединяет данные и контроль в едином двунаправленном
канал связи, - поддерживает передачу данных с любым типом кодирования, а также
- использует расширяемую структуру управляющей информации.
Как и многие коммуникационные протоколы, HTTP имеет два типа сообщений:
- Запрос отправляется клиентом для запроса услуги у
сервер. - Ответ отправляется сервером для ответа клиенту
запрос.
Структура сообщения HTTP
Как показано выше, HTTP-сообщение состоит из двух основных частей:
- обязательный заголовок, который в первую очередь несет управляющую информацию, и
- необязательное тело сообщения, которое в основном содержит данные, такие как
ответ на запрос.
В теле сообщения можно использовать любой вид кодирования данных.
Кодирование заголовка простое и жестко контролируемое, но гибкое.
Он должен, по крайней мере, предоставлять достаточно информации, чтобы получатель
сообщение знает, как расшифровать тело сообщения.
Гибкость протокола HTTP - результат этого сообщения.
структура.
Подобный шаблон структуры сообщения используется во многих интернет-протоколах.
Тело сообщения HTTP
Поскольку HTTP предназначен для работы с произвольными типами данных,
В теле сообщения можно использовать любую кодировку.
Чтобы получатель мог его использовать, заголовок должен содержать строки заголовка,
описывает кодировку.
Например, в строке заголовка Content-Type можно указать MIME-тип
тело сообщения, а заголовок Content-Encoding может указывать шифрование
или применяемое к нему сжатие.
Формат HTTP-запроса
Цель запроса - это URI для запрошенного ресурса.
Обычно это относительно корня сервера.
HTTP версии почти всегда является «HTTP / 1.1».
Методы запроса
- GET
Передать текущее представление целевого ресурса. - HEAD
То же, что GET, но передает только строку состояния и раздел заголовка. - POST
Выполнение обработки для конкретного ресурса полезных данных запроса. - PUT
Заменить все текущие представления целевого ресурса на
запросить полезную нагрузку. - УДАЛИТЬ
Удалить все текущие представления целевого ресурса. - ПОДКЛЮЧИТЬСЯ
Установите туннель к серверу, идентифицированному целевым ресурсом. - ОПЦИИ
Опишите параметры связи для целевого ресурса. - TRACE
Выполните тест обратной связи сообщений на пути к целевому ресурсу.
Веб-серверы общего назначения поддерживают только GET, HEAD и POST.
методы.
Однако HTTP используется для многих целей, где другие методы
нужный.
Веб-страницы часто содержат формы, которые пользователь заполняет, с
Кнопка «Отправить» для отправки данных на сервер.При нажатии этой кнопки на сервер отправляется запрос.
Для небольшого количества данных используется метод GET.
Данные формы кодируются в URI запроса, поскольку запросы GET не
есть тела сообщений.
Метод POST допускает создание тела сообщения, поэтому он используется для более крупных
объемы данных.
Поля заголовка запроса
Имена полей ниже - это некоторые из многих стандартизированных имен полей.
который можно использовать в HTTP-запросе.
- Хост
Хост, на котором хранится запрошенный ресурс. - Accept
список типов MIME, которые запрашивающая сторона готова принять - Accept-Charset
список наборов символов, которые запрашивающая сторона готова принять - Accept-Encoding
список кодировок сжатия или шифрования, которые запрашивает
готов принять - Accept-Language
список языков, которые запрашивающая сторона готова принять - If-Modified-Поскольку
используется для условных запросов - серверу не нужно отправлять
тело сообщения, если запрошенный ресурс не изменялся в последнее время - If-Unmodified-Поскольку
используется для условных запросов - серверу не нужно отправлять
тело сообщения, если запрошенный ресурс не изменялся в последнее время - User-Agent
программное обеспечение, которое делает запрос
Формат ответа HTTP
HTTP версии почти всегда "HTTP / 1.1 ".
Фразы состояния и причины
Код состояния ответа HTTP - это трехзначный код, указывающий на состояние
ответ.
У каждого кода есть стандартная фраза причины.
Код состояния делится на пять общих категорий:
- 1 xx (информационная)
Запрос был получен, процесс продолжается - 2 xx (Успешно)
Запрос был успешно получен, понят и принят - 3 xx (Перенаправление)
Для выполнения запроса необходимо предпринять дальнейшие действия - 4 xx (Ошибка клиента)
Запрос содержит неверный синтаксис или не может быть выполнен - 5 xx (Ошибка сервера)
Серверу не удалось выполнить явно действительный запрос
Общие коды состояния и их причины
- 200 ОК
- 301 Постоянно перемещен
- 400 Плохой запрос
- 401 Неавторизованный
- 404 Не найдено
- 500 Внутренняя ошибка сервера
- 503 Служба недоступна
- 505 Версия HTTP не поддерживается
Поля заголовка
Имена полей ниже - это некоторые из многих стандартизированных имен полей.
который можно использовать в ответе HTTP.
- Content-Type
MIME-тип тела сообщения - Content-Encoding
список кодировок (сжатие, шифрование), примененных к сообщению.
тело - Content-Length
длина тела сообщения - Дата
отметка времени ответа - Last-Modified
при последнем изменении тела ответа - Сервер
сервер, предоставивший ответ - Разрешить
методы, на которые сервер будет отвечать
.