Calcweb.ru

Информационный портал
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

HTTPA — новый протокол передачи данных с поддержкой отчетности

Протоколы HTTP, HTTPS и HTTPA

Протоколы HTTP, HTTPS и HTTPA

18 Ноября 2021

Адрес любого сайта, посещаемого пользователем в интернете, начинается с «http://» или «https://». Что представляют собой эти конструкции, для чего используются и какие особенности имеют, будет рассказано в представленной статье.

Что такое HTTP/HTTPS

HTTP и HTTPS – это протоколы передачи гипертекста. Они отвечают за обмен данными между сервером и браузером, то есть за процесс передачи сформулированного и отправленного запроса на сервер и отправки обработанного результата на браузер с преобразованием его в нужный вид.

Содержимое запроса зависит от URL-адреса. Для передачи через протоколы HTTP/HTTPS используются файлы со следующими типичными расширениями:

  • HTM (или HTML) — HTML-файлы (HTML);
  • TXT — открытые тексты ASCII;
  • GIF — двоичные изображения GIF;
  • XBM — двоичные изображения Xbitmap.

HTTP (HyperText Transfer Protocol) является открытым протоколом передачи данных, а HTTPS (HyperText Transfer Protocol Secure) – закрытым (в нем есть надстройка для шифровок). Шифрование в HTTPS поддерживается при помощи криптографических протоколов SSL и TLS. НТТР задействует порт 80, HTTPS – 443.

Чтобы обеспечить подготовку веб-сервер для обработки https-соединений, администратору следует получить и встроить в систему сертификат открытого и закрытого ключа для данного веб-сервера. В TLS применяется как асимметричная схема шифрования (для оформления секретного ключа для каждой стороны), так и симметричная (для обмена данными, зашифрованными общим ключом).

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

Требования для HTTP

Для правильной работы пакета сервера NetX Web HTTP требуется установить NetX Duo 5.10 или более поздней версии. Кроме того, будет необходимо создать экземпляр IP, для которого предусматривается включенное использование TCP. Для поддержки HTTPS также необходимо установить NetX Secure TLS 5.11 или более поздней версии.

Для HTTP-клиента из пакета NetX Web HTTP иных требований не предъявляется, но они имеются для HTTP-сервера из пакета NetX Web HTTP. В первую очередь, ему следует обеспечить полный доступ к известному TCP-порту 80 для работы со всеми запросами HTTP-клиента (приложением может быть указан любой другой допустимый порт TCP). HTTP-сервер также предназначается для работы с внедренной файловой системой FileX. В случае недоступности FileX пользователь может использовать все применяемые им разделы этой системы в собственной рабочей среде.

Требования для HTTPS

Чтобы протокол HTTPS на основе пакета NetX Web HTTP работал корректно, требуется, чтобы были установлены NetX Duo 5.10 или более поздней версии и NetX Secure TLS 5.11 или более поздней версии. Также нужно создать экземпляр IP, для которого есть все возможности использования протокола TCP для работы с протоколом TLS. Также необходимо будет инициализировать сеанс TLS с помощью соответствующих процедур шифрования и сертификата доверенного ЦС. Помимо этого, потребуется подготовить достаточное пространство для сертификатов, которые будут предоставляться удаленными узлами сервера во время подтверждения TLS.

К HTTPS-клиенту из пакета NetX Web HTTP не предъявляется дополнительных требований. Однако HTTPS-серверу из пакета NetX Web HTTP следует предоставлять полный доступ к определенному TCP-порту 443 для обработки всех HTTPS-запросов клиента (как и в случае протокола HTTP без шифрования, приложение может изменить известный порт). Также потребуется инициализировать сеанс TLS с помощью соответствующих шифровальных процедур и сертификата удостоверения сервера (или общего ключа). HTTPS-сервер может использоваться для работы с внедренной файловой системой FileX. При недоступности данной системы применяемые разделы FileX могут быть перенесены пользователем в его собственную среду.

Ключевые различия

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

В дополнение, HTTP отличается от HTTPS тем, что:

  • работает на уровне приложения, а HTTPS — на транспортном уровне;
  • по сравнению с HTTPS работает быстрее, поскольку последнему нужно время для шифрования канала связи (также более высокая скорость HTTP обусловлена тем, что его страницы хранятся в кэше компьютера и Интернета);
  • может быть реализован на основе другого протокола в Интернете или в других сетях, обладает кроссплатформенностью, может использоваться через брандмауэры и глобальные приложения. Также он не нуждается в поддержке среды выполнения и не ориентирован на подключение.

