Введение
Только лысина может стать сильнее
Обзор сообщения в блоге HTTP:
- Сторона ПК: HTTP — это так просто
- Сторона ПК: здесь вопросы по HTTP-лицу
- Публичный аккаунт WeChat: HTTP — это так просто
- Публичный аккаунт WeChat: все вопросы по HTTP-интервью здесь
эта статьяСтремитесь объяснить каждый пункт знаний просто, я надеюсь, что каждый сможет что-то получить после прочтения
Во-вторых, жизнь и загробная жизнь протокола HTTP.
Когда я недавно читал блог, я обнаружил, что некоторые вопросы интервью уже прошли тест HTTP/2, поэтому я просмотрел его, чтобы узнать.
До сих пор существовало три версии протокола HTTP:
- HTTP1.0
- HTTP1.1
- HTTP/2
Давайте кратко поговорим о различиях между тремя и организуем некоторые необходимые дополнительные знания.
2.1 Различия между версиями HTTP
2.1.1 Разница между HTTP1.0 и HTTP1.1
Основное различие между HTTP1.0 и HTTP1.1 заключается в следующем:
- HTTP1.1 по умолчаниюпостоянное соединение!
В HTTP 1.0 по умолчанию используется короткое соединение:
Проще говоря:Каждый раз, когда вы взаимодействуете с сервером, вам нужно открывать новое соединение!
Только представьте: запрос изображения, открытие нового подключения, запрос CSS-файла, открытие нового подключения, запрос JS-файла, открытие нового подключения. Протокол HTTP основан на TCP, TCP должен проходить каждый разТри рукопожатия, четыре волны, медленный старт...Все это должно потреблять много наших ресурсов!
В HTTP 1.1 постоянные соединения по умолчанию используются для решения следующих задач:Соединение установлено, и несколько запросов выполняются этим соединением.! (Если он заблокирован, новое TCP-соединение все равно будет открыто)
Есть и другие важные изменения, касающиеся постоянных соединений:
- HTTP 1.1 добавляет поле хоста
- Представлено в HTTP 1.1
Chunked transfer-coding
, запрос диапазона, чтобы добиться возобновления точки останова (фактически, используя заголовок HTTP-сообщения, чтобы использовать кодировку блочной передачи для передачи тела объекта в блоках) - Конвейерная (конвейерная) теория HTTP 1.1, клиент может отправлять несколько HTTP-запросов одновременно, вместо того, чтобы ждать ответа один за другим перед запросом.
- Примечание: эта конвейерная обработкаограничивается теоретическими сценариями, большинство настольных браузеров по-прежнему будутВыберите закрыть по умолчаниюКонвейеризация HTTP!
- Поэтому приложения, использующие протокол HTTP1.1, теперьМожет открывать несколько TCP-соединенийиз!
Использованная литература:
2.1.2Основа HTTP2
Прежде чем говорить о HTTP2, лучше визуально сравнить разницу между HTTP2 и HTTP1.1:
Как упоминалось выше, HTTP 1.1 предлагает теорию конвейерной обработки, но она ограничена только теоретической стадией, и по умолчанию эта функция отключена.
Конвейерные и неконвейерныеразница:
Конвейерная обработка HTTP фактически отправляет несколько HTTP-запросов в одно TCP-соединение и не требует ожидания ответа сервера на предыдущий запрос во время процесса отправки; простоКлиент все еще должен получить ответ в порядке, в котором был отправлен запрос!
Это как стоять в очереди на кассе супермаркета или в банке, когда не знаешь, что перед тобой.клиентБудет ли это аккуратно или это конец света с кассиром/кассиршей (все равно сервер (т.е. кассир) будет обрабатывать запросы по порядку, еслиПредыдущий запрос отнимал очень много времени (клиент бездельничал), то последующие запросы будут затронуты.
- В HTTP 1.0 при отправке запроса нужноОжидание ответа серверапродолжить отправку запроса.
- В HTTP 1.1 при отправке запроса запрос можно отправить, не дожидаясь ответа сервера, но при отправке данных обратно клиенту клиенту все равно нужно следоватьпорядок ответовприйти и получить
- Следовательно, независимо от того, предлагает ли HTTP1.0 или HTTP1.1 теорию конвейеризации, все равно будетблокироватьСлучай. Профессионально такая ситуация называетсяБлокировка потока(Блокировка начала линии) Сокращение: HOLB
2.1.3 Разница между HTTP1.1 и HTTP2
Наиболее важное различие между HTTP2 и HTTP1.1 заключается в том, чтоУстранена блокировка потокапроблема! Наиболее важные изменения:Мультиплексирование
- Мультиплексирование означает, что блокировка заголовка строки больше не будет проблемой, позволяя одновременную инициацию через одно соединение HTTP/2.Несколько сообщений запрос-ответ, оптимизация объединения нескольких запросов в один больше не применяется.
- (Мы знаем: конвейерная обработка в HTTP1.1 не применяется), прежде чемуменьшатьHTTP-запросы, существует множество операций для объединения нескольких запросов, таких как: спрайтинг (несколько изображений объединяются в одно изображение), встраивание (исходные данные изображения встраиваются в URL-адрес в файле CSS), конкатенация (один запрос будет После загрузки нескольких файлов JS) сегментирование (распределение запросов на каждый хост)...
Использование HTTP2 может выглядеть так:
В основе всех улучшений производительности HTTP2 лежитНовый бинарный слой кадрирования(Больше не в текстовом формате), он определяет, как инкапсулировать http-сообщения и передавать их между клиентом и сервером.
Кажется, что формат протокола полностью отличается от HTTP1.x,На самом деле HTTP2 не меняет семантику HTTP1.x., просто используйте части заголовка и тела оригинального HTTP1.xФрейм переупаковывает слойпросто
при HTTP2 соединенииКаждый переданный кадр связан с «потоком».. Поток — это независимая двунаправленная последовательность кадров, которая непрерывно обменивает данные между сервером и клиентом через соединение HTTP2.
При фактической доставке:
В HTTP2 есть еще несколько важных изменений:
- Сжатие заголовков HTTP/2 с использованием HPACK
- пуш сервера
- Информация HTTP2 Push:сегмент fault.com/ah/119000001…
- управление потоком
- для передачипотокКонтроль (детализация TCP по умолчанию предназначена для соединений)
- Приоритет потока (Stream Priority) используется для указанияЧто важнее, чтобы закончить поток.
2.2 Резюме HTTP2
Новые изменения в HTTP 1.1:
- постоянное соединение
- конвейерная обработка запросов
- Добавлена обработка кеша (новые поля, такие как управление кешем)
- Увеличьте поле Host, поддержите передачу точки останова и т. д.
Новые изменения в HTTP2:
- Бинарное кадрирование
- мультиплексирование
- сжатие заголовка
- пуш сервера
Использованная литература:
- Электронная книга HTTP2 GitBook (китайская версия):legacy.git book.com/book/ также 11ow…
- Каковы основные улучшения HTTP/2.0 по сравнению с 1.0?Ууху. Call.com/question/34…
- Краткий анализ новых возможностей HTTP/2:сегмент fault.com/ah/119000000…
- Учебные материалы по HTTP2:IM District.com/post/HTTP2-…
- Введение в HTTP2 и веб-оптимизацию на основе HTTP2:Цай Баоцзянь.com/headlines/664…
- Начало работы с принципом http2:blog.qingf.me/?p=600
- Какова основная оптимизация HTTP/2 для текущего доступа к веб-странице? Где это проявляется?Ууху. Call.com/question/24…
- HTTP/2 Notes Потоковая передача и мультиплексирование:Woohoo.blog Java.net/Using Boyang/arc…
2.3 Повторный обзор HTTPS
Меня спрашивали о HTTPS, SSL и других знаниях в интервью ранее, но я не ответил на него, поэтому я просто разберусь здесь.
Во-первых, давайте объясним основные вещи:
- Симметричное шифрование:
- И шифрование, и дешифрование используют один и тот же ключ
- Асимметричное шифрование:
- Открытый ключ для шифрования, закрытый ключ для расшифровки
- (Только вы знаете закрытый ключ, а все знают открытый ключ)
- цифровой подписи:
- Проверить содержимое переводаэто данные, отправленные другой стороной
- данные отправленыне был подделан
- Цифровой сертификат (центр сертификации), называемый ЦС
- Орган по сертификации удостоверяет, чтоДанные, отправленные реальным сервером.
3-х коммуникационная дорога:
- Древние времена: нет шифрования между 3y и его девушкой в чате и передаче данных, прямая передача
- Контент хорошо виден, приватности нет вообще
- Древние времена: используйте симметричное шифрование, чтобы гарантировать, что только два человека знают передаваемые данные
- На данный момент есть проблема:Ключ не может быть передан по сети(Потому что до шифрования небезопасно), поэтому 3й и его девушка договариваются о встрече, сообщают друг другу пароль, а потом болтают.
- Средневековый период: 3y не только хочет поболтать со своей девушкой, но и поболтать со своими родителями (также не хочет разглашать информацию о своем общении). Людей так много, что каждый раз договариваться о встрече? (Это означает, что поддерживать несколько симметричных ключей проблематично!) ---> Поэтому используется асимметричное шифрование.
- 3y Держите пароль для себя, который является уникальным (закрытый ключ). Скажите 3-й подруге, родителям пароль (этот пароль общедоступен, любой может получить ---> открытый ключ). Прежде чем позволить им отправить мне сообщение, зашифруйте его паролем, который я им сказал, и отправьте мне. После того, как я получу информацию, я смогу расшифровать ее своим уникальным закрытым ключом!
- Новое время: в это время возникает еще одна проблема: хотя другие не знают, что такое закрытый ключ, они не могут получить вассырая передачаданные, но могут получить зашифрованные данные, они могутИзмени этоОпределенная часть данных отправляется на сервер, чтобы данные, полученные сервером,не завершено.
- Подруга 3y отправила сообщение «3y, ты мне нравишься» 3y, затем зашифровала его открытым ключом, предоставленным 3y, и отправила 3y. В это время кто-то с плохими намерениями перехватил это зашифрованное сообщение, и онНевозможно расшифровать исходную информацию. но он можетИзменить зашифрованные данныеЗатем передать его на 3г. Может быть, данные, которые 3y получает и получает, это "3y встанет на колени на клавиатуре сегодня вечером"
- Современный: полученные данные могли быть подделаны, и мы можем использовать цифровые подписи для решения проблемы подделки. Фактически цифровые подписи также можно рассматривать какСредство асимметричного шифрования, который заключается в следующем: чтобы получить хеш-значение исходной информации, используйтезакрытый ключзашифровать хеш-значение,другая сторонаиспользоватьоткрытый ключРасшифруйте и, наконец, сравните, изменилось ли значение хеш-функции. Если он изменился, значит, его подделали. (Один конец зашифрован закрытым ключом, а другой конец расшифрован открытым ключом, что также гарантирует источник)
- Сейчас и сейчас: кажется, что использование цифровых подписей надежно, но проблемы все же есть. Когда мы используем асимметричное шифрование, мы используемоткрытый ключ зашифрован. еслиОткрытый ключ был подделан, цифровая подпись позади на самом деле бессмысленна. В конце концов:или может быть атакован человеком посередине~ На данный момент у нас естьЦентр сертификации CA для подтверждения подлинности открытого ключа!
Я до сих пор мало что знаю о цифровых подписях и сертификации CA.
- Руан Ифэн:Вууху. Руан Ифэн.com/blog/2011/0…
- Что такое цифровые подписи и сертификаты?у-у-у. Краткое описание.com/afraid/9 не 57 ох 761…
Вернемся к нашему HTTPS. HTTPS на самом деле является дополнительным уровнем протокола SSL поверх протокола HTTP (ps: теперь используется протокол TLS).
HTTPS используетГибридное шифрование:
Процесс выглядит следующим образом:
- Пользователь инициирует запрос безопасного подключения к веб-серверу.
- Сервер возвращает сертифицированный ЦС цифровой сертификат, который содержит открытый ключ сервера (открытый ключ).
- Пользователь получает цифровой сертификат и расшифровывает его с помощью встроенного сертификата CA браузера, чтобы получить открытый ключ сервера.
- Пользователь шифрует ключ для следующего алгоритма симметричного шифрования с помощью открытого ключа сервера и передает его веб-серверу.
- Поскольку только сервер имеет закрытый ключ для расшифровки, поэтомуНе беспокойтесь о том, что человек посередине перехватит этот зашифрованный ключ.
- Сервер получает зашифрованный ключ, расшифровывает, чтобы получить ключ, а затем использует алгоритм симметричного шифрования для завершения следующего сетевого взаимодействия с пользователем.
Таким образом, по сравнению с HTTP, передача HTTPS более безопасна.
- (1) Вся информация шифруется и передается, и хакеры не могут ее подслушать.
- (2) Он имеет механизм проверки: как только он будет взломан, обе стороны в общении сразу обнаружат его.
- (3) Оснащен сертификатом удостоверения личности для предотвращения олицетворения личности.
Использованная литература:
- Какая связь между цифровой подписью, цифровым сертификатом, SSL и https?Ууху. Call.com/question/52…
- Говоря о принципе работы SSL/TLS:zhuanlan.zhihu.com/p/36981565
- HTTPS:specialty.upcloud.com/article/192…
- Полное руководство по настройке HTTPS для обновления веб-сайта HTTP:Блог woohoo.cn on.com/power tools T…
3. Резюме
Я просто записывал проблемы, с которыми столкнулся в процессе обучения, и разбирал их, надеясь всем помочь. Если в статье что-то не так, я надеюсь, вы сможете исправить это в комментариях и учиться и общаться вместе~
Использованная литература:
- «Иллюстрированный HTTP»
Если в статье есть какие-либо ошибки, пожалуйста, поправьте меня, и мы сможем общаться друг с другом. Учащиеся, привыкшие читать технические статьи в WeChat и желающие получить больше ресурсов по Java, могутОбратите внимание на публичный аккаунт WeChat: Java3y.
Оглавление Навигация по статьям: