«Взгляд на протокол HTTP»: быстрое понимание изменений и улучшений HTTPS/HTTP2/HTTP3.
«Взгляд на протокол HTTP»: быстрое понимание изменений и улучшений HTTPS/HTTP2/HTTP3.

Что такое HTTPS

Почему HTTP небезопасен?

https считается HTTP для обеспечения безопасности связи. За исключением того, что у http больше адресов и порт по умолчанию изменен на 443, остальные по-прежнему остаются http.(За исключением открытого текста и небезопасности),Самое важное изменението естьhttp закончился TCP, а https https over ssl over TCP. Все функции безопасности реализованы на основе SSL.

Четыре характеристики безопасности связи

Безопасность связи имеет четыре характеристики:

  • Конфиденциальность:Данные не могут быть утеряны,Он не может быть украден или взломан агентами и т.п.
  • честность:Данные нельзя подделать,Конфиденциальность только гарантируется и не может быть разглашена.,Требования целостности гарантируют, что данные не могут быть изменены.
  • Аутентификация личности:чтобы иметь возможность доказать, что я тот, кто я есть.,Отправить правильному клиенту или серверу
  • Это бесспорно: также есть_неотрицание_Если вы разместите это, вы не сможете признать, что вы это не публиковали.,Это тоже самое, что не отправить, и отрицать, что оно было отправлено, невозможно.
Введение в SSL

Основное отличие https по сравнению с http заключается в том, что на нижнем уровне имеется слой ssltls, и функция шифрования реализуется этим уровнем.

SSL — это протокол сеансового уровня и авторитетный стандарт в области информационной безопасности. Разработанный Netscape, он был переименован в tls, когда превратился в v3. Три версии v1.1, v1.2, v1.3.

Большинство используемых сейчас — это версия 1.2, и она в основном анализируется.

использоватьtlsДля построения ссылок требуется_Выберите набор шифров для безопасной связи*,такой же*Между обеими сторонами требуется согласование, поэтому клиент указывает, какие наборы шифров он поддерживает. Поле clientsuites указывает, что эти наборы шифров используются при окончательном согласовании._

  • SSL является авторитетным стандартом, а широко известной реализацией является openssl (набор инструментов для криптографии с открытым исходным кодом). Как правило, nginx реализует функцию tls на основе openssl.

SSL-шифрование

Введение в симметричное шифрование и асимметричное шифрование, характеристики

Алгоритмы шифрования и дешифрования, используемые в TSL, делятся на симметричное и асимметричное шифрование.

в целом_Алгоритм симметричного шифрования прост и быстр.*(шифрование Для расшифровки используется тот же ключ, также называемый открытым ключом.)но*Передача открытых ключей не является безопасной. Открытые ключи передаются клиенту по сети в виде открытого текста._,При связывании всегда сначала вводите открытый ключ.,Затем назадклиент использует этот открытый ключ для отправки сообщения шифрования. Но если хакер заменяет открытый текст передачи открытого ключа, ваши данные будут переданы хакеру (заменяя место назначения и используемый алгоритм шифрования).

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

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

Два протокола шифрования используются вместе для обеспечения безопасности связи.

  • Шифрование с открытым ключом, расшифровка с закрытым ключом, подпись с закрытым ключом, проверка подписи с открытым ключом

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

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

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

Общий процесс протокола шифрования https

Текущий процесс резюмируется следующим образом:

  1. Клиент шифрует дайджест с помощью своего асимметричного закрытого ключа и отправляет его на сервер.
  2. Сервер расшифровывает, используя открытый ключ, опубликованный клиентом.назад,СноваИспользуйте свой собственный асимметричный закрытый ключ шифрование После этого открытый ключ используется для симметричного шифрования сеанса.
  3. Ранназад_Клиент использует открытый ключ, опубликованный сервером._ развязать Получите открытый ключ для симметричного шифрования。(Гарантированная конфиденциальность и аутентификация, также естьнеотрицание.
  4. после***клиент Использовать сервер Симметричное информация о передаче открытого ключа шифрования, ** *использовать_Собственный закрытый ключ. Дайджест сообщения асимметричного шифрования.*,服务端использоватьСимметричный ключ шифрования для разблокировки информацииРанназад Затем используйте открытый ключ, опубликованный клиентом. развязатьСводная проверка содержимого завершена。(*Digital Digest использует асимметричное шифрование для защиты целостности данных._)

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

Почему подпись с закрытым ключом с асимметричным шифрованием все еще нуждается в целостности?

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

Однако,В этом процессе могут возникнуть некоторые проблемы. первый,*Управление ключами и их распределение являются важным вопросом. *A и B должны гарантировать, что обмен ключами друг друга безопасен и надежен, что требует безопасного согласования и распределения ключей. ** *если_В случае утечки или изменения ключа механизм подписи выйдет из строя и безопасность данных не может быть гарантирована._

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

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

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

  • сводный алгоритм

Вот_Полнота достигается за счет сводного алгоритма (большой контент становится маленьким контентом, маленький контент не может вывести большой контент)_из,Общие из них включают md5 и sha1.,Но tls использует sha2,сводный алгоритм также требует шифрования (это шифрование также небезопасно для использования симметрии,Поэтому асимметрия тоже обязательна (подробнее ниже)

Появление сертификатов CA и институтов CA

Видно, что текущее общение считается безопасным, но небезопасное место есть только одно. есть_Проблемы доверия к открытым ключам*。黑客也可к进行发布自己изоткрытый ключ,*Если сервер и клиент получат открытый ключ хакера, связь будет небезопасной. (Хакеры могут расшифровать и получить все данные связи)_

Конкретно то есть_Как доказать, что ваш открытый ключ принадлежит вам*?这инравиться何证明这да你发из消息一样Понятно不да?Так же*Для шифрования этого опубликованного открытого ключа требуется закрытый ключ._,Что***нравиться何保证这个私钥解密изоткрытый ключто есть Где чье-то? Для шифрования также требуется закрытый ключ,** *Итак, я попал в круг.

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

Так на основе этой идеи появились институты CA и сертификаты CA.

Разве вам не всегда нужно проверять, кто это опубликовал? Это для того, чтобы проверить, кто его подписал.

Уровень учреждения ЦА: дв, ов, ев

Центры сертификации по всему миру выпускают сертификаты dv, ov и ev.

Сертификат встречи包含一些信息РанназадИспользуйте сертификат верхнего уровня, чтобы проверить, безопасен ли этот сертификат, и продолжайте поиск, пока не найдете включенную проверку корневого сертификата.

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

Как сохранить сертификат корневого центра CA

Как сохранить эти корневые сертификаты? Очень просто сохранить их в операционной системе и получить сертификат, выданный клиентом или сервером (раньше это был открытый ключ, а теперь это сертификат? представлятьиз信息встреча更多),Затем проверьте, безопасно ли это с помощью этих корневых сертификатов операционной системы.,Если он не содержит открытый ключ веб-сайта, переданный сертификат может быть поддельным и небезопасным сообщением.

Это может быть преимуществом, а может быть недостатком。*Некоторая информация сертификата открытого ключа, которая не была сохранена и отправлена ​​в центр сертификации для проверки, будет перехвачена во время связи, что указывает на то, что безопасный доступ возможен только к зарегистрированной информации открытого ключа; *или может_Добавьте информацию о корневом сертификате в свою операционную систему._

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

Почему так много мер безопасности? Это необходимо?

Мир не совсем безопасен, как и общение.

Точно так же, как почему целостность все еще необходима после появления асимметричного шифрования, в мире не существует абсолютной безопасности. Секретный ключ асимметричного шифрования может быть взломан, а затем хакеры модифицируют содержащийся в нем открытый ключ, чтобы украсть информацию; такой же_Организацию ЦС также можно обмануть, выдав неправильный сертификат и небезопасный сертификат. В частности, хакеры могут проникнуть в ЦС и добавить свои собственные сертификаты, чтобы обезопасить свои открытые ключи._。

Такие вещи действительно происходили в истории! В этом случае вы можете только исправить, обновить и восстановить ЦС или очистить сертификат ЦС в операционной системе и добавить его в черный список.

Полный процесс связи TSL: после добавления протокола шифрования и сертификата CA.

Вот краткое описание того, как TLS на нижнем уровне https обменивается наборами шифров и используемыми открытыми ключами.

На первом изображении показан текущий процесс установления связи TLS для https.

  1. первый_Клиент отправляет себя на сервер_ Какие наборы шифров поддерживаютсяиВерсия tls, используемая клиентом *, *Возьму с собой один_клиентслучайный_ **** выдано с clienthello
  2. _Сервер получил набор шифров и версию tls, используемую клиентом._назад Воля Определите, какую версию tls и набор шифров использовать. **Есть еще один Случайное число сервера (serverrandom) ****Отправить клиенту
  3. затем_сервер-клиент_ Отправьте сертификат CA сервера , а затем использовать алгоритм ecdheНабор шифров, выбранный сервером)Рассчитать_Параметр сервера_ (Открытый ключ, рассчитанный сервером) ****Совмещенное использование Закрытый ключ на стороне сервера зашифрован и подписан для представления параметра сервера, отправленного сервером.

Алгоритм ECDHE: этот протокол шифрования позволяет серверу и клиенту вычислить используемый ими открытый ключ (сервер вычисляет параметр сервера, а клиент вычисляет параметр клиента, оба из которых представляют собой информацию об открытом ключе, рассчитанную самостоятельно).

  1. клиентполучатьназадПроверьте цепочку сертификатов ЦС, чтобы определить, является ли ЦС подлинным.。затем_проходить_ Открытый ключ эхдерасчетклиента (clientparam) ****。undefinedПотом снова_использовать_ echdEРассчитать法проходитьserverparam,clientparam расчет premaster *。 *Понятно_premaster,clientrandom,severrandomназадСгенерируйте главный ключ, мастер-секрет ключа шифрования.*。undefinedклиент*Отправьте параметр клиента на сервер_

severparam — открытый ключ, зашифрованный закрытым ключом сервера.ипроходить Понятноcaисследовать,clientparam也даиспользоватьechdeрасчет Приходитьизклиентоткрытый ключ,клиент_расчетpreпосле Сноварасчетmaster*,Ранназад*Снова Использовать мастергенерироватьклиентизоткрытый ключ_ В дальнейшем при отправке сообщений на сервер этот открытый ключ будет использоваться для симметрично зашифрованной связи.

  1. клиент Отправить на серверclientparamназад,Та же операция выполняется на стороне сервера,расчетpre,Открытый ключ, используемый в расчетном мастере и расчетном сервере. впредь используйте это шифрованиепосле Данные отправлены клиенту.
  2. Обратная связь с обеих сторонрасчетоткрытый ключназад,будет продолжаться_Используйте предыдущее шифрование содержимого с открытым ключом шифрования расчета.Ранназадиспользовать各自из非对称私钥шифрованиеСводка планового расчета_ позволить другой стороне Убедитесь, что это правильно.

Как бы ты ни играл, в конце концов Содержимое шифруется с помощью Симметричное шифрование(Объем данных слишком велик,использовать Симметричное шифрованиебыстрый),но_Для цифровых сводок используйте несимметричное шифрование._(数量少и更加安全。、)。

  1. Если отзывы обеих сторон верны, вы можете послеизшифрование传输Понятно
  2. В это время начинается http-отправка (клиент отправляет заголовки запросов и другую информацию)

Можно увидеть шифрование много раз,первый_Открытый ключ и открытый ключиспользоватьподготовленный секретный ключechderaсчет_ Потом снова использоватьклиент мастер создания случайных чисел на стороне сервера,Три случайных числа более безопасны,Ранназад_Восстановите открытые ключи, используемые каждым клиентом для последующей зашифрованной отправки._

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

Оптимизация HTTPS: с добавлением установления соединения TLS, как обеспечить его скорость так же быстро, как HTTP

  1. Оптимизация оборудования: обновление процессора стоит денег
  2. Оптимизация программного обеспечения: экономически эффективно

Обновление ядра программного обеспечения

Требуется слишком много работы по адаптации для всех приложений.

Обновление протокола

*tls1.2 требует двух подключений, чтобы клиент и сервер могли отдельно вычислить мастер-секрет. *После обновления до tls1.3 существовать_На этапе clienthello clientparam и clientrandom могут быть отправлены на серверный компьютер_中использоватьиз服务端открытый ключ(cpиspрасчетpre,кт и ст и прерасчетмастер),Затем сервер передает клиенту st и sp.,клиент вычисляет используемый открытый ключ. Уменьшите один rtp связи

Оптимизация проверки цепочки сертификатов CA: появление crl и ocsp

потому что_Сервер отправит цепочку сертификатов клиенту.,Ранназадклиент进行证书из链条验证*,вклиент不仅需要использовать传递过Приходитьизspоткрытый ключ解密出caСертификат тоже нужен*Перейдите в центр сертификации, чтобы узнать, действителен ли текущий сертификат._

Доступ к центру сертификации — это еще один процесс установления соединения, который, как вы понимаете, требует много времени.

  • CRL: после появления crl,crl — это серийный номер отозванного сертификата, который регулярно обновляется. Поскольку вы можете получить эти отозванные серийные номера, вам не нужно каждый раз посещать центр сертификации для проверки связи.

Однако CRL регулярно обновляется, и существует проблема временного окна, и поскольку количество отозванных сертификатов продолжает увеличиваться, объем передаваемых данных также будет увеличиваться. Более того, если в запрошенном CRL есть только один сертификат с истекшим сроком действия или вообще нет. сертификат с истекшим сроком действия в цепочке ЦС, это пустая трата времени и трафика.

  • OCSP:OCSP Stapling_Процесс проверки статуса отзыва SSL-сертификата перенесен на сторону веб-сервера, а не на сторону клиента.*,проходитьWebсервер(нравитьсяNginx)Периодически получайте ответ OCSP на сертификат SSL от центра сертификации и сохраняйте его в памяти.。Ранназадсуществовать*В процессе установления SSL-соединения с клиентом веб-сервер также вернет клиенту кэшированный ответ OCSP._

Ссылка для объяснения OCSP:

www.php.cn/faq/557367.…

В любом случае процесс проверки сертификата ЦС требует как минимум одного сетевого запроса, что неизбежно.

Повторное использование сеанса

проходить前面из讲解可к看出_https имеет на одно рукопожатие tls больше, чем http*,на этот раз рукопожатие*В основномклиент План переговоров на стороне серверарасчетmaster секрет используется для зашифрованной связи сеанса_。фокусто есть расчетный мастер после ключа для шифрования связи

если_Возможность повторно использовать этот главный секрет_Что么就不需要tlsЧто么复杂из计Рассчитать过程Понятно。

поэтому_Повторное использование сеанса означает И клиент, и сервер сохраняют идентификатор сеанса и сохраняют мастер этого сеанса в памяти. секретная информация_。

При установлении соединения,клиент Отправить разговорidРанназад_Идентификатор сеанса на стороне сервера находит главный секрет, соответствующий стороне сервера.И отправьте идентификатор сеанса, версию tls и т. д., используемые сервером, наклиент, чтобы проверить, можно ли его использовать повторно*,клиент Если вы можете использовать секретный ключ, соответствующий идентификатору сеанса, для его расшифровки, вы можете получить версию tls, используемую сервером, и идентификатор сеанса сервера.,если验证проходитьназадвстреча_Отправить клиенту_Завершить сообщение, зашифрованное с помощью главного секретапредставлять*Повторно используйте главный секрет._

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

встреча话票证(session ticket)PSK

sessionidда_В настоящее время наиболее широко используемая технология оптимизации установления соединения TLS.*,но有个缺点да*sessionID необходимо сохранить на стороне сервера.,с клиентом все в порядке, но для сервера тысячи клиентских обращений будут занимать тысячи идентификаторов сеансов в памяти сервера.,Очень повлияло на производительность._

Проблема в том, что серверу необходимо хранить идентификатор сеанса.,Прорыв есть_Измените хранилище на расчет с фиксированным алгоритмом. Хранилище не требуется. Когда придет время, клиенту будет передан только расчет сервера.*(Этот планрасчет Приходитьиз东西то естьsession ticket),клиенткназадВозьмите этот билет с собой при повторном установлении соединения., 服务端потому что没有存储所к需要*По некоторым данным, отправленным клиентом, мы можем использовать алгоритм, чтобы определить, правильный ли билет или нет, и его можно повторно использовать и связывать._(比нравитьсяtcpЕсть срок действия подключения,В течение срока действия ссылка будет закрыта, поэтому необходимо проверить, не истекла ли сессия и не отключилась)) Билет нуждается в шифровании, когда сервер отправляет его клиенту.,Этот секретный ключ шифрования также необходимо регулярно обновлять.

Вышеупомянутые идентификатор сеанса и сеанс Билеты требуют одного rtt (туда и обратно), есть ли 0rtt? Конечно, ты можешь есть_При отправке билета укажите данные, отправленные позже._ (Это считается за 0? rttШерстяная ткань?哈哈当Ран Рассчитать因为_Данные начались_),Это решение называется psk (предварительно shared key) означает, что клиент при отправке билета приносит данные приложения.

ID и билет отменены в tls1.3,Пропустить проверку сертификата tls Схема расчета секретного ключа использует psk (оптимизация по билету)

Что такое HTTP2?

Оптимизация http2

http1.0изhttps已经да_достаточно безопасноДа, ноНет повышения эффективности передачи данных*,поэтому*После запуска протокола Google чиновник выпустил новый протокол: http2._(没有小数да因为кназад没有小版本Понятно)

Каковы точки оптимизации http?

Используйте алгоритм сжатия hpack для сжатия размера данных заголовка.

Предыдущая версия 1.0использовать ПонятноcontentencodingизgzipСжатые данные о телено大部分情况下bodyВсего десяток байт иРазмер заголовка составляет сотни или тысячи байт, поэтому заголовок также сжимается.

hpack использует словари для уменьшения повторяющихся значений и замены их индексами.

Комплексное использование двоичного кода и разбиение сообщения на кадры передачи кадров.

  • Поскольку используется простой текст,Будет много прописных и строчных букв.,побег,Вопросов много на китайском, английском и т. д. и они занимают много места.,Использование двоичных данных для http2 будет более полезным для уровня TCP.。такой же明文传输из很多问题也встреча得到解决。
  • Предыдущий заголовок и тело теперь разбиты на передачу кадров (без структуры, но фрагментированные кадры). Уровень TCP также использует кадры для передачи данных. Приближаясь к TCP, он делится на кадр заголовка и кадр тела (как показано ниже).