Однако у HTTPS также имеются свои плюсы:

  • в большинстве случаев сайты, работающие по протоколу HTTPS, будут перенаправлены. Поэтому даже при вводе http:// произойдет переход на https при помощи защищенного соединения;
  • технология SSL обеспечивает защиту всех пользователей, поскольку в каждом SSL-сертификате содержится уникальная аутентифицированная информация о владельце сертификата.

Протокол HTTPS имеет неоспоримые преимущества перед НТТР. Во-первых, при его использовании шифруются все данные – URL, история просмотров и любая другая информация. Во-вторых, поисковые системы отдают предпочтение сайтам на HTTPS при ранжировании. Это означает, что защищенный сайт будет отображаться в поисковой выдаче выше, чем незащищенный.

Новый протокол HTTPA (HTTPS Attestable)

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

Читайте так же:
Как в Google Chrome редактировать сохраненные пароли средствами самого браузера

HTTPA позволяет обеспечить целостность обработки запроса пользователя на сервере и убедиться в том, что web-сервис заслуживает доверия, и работающий в TEE-окружении (Trusted Execution Environment) на сервере код не был изменен в результате взлома или диверсии администратора.

В новом протоколе применяются изолированные анклавы, создаваемые при помощи таких технологий, как Intel SGX (Software Guard Extension), ARM TrustZone и AMD PSP (Platform Security Processor). Они дают возможность защиты важных вычислений и снижения риска утечек или изменения конфиденциальной информации на конечном узле.

Для подтверждения достоверности переданной через HTTPA информации задействуются используемые в Intel SGX средства аттестации, подтверждающие подлинность анклава, в котором произведены вычисления.

Помимо штатного для HTTPS процесса установки защищенного соединения, для HTTPA дополнительно требуется согласования сессионного ключа, заслуживающего доверия. Новый HTTP-метод «ATTEST», который применяется в этом протоколе, позволяет обрабатывать три типа запросов и ответов:

  • «preflight» — проверяет поддержку аттестации анклавов удалённой стороной;
  • «attest» — согласовывает параметры аттестации. К этим параметрам относятся подбор криптографического алгоритма, обмен уникальными для сеансов случайными последовательностями, особенности генерации идентификатора сеанса и передачи клиенту открытого ключа анклава;
  • «trusted session» — формирует сессионный ключ, предназначенный для доверительного обмена информацией. Сессионный ключ оформляется на основе ранее согласованной предварительной секретной последовательности (pre-session secret), которая формируется клиентом с использованием предоставленного сервером открытого ключа TEE, и случайных последовательностей, сгенерированных каждой стороной.

Для ситуаций, когда вычисления в TEE необходимо подтвердить как для сервера, так и для клиента, применяется вариант протокола mHTTPA (Mutual HTTPA). Он предназначен для двухсторонней верификации. Эта технология отличается большей сложностью из-за необходимости двустороннего формирования сессионных ключей для сервера и клиента.

Заключение

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

Протокол HTTP3: преимущества, скорость и безопасность с QUIC

Новый протокол HTTP / 3 для просмотра веб-страниц — это до и после, это не простая эволюция текущего протокола, но с HTTP / 3 мы значительно повысили эффективность при просмотре веб-сайтов, что означает, что загрузка будет намного быстрее, в дополнение к новейшим мерам безопасности, обеспечиваемым TLS. Сегодня в этой статье мы подробно объясним, что такое HTTP / 3, каковы его основные функции, новости, преимущества и многое другое.

Чтобы лучше понять протокол HTTP / 3, сначала поговорим о протоколе HTTP и его предыдущих версиях. Мы также объясним, как Cloudflare уже начал использовать HTTP / 3 на своих серверах, поэтому у нас уже есть реальная среда для использования этого нового протокола.

HTTP — один из важнейших протоколов для функционирования Интернета, впервые он появился в 1991 году, и с тех пор существует несколько версий с разными характеристиками. Среди них выделяется HTTP / 1.2, который действовал в течение 15 лет, пока не появился HTTP / 2 в мае 2015 года. Теперь приходит HTTP / 3, который содержит новости для улучшения просмотра веб-страниц в Интернете в том виде, в каком мы его знаем.

