Интервьюер спросил меня о HTTP, и я действительно

задняя часть HTTP Сетевой протокол
Интервьюер спросил меня о HTTP, и я действительно

Эта статья участвует в "Сетевой протокол должен знать должен знать"Требуют документов

интервьюер:Хотите сегодня поговорить о 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-проектов с нуля]Непрерывное высокоинтенсивное обновление! попросить звезду

Оригинал это не просто! ! Проси три! !