Более 20 картинок, которые нужно знать людям, работающим с HTTP-бэкендом!

задняя часть

предисловие

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

В этой статье мы попытаемся дать вам основы HTTP с краткими примерами и необходимыми пояснениями.

содержание:

  1. Что такое HTTP?
  2. Краткая история HTTP;
  3. HTTP и HTTPS;

Часть 1. Что такое HTTP?

Интернет овеб-клиента такжевеб серверобщение между.

HTTP(HyperText Transfer Protocol), также известный как протокол передачи гипертекста. По сути, это соглашение о том, как общаться между двумя сторонами.

Это как отправить сообщение группе друзей, с которыми я играю в игры."1?", друзья сразу поняли, что они спрашивают, не хотят ли они сыграть вместе сегодня вечером.

Но если я пошлю кого-то еще"1?"Может быть проблема: они не знают, о чем я говорю.

调皮地给我妈发了一下试试...

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

Часть 2. Краткая история HTTP

В марте 1989 года Интернет был лишь меньшинством. На заре Интернета родился HTTP.

来源:《图解HTTP》

HTTP/0.9 - однострочный протокол

В 1989 году Тим Бернерс-Ли, тогда работавший в ЦЕРНе, выдвинул идею, позволяющую исследователям, находящимся далеко друг от друга, обмениваться знаниями.

蒂姆·伯纳斯·李 来源:wiki

Первоначально называвшийся Mesh, он был переименован во время внедрения в 1990 году.World Wide Web (Всемирная паутина). Он построен на существующем протоколе TCP/IP и состоит из 4 частей:

  • Текстовый формат для представления гипертекстовых документов, а именноЯзык гипертекстовой разметки(html);
  • Простой протокол обмена этими документами, а именноТранспортный протокол гипертекста(HTTP);
  • ОдинклиентЭти документы можно было отображать, и первый веб-браузер назывался WorldWideWeb.
  • доступный документсервер;

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

1991 年创建的第一个网页

СледующееHTTP/0.9изпроситьсодержание:

GET /page.html

с единственным доступнымGETметод для получения указанного документа с целевого сервера. (После подключения к серверу протокол, сервер, номер порта не нужны)

откликТоже предельно просто: достаточно включить сам документ.

<HTML>
  网页的内容
</HTML>

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

HTTP/1.0 — построение для расширяемости

Из-за ограниченного применения протокола HTTP/0.9 в сочетании с быстрым ростом использования HTTP и HTML браузеры и серверы быстро расширили свой контент, чтобы сделать его более полезным:

  • Информация о версии протоколабудет отправляться с каждым запросом;
----------HTTP/0.9请求----------
GET /page.html

----------HTTP/1.0请求----------
GET /page.html HTTP/1.0  ->  新增协议版本
  • Сервер отвечает, когда он отвечаеткод состояния, чтобы браузер понимал успех или неудачу запроса и соответствующим образом корректировал свое поведение (например, обновление или сбой);
----------HTTP/0.9响应----------
<HTML>
....
</HTML>

----------HTTP/1.0响应----------
200 OK  ->  新增状态码
<HTML>
....
</HTML>
  • представилHTTP-заголовкиКонцепция , будь то запрос или ответ, позволяет передавать другую информацию, делая протокол более гибким и расширяемым;

  • С помощью HTTP-заголовков, помимо передачи простых текстовых HTML-файлов, вы также можетеПередача других видов документовспособность (благодаряContent-Typeголова);

HTTP/0.9 Технические характеристикитолько об одной странице, а HTTP/1.0RFC-1945Спецификация определена на 60 страницах. Это показывает, что HTTP превратился в важный инструмент.

Хотя HTTP/1.0 — это большой шаг вперед по сравнению с HTTP/0.9, все еще существует много известных недостатков, которые необходимо устранить. НапримерПлохое взаимодействие с протоколом TCP,Кэширование не рассматривается должным образомИ другие вопросы.

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

Каждое соединение HTTP/1.0 должно устанавливать и отключать соединение, что, несомненно, увеличивает ненужные накладные расходы на связь.

HTTP/1.1 — стандартизированный протокол

Документ RFC 1945 определяет HTTP/1.0, но он имеет узкое определение и не является официальным стандартом. Так что это очень запутанно на практике. Таким образом, начиная с 1995 года, через год после публикации документа HTTP/1.0, первая стандартизированная версия HTTP была пересмотрена.