Если мы хотим общаться через Интернет, нам нужно использовать разные протоколы. По сути, можно сказать, что их два (хотя на самом деле задействовано гораздо больше). Первым будет Internet Protocol, который происходит от английского Internet Protocol или IP на английском языке. В данном случае это протокол передачи данных, который находится на сетевом уровне в соответствии с международной моделью OSI. Благодаря Интернет-протоколу каждому устройству, подключенному к Интернету, будет назначен адрес, с помощью которого можно будет идентифицировать себя в сети. В этом смысле мы не можем путешествовать по сети без IP-адреса. Когда мы используем наш браузер, мы будем общаться с DNS сервер, который сообщит вам IP-адрес для подключения к этому веб-сайту, который мы написали в нашей адресной строке. Таким образом, в каждом сообщении у нас есть исходный IP-адрес (наш) и целевой IP-адрес (Интернет), к которому мы хотим делать запросы.

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

Что такое HTTP и кто участвовал в его создании

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

Всемирная паутина

Освободи Себя HTTP Протокол был разработан двумя агентствами. Один из них Консорциум World Wide Web, который является международным консорциумом, который разрабатывает рекомендации и стандарты для поддержания роста Всемирная паутина в долгосрочной перспективе. Другой вовлеченной международной организацией была Инженерная группа по Интернету (IETF) что будет переведено на испанский Инженерная группа Интернета. Они несут ответственность за нормализацию Интернета, действуя в различных областях, таких как транспорт, маршрутизация и безопасность.

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

HTTP работает по модели клиент-сервер. Это означает, что когда мы устанавливаем соединение, мы делаем серию запросы к серверу , чтобы показать нам содержание этого веб-сайта. Затем эти изображения и текст будут отображаться в браузере с использованием HTML-кода.

Читайте так же:
Как сделать оглавление (содержание) в документе Word

Версии и развитие протокола HTTP

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

Теперь настала очередь кратко поговорить о различных версиях и о том, актуальны ли они сегодня.

Первый HTTP / 0.9 датируется 1991 и можно сказать, что в настоящее время он считается устаревшим. В этом случае следует отметить, что он поддерживает только одну команду, GET, а также не указывает номер версии HTTP. Он не поддерживает ни заголовки, ни POST, поэтому клиент не может отправлять информацию на сервер.

Ниже приводится HTTP / 1.0 , он был выпущен в мае 1996 года. Впервые протокол определяет его версию в сообщениях. Сегодня он очень часто используется, особенно на прокси-серверах. Также следует отметить, что он поддерживает методы запроса GET, HEAD и POST.

Затем в июне 1999 , HTTP / 1.1 была выпущена, которая в настоящее время является наиболее широко используемой версией. По умолчанию у нас включены постоянные соединения. Это также позволяет клиенту отправлять несколько запросов одновременно по одному и тому же соединению (конвейерная обработка), что позволяет сократить время приема-передачи для каждого запроса, что приводит к увеличению скорости загрузки веб-страниц. Год спустя пришел HTTP / 1.2 , в феврале 2000 . Здесь был предложен протокол расширения протокола или сокращенно PEP. В этом смысле мы можем сказать, что Структура расширения HTTP в основном включает PEP.

В мае 2015 , HTTP / 2 прибыла, это новая версия, которая не изменяет семантику приложения HTTP. Его улучшения сосредоточены на способах упаковки данных и транспортировке. Нововведения, которые он приносит, заключаются в том, что он добавляет использование одного соединения, сжатие заголовков или службу push-уведомлений сервера.

Наконец, в октябрь 2018 , Прибывает HTTP / 3, который использует протокол транспортного уровня UDP вместо TCP. Поддержка уже добавлена ​​такими компаниями, как Cloudflare на своих серверах, и Google на своих серверах. Chrome браузер. Далее мы подробно поговорим о HTTP / 3 и обо всем, что влечет за собой этот протокол.

Знание HTTP / 3 и его реализации в веб-браузерах

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

Очень важная часть, как вы, возможно, уже догадались, — это Сетевой протокол QUIC , принадлежащий транспортному уровню. Следует отметить, что этот протокол был первоначально разработан Google и что он использует управление перегрузкой пользовательского пространства по протоколу пользовательских дейтаграмм (UDP).

Браузеры постепенно готовятся к поддержка HTTP / 3 . Первым это сделал Google Chrome (сборка Canary) в сентябре 2019 года и в начале 2020 года. Firefox сделал. Вот таблица, в которой вы можете увидеть, с какой даты браузеры совместимы с этой новой версией протокола передачи гипертекста.

Как видите, основные браузеры, такие как Chrome, Firefox, Safari и край уже поддерживаю это. В этом смысле следует отметить, что, хотя у них есть поддержка, она не включена по умолчанию, и мы должны быть теми, кто ее активирует. Например, в Mozilla Firefox мы должны ввести о: конфиг в адресной строке (мы принимаем на себя риски). Мы должны искать network.http.http3.enabled . По умолчанию он помечен как «False», мы должны отметить его как «True», и, таким образом, у нас будет включена функция в браузере.

Протокол QUIC, что это такое и как работает

Ранее, когда мы говорили о протоколе HTTP / 3, мы упоминали, что одной из наиболее важных его реализаций является QUIC. Пришло время обсудить это подробно. QUIC происходит от аббревиатуры на английском языке Быстрые UDP-соединения с Интернетом что в переводе на испанский означает Быстро Интернет-соединения UDP .

QUIC поддерживает набор мультиплексированных соединений между двумя концами через UDP (протокол пользовательских дейтаграмм). С точки зрения безопасности он предлагает эквивалент TLS / SSL. Кроме того, он предлагает другие преимущества, такие как уменьшение задержки соединения и транспорта. Он также может предложить оценку пропускной способности в каждом направлении, чтобы избежать перегрузки.

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

  1. Объедините трафик.
  2. Снизьте загрузку порта.
  3. Унифицируйте сообщения отчета и ответы.
  4. Уменьшите избыточную информацию, например, в заголовках.

Короче говоря, с помощью встроенного в него протокола HTTP / 3 и QUIC мы хотим, чтобы он распространялся по всему миру, чтобы уменьшить потерю пакетов из-за блокировки заголовка. Кроме того, он стремится получить низкую задержку как для компьютеров, так и для смартфонов. Что касается QUIC , шифрование будет использоваться TLS 1.3 . Безопасность будет очень важной частью HTTP / 3, поскольку в нем соединение не вернется к обычный текст или без шифрования по сети.

Поскольку QUIC был разработан для операций мультиплексирования, потерянные пакеты данных из отдельного потока обычно влияют только на этот конкретный поток. Другие данные без потерь могут продолжать работу, не дожидаясь остальных. Однако есть одно исключение: биты заголовка QUIC HTTP могут вызвать блокировку заголовка строки.

Читайте так же:
Ошибка BOOTMGR при включении компьютера

Текущая реализация HTTP / 3 в браузерах и веб-сайтах

После утверждения протокола HTTP / 3 в октябре 2018 года начали предприниматься первые шаги по его широкому использованию. Одним из них была адаптация программного обеспечения для наших компьютеров и мобильных телефонов. Таким образом, как мы уже упоминали ранее, они начали поддерживать веб-браузеры, которые мы регулярно используем. Итак, Chrome, Safari, Firefox и Edge готовы его использовать.

  • Защита от DDoS-атак.
  • Брандмауэр веб-приложений.
  • DNS-серверы.
  • Сеть доставки контента. Благодаря ей Cloudflare кэширует контент в своих периферийных местоположениях, чтобы действовать как сеть доставки контента через свои серверы CDN.

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

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

Наконец, в Google Blog есть исследование, в котором было проанализировано время загрузки сети с использованием протокола HTTP / 3 QUIC. Они пришли к выводу, что это сократило среднее время загрузки веб-сайта на 8% во всем мире и на 13% в регионах с наибольшей задержкой.

Переходим на HTTP/2

Favorite В закладки

Переходим на HTTP/2

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

В 2015 году на смену HTTP 1.0 пришел новый усовершенствованный протокол передачи данных. Сайты по всему миру добавляют поддержку HTTP/2 на свои серверы. Для каждого из нас пришло время начать внедрять новую технологию в повседневную жизнь.

Выгоды от перехода

  • Некоторые сайты будут работать ощутимо быстрее (пока примерно 1 ресурс из 10, но сайтов поддерживающих HTTP/2 становится больше с каждым днем);
  • Передаваемые по сети данные будут в большой безопасности;
  • Используя HTTP2, вы предпринимаете еще одну попытку не отстать от жизни.

