Основы протокола http. Что такое HTTP и как он работает? HTTP протокол работает по принципу клиент-сервер

18.05.2019

Для World Wide Web. Такие протоколы представляют собой структурированный текст, который использует логические связи (гиперссылки) между узлами, содержащими определенные данные. Таким образом, это способ обмена или передачи гипертекста.

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

Браузер является основным примером агента пользователя (клиента). Другие типы пользовательских агентов включают в себя программное обеспечение, используемое для индексации поисковыми провайдерами, мобильные приложения и другие ресурсы, которые используют или отображают веб-контент.

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

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

Если рассматривать назначение протокола HTTP, следует отметить, что он определяет методы с целью указать нужное действие, выполняемое по выявленным ресурсам. При этом вид отображаемой информации (ранее существовавшие данные или генерируемые динамически) зависит от реализации сервера. Часто такой ресурс соответствует файлу или сценарию, расположенному на хостинге.

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

С другой стороны, HTTP-протокол может применять и такие методы, которые предназначены для действий, способных оказать влияние либо на сервер, либо на другие внешние ресурсы - активизировать финансовые операции или выполнить передачу электронной почты. Изредка такие способы используются веб-роботами или некоторыми сайтами и могут делать запросы вне зависимости от основной задачи.

Основной протокол для страниц в интернете — HTTP. Используется этот протокол каждый раз, когда вы заходите на новый сайт, когда на сайте отображается текст, картинка, когда вы нажимаете ссылки.

Весь интернет основывается на HTTP, пусть большая часть пользователей даже и не подозревают, насколько популярен в их привычной жизни HTTP.

HTTP — протокол, по которому передается гипертекст (HyperText Transfer Protocol).

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

В Интернете можно пользоваться множеством протоколов, HTTP — лишь один многих, у которого собственные задачи с целями.

Все настолько просто, что вы уже знакомы с программным обеспечением, необходимым для работы с HTTP — это ваш браузер.

Независимо от названия браузера, к адресной строке всегда по умолчанию добавляется название протокола: «http://». Вы можете и не видеть эту надпись, если браузер ее скрывает. Но стоит только скопировать название сайта, вместе с ним в нужном месте вставится и протокол HTTP.

- Что значит приставка «http://» перед названием сайта?
- Это значит, что вы обращаетесь к ресурсу по HTTP протоколу.

Зачем создали протокол HTTP

С его помощью передают гипертекстовые документы, а проще говоря — страницы на нужных нам сайтах.

Принимает веб-страницы клиент (браузер), а отдаёт страницы сервер. Эта технология так и называется — клиент-серверная технология.

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

Еще в 2006 году практически половина HTTP-трафика Северной Америки складывалась из потокового звука и видео.

Как работает HTTP

  1. Браузер отправляет запрос, запрашивая нужную страницу сервера.
  2. Сервер получает запрос и начинает искать страницу.
  3. Браузер получает ответ от сервера с результатами запроса:
    • Код запрашиваемой страницы и служебная информация — если страница найдена.
    • Код ошибки и служебная информация в случае сбоя.

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

Чтобы идентифицировать ресурсы в сети, протокол HTTP пользуется глобальными URI. Отличие HTTP от других протоколов — он не сохраняет свое состояние. То есть не сохраняется состояние между парой «запрос-ответ».

HTTP — это не единственный протокол, который используют в Интернете. Также используются:

  • FTP (File Transfer Protocol) — протокол передачи файлов.
  • POP (Post Office Protocol) и SMTP (Simple Mail Transport Protocol) — для обмена сообщениями электронной почты.
  • SHTTP (Secure Hypertext Transfer Protocol) — шифрованная разновидность HTTP. Информация, которая передается по этому протоколу, кодируется. Обычно безопасность важна в случае обмена конфиденциальными данными.

И другие протоколы, у которых есть одно хорошее свойство — все они работают незаметно для нас с вами.

Март 1991 года — Тим Бернерс-Ли предложил использовать HTTP.

Именно Бернерс-Ли разработал все первое, что связано с Интернетом: браузер, сервер, гиперссылки, первый сайт (info.cern.ch) Как выглядел первый сайт, можно увидеть по ссылке.

Версии HTTP со временем совершенствуются, популярной стала версия HTTP 1.1, которая позволяет на долгое время оставлять открытым соединение сервера с браузером, что сделало протокол более эффективным.

В 2015 году появился HTTP/2, который стал бинарным, изменились способы, которыми информацию разбивали на фрагменты.

Безопасность протокола HTTP

Сам HTTP не подразумевает шифрование информации. Но есть расширение для протокола, которое умеет упаковывать данные в протокол SSL или TLS.

HTTPS (S — Secure) — популярное решение, которое не позволяет перехватывать передаваемую информацию и защитить информацию от MITM- атак «man-in-the-middle» или атака посредника.

MITM по сути испорченный телефон, в котором информация подменяется намеренно. О подмене не знает ни клиент ни сервер.

Из чего состоит HTTP

Мы много упоминали, что сервер и клиент отправляют и получают запросы. Так что же содержится в этих запросах? Каждое сообщение HTTP состоит из трех частей:

  1. Стартовая строка, которая определяет тип сообщения.
  2. Заголовки, с помощью которых характеризуют тело сообщения.
  3. Тело сообщения, где содержатся уже нужные данные.

Благодаря особенностям HTTP, сумели создать поисковые машины, форумы, интернет-магазины. В интернет пришла коммерция, начали появляться интернет провайдеры и другие компании, деятельность которых проходит в сети Интернет. А все благодаря протоколу HTTP, с которым вы теперь хорошо знакомы.

22.04.05 13625

Назначение протокола

HyperText Transfer Protocol (HTTP) — это протокол высокого уровня (а именно, уровня приложений), обеспечивающий необходимую скорость передачи данных, требующуюся для распределенных информационных систем гипермедиа. HTTP используется проектом World Wide Web с 1990 года.

Практические информационные системы требуют большего, чем примитивный поиск, модификация и аннотация данных. HTTP/1.0 предоставляет открытое множество методов, которые могут быть использованы для указания целей запроса. Они построены на дисциплине ссылок, где для указания ресурса, к которому должен быть применен данный метод, используется Универсальный Идентификатор Ресурсов (Universal Resource Identifier — URI), в виде местонахождения (URL) или имени (URN). Формат сообщений сходен с форматом Internet Mail или Multipurpose Internet Mail Extensions (MIME-Многоцелевое Расширение Почты Internet).