Структура данных кадра в http2
  1. первыйда_header frame*,第一个да这个Общая длина кадра данных,РанназаддаТип рамы(фрейм данныхorрамка управленияdataиheaderВсе принадлежат данным Тип рамы),*флаг, идентификатор_(потокid,Идентификатор потока может реорганизовать неупорядоченные потоки в упорядоченные потоки.,Во-первых, кадры данных в потоке находятся в строгом порядке.,Затем упорядоченный поток можно восстановить на основе идентификатора потока кадра данных)
  2. Следующий есть_data frame_

Виртуальные потоки в основном решают проблему «блокировки начала строки»: передача кадров данных использует общие каналы потока виртуальных данных (мультиплексирование).

к往изhttp1.0даклиент Отправилназад_Необходимо дождаться возвращения сервера, прежде чем отправлять снова.*,если*Если обработка предыдущего сообщения займет время, это повлияет на отправку последующих сообщений._ **** Вызывает проблему «противоположной блокировки».

В http2 эта проблема решается другим способом. Передача кадров данных осуществляется на основе одного и того же сообщения. Несколько кадров данных одного и того же сообщения упорядочиваются и идентифицируются, а при общении устанавливается концепция потока. Поток используется для передачи кадров данных, которые после отправки на сервер собираются в тело и заголовок http1.0. Поток не заботится о содержимом кадра данных, поэтому можно добиться мультиплексирования. Один поток может передавать кадры данных с несколькими разными сообщениями и ждать, пока сервер будет собран (одновременно также появятся несколько управляющих кадров) ( для передачи потока управления) Как решить проблему блокировки одноранговых узлов? Поскольку он больше не отправляет предыдущее сообщение, а принимает поток для отправки данных, зависимость меняется от ответа предыдущего сообщения на то, есть ли свободный канал потока для передачи данных.