HTTP/1.1 был представлен в январе 1997 г.RFC 2068Выпуск файла. HTTP/1.1 устраняет много двусмысленности и вносит несколько улучшений:

  • Соединения можно использовать повторно, что экономит время на многократное открытие TCP-соединения для загрузки ресурсов веб-документов;

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

  • Поддержка фрагментации ответов;

  • Внедрить дополнительный механизм управления кешем, в HTTPCache-ControlВ заголовке есть много вариантов на выбор;

  • Внедрить механизм согласования контента, включая язык, кодировку, тип и т. д., и позволяют клиенту и серверу договориться об обмене наиболее подходящим контентом;

  • в состоянии сделатьСерверы с разными доменными именами на одном IP-адресеначальство.

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

Расширение более 15 лет

Благодаря расширяемости HTTP — легко создавать новые заголовки и методы — протокол HTTP стабильно используется уже более 15 лет. В течение этого периода протокол HTTP/1.1 постоянно пересматривался (RFC 2616,RFC 7230,RFC 7235), создавая прочную основу для HTTP/2.0.

HTTP/2.0 — для лучшей производительности

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

С 2010 по 2015 год компания Google на практике доказала работоспособность экспериментального протокола SPDY, который стал основой для более позднего протокола HTTP/2.

来源:https://www.keycdn.com/support/spdy-protocol

HTTP/2 отличается от HTTP/1.1 несколькими принципиальными особенностями:

  • HTTP/2 дабинарный протоколвместо текстового протокола, который уже не читается. И информация заголовка, и тело данных являются двоичными (меньше по размеру) и в совокупности называютсяРамка.

  • Этопротокол мультиплексирования, можно мультиплексировать. Параллельные запросы могут обрабатываться в одном и том же соединении, что устраняет ограничения порядка и блокировки HTTP/1.x;

*Примечание: HTTP/2 здесь не объединен в один пакет, а разделен на несколько Streams для отправки, это просто для удобства рисования.

Каждый может пройтикликните сюдаИнтуитивно почувствуйте, насколько HTTP/2 быстрее, чем HTTP/1.1.

  • Сжатые заголовки. Поскольку заголовки часто одинаковы для серии запросов, это устраняет дублирование и стоимость передачи повторяющихся данных. Алгоритм, который это делает, называетсяHPACKалгоритм;

  • Это позволяет серверу заполнять кэш клиента данными черезпуш серверамеханизм запроса заранее;

Подробные сведения об отличных местах HTTP/2 можно найти по следующим 4 ссылкам.

После официальной стандартизации в мае 2015 года HTTP/2 имел огромный успех: к июлю 2016 года его уже использовали 8,7% сайтов. Сайты с высокой посещаемостью являются наиболее популярными, что позволяет значительно сэкономить на передаче данных.

Такое быстрое внедрение, вероятно, связано с тем, что HTTP2 не требует внесения изменений в сайты и приложения: использование HTTP/1.1 и HTTP/2 прозрачно для них.

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

Эволюция после HTTP/2

С выпуском HTTP/2, как и HTTP/1.x до него, HTTP не остановился в своем развитии. Расширяемость HTTP по-прежнему используется для добавления новых функций.

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

HTTP/3 — лучшее будущее

HTTP/3— это предстоящая третья основная версия протокола HTTP. В отличие от протокола-предшественника, в HTTP/3 будет объявлено устаревшим.TCPпротокол, используйте вместо этогоUDPсоглашение иQUICРеализация протокола.

Это изменение в основном предназначено для решения проблемы блокировки заголовка строки в HTTP/2. Поскольку HTTP/2 использует мультиплексирование в одном TCP-соединении, из-за управления перегрузкой TCP небольшая потеря пакетов может привести к блокировке всех потоков во всем TCP-соединении.

По состоянию на январь 2021 года HTTP/3 все еще находится в стадии разработки.

резюме

  • HTTP/0.9 может передавать только один простой текст HTML, что недостаточно гибко;
  • HTTP/1.x имеет много дефектов, таких как невозможность повторного использования соединения, блокировка заголовка очереди, высокие накладные расходы протокола и факторы безопасности;
  • HTTP/2 значительно улучшил производительность за счет мультиплексирования, потоковой передачи двоичных файлов, сжатия заголовков и других технологий, но проблемы все еще есть;
  • QUIC реализован на основе UDP и является базовым протоколом поддержки в HTTP / 3. Протокол основан на UDP и использует сущность TCP для реализации быстрого и надежного протокола;

Часть 3. HTTP и HTTPS

Зачем нужен HTTPS

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

  1. общаться открытым текстом (не зашифрованным), содержимое может бытьпостукивание;
  2. Личность общающейся стороны не проверяется, и личность общающейся стороны может бытькамуфляжиз;
  3. Целостность информации не может быть проверена, что означает, что информация может бытьвмешиватьсяпрошедший;

HTTPS (HTTP через SSL) использует новый уровень Secure Socket Layer (SSL) для решения проблемы безопасности сетевой передачи.

Как предотвратить прослушивание?

шифрованиеЭто простое решение. Но как сделать так, чтобы процесс передачи методов шифрования не был прослушан?

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

Например, предполагая, что символы, которые нам нужно зашифровать сейчас,520,НАСшифрованиеСпособ сделать это - умножить это число на91и опубликовать последние три цифры результата:

Примечание: здесь91Эквивалент открытого ключа, каждый может знать.

расшифроватьКонечно, мы не можем разделить на91сделать, но черезx11, выньте последние три цифры результата, чтобы восстановить:

Примечание: здесьx11Эквивалент закрытого ключа, его знает только дешифратор.

Это потому что91*11=1001, умножьте любое трехзначное число на1001Очевидно, что вторая тройка не изменится. Это, вероятно,Принцип асимметричного шифрованияТеперь, основываясь на этом принципе, обе стороны нашего общения могут генерировать свои собственные открытый ключ и закрытый ключ и вести относительно безопасное общение.

非对称加密通信演示

Как проверить личность другой стороны?

Вышеописанный процесс кажется безупречным, но в сквозной связи TCP/IP путь долог, а ночь длинна и мечтательна.

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

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

Эта доверенная организация является той, которая выдала сертификат HTTPS.ЦС (центр сертификации). Каждый раз, когда клиент или сервер хочет раскрыть свой открытый ключ, он должен обратиться в ЦС, после чего ЦС выдаст цифровой сертификат, привязанный к открытому ключу. (Узнать больше о сертификатах)

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

Как предотвратить подделку?

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

Примечание. В целях упрощения правая часть представляет собой шестнадцатеричное число.

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

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

После расшифровки сервер использует тот же алгоритм дайджеста для вычисления отправленного открытого текста и сравнивает"отпечаток пальца"и текущий расчет"отпечаток пальца"сравнить, если"отпечаток пальца"То же, указывая на то, что данные полные.

Чем HTTP отличается от HTTPS?

Хотя HTTPS звучит как более безопасный HTTP, есть много отличий:

  1. Передача открытого текста HTTP сопряжена с риском для безопасности. HTTPS устраняет небезопасный дефект HTTP и добавляет протокол безопасности SSL/TLS между сетевыми уровнями TCP и HTTP, так что сообщение может бытьзашифрованная передача;
  2. Установить HTTP-соединение относительно просто: после трехэтапного рукопожатия TCP можно выполнить передачу HTTP-сообщения. HTTPS требует SSL/TLS после трехэтапного рукопожатия TCP.Пожать рукипроцесс перед входом в зашифрованную передачу сообщения;
  3. Номер порта — 80 для HTTP и 80 для HTTPS.Номер порта443;
  4. Для протокола HTTPS требуется ЦС (центр сертификации).Подать заявку на цифровой сертификат, чтобы убедиться, что подлинность сервера доверена;

постскриптум

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

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

https://roadmap.sh/backend

Справочный материал

  1. Как работает http и почему это важно - объяснено простым английским языком -woohoo.бесплатный код camp.org/news/how-diva…
  2. Evolution of HTTP - developer.Mozilla.org/en-US/docs/…
  3. The Evolution of HTTP - О, Reilly.com/library/VIE…
  4. Все xxxxHub используют HTTP/2, где это круто? Кодирование Кобаяши -Tickets.WeChat.QQ.com/Yes/TV GAM KK RK…
  5. О возможностях HTTP/2 и HTTP/3 читайте в одной статье —ошибка blog.fun.com/2019/03/07/…

(над)

Замечательная рекомендация

  1. Неделя замечательного обмена контентом (выпуск 3): сторона B отличного начала
  2. Потрясенный! Секрет оригинального браузера скрыт в этих 31 картинке!
  3. DNS 是什么? Как это работает?
  4. 28 графика |Что такое интернет?Как подключиться,как общаться?

вотУ меня нет трех сердец, добро пожаловать, чтобы обратить внимание на публичный аккаунт wmyskxz, который каждую неделю делится с вами неделей обучения и прибылью, 2021 г., наBe Betterсрастаемся в пути!