HTTP/1.0 используется также для коммуникаций между различными пользовательскими просмотрщиками и шлюзами, дающими гипермедиа доступ к существующим Internet протоколам, таким как SMTP, NNTP, FTP, Gopher и WAIS. HTTP/1.0 разработан, чтобы позволять таким шлюзам через proxy серверы, без какой-либо потери передавать данные с помощью упомянутых протоколов более ранних версий.

Общая Структура

HTTP основывается на парадигме запросов/ответов. Запрашивающая программа (обычно она называется клиент) устанавливает связь с обслуживающей программой-получателем (обычно называется сервер) и посылает запрос серверу в следующей форме: метод запроса, URI, версия протокола, за которой следует MIME-подобное сообщение, содержащее управляющую информацию запроса, информацию о клиенте и, может быть, тело сообщения. Сервер отвечает сообщением, содержащим строку статуса (включая версию протокола и код статуса — успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, вероятно, само тело ответа. Следует отметить, что одна программа может быть одновременно и клиентом и сервером. Использование этих терминов в данном тексте относится только к роли, выполняемой программой в течение данного конкретного сеанса связи, а не к общим функциям программы.

В Internet коммуникации обычно основываются на TCP/IP протоколах. Для WWW номер порта по умолчанию — TCP 80, но также могут быть использованы и другие номера портов — это не исключает возможности использовать HTTP в качестве протокола верхнего уровня.

Для большинства приложений сеанс связи открывается клиентом для каждого запроса и закрывается сервером после окончания ответа на запрос. Тем не менее, это не является особенностью протокола. И клиент, и сервер должны иметь возможность закрывать сеанс связи, например, в результате какого-нибудь действия пользователя. В любом случае, разрыв связи, инициированный любой стороной, прерывает текущий запрос, независимо от его статуса.

Общие понятия

Запрос — это сообщение, посылаемое клиентом серверу.
Первая строка этого сообщения включает в себя метод, который должен быть применен к запрашиваемому ресурсу, идентификатор ресурса и используемую версию протокола. Для совместимости с протоколом HTTP/0.9, существует два формата HTTP запроса:

Запрос = Простой-Запрос | Полный-Запрос Простой-Запрос = "GET" SP Запрашиваемый-URI CRLF Полный-Запрос = Строка-Статус *(Общий-Заголовок | Заголовок-Запроса | Заголовок-Содержания) CRLF [ Содержание-Запроса ]

Если HTTP/1.0 сервер получает Простой-Запрос, он должен отвечать Простым-Ответом HTTP/0.9. HTTP/1.0 клиент, способный обрабатывать Полный-Ответ, никогда не должен посылать Простой-Запрос.

Строка Статус

Строка Статус начинается со строки с названием метода, за которым следует URI-Запроса и использующаяся версия протокола. Строка Статус заканчивается символами CRLF. Элементы строки разделяются пробелами (SP). В Строке Статус не допускаются символы LF и CR, за исключением заключающей последовательности CRLF.

Строка-Статус = Метод SP URI-Запроса SP Версия-HTTP CRLF

Следует отметить, что отличие Строки Статус Полного-Запроса от Строки Статус Простого- Запроса заключается в присутствии поля Версия-HTTP.

Метод

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

Метод = "GET" | "HEAD" | "PUT" | "POST" | "DELETE" | "LINK" | "UNLINK" | дополнительный-метод

Список методов, допускаемых отдельным ресурсом, может быть указан в поле Заголовок-Содержание «Баллов». Тем не менее, клиент всегда оповещается сервером через код статуса ответа, допускается ли применение данного метода для указанного ресурса, так как допустимость применения различных методов может динамически изменяться. Если данный метод известен серверу, но не допускается для указанного ресурса, сервер должен вернуть код статуса «405 Method Not Allowed», и код статуса «501 Not Implemented», если метод не известен или не поддерживается данным сервером. Общие методы HTTP/1.0 описываются ниже.

GET

Метод GET служит для получения любой информации, идентифицированной URI-Запроса. Если URI- Запроса ссылается на процесс, выдающий данные, в качестве ответа будут выступать данные, сгенерированные данным процессом, а не код самого процесса (если только это не является выходными данными процесса).

Метод GET изменяется на «условный GET», если сообщение запроса включает в себя поле заголовка «If-Modified-Since». В ответ на условный GET, тело запрашиваемого ресурса передается только, если он изменялся после даты, указанной в заголовке «If-Modified-Since». Алгоритм определения этого включает в себя следующие случаи:

  • Если код статуса ответа на запрос будет отличаться от «200 OK», или дата, указанная в поле заголовка «If-Modified-Since» некорректна, ответ будет идентичен ответу на обычный запрос GET.
  • Если после указанной даты ресурс изменялся, ответ будет также идентичен ответу на обычный запрос GET.
  • Если ресурс не изменялся после указанной даты, сервер вернет код статуса «304 Not Modified».

Использование метода условный GET направлено на разгрузку сети, так как он позволяет не передавать по сети избыточную информацию.

HEAD

Метод HEAD аналогичен методу GET, за исключением того, что в ответе сервер не возвращает Тело- Ответа. Метаинформация, содержащаяся в HTTP заголовках ответа на запрос HEAD, должна быть идентична информации HTTP заголовков ответа на запрос GET. Данный метод может использоваться для получения метаинформации о ресурсе без передачи по сети самого ресурса. Метод «Условный HEAD», аналогичный условному GET, не определен.

POST

Метод POST используется для запроса сервера, чтобы тот принял информацию, включенную в запрос, как субординантную для ресурса, указанного в Строке Статус в поле URI-Запроса. Метод POST был разработан, чтобы была возможность использовать один общий метод для следующих функций:

  • Аннотация существующих ресурсов
  • Добавление сообщений в группы новостей, почтовые списки или подобные группы статей
  • Доставка блоков данных процессам, обрабатывающим данные
  • Расширение баз данных через операцию добавления

Реальная функция, выполняемая методом POST, определяется сервером и обычно зависит от URI- Запроса. Добавляемая информация рассматривается как субординатная указанному URI в том же смысле, как файл субординатен каталогу, в котором он находится, новая статья субординатна группе новостей, в которую она добавляется, запись субординатна базе данных.

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

Если в результате обработки запроса POST был создан новый ресурс, ответ должен иметь код статуса, равный «201 Created», и содержать URI нового ресурса.

PUT

Метод PUT запрашивает сервер о сохранении Тело-Запроса под URI, равным URI-Запроса. Если URI-Запроса ссылается на уже существующий ресурс, Тело-Запроса должно рассматриваться как модифицированная версия данного ресурса. Если ресурс, на который ссылается URI-Запроса не существует, и данный URI может рассматриваться как описание для нового ресурса, сервер может создать ресурс с данным URI. Если был создан новый ресурс, сервер должен информировать направившего запрос клиента через ответ с кодом статуса «201 Created». Если существующий ресурс был модифицирован, должен быть послан ответ «200 OK», для информирования клиента об успешном завершении операции. Если ресурс с указанным URI не может быть создан или модифицирован, должно быть послано соответствующее сообщение об ошибке.

Фундаментальное различие между методами POST и PUT заключается в различном значении поля URI-Запроса. Для метода POST данный URI указывает ресурс, который будет управлять информацией, содержащейся в теле запроса, как неким придатком. Ресурс может быть обрабатывающим данные процессом, шлюзом в какой нибудь другой протокол, или отдельным ресурсом, допускающим аннотации. В противоположность этому, URI для запроса PUT идентифицирует информацию, содержащуюся в Содержание-Запроса. Использующий запрос PUT точно знает какой URI он собирается использовать, и получатель запроса не должен пытаться применить этот запрос к какому-нибудь другому ресурсу.

DELETE

Метод DELETE используется для удаления ресурсов, идентифицированных с помощью URI-Запроса. Результаты работы данного метода на сервере могут быть изменены с помощью человеческого вмешательства (или каким-нибудь другим способом). В принципе, клиент никогда не может быть уверен, что операция удаления была выполнена, даже если код статуса, переданный сервером, информирует об успешном выполнении действия. Тем не менее, сервер не должен информировать об успехе до тех пор, пока на момент ответа он не будет собираться стереть данный ресурс или переместить его в некоторую недостижимую область.

LINK

Метод LINK устанавливает взаимосвязи между существующим ресурсом, указанным в URI-Запроса, и другими существующими ресурсами. Отличие метода LINK от остальных методов, допускающих установление ссылок между документами, заключается в том, что метод LINK не позволяет передавать в запросе Тело-Запроса, и в том, что в результате работы данного метода не создаются новые ресурсы.

UNLINK

Метод UNLINK удаляет одну или более ссылочных взаимосвязей для ресурса, указанного в URI- Запроса. Эти взаимосвязи могут быть установлены с помощью метода LINK или какого-нибудь другого метода, поддерживающего заголовок «Link». Удаление ссылки на ресурс не означает, что ресурс прекращает существование или становится недоступным для будущих ссылок.

Поля Заголовок-Запроса

Поля Заголовок-Запроса позволяют клиенту передавать серверу дополнительную информацию о запросе и о самом клиенте.

Заголовок-Запроса = Accept | Accept-Charset | Accept-Encoding | Accept-Language | Authorization | From | If-Modified-Since | Pragma | Referer | User-Agent | extension-header

Кроме того через механизм расширения могут быть определены дополнительные заголовки; приложения, которые их не распознают, должны трактовать эти заголовки, как Заголовок-Содержание.

Ниже будут рассмотрены некоторые поля заголовка запроса.

From

В случае присутствия поля From, оно должно содержать полный E-mail адрес пользователя, который управляет программой-агентом, осуществляющей запросы. Этот адрес должен быть задан в формате, определенном в RFC 822. Формат данного поля следующий: From = «From» «:» спецификация адреса. Например:

From: [email protected]

Данное поле может быть использовано для функций захода в систему, а также для идентификации источника некорректных или нежелательных запросов. Оно не должно использоваться, как несекретная форма разграничения прав доступа. Интерпретация этого поля состоит в том, что обрабатываемый запрос производится от имени данного пользователя, который принимает ответственность за применяемый метод. В частности, агенты-роботы должны использовать этот заголовок для того, чтобы можно было связаться с тем человеком, который отвечает за работу робота, в случае возникновения проблем. Почтовый Internet адрес, указывающийся в этом поле, не обязан соответствовать адресу того хоста, с которого был послан данный запрос. По возможности, адрес должен быть доступным Internet адресом вне зависимости от того, является ли он в действительности Internet E-mail адресом или Internet E-mail представлением адреса других почтовых систем.

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

If-Modified-Since

Поле заголовка If-Modified-Since используется с методом GET для того, чтобы сделать его условным: если запрашиваемый ресурс не изменялся во времени, указанного в этом поле, копия этого ресурса не будет возвращена сервером; вместо этого, будет возвращен ответ «304 Not Modified» без Тела- Ответа.

If-Modified-Since = "If-Modified-Since" ":" HTTP-дата

Пример использования заголовка:

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

User-Agent

Поле заголовка User-Agent содержит информацию о пользовательском агенте, пославшем запрос. Данное поле используется для статистики, прослеживания ошибок протокола, и автоматического распознавания пользовательских агентов. Хотя это не обязательно, пользовательские агенты должны всегда включать это поле в свои запросы. Поле может содержать несколько строк, представляющих собой название программного продукта, необязательную косую черту с указанием версии продукта, а также другие программные продукты, составляющие важную часть пользовательского агента. По соглашению, продукты указываются в списке в порядке убывания их значимости для идентификации приложения.

User-Agent = "User-Agent" ":" 1*(продукт) продукт = строка ["/" версия-продукта] версия-продукта = строка

User-Agent: CERN-LineMode/2.15 libwww/2.17b3

Строка, описывающая название продукта, должна быть короткой и давать информацию по существу — использование данного заголовка для рекламирования какой-либо другой, не относящейся к делу, информации не допускается и рассматривается, как не соответствующее протоколу. Хотя в поле версии продукта может присутствовать любая строка, данная строка должна использоваться только для указания версии продукта. Поле User-Agent может включать в себя дополнительную информацию в комментариях, которые не являются частью его значения.

Структура ответа

После получения и интерпретации запроса, сервер посылает ответ в соответствии со следующей формой:

Ответ = Простой-Ответ | Полный-Ответ Простой-Ответ = [ Содержание-Ответа ] Полный-Ответ = Строка-Статус *(Общий-Заголовок | Заголовок-Ответа | Заголовок-Содержания) CRLF [ Содержание-Ответа ]

Простой-Ответ должен посылаться только в ответ на HTTP/0.9 Простой-Запрос, или в том случае, если сервер поддерживает только ограниченный HTTP/0.9 протокол. Если клиент посылает HTTP/1.0 Полный-Запрос и получает ответ, который не начинается со Строки-Статус, он должен предполагать, что ответ сервера представляет собой Простой-Ответ, и обрабатывать его в соответствии с этим. Следует заметить, что Простой-Ответ состоит только из запрашиваемой информации (без заголовков) и поток данных прекращается в тот момент, когда сервер закрывает сеанс связи.

Строка Статус

Первая строка Полного-Запроса является Строкой-Статус, состоящей из версии протокола, за которой следует цифровой код статуса и ассоциированное с ним текстовое предложение. Все элементы Строки-Статус разделены пробелами. Не разрешены символы CR и LF, за исключением завершающей последовательности CRLF.

Строка-Статус=Версия-HTTP SP Статус-Код SP Фраза-Об"яснение.

Так как Строка-Статус всегда начинается с версии протокола «HTTP/» 1*ЦИФРА «.» 1*ЦИФРА (например HTTP/1.0), существование этого выражения рассматривается как основное для определения того, является ли ответ Простым-Ответом, или Полным-Ответом. Хотя формат Простого-Ответа не исключает появления подобной строки (что привело бы к неправильной интерпретации сообщения ответа и принятию его за Полный-Ответ), вероятность такого появления близка к нулю.

Статус-Код и пояснение к нему

Элемент Статус-Код представляет собой 3-х цифровой целый код, идентифицирующий результат попытки интерпретации и удовлетворения запроса. Фраза-Об’яснение, следующая за ним, предназначена для краткого текстового описания Статус-Кода. Статус-Код нацелен на то, чтобы его использовала машина, а Фраза-Об’яснение предназначена для человека. Клиент не обязан исследовать и выводить на экран Фразу-Об’яснение.

Первая цифра Статус-Кода предназначена для определения класса ответа. Последние две цифры не выполняют никакой категоризирующей роли. Существует 5 значений для первой цифры:

  1. 1xx: Информационный — Не используется, но зарезервирован для использования в будущем
  2. 2xх: Успех — Запрос был полностью получен, понят, и принят к обработке.
  3. 3xx: Перенаправление — Клиенту следует предпринять дальнейшие действия для успешного выполнения запроса. Необходимое дополнительное действие иногда может быть выполнено клиентом без взаимодействия с пользователем, но настоятельно рекомендуется, чтобы это имело место только в тех случаях, когда метод, использующийся в запросе безразличен (GET или HEAD).
  4. 4xx: Ошибка клиента — Запрос, содержащий неправильные синтаксические конструкции, не может быть успешно выполнен. Класс 4xx предназначен для описания тех случаев, когда ошибка была допущена со стороны клиента. Если клиент еще не завершил запрос, когда он получил ответ с Статус-Кодом- 4xx, он должен немедленно прекратить передачу данных серверу. Данный тип Статус-Кодов применим для любых методов, употребляющихся в запросе.
  5. 5xx: Ошибка Сервера — Сервер не смог дать ответ на корректно поставленный запрос. В этих случаях
    сервер либо знает, что он допустил ошибку, либо не способен обработать запрос. За исключением ответов на запросы HEAD, сервер посылает описание ошибочной ситуации и то, является ли это состояние временным или постоянным, в Содержание-Ответа. Данный тип Статус-Кодов применим для любых методов, употребляющихся в запросе.

Отдельные значения Статус-Кодов и соответствующие им Фразы-Об’яснения приведены ниже. Данные Фразы-Об’яснения только рекомендуются — они могут быть замещены любыми другими фразами, сохраняющими смысл и допускающимися протоколом.

Статус-Код = "200" ; OK | "201" ; Created | "202" ; Accepted | "203" ; Provisional Information | "204" ; No Content | "300" ; Multiple Choices | "301" ; Moved Permanently | "302" ; Moved Temporarily | "303" ; Method | "304" ; Not Modified | "400" ; Bad Request | "401" ; Unauthorized | "402" ; Payment Required | "403" ; Forbidden | "404" ; Not Found | "405" ; Method Not Allowed | "406" ; None Acceptable | "407" ; Proxy Authentication Required | "408" ; Request Timeout | "409" ; Conflict | "410" ; Gone | "500" ; Internal Server Error | "501" ; Not Implemented | "502" ; Bad Gateway | "503" ; Service Unavailable | "504" ; Gateway Timeout | Код-Рассширения Код-Расширения = 3ЦИФРА Фраза-Об"яснение = строка *(SP строка)

От HTTP приложений не требуется понимание всех Статус-Кодов, хотя такое понимание, очевидно, желательно. Тем не менее, от приложений требуется способность распознавания классов Статус-Кодов (идентифицирующихся первой цифрой) и отношение ко всем Статус-Кодам статуса ответа, как если бы они были эквивалентны Статус-Коду x00.

Поля Заголовок-Ответа

Поля заголовка ответа позволяют серверу передать дополнительную информацию об ответе, которая не может быть внесена в Строку-Статус. Эти поля заголовков не предназначены для передачи информации о содержании ответа, передаваемого в ответ на запрос, но там может быть информация собственно о сервере.

Заголовок-Ответа= Public | Retry-After | Server | WWW-Authenticate | extension-header

Хотя дополнительные поля заголовка ответа могут быть реализованы через механизм расширения, приложения, которые не распознают эти поля, должны обрабатывать их как поля Заголовок-Содержание. Полное описание этих полей можно получить в спецификации протокола HTTP в CERN.

Общие Понятия

Полный-Запрос и Полный-Ответ может использоваться для передачи некоторой информации в отдельных запросах и ответах. Этой информацией является Содержание-Запроса или Содержание-Ответа соответственно, а также Заголовок-Содержания.

Поля Заголовок-Содержания

Поля Заголовок-Содержания содержат необязательную метаинформацию о Содержании-Запроса или Содержании-Ответа соответственно. Если тело соответствующего сообщения (запроса или ответа) не присутствует, то Заголовок-Содержания содержит информацию о запрашиваемом ресурсе.

Некоторые из полей заголовка содержания описаны ниже.

Allow

Поле заголовка Allow представляет собой список методов, которые поддерживает ресурс, идентифицированный URI-Запроса. Назначение этого поля — точное информирование получателя о допустимых методах, ассоциированных с ресурсом; это поле должно присутствовать в ответе со статус кодом «405 Method Not Allowed».

Allow = "Allow" ":" 1#метод

Пример использования:

Allow: GET, HEAD, PUT

Конечно, клиент может попробовать использовать другие методы. Однако, рекомендуется следовать тем методам, которые указаны в данном поле. У этого поля нет значения по умолчанию; если оно оставлено неопределенным, множество разрешенных методов определяется сервером в момент каждого запроса.

Content-Length

Поле Content-Length указывает размер тела сообщения, посланного сервером в ответ на запрос или, в случае запроса HEAD, размер тела сообщения, которое было бы послано в ответ на запрос GET.

Content-Length = "Content-Length" ":" 1*ЦИФРА

Например:

Content-Length: 3495

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

Content-Type

Поле заголовка Content-Type идентифицирует тип информации в теле сообщения, которая посылается получающей стороне или, в случае метода HEAD, тип информации (среды), который был бы послан, если использовался метод GET.

Content-Type = "Content-Type" ":" тип-среды

Типы сред определены отдельно.
Пример:

Content-Type: text/html; charset=ISO-8859-4

Поле Content-Type не имеет значения по умолчанию.

Last-Modified

Поле заголовка содержит дату и время, в которое, по мнению отправляющей стороны, ресурс был последний раз модифицирован. Семантика данного поля определена в терминах, описывающих, как получатель должен его интерпретировать: если получатель имеет копию ресурса, которая старше, чем передаваемая в поле Last-Modified дата, то копия должна считаться устаревшей.

Last-Modified = "Last-Modified" ":" HTTP-дата

Пример использования:

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

Тело сообщения

Под телом сообщения понимается Содержание-Запроса или Содержание-Ответа соответственно. Тело сообщения, если оно присутствует, посылается в HTTP/1.0 запросе или ответе в формате и кодировке, определяемыми полями Заголовок-Содержания.

Тело-Сообщения = *OCTET (где OCTET это любой 8-битный символ)

Тело сообщения включается в запрос, только если метод запроса подразумевает его наличие. Для спецификации HTTP/1.0 такими методами являются POST и PUT. В общем, на присутствие тела сообщения указывает присутствие таких полей заголовка содержания, как Content-Length и/или Content- Transfer-Encoding, в передаваемом запросе.

Что касается сообщений-ответов, наличие тела сообщения в ответе зависит от метода, который был использован в запросе, и Статус-Кода. Все ответы на запросы HEAD не должны содержать тело сообщения, хотя наличие некоторых полей заголовка сообщения может указывать на возможное присутствие такового. Соответственно, ответы «204 No Content», «304 Not Modified», и «406 None Acceptable» также не должны включать в себя тело сообщения.

Хорошо Плохо

Здравствуйте, уважаемые читатели блога сайт. При изучении механизма, отвечающего за корректное функционирование сети интернет, никуда не уйти от необходимости уделить время его основным аспектам, в число коих, вне всякого сомнения, входит протокол передачи данных HTTP и его безопасная версия HTTPS.

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

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

Главное — понять, что представляет из себя HTTP в общих чертах и каковы главные особенности HTTPS, а также постичь базовые принципы, которые в них заложены. Подобные знания будут полезны в том числе для для оптимизации и продвижения вашего сайта, этому вы получите безусловное подтверждение из этой и последующих статей, посвященных данной теме.

Что такое HTTP и как он работает?

Чтобы получить нужный документ в интернете, пользователю достаточно ввести в поисковую строку браузера нужный URL-адрес ( о структуре урлов подробности), который как раз содержит название протокола HTTP (или HTTPS).

3. HTTP/Версия — указывается действующая модификация протокола. На данный момент это HTTP 1.1 (вы можете ознакомиться с ее спецификацией). Однако, в черновом виде уже существует следующая версия протокола 2.0, который основан на .

Нижняя строка представляет собой заголовок Host в составе HTTP-запроса, отсылаемого браузером серверу в соответствии с полученным от ДНС IP. Для чего это надо? Для идентификации нужного сайта, поскольку на вебсерверах обычно расположен не один ресурс.

Разберем наглядный пример для закрепления пройденного. Скажем, браузер получил "задание" от пользователя отобразить страничку вот с таким адресом:

Http://subscribe.ru/group/

Тогда HTTP-запрос посредством метода GET может быть составлен следующим образом (в этом случае обычно тело сообщения отсутствует):

GET /group/ HTTP/1.1 Host: subscribe.ru

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

HTTP/Версия Код состояния Пояснение

Теперь пробежимся вкратце и по составу ответа сервера:

1. Версия HTTP указывается по аналогии с запросом.

2. Код состояния (Status Code) — три цифры, информирующие о том, каков статус документа, запрошенного браузером. Например, 200 — ОК, страница существует и будет отображена в браузере, 301 — осуществлен (перенаправление) на другой урл, — вебстранички по такому адресу нет (возможно, она удалена либо юзер ошибся при вводе URL).

3. Пояснение (Reason Phrase) — текст дополнения к коду ответа. В некоторых случаях пояснение может отличаться от стандартного либо отсутствовать вовсе. Это связано в том числе с настройкой ПО, размещенного на сервере.

Реальный пример? Пожалуйста. Попробуем получить ответ сервера на запрос, приведенный мною в качестве примера выше (урл «http://subscribe.ru/group/»). Он будет выглядеть так (начальная строка с заголовками):

HTTP/1.1 200 OK Server: nginx Date: Sat, 10 Jun 2017 06:36:38 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Content-Language: ru Set-Cookie: Subscribe::Viziter=UQkivlk7k3YO3DgjAxM2Ag==; expires=Thu, 31-Dec-37 23:55:55 GMT; domain=subscribe.ru; path=/ P3P: policyref="/w3c/p3p.xml", CP="NOI PSA OUR BUS UNI"

В данном случае отсутствуют пояснение и тело сообщения, которое при использовании метода GET может содержать, например, HTML-код запрашиваемого документа (веб-странички). В зависимости от типа приложения клиента эти разделы могут присутствовать.

Итак, резюмируем вкратце выше изложенное. Если пользователь вводит урл искомой страницы, имея ввиду получить ее содержимое для просмотра, браузер посылает GET запрос на нужный сервер и получает ответ. В результате этого общения либо (при благоприятных обстоятельствах) контент запрошенного документа будет отображен, либо нет.

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

Для того, чтобы выше предложенная информация без усилий ложилась в пазл, не хватает конкретного примера. Его мы рассмотрим с помощью одного из (именно этот веб-обозреватель является моим рабочим инструментом), именуемого HTTP Headers.

Он удобен тем, что дает полную картину взаимодействия «клиент-сервер», предоставляя в "одном флаконе" содержание HTTP запроса (request) и ответа (response) . Посмотрите, какой документ выдал этот плагин при переходе по ссылке с одной страницы моего блога на другую:


Здесь в самом верху отмечен метод GET, с помощью которого браузер обращается к серверу, а также статус странички, отмеченный кодом состояния 200 OK, который дает понять, что сервер передал все данные в отношении запрашиваемой вебстраницы.

Интерес вызывают также HTTP Headers (заголовки) , отображенные ниже. Например, пункт «Referer» дает информацию в виде урла, откуда был осуществлен переход.

Заголовок «User Agent» отражает как раз клиентское приложение, отправившее запрос вебсерверу. В данном случае это браузер, но могут быть и другие (мобильные устройства, поисковые роботы и т.д.). Данные, представленные в Юзер Агенте, необходимы серверному программному обеспечению для идентификации приложения, посылающего запрос.

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

Вот потому-то в следующей публикации я планирую поподробнее остановится на том, как просмотреть HTTP-заголовки и проверить коды ответов сервера именно на запрос робота, что исключительно важно для вебмастеров в свете SEO оптимизации ресурса. Поэтому оформляйте подписку , чтобы своевременно получить свежую статью.

В чем особенность безопасного протокола HTTPS?

Уверен, всем без исключения пользователям интернета, включая начинающих, известно о существовании особого протокола HTTPS (Hypertext Transfer Protocol Secure), который служит для защиты персональных данных на сервисах, где используется их передача (платежные системы, интернет магазины, крупные специализированные порталы и т.д.).

Если ввести адрес страницы какого-нибудь подобного сайта, то данное соединение будет особым образом обозначено. В Google Chrome (), например, отобразится замочек с надписью «Надёжный» зеленого цвета, при нажатии на который вы увидите некоторую информацию, связанную с защитой личных данных:


Что такое HTTPS? Строго говоря, он не является самостоятельным протоколом. Это стандартный HTTP, который действует через механизмы TLS или SSL , способные гарантировать шифрование, что исключает перехват и получение конфиденциальных данных злоумышленниками.

По умолчанию при работе защищенного протокола применяется порт 443 (если помните, для стандартного HTTP — 80). Для шифрования в HTTPS используется длина ключа в 40, 56, 128 и 256 бит (). Однако, первые два варианта даже не стоит рассматривать, поскольку они не могут обеспечить достаточного уровня безопасности.

В последнее время поисковики, особенно Гугл, активно склоняют владельцев всех сайтов к переходу на защищенный протокол, тонко намекая, что этот момент будет учитываться при ранжировании. В итоге теперь многие ресурсы (даже обычные блоги), а не только сайты, тесно связанные с передачей личных данных, уже работают с HTTPS.

Более того, передовые хостеры предлагают по приобретению безопасного сертификата SSL, который необходим для включения защищенного соединения.

Конечно, мы не рассмотрели все нюансы использования протокола HTTP (HTTPS), коих немало. Эта тема может занять несколько внушительных мануалов. Однако основные аспекты, которые пригодятся как продвинутому пользователю, так и вебмастеру, освещены. Если вы все-таки не удовлетворены объемом полученной информации, то можете с легкостью дополнить ее из ниже следующей видеолекции, где, в частности, подробнее говорится о методах:

В скором времени интернет перейдёт на протокол HTTP/2, который значительно оптимизирует работу сайтов, а весь мир перейдёт на новые стандарты работы в глобальной сети, новые стандарты безопасности и, в конечном счёте, стандарты скорости передачи информации. Всё это обеспечивается при помощи протокола HTTP/2 — улучшенной версии классического протокола http, на котором до сих пор работает практически весь мировой интернет. Описание нового алгоритма передачи данных в Сети.

Что это такое и зачем он нужен

HTTP, или HyperText Transfer Protocol, или протокол передачи гипертекста – набор правил и протоколов, по которым сегодня работает глобальная паутина. Он формирует правила для передачи графических файлов, текстовых сообщений, звуковых и мультимедийных файлов — иначе говоря, правила подачи визуального отображения информации в интернете. HTTP/2 – это новое поколение данных протоколов, ведь HTTP/1.1 служит с 1999 года, и с тех пор большинство современных сайтов уже не может довольствоваться поддержкой устаревшей технологии HTTP. Переход на новую версию не заставляет себя ждать.

Чем отличается http/2 от http

Разработка новой версии протокола связана с улучшением параметров производительности, защиты и простоты в эксплуатации. Всё это достигается за счёт уменьшения задержки обработки браузером основных производственных операций в интернете. При разработке помогают такие возможности как управление потоком, позволяющее контролировать скорость передачи данных, или как обработка ошибок.

При этом HTTP/2 — это лишь расширение для HTTP1, замены которого, пока что не планируется. Вторая версия протокола будет совместима с первой версией. Все преимущества новой версии со временем будут только дополнятся и улучшаться, регулярно будут вноситься изменения, HTTP/2 будет постоянно эволюционировать. Обновлённый протокол будет содержать алгоритм всех вариантов шифрования, доступных при старой версии, но со временем более подходящие варианты шифрования определённо будут открыты.

Следует понимать, что со времени появления HTTP1.1 прошло много времени, веб претерпел огромные изменения и необъятно расширился, поэтому необходимо залатать все те дыры, которые возникли за более чем десятилетний промежуток времени со времён разработки первой версии.

Возможности

Данный протокол серьёзно оптимизирует работу веб-сайтов за счёт нескольких преимуществ:

  • постоянные соединения : ранее для запроса любого отдельного URL требовалось создавать отдельные TCP-соединения, теперь существует одно соединение на все;
  • приоритеты потоков : можно устанавливать приоритетность на серверах — какие ресурсы для вас важнее;
  • сжимание заголовков : можно сжать размер HTTP-заголовка;
  • пуш-отправка данных : сервер способен отправлять вам те или иные данные ещё до запроса.

Мультиплексирование

Мультиплексирование — это метод в HTTP2 , при помощи которого возможно отправлять сразу несколько запросов, при этом ответы получаются асинхронно через единое соединение. Мультиплексирование — это сердце протокола http2. Оно позволяет вам одновременно посылать больше одного запроса, не запуская для каждого отдельное соединение.

При работе с http1, при загрузке странички, загружается HTML-страница, система видит, что ей нужны какие-то файлы: CSS, изображения, javasсriрt и т.п. Ваш браузер сначала прогружает страницу, а уже потом делает запрос на CSS. После этого запрашивается скрипт. Затем картинка и так далее. Вы можете работать только с одним из них по по очереди.

После отправки запроса система ждёт до тех пор, пока ответ не будет получен . Это не проблема браузера, но проблема самого протокола, так как браузеру необходимо ждать ответа не все эти запросы, а это занимает время. Поэтому одной из основных проблем в Интернете сегодня является медленность сети при контакте между сервером и непосредственно клиентом. Время при этом может составлять миллисекунды, что может и не особо много, но при сложении они в целом тормозят браузер — особенно учитывая то, что структура сайтов постоянно усложняется, а доступ в Интернет становится все более мобильным (с меньшей задержкой по сравнению с обычным интернетом).

HTTP / 2 позволяет отправлять сразу несколько запросов в одном и том же соединении, игнорируя всю эту последовательность. Все эти запросы проходят через Интернет на сервер параллельно. Сервер отвечает на каждый, а затем возвращает.

ВАЖНО: в HTTP/1.1 присутствует так так называемая конвейерная обработка, так же дающая возможность отправлять более одного запроса одновременно. Но она гораздо менее функциональна по сравнению с мультиплексированием.

Приоритетность

Возможность приоритизации — еще одно новшество в HTTP/2. Теперь каждому запросу может быть назначен приоритет . Существует два способа присвоения приоритета: по весу или на основе зависимостей.

При первой концепции каждому потоку присваивается вес. На основе этого веса сервер перераспределяет нагрузку меж потоками.

Второй и первичный подход HTTP/2 предполагает, что браузер сначала запрашивает сервер для возврата определенного контента на основе типа; к примеру, браузер может сначала запросить файлы CSS или JS, затем HTML, а затем изображения.

В HTTP/2 приоритезация не является обязательной, но предпочтительна, поскольку мультиплексирование не будет работать так, как предполагается. Загрузки могут быть даже медленнее , чем в HTTP/1.1. Ресурсы с наиболее низкими приоритетами будут монополизировать пропускную способность, что снижает производительность.

Что даёт приоритезация:

  • Более эфективная работа в сети.
  • Сокращение временных затрат.
  • Ускорение времени загрузки веб-страниц.
  • Оптимизация передачи данных между сервером-клиентом .

Сжатие заголовков

Сегодня веб-страницы — это в первую очередь сочетание огромного количества различных элементов: картинок, java-script, CSS и т.п. Каждый раз, когда браузер запрашивает один из таких элементов, он при этом отсылает соответствующий HTTP-заголовок. Сервер при этом присоединяет заголовок к запрошенным элементам. Это потребляет значительные ресурсы .

В HTTP/2 заголовки сжимаются . Это уменьшает объем обмена информацией между сервером и браузером. Вместо алгоритмов gziр/deflate используется HPACK, как самый удобный и простой подход к сжиманию заголовков. Это также уменьшает уязвимость от атак BREACH. Использование HPACK даёт множество преимуществ:.

  • Снятие дополнительной нагрузки и расхода ресурсов.
  • Сокращение индивидуального размера передающихся данных после сокращения заголовка.
  • Неуязвимость перед атаками безопасности .

Server push

HTTP/2 Server Push — это одна из функций повышения производительности, включенных в версию 2 протокола HTTP. Это позволяет веб-серверу заранее предоставлять информацию клиенту (ещё до запроса), которую он в будущем может запросить. HTTP/2 Server Push основан на том, что клиент, требующий ту или иную информацию, в будущем затребует другую информацию. Иначе говоря, идёт игра не опережение

Как работает Push на примере: Ваш браузер запрашивает веб-траницу (index.html в нашем примере), а сервер возвращает вам три объекта: index.html, а также два дополнительных объектоа: scripts.js и styles.css, которые хранятся в специальном кеше, зарезервированном для этой цели. Затем клиент анализирует index.html и понимает, что для загрузки страницы нужны три объекта: scripts.js, styles.css и image.jpg. Первые два уже находятся в кеше браузера, поскольку они были сохранены сервером, поэтому клиенту просто нужно запросить image.jpg на сервере, чтобы отобразить страницу.

Данная функция имеет многочисленные плюсы:

  • Ресурсы клиента сохраняются в кэше .
  • Сохраненные ресурсы могут повторно использоваться на иных веб-сайтах.
  • Клиент всегда может отказаться от своих ресурсов чтобы сохранить эффективность кэш-хранилища, или вообще отключить функцию push-сервера.

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

Ssl и шифрование

Переходя на HTTPS/2, вы автоматом переходите на HTTPS , то есть на защищённый режим работы в сети. При этом это единственный режим, в котором будет работать веб-браузер. HTTPS будет шифровать абсолютно весь интернет-трафик и потребует наличия сертификата (сегодня обычный DV-сертификат вы можете найти не потратив ни копейки, к примеру через WoSign SSL certificate, или через Lets Encrypt, хотя Google может прекратить доверие их сертификатам в любой момент, поэтому нужно внимательно следить за повесткой дня).

Бинарность

HTTP/2 – это бинарный протокол.Бинарные протоколы более эффективны для анализа и уменьшения кол-ва ошибок, чем текстовые протоколы, в которых люди пишут запросы вручную через TELNET. Бинарность ускоряет передачу данных и меньше нагружает клиента, делая реализацию задач гораздо проще.

Бинарность новой версии протокола необходима для того, чтобы упростить формирование пакетов, как и их распознавания. Дни HTTP/1.1 во многом стали сочтены потому, что стало понятно, что определять начало и конец пакета стало слишком времязатратно. Пользуясь преимуществами и новшествами данного протокола мы избегаем бесконечных повторений и записей одного и того же, оптимизируя таким образом собственную работу.

Помимо этого, теперь можно очень просто разделить часть связанную с самим протоколом и с пакетом данных, в отличие от устаревшего HTTP1, где это всё было спонтанно перемешано.

Итак, вот основные преимущества бинарного протокола :

  • Очень небольшие дополнительные расходы во время анализа данных .
  • Гораздо меньшая подверженность ошибкам, по сравнению с предыдущей версией протокола.
  • Большая лёгкость в освоении сетевого пространства.
  • Большая эффективность в применении сетевых ресурсов.
  • Ликвидация всех дыр в безопасности и шифровании и регулярных атак, которые были связаны с тем, что HTTP/1.1 базируется на текстовой основе.
  • Сами по себе уникальные возможности HTTP/2, такие как push, мультиплексинг, выстраивание приоритетов, управление потоками, а также оптимизация работы в сети.
  • Упрощение обработки команд и их реализации .
  • Ускорение передачи данных между клиентом и сервером.
  • Существенное снижение сетевых задержек и увеличение пропускной способности.

Поддержка браузерами

На сегодняшний день абсолютное большинство актуальных браузеров: как десктопных, так и мобильных, поддерживают технологию HTTP/2. Первыми из них стали такие гиганты, как Google Chrome и Mozzila Firefox, которые поддерживают данный протокол уже много лет. Позже, видимо следуя их примеру, компания Apple в 2014-м году добавила в свой браузер Сафари поддержку технологии. После этого уже и менее крупные браузеры стали работать в данном направлении. При этом браузер IE Explorer требует версии Windows не меньше 8, чтобы работать с данным протоколом.

Мобильные браузеры не отстают, и уже подключили протокол в большинство существующих платформ . Это касается Андроид-браузера, Хром для Андроида и iOS, Сафари, начиная с iOS 8 — данные мобильные браузеры уже поддерживают HTTP/2. При этом, с течением времени и прониканием технологии в повседневность, зона распространения также постоянно расширяется.

Поисковая оптимизация (SEO)

Безусловно, большинство тех, кто владеет или когда-то владел собственным ресурсом поймут, . Одним из важнейших факторов по которым сайты ранжируются для поисковиков — это средняя скорость, с которой сайты подгружаются.

Таким образом, ресурсы работающие по новой версии протокола HTTP, будут получать бонус в ранжировании как раз за счёт скорости прогрузки сайта, ведь . Ещё один плюс заключается в том, что при переходе на http2 вы автоматически переходите на HTTPS, и в итоге также получаете бонус в ранжировании поисковых систем также и использование HTTPS.

Оптимизация сайтов

Для предыдущей версии протокола использовались различные оптимизации — это было необходимо, чтобы обойти дыры и ограничения, существующие в HTTP/1. Некоторые из этих оптимизационных решений могут работать и в обновленной версии протокола, но от многих придётся отказаться, либо, как минимум, модифицировать. Хотя часть из них вообще попросту не потребуется, ведь новая версия протокола — это просто расширение старой версии, сайты в любом случае будут работать со всеми старыми оптимизациями. Вот на какие нужно обратить внимание:

  1. Объединение картинок в CSS-спрайты . В первой версии протокола эффективно объединять маленькие и средние изображения в один спрайт, т.к. требуется единственное соединение. Зато если картинка только одна — прогрузить спрайт придётся полностью. В HTTP2 благодаря мультиплексу есть возможность многочисленных запросов и удобнее загружать несколько маленьких картинок одновременно. Хотя иногда по прежнему рекомендуется объединять изображения в спрайт, чтобы улучшить качество сжатия и загрузочный объём.
  2. Возможность встраивания картинок в тело страницы при помощи data: URI . Это ещё одно распространённое решение проблемы с множественными запросами в старой версии протокола: картинки встраивались в CSS через data: URI. Размер файла при этом может заметно увеличиться, зато потребуется не так много соединений. В HTTP2 данный подход всё ещё может быть актуален, однако не послужит увеличению производительности.
  3. Объединение файлов JS и CSS в единый файл . Таким образом когда загружается страница, сразу загружаются таблицы стилей и код javascript. Помимо этого, браузер кэширует весь этот файл и даже минимальные изменения в коде потребуют перезагрузки всего файла. Мультиплексирование полностью решает данную проблему и избавляет от этого неудобства.
  4. Доменный шардинг . В старой версии http кол-во открытых соединений ограничено. Если необходимо загрузить множество ресурсов сразу, то часто можно прибегнуть к их получению с разных доменов.либо поддоменов основного домена. HTTP/2 создаёт возможность создавать столько ресурсов, сколько заблагорассудится, фактически избавляя от необходимости в данной функции, при этом доменный шардинг отрицательно сказывается на производительности из-за множества открытых TCP-соединений.

Как подключить

Для введения протокола в эксплуатацию не потребуется что-то менять в привычном рабочем пространстве: не потребуется менять ни URL страниц, ни делать редиректов, менять ссылки, делать разметок или прописывать какие-то дополнительные данные для защиты. При подключении HTTP2 к сайту просто понадобится включить HTTPS и провести все соответствующие процедуры, ничего более, таким образом будет включено шифрование и обеспечена защита сайта.

Для того чтобы проверить наличие поддержки в браузере протокола HTTP2 можно использовать специальные расширения для браузеров Mozzila Firefox и Google Chrome, а также использовать инструмент проверки скорость на веб-0сайте Айри.рф: после проверки должна загореться одна из плашек — если браузер поддерживает протокол HTTP2, то в итогах проверки появится зеленая плашка [НТTР/2.0]. Существуют и другие интернет-сервисы для проверки поддержки модернизированного протокола, один из них — это сервис от http2.pro.

Заключение

Новая эра, в которой будет доминировать HTTP/2 уже почти на носу: протокол уже поддерживается многими браузерами. Эпоха нового веб будет гораздо более быстрой, более безопасной и очень комфортной для использования, уже можно совершенно точно принять то, что http2 — это тот стандарт, по которому мы будем путешествовать в глобальной сети в ближайшем будущем.

Похожие статьи