Как приобщиться к прогрессу?

Вкратце: убедиться, что браузер поддерживает HTTP2, установить нужное дополнение и расслабиться.

Проверить, поддерживает ли ваш браузер новый протокол можно по этой ссылке.

http_2_test

Конкретные рекомендации для пользователей разных браузеров:

Firefox

Обновить браузер и поставить плагин SPDY Indicator.

Chrome

Обновить браузер и установить дополнение SPDY Indicator.

Opera

Safari

Обновить браузер до 9 версии.

Internet Explorer

Перейти на браузер Microsoft Edge.

Что делать веб-разработчикам?

Проверить поддерживает ли Ваш сайт HTTP/2 можно здесь.

http_2_site_test

Если результат отрицательный, то:

1. Перевести сайт на сервер с поддержкой HTTP/2: H20, Apache Traffic Server и nghttp2. Либо поставить соответсвующие патчи для Apache или ngnix.

2. Тщательно разобраться, как работает протокол и приготовиться убрать из кода приемы для оптимизации http-запросов, так как некоторые из них могут замедлять работу сайта в браузерах при загрузке страниц по HTTP/2.

Подробности для любопытных

Чтобы понять достоинства HTTP/2 надо разобраться, чем был плох HTTP 1.0.

В 2011 году среднестатическая интернет страница представляла собой 800 Кб данных и 80 отдельных объектов, а в 2015 уже 2100 Кб и 100 объектов.

При загрузке страницы для каждого объекта, картинки или файла со скриптом, производится отдельный запрос к серверу. К примеру, когда вы открываете iphones.ru, происходит 161 http-запрос.

iphones_test

Этот факт замедляет загрузку сайтов (задержка создается за счет времемни ожидания ответа сервера на каждый запрос) и повышает вероятность сбоев в работе ресурса.

Проверить сколько http-запросов выполняется при загрузке страницы можно здесь.

Некоторые веб-разработчики стараются сократить количество http-запросов и применяют для этого разнообразные уловки. К примеру:

  • Объединение нескольких картинок в один спрайт и нарезка их средствами CSS/JavaScript;
  • Объединение всех внешних js-скриптов/css-таблиц в один файл;
  • Шардинг (распределение данных для загрузки страниц по максимальному числу хостов).

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

В http/2 несколько объектов объединяются в один фрейм (HEADERS, DATA). Эта возможность позволяет загрузить множество пакетов данных с помощью одного соединения, что дает ощутимый прирост скорости загрузки.

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

Крупным недостатком HTTP 1.0 является безопасность. Уже не первый десяток лет в СМИ регулярно появляются новости о новых уязвимостях http и https. Создатели новой версии серьезно поработали над устранением подобных проблем и вывели безопасность на новый уровень.

Но многочисленные исследования показывают, что у нового протокола с безопасность все еще далеко не идеально. Одним из самых интересных материалов об этом, на мой взгляд, является доклад от Yahoo Security)

Подробную техническую информацию о HTTP/2 можно найти в:

  • Документе HTTP2 Explained;
  • Спецификации RFC 7540, опубликованной 15 мая 2015 года; одного из авторов проекта Даниэля Штейнберга.

Что дальше?

На подходе еще один протокол QUIC! В нем будут решены многие проблемы HTTP 2 (прежде всего речь идет о безопасности). Экспериментальная версия QUIC внедрена в браузер Chrome и на серверы некоторых сервисов Google. Но о его массовом внедрении говорить пока рано.

Читайте так же:
Установка Windows на виртуальную машину VirtualBox

Favorite В закладки

HTTP: протокол, который каждый разработчик должен знать (часть 1)

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

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

Также в этой статье я буду, в основном, ссылаться на стандарт RFC 2616: Hypertext Transfer Protocol — HTTP/1.1.

Основы HTTP

HTTP обеспечивает общение между множеством хостов и клиентов, а также поддерживает целый ряд сетевых настроек.

В основном, для общения используется TCP/IP, но это не единственный возможный вариант. По умолчанию, TCP/IP использует порт 80, но можно заюзать и другие.

Общение между хостом и клиентом происходит в два этапа: запрос и ответ. Клиент формирует HTTP запрос, в ответ на который сервер даёт ответ (сообщение). Чуть позже, мы более подробно рассмотрим эту схему работы.