Подробное объяснение потоков

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

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

Подвести итог:Между потоками нет порядка, но может быть приоритет.,Кадры данных, отправляемые в потоке, должны быть гарантированно последовательными.(но不需要保证多个поток按顺序发送,поэтому,*Идентификатор потока не может быть использован повторно (клиент нечётное число, сервер четное число) *,клиент Сервер может инициировать передачу потока,Потоки могут отправляться одновременно.

Основные браузеры вынуждены использовать зашифрованную версию http2 (h2c означает шифрование, h2 не использует шифрование).

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

Зашифрованная версия http2 используется большинством браузеров, и появляются версии с суффиксом h2c и h2.

Недостатки HTTP2

Не допускается установка нескольких TCP-ссылок для одного доменного имени. TCP-ссылка может быть только одна.

http1.1 может установить до 6-8 TCP-ссылок для доменного имени. Во-первых, блокируется начало очереди. Во-вторых, этот метод можно использовать для параллельной загрузки при загрузке файлов.

(Загрузите один за другимtcpСвязьно1.1要求请求只能существовать上一个请求из响应回Приходитьназадотправить)Открыв несколько ссылок, вы можете косвенно отправлять несколько запросов одновременно.

Поскольку в http2 есть концепция потока,поток может Одновременная отправка не требует ожидания соответствующего сообщения от сервера.

(В основном решает проблему лобовой блокировки Также решено Загрузка больших файлов не требует ожидания соответствующих сообщений от сервера. Так что вы всегда можете отправлять запросы и1.1из开多个tcpСвязь_Цель состоит в том, чтобы продолжать отправлять запросы_ Не нужно ждать принимать Соответствующее ответное сообщение ) и может обеспечить двустороннюю передачу.

Следовательно, для решения проблемы блокировки нет необходимости в методе установления нескольких ссылок для получения данных о доменном имени в http1 (отправка сообщения запроса должна ждать, пока не будет отправлено ответное сообщение предыдущего запроса, поэтому несколько ссылок необходимо отправить несколько запросов)

поэтому_Из-за этой функции в http2 установка нескольких ссылок на доменное имя отключена.*,因为你可к*Использовать поток Также возможна двусторонняя связь нужно Сервер ожидания может отправлять сообщения соответственно, а также может отправлять несколько потоков одновременно (потоки напрямую не мешают друг другу)_

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

Разница между стеками протоколов http1.0, https и http2

На основе версии 1.0 в http2 добавлена ​​концепция кадра двоичной последовательности кадров и потока strme, а также встроены функции https, такие как tls.

Что такое HTTP3?

HTTP3-оптимизация

Ознакомьтесь с проблемой блокировки злоумышленников:

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

Полностью решить проблему «блокировки начала линии»

Почему http2 решает большинство проблем с блокировкой начала строки?

Потому что http — это протокол верхнего уровня.,其依赖из_Базовый протокол TCP также имеет проблему блокировки начала строки.*,В TCP существует механизм повторной передачи при потере пакетов.,Для протокола TCP поток будет разделен на более мелкие сегментированные сегменты для передачи.,*当前面из包没有принимать到时Несмотря на тоназад面из包传输过Приходить Понятно也不встреча进行给上次而да放существовать缓存区中等待前面из包传输过Приходитьпосле Снова组装发给上层。_

потому что_TCP является надежной передачей и может только блокировать и ждать ранее потерянные пакеты.,Пока все сумки впереди не будут перемещены на после, а затем не переданы на верхний уровень.,Потеря пакетов не допускается._

Улучшения в http3 (по сравнению с быстрым)

Видно, что у TCP есть проблема с блокировкой начала строки. Если вы хотите полностью решить эту проблему, вы не можете использовать TCP.,Google увидел эту проблему и запустил gquicпротокол (tls,stream,Пакет равен прикладному уровню (протоколу).,назад Приходить Стандартизированное соответствие IETF было извлечено в протокол транспортного уровня iquic. (Один слой с tcpudp).

Определение QUIC:

quic инкапсулирует udp让其可к完美解决队头阻塞对于丢失из包不关系可к继续传输,ипотому чтоВстроенный поток, tls и т.д.,Реализация протокола http3 очень проста, большая часть работы выполняется быстро.

Отныне quic относится к протоколу iquic.

http3 поддерживает ссылку на основе случайных идентификаторов двух конечных точек в качестве адресов взаимодействующих сторон вместо предыдущего IP-адреса.

http2 используется для использования TCP-ссылок, чтобы определить, изменился ли адрес связи через IP-адрес.

Если IP-адрес изменится, TCP-ссылку необходимо будет восстановить, но поскольку http3 основан на случайных идентификаторах, оно не будет повторно подключено.

Как установить ссылку в http3?

http3 не указывает номер порта сервера, например 1.0 и 2. Причина в том, что вам нужно сначала подключиться через http2, а затем использовать http3 для подключения через расширенный фрейм в http2.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose