Эта статья участвует в "Сетевой протокол должен знать должен знать"Требуют документов
интервьюер:Хотите сегодня поговорить о HTTP?
Кандидат: Ну, HTTP "протокол" - это формат связи для "взаимодействия" между клиентом и сервером
Кандидат: Так называемое «соглашение» на самом деле является «форматом», согласованным обеими сторонами, так что обе стороны могут его понять.
Кандидат: Так называемое взаимодействие на самом деле является «запросом» и «ответом».
интервьюер:Знаете ли вы разницу между разными версиями HTTP?
Кандидат: HTTP1.0 по умолчанию является коротким соединением.Каждый раз, когда вы взаимодействуете с сервером, вам нужно открывать новое соединение.
Кандидат: Главное в HTTP 1.1 - "постоянное соединение по умолчанию". Пока клиентский сервер не отключает TCP-соединение, соединение всегда поддерживается, и можно отправлять несколько HTTP-запросов.
Кандидат: Второй - "фрагментированное кодирование передачи". Тело объекта передается порциями с использованием заголовков HTTP с использованием кодирования передачи по частям.
Кандидат: HTTP/2 больше не передается в текстовом режиме. Он принимает «двоичный уровень кадрирования», «сжимает» заголовок и поддерживает «управление потоком». Самое главное, что HTTP/2 поддерживает «мультиплексирование». сообщения запроса и ответа «параллельно» по одному TCP-соединению)
интервьюер: Ну, небольшая пауза.Я знаю, что в HTTP 1.1 есть теория конвейерной обработки, но по умолчанию она отключена. Конвейерная обработка очень похожа на "мультиплексирование" HTTP/2. В чем разница между ними?
Кандидат: «конвейер», предложенный HTTP 1.1, может быть только «последовательным» (ответ должен быть полностью возвращен, прежде чем начнется передача следующего запроса).
Кандидат: Мультиплексирование HTTP/2 использует поток данных «кадров» для разложения протокола HTTP на «взаимозависимые» кадры (каждый кадр отправляется в «последовательном порядке» и реорганизуется в последовательности при получении). В свою очередь, он может быть отправлен в «не по порядку», чтобы избежать «определенной степени» блокировки заголовка строки.
Кандидат: Однако, будь то HTTP1.1 или HTTP/2, «порядок обработки» ответного ответа всегда должен соответствовать порядку запроса. Если ответ на запрос медленный, все равно будет проблема с блокировкой.
Кандидат: Это ограничено тем фактом, что базовым транспортным протоколом HTTP является TCP, и нет способа полностью решить проблему «блокировки начала строки».
интервьюер:Ну что ж.
Кандидат: Самая большая разница между HTTP/3 и предыдущей версией заключается в том, что нижний уровень HTTP1.x и HTTP/2 — это TCP, а нижний уровень HTTP/3 — UDP. Использование HTTP/3 может уменьшить «задержку приема-передачи» RTT (трехстороннее рукопожатие TCP, рукопожатие TLS).
интервьюер:Вы понимаете процесс HTTPS?
Кандидат: Ну, в моем понимании, HTTPS - это "защищенный" HTTP-протокол (зашифрованный в канале передачи между клиентом и сервером)
Кандидат: Первое, что нужно решить HTTPS, это: проблема аутентификации
Кандидат: Клиент должен точно знать, является ли сервер «настоящим», поэтому в HTTPS будет роль: CA (общественный доверительный орган)
Кандидат: перед использованием HTTPS сервер должен подать заявку на получение «цифрового сертификата» в сертифицированном ЦС. Цифровой сертификат содержит такую информацию, как владелец сертификата, срок действия сертификата и «открытый ключ сервера».
Кандидат: Агентство ЦС также имеет собственный открытый и закрытый ключ.Перед выдачей цифрового сертификата оно шифрует цифровой сертификат с помощью собственного «закрытого ключа».
Кандидат: когда клиент запрашивает сервер, сервер возвращает сертификат клиенту. Клиент расшифровывает сертификат с помощью открытого ключа ЦС (поскольку ЦС является общедоступной доверительной организацией и будет встроен в браузер или операционную систему, у клиента будет открытый ключ). В это время клиент будет судить, является ли этот «сертификат доверенным / не был ли он подделан»
Кандидат: Шифрование с закрытым ключом, расшифровка с открытым ключом, мы называем это «цифровой подписью» (таким образом вы можете проверить, не было ли оно подделано)
Кандидат: На этом проблема "аутентификации" решена, по крайней мере клиент может гарантировать, что он общается с "настоящим сервером".
Кандидат: После того, как проблема "аутентификации" решена, должна быть решена проблема "конфиденциальности". Контент связи между клиентом и сервером не будет передан третьей стороне во время передачи.
Кандидат: после того, как клиент получит цифровой сертификат от ЦС, он может получить открытый ключ сервера.
Кандидат: клиент генерирует ключ как секретный ключ «симметричного шифрования» и отправляет его на сервер с «шифрованием с открытым ключом» сервера.
Кандидат: сервер расшифровывает данные клиента с помощью собственного «закрытого ключа» для получения симметричного ключа шифрования.
Кандидат: клиент и сервер могут спокойно отправлять и получать сообщения, используя «симметричный ключ шифрования».
интервьюер:понял
Обратите внимание на мой публичный аккаунт WeChat【Java3y】Давайте поговорим о другом!
[Онлайн-интервьюер + написание Java-проектов с нуля]Непрерывное высокоинтенсивное обновление! попросить звезду
Оригинал это не просто! ! Проси три! !