Текущая версия протокола HTTP — 1.1, в которой были введены некоторые новые фишки. На мой взгляд, самые важные из них это: поддержка постоянно открытого соединения, новый механизм передачи данных chunked transfer encoding, новые заголовки для кэширования. Что-то из этого мы рассмотрим во второй части данной статьи.

Сердцевиной веб-общения является запрос, который отправляется через Единый указатель ресурсов (URL). Я уверен, что вы уже знаете, что такое URL адрес, однако для полноты картины, решил всё-таки сказать пару слов. Структура URL очень проста и состоит из следующих компонентов:

Протокол может быть как http для обычных соединений, так и https для более безопасного обмена данными. Порт по умолчанию — 80. Далее следует путь к ресурсу на сервере и цепочка параметров.

Методы

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

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

POST: используется для создания нового ресурса. POST запрос обычно содержит в себе всю нужную информацию для создания нового ресурса.

PUT: обновить текущий ресурс. PUT запрос содержит обновляемые данные.

DELETE: служит для удаления существующего ресурса.

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

Также HTTP поддерживает и другие методы:

HEAD: аналогичен GET. Разница в том, что при данном виде запроса не передаётся сообщение. Сервер получает только заголовки. Используется, к примеру, для того чтобы определить, был ли изменён ресурс.

TRACE: во время передачи запрос проходит через множество точек доступа и прокси серверов, каждый из которых вносит свою информацию: IP, DNS. С помощью данного метода, можно увидеть всю промежуточную информацию.

OPTIONS: используется для определения возможностей сервера, его параметров и конфигурации для конкретного ресурса.

Коды состояния

В ответ на запрос от клиента, сервер отправляет ответ, который содержит, в том числе, и код состояния. Данный код несёт в себе особый смысл для того, чтобы клиент мог отчётливей понять, как интерпретировать ответ:

1xx: Информационные сообщения

Набор этих кодов был введён в HTTP/1.1. Сервер может отправить запрос вида: Expect: 100-continue, что означает, что клиент ещё отправляет оставшуюся часть запроса. Клиенты, работающие с HTTP/1.0 игнорируют данные заголовки.

2xx: Сообщения об успехе

Если клиент получил код из серии 2xx, то запрос ушёл успешно. Самый распространённый вариант — это 200 OK. При GET запросе, сервер отправляет ответ в теле сообщения. Также существуют и другие возможные ответы:

  • 202 Accepted: запрос принят, но может не содержать ресурс в ответе. Это полезно для асинхронных запросов на стороне сервера. Сервер определяет, отправить ресурс или нет.
  • 204 No Content: в теле ответа нет сообщения.
  • 205 Reset Content: указание серверу о сбросе представления документа.
  • 206 Partial Content: ответ содержит только часть контента. В дополнительных заголовках определяется общая длина контента и другая инфа.

3xx: Перенаправление

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

  • 301 Moved Permanently: ресурс теперь можно найти по другому URL адресу.
  • 303 See Other: ресурс временно можно найти по другому URL адресу. Заголовок Location содержит временный URL.
  • 304 Not Modified: сервер определяет, что ресурс не был изменён и клиенту нужно задействовать закэшированную версию ответа. Для проверки идентичности информации используется ETag (хэш Сущности — Enttity Tag);

4xx: Клиентские ошибки

Данный класс сообщений используется сервером, если он решил, что запрос был отправлен с ошибкой. Наиболее распространённый код: 404 Not Found. Это означает, что ресурс не найден на сервере. Другие возможные коды:

  • 400 Bad Request: вопрос был сформирован неверно.
  • 401 Unauthorized: для совершения запроса нужна аутентификация. Информация передаётся через заголовок Authorization.
  • 403 Forbidden: сервер не открыл доступ к ресурсу.
  • 405 Method Not Allowed: неверный HTTP метод был задействован для того, чтобы получить доступ к ресурсу.
  • 409 Conflict: сервер не может до конца обработать запрос, т.к. пытается изменить более новую версию ресурса. Это часто происходит при PUT запросах.
Читайте так же:
Нутра — подвертикали, биллинговые модели и подходы в работе

5xx: Ошибки сервера

Ряд кодов, которые используются для определения ошибки сервера при обработке запроса. Самый распространённый: 500 Internal Server Error. Другие варианты:

  • 501 Not Implemented: сервер не поддерживает запрашиваемую функциональность.
  • 503 Service Unavailable: это может случиться, если на сервере произошла ошибка или он перегружен. Обычно в этом случае, сервер не отвечает, а время, данное на ответ, истекает.

Форматы сообщений запроса/ответа

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

Давайте посмотрим на структуру передаваемого сообщения через HTTP:

Между заголовком и телом сообщения должна обязательно присутствовать пустая строка. Заголовков может быть несколько:

Тело ответа может содержать полную информацию или её часть, если активирована соответствующая возможность (Transfer-Encoding: chunked). HTTP/1.1 также поддерживает заголовок Transfer-Encoding.

Общие заголовки

Вот несколько видов заголовков, которые используются как в запросах, так и в ответах:

Что-то мы уже рассмотрели в этой статье, что-то подробней затронем во второй части.

Заголовок via используется в запросе типа TRACE, и обновляется всеми прокси-серверами.

Заголовок Pragma используется для перечисления собственных заголовков. К примеру, Pragma: no-cache — это то же самое, что Cache-Control: no-cache. Подробнее об этом поговорим во второй части.

Заголовок Date используется для хранения даты и времени запроса/ответа.

Заголовок Upgrade используется для изменения протокола.

Transfer-Encoding предназначается для разделения ответа на несколько фрагментов с помощью Transfer-Encoding: chunked. Это нововведение версии HTTP/1.1.

Заголовки сущностей

В заголовках сущностей передаётся мета-информация контента:

Все заголовки с префиксом Content- предоставляют информацию о структуре, кодировке и размере тела сообщения.

Заголовок Expires содержит время и дату истечения сущности. Значение “never expires” означает время + 1 код с текущего момента. Last-Modified содержит время и дату последнего изменения сущности.

С помощью данных заголовков, можно задать нужную для ваших задач информацию.

Формат запроса

Запрос выглядит примерно так:

SP — это разделитель между токенами. Версия HTTP указывается в HTTP-Version. Реальный запрос выглядит так:

Список возможных заголовков запроса:

В заголовке Accept определяется поддерживаемые mime типы, язык, кодировку символов. Заголовки From, Host, Referer и User-Agent содержат информацию о клиенте. Префиксы If- предназначены для создания условий. Если условие не прошло, то возникнет ошибка 304 Not Modified.

Формат ответа

Формат ответа отличается только статусом и рядом заголовков. Статус выглядит так:

  • HTTP версия
  • Код статуса
  • Сообщение статуса, понятное для человека

Обычный статус выглядит примерно так:

Заголовки ответа могут быть следующими:

  • Age время в секундах, когда сообщение было создано на сервере.
  • ETag MD5 сущности для проверки изменений и модификаций ответа.
  • Location используется для перенаправления и содержит новый URL адрес.
  • Server определяет сервер, где было сформирован ответ.

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

Инструменты для определения HTTP трафика

Существует множество инструментов для мониторинга HTTP трафика. Вот несколько из них:

Наиболее часто используемый — это Chrome Developers Tools:

Если говорить об отладчике, можно воспользоваться Fiddler:

Для отслеживания HTTP трафика вам потребуется curl, tcpdump и tshark.

Библиотеки для работы с HTTP — jQuery AJAX

Поскольку jQuery очень популярен, в нём также есть инструментарий для обработки HTTP ответов при AJAX запросах. Информацию о jQuery.ajax(settings) можете найти на официальном сайте.

Передав объект настроек (settings), а также воспользовавшись функцией обратного вызова beforeSend, мы можем задать заголовки запроса, с помощью метода setRequestHeader().

Прочитать объект jqXHR можно с помощью метода jqXHR.getResponseHeader().

Если хотите обработать статус запроса, то это можно сделать так:

Вот такой вот он, тур по основам протокола HTTP. Во второй части будет ещё больше интересных фактов и примеров.

5 последних уроков рубрики «Разное»

Как выбрать хороший хостинг для своего сайта?

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

Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов

Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

Разработка веб-сайтов с помощью онлайн платформы Wrike

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

20 ресурсов для прототипирования

Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

Топ 10 бесплатных хостингов

Небольшая подборка провайдеров бесплатного хостинга с подробным описанием.

голоса
Рейтинг статьи
Ссылка на основную публикацию