Если вы пользуетесь Интернетом, вы, вероятно, встречали термин HTTP или HTTPS. Это также самое просматриваемое письмо, особенно если учесть миллиарды активных в настоящее время веб-сайтов.
HTTP или протокол передачи гипертекста — это аббревиатура. Он служит как клиентским, так и серверным протоколом, определяя, как сообщения отправляются и структурируются через Интернет.
Основные выводы
- HTTP 1.0 допускает только один запрос на соединение, а HTTP 1.1 допускает несколько запросов.
- HTTP 1.1 поддерживает постоянные соединения, что позволяет быстрее загружать веб-сайты, а HTTP 1.0 — нет.
- HTTP 1.1 имеет более эффективное сжатие заголовков, чем HTTP 1.0, что снижает использование полосы пропускания.
HTTP 1.0 против HTTP 1.1
HTTP 1.0 был первой версией протокола HTTP, представленной в 1996 году. Это простой протокол без сохранения состояния, работающий по принципу «запрос-ответ». HTTP 1.1 — это наиболее широко используемая версия протокола HTTP, представленная в 1999 году. Это улучшенная версия HTTP 1.0, в которой представлены несколько новых функций, включая поддержку постоянных соединений, кэширование, конвейерную обработку и кодирование передачи по частям.
В 1996 году HTTP/1.0 был официально представлен и признан. С тех пор его популярность взлетела до небес.
HTTPv1.0 обеспечивает только рудиментарную аутентификацию (управление вызовами и ответами); Ключевая проблема этого метода заключается в том, что имена пользователей и пароли не шифруются, что делает их уязвимыми для шпионажа и не имеет ограничений по времени.
Было всего 16 кодов состояния.
HTTP 1.1 также обеспечивает постоянные соединения, что означает, что многие ответы и запросы могут быть отправлены по одному и тому же HTTP-соединению.
Метод OPTIONS является новым в HTTP/1.1. Этот метод может легко использоваться HTTP-клиентом для обнаружения возможностей HTTP-сервера. Он в основном используется в веб-приложениях для совместного использования ресурсов между источниками.
Сравнительная таблица
Параметры сравнения | HTTP 1.0 | HTTP 1.1 |
---|---|---|
Код состояния | Можно определить 16 кодов состояния; однако всплывающие окна с ошибками недостаточно точны. | Отчеты об ошибках быстрее и эффективнее благодаря возможности указать 24 кода состояния. |
Механизм аутентификации | Поскольку пароли и имена пользователей также отправляются в виде открытого текста или в кодировке base64, базовый механизм проверки подлинности небезопасен. | Поскольку он использует дайджест-аутентификацию и аутентификацию NTLM, он относительно безопасен. |
Кэширование | Заголовок If-Modified-Since используется для облегчения кэширования. | Использует некоторые дополнительные заголовки, такие как управление кешем. |
Оптимизация | Поддерживает кэширование для более быстрого обслуживания большего количества страниц. | Многие оптимизации используются в качестве обходного пути для требования «шесть подключений на хост», включая спрайты, конкатенацию, встраивание и сегментирование домена. |
Главные преимущества | Для каждого соединения TCP существует только один запрос и ответ. | Это позволяет повторно использовать соединение, что означает, что для каждого соединения TCP может быть отправлено и получено множество запросов и ответов. |
Что такое HTTP 1.0?
HTTPv1.0 обеспечивает только рудиментарную аутентификацию (управление вызовами и ответами); Ключевая проблема этого метода заключается в том, что имена пользователей и пароли не шифруются, что делает их уязвимыми для шпионажа, и нет ограничений по времени.
Любая информация, полученная шпионским путем, может быть использована в течение длительного времени после ее получения. Клиент должен рассчитать контрольная сумма пароля, имени пользователя и одноразового значения, включая тип HTTP-запроса и запрошенный URI для действительного ответа.
Поскольку HTTP1.0 предназначался для использования нового соединения TCP для каждого запроса, каждое обращение должно было оплачивать расходы на установление нового соединения TCP.
Поскольку большинство интернет-транзакций кратковременны и редко выходят за пределы стадии медленного старта, они не позволяют оптимально использовать доступную полосу пропускания.
Хотя в некоторых реализациях версии 1.0 использовался заголовок «keep-alive», требующий, чтобы ссылка могла поддерживаться в рабочем состоянии, это не очень хорошо работало с промежуточными прокси.
Сервер должен по-прежнему предоставлять ответы в той же последовательности, что и соответствующий запрос для данного соединения. Клиенту не нужно ждать ответа на свой предыдущий запрос, прежде чем отправить другой по тому же соединению (конвейерная обработка).
Это уменьшает задержку передачи данных по сети, а также оптимизирует возможности протокола TCP.
Что такое HTTP 1.1?
Введение постоянных соединений и конвейерной обработки решает эту проблему. HTTP/1.1 подразумевает, что соединение TCP должно оставаться активным, если явно не запрошено разъединение при использовании постоянных соединений.
Это позволяет клиенту отправлять многочисленные апелляции по одному и тому же соединению, не дожидаясь ответа на каждое из них, что значительно повышает производительность HTTP/1.1 по сравнению с HTTP/1.0.
К сожалению, этот метод оптимизации имеет неотъемлемое узкое место.
Потому что несколько пакетов данных просто не могут пройти друг друга на своем пути. бывают случаи, когда запрос в начале очереди не может получить требуемый ресурс, в результате чего все запросы после него блокируются.
Это известно как блокировка заголовка строки HOL, и это серьезная проблема, когда речь идет об улучшении производительности соединения HTTP/1.1.
Отдельные параллельные TCP-соединения могут решить проблему, однако количество одновременных TCP-соединений между клиентом и сервером ограничено, и каждое новое соединение потребляет много ресурсов.
Управление потоком в HTTP/1.1 основано на TCP. Когда TCP установлен, и сервер, и клиент используют свои системные настройки по умолчанию для определения размеров буфера.
Если буфер получателя частично заполнен, он сообщит отправителю об окне приема получателя или количестве свободного места в его буфере.
Основные различия между HTTP 1.0 и HTTP 1.1
- HTTP1.0 в основном используется в заголовке, но HTTP1.1 используется для представления более сложного кэш подход к управлению.
- В HTTP 1.0 есть некоторые потери пропускной способности, но в HTTP 1.1 потери пропускной способности меньше.
- Поле заголовка Host поддерживается сообщениями запроса и ответа HTTP1.1, хотя HTTP1.0 считает, что каждый сервер должен привязывать отдельный IP-адрес.
- В HTTP 1.0 существует только один запрос и ответ для каждого соединения TCP, тогда как HTTP 1.1 допускает повторное использование соединения.
- Спрайты, конкатенация, встраивание и сегментирование доменов — вот некоторые из оптимизаций, используемых в HTTP 1.1, тогда как HTTP 1.0 поддерживает кэширование для более быстрого обслуживания веб-сайтов.
- https://ieeexplore.ieee.org/abstract/document/1243114/
- http://journals.uic.edu/ojs/index.php/fm/article/view/2125
Последнее обновление: 16 августа 2023 г.
Сандип Бхандари имеет степень бакалавра вычислительной техники Университета Тапар (2006 г.). Имеет 20-летний опыт работы в сфере технологий. Он проявляет большой интерес к различным техническим областям, включая системы баз данных, компьютерные сети и программирование. Подробнее о нем можно прочитать на его био страница.
Введение метода OPTIONS в HTTP 1.1 является заметным дополнением, позволяющим клиентам обнаруживать возможности сервера, что особенно полезно для совместного использования ресурсов между источниками в веб-приложениях.
Механизмы аутентификации в HTTP 1.1 значительно повысили безопасность за счет использования дайджеста и аутентификации NTLM, что снижает риск перехвата имени пользователя и пароля.
Поддержка постоянных соединений в HTTP 1.1 меняет правила игры с точки зрения ускорения загрузки веб-сайтов и оптимизации задержки в обоих направлениях в сети.
Узкие места и оптимизации HTTP 1.1 подчеркивают необходимость постоянного совершенствования веб-протоколов для преодоления проблем и повышения производительности.
Сравнительная таблица дает четкое представление о различиях между HTTP 1.0 и 1.1, подчеркивая достижения в области отчетов об ошибках и оптимизации производительности.
Протокол HTTP прошел долгий путь с момента своего создания. Улучшения в версии 1.1 оказали значительное влияние на производительность и безопасность.
Технические подробности HTTP 1.0 и 1.1 дают ценную информацию об эволюции протокола, особенно с точки зрения повторного использования соединений и эффективного сжатия заголовков.
Подробное объяснение того, как HTTP 1.1 решает проблемы предыдущих версий, например, позволяет избежать затрат на установление нового TCP-соединения для каждого запроса, демонстрирует преимущества протокола.
Разбивка HTTP 1.0 и 1.1 демонстрирует постепенные улучшения в обработке ошибок, кодах состояния и кэшировании, подчеркивая важность развития протокола.
Внедрение постоянных соединений и конвейерной обработки в HTTP 1.1, несомненно, улучшило общую производительность веб-транзакций.