мы сказали раньшеЗнание CDN, также анализируется путем захвата пакетовПроцесс установления соединения в TCP. Сегодня поговорим о протоколе прикладного уровняHTTP/HTTPS
; Это протокол, с которым разработчики приложений имеют дело дольше всего в своей повседневной жизни. Но знаете ли вы его на самом деле?
Сегодня мы не будем говоритьHTTP协议
Несколько методов запроса, в основном представляют весь процесс отправки данных через HTTP и HTTPS.
структура сообщения
Помните процесс DNS, о котором мы говорили ранее? Мы получили IP-адрес сервера через DNS, а затем завершили установление соединения между браузером и сервером приложений по протоколу TCP. Протокол HTTP построен поверх протокола TCP (протокол верхнего уровня должен зависеть от протокола нижнего уровня).После установления соединения коммуникация начинается естественным образом. Так какой же формат общения?
Глядя на картинку выше, формат HTTP-запроса и ответа в основном одинаков. Поговорим отдельно.
засообщение запроса, состоит из трех частей: строки запроса, заголовка запроса и запрашиваемого тела, так называемая строка запроса:POST / HTTP/1.1
эта часть. Далее идет заголовок запроса, который мы часто называем HTTP-заголовком, а содержимое сразу после разрыва строки — это запрошенное тело, которое является параметром, отправляемым приложению.
заответное сообщение, также состоит из трех частей: строки состояния, заголовка ответа и тела ответа; строка ответа предназначена для обозначения результата этого запроса. В основном это: 20X, 30X, 40X, 50X Статус коды этих диапазонов, нужно запомнить. Самые важные вещи в заголовке ответа связаны с кешированием.Эта часть контента будет знать поведение кеширования браузеров, CDN и других кешей и должна иметь определенное понимание; конечная сущность - это желаемая структура вашего запроса, такие как: HTML, Json и т. д.
процесс передачи
После того, как сообщение построено, как отправить его на передачу? То, что мы видим на картинке выше, является строковым содержимым. HTTP сам по себе не может выполнять передачу по сети. Он должен полагаться на соединение, установленное базовым протоколом TCP для отправки данных. Следовательно, он фактически передает эти сконструированные строки в базовый TCP.Что касается того, как передается TCP, вы можете увидеть предыдущую статью, которая не будет здесь расширяться.
После того, как WebService получит данные, он обработает данные и передаст их серверу приложений, который, естественно, принимает запрошенное тело в качестве входных данных, а затем генерирует выходные данные по мере необходимости. Поведение вывода контролируется некоторой информацией в заголовке запроса, такой как: формат (Content-Type), кодировка (Accept-Charset) и т. д. Результирующий вывод также будет везде обработан в соответствии с заголовками ответов.
Видя это, заметили ли вы несколько проблем: HTTP опирается на базовое TCP-соединение, то есть для каждого HTTP требуется три рукопожатия. Будет ли эффективность очень низкой? Этот метод всегда требует от браузера активной инициации ссылки, а сервер бессилен что-то активно протолкнуть;
Для вышеуказанных проблем,HTTP2.0
Соглашение родилось, конечно, вышеперечисленные проблемы вHTTP1.1
Времена также имеют некоторые решения.HTTP2.0
Это в основном решает проблему сжатия заголовка протокола и передачи содержимого того же значения, занимая меньшую полосу пропускания и более высокую скорость; заменив вышеуказанный метод односторонней связи на метод двоичного потока, сервер имеет возможность активно передавать данные; канал поддерживает передачу нескольких потоков данных.
оHTTP2.0
Содержание — это не то, что в основном хочет сказать текст, вы сами можете это понять. в следующий разосновная часть,оHTTPS
Объяснение того, почему это безопасно и как его зашифровать. Эта часть содержания является важным контрольным пунктом интервью.
Почему HTTPS надежен
В настоящее время крупные веб-сайты в основном используют протокол HTTPS, так какое же это имеет отношение к HTTP? На самом деле это уровень безопасности HTTP плюс TLS (SSL), который вместе называется HTTPS. Почему безопасно обрабатывать данные с помощью этого слоя?
Это очень просто, если вы хотите быть в безопасности, вы должны зашифровать его. Способ шифрования теперь не что иное, как:对称加密
а также非对称加密
.
Симметричное шифрование:Один и тот же ключ используется для шифрования и дешифрования, поэтому ключ не должен быть потерян при шифровании данных таким способом.
Асимметричное шифрование:Есть два ключа, закрытый ключ и открытый ключ. Данные, зашифрованные закрытым ключом, должны быть расшифрованы открытым ключом, и наоборот.
цена безопасности
Похоже, что асимметричное шифрование очень безопасно. Однако симметричное шифрование очень эффективно. HTTPS представляет собой комбинацию этих двух методов шифрования для обеспечения безопасности всего процесса передачи. Давайте посмотрим, как этот процесс выполняется дальше.
Симметричное шифрование
Давайте сначала посмотрим, используется ли только HTTPS对称加密
, Может ли это удовлетворить потребности в безопасности? Поскольку в данном случае ключ только один, как сервер передает этот ключ клиенту? Онлайн-передача обязательно протечет.
Поэтому одно только симметричное шифрование не может удовлетворить потребности. Кажется, это другой путь.
Асимметричное шифрование
Данные шифруются закрытым ключом асимметричного шифрования и отправляются клиенту. Клиент расшифровывает данные с помощью открытого ключа. Похоже, проблем нет.
Но здесь есть проблема, потому что данные, отправленные сервером, являются используемым закрытым ключом, а поскольку открытый ключ является открытым, это эквивалентно отсутствию шифрования. Каждый может это увидеть. И процесс открытого ключа, отправленного сервером, также может быть подделан.Как вы узнаете, что открытый ключ, который вы получили, был передан вам сервером? Как и многие мошеннические компании сейчас, они выглядят так, как будто они есть, но на самом деле это компания по производству кожаных сумок.
честность третьей стороны
Для решения вышеуказанных проблем используется так называемыйCA
Учреждение, как оно решает эту проблему доверия? Он помещает открытый ключ сервера вCA证书
Он передается клиенту (здесь имеется в виду браузер), и браузер проверяет, является ли сертификат истинным и действительным после его получения, поскольку организация ЦС ограничена и отслеживаема. Как и в случае с вашим паспортом, вы можете отличить подлинность от подделки, поэтому сертификат ЦС доказывает, что он действителен, а открытый ключ, содержащийся в сертификате ЦС, естественным образом подтверждает вашу личность.
Весь процесс кажется хлопотным? Нет никакого способа быть в безопасности, и цена того стоит. Вот почему мы часто говорим, что HTTPS немного менее эффективен, чем HTTP.
Режим работы
После понимания вышеизложенного давайте посмотрим, как работает HTTPS?
- Клиент инициирует запрос https, включая информацию о версии, список кандидатов на набор шифров, список кандидатов на алгоритм сжатия, случайное число random_c, поля расширения и другую информацию. На данный момент процесс представлен в виде простого текста.
- Затем сервер ответит.В соответствии с информацией об алгоритме, наборе и т. д., поддерживаемом клиентом, сервер выбирает один и сообщает клиенту, что мы будем использовать это.В то же время он также возвращает случайное число random_s, которое полезно для согласования ключа позже.
- Сервер отвечает клиенту ссылкой на сертификат, используемый для обмена ключом.
- Клиент проверяет полученные данные, сначала вытаскивает сертификат, а потом проверяет разные индикаторы, если он неправильный, то увидит браузер, напоминающий о небезопасности.
Если проверка проходит,随机数字 Pre-master
и зашифровать его с помощью открытого ключа сертификата (Асимметричное шифрование), отправленный на сервер.
-
На этом этапе у клиента есть все содержимое для создания сертификата, и он вычисляет согласованный ключ (Симметричный ключ), а затем указать серверу использовать согласованный ключ связи и алгоритм шифрования для зашифрованной связи в будущем. Затем часть данных будет зашифрована с помощью согласованного ключа и отправлена на сервер, чтобы проверить, работает ли он.
-
На предыдущем шаге клиент отправляет три запроса. Сначала сервер получит
Pre-master
Расшифруйте его своим закрытым ключом. Затем проверьте данные, отправленные клиентом, используя симметричное шифрование.Если это пройдет, он также сообщит клиенту, что последующие сообщения зашифрованы с использованием согласованного ключа и алгоритма. -
И сервер также будет использовать симметричное шифрование для создания части зашифрованной информации, которую клиент может попробовать (Симметричный ключ).
-
Расшифровка выполняется клиентом корректно с использованием симметричного ключа. Рукопожатие закончилось. Начните использовать симметричные ключи для передачи данных.
Суммировать
Чтобы не усложнять статью, я привожу только самую простую одностороннюю аутентификацию. Этот вид безопасности не самый высокий, и его достаточно в повседневной жизни.
В этой статье рассказывается о том, почему только симметричное шифрование не может справиться с этим из исходного кода; весь процесс развития HTTPS шаг за шагом.
Во-первых, ради эффективности весь процесс шифруется асимметричным шифрованием только один раз.Pre-master
;
Во-вторых, клиент и сервер используют симметричное шифрование для проверки достоверности ключа для предотвращения атак типа «человек посередине»;
Наконец, также было сказано, почему весь процесс требует участия институтов ЦА.
Ссылка на ссылку:
- вооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо))
- Вууху. Руан Ифэн.com/blog/2014/0…
Личный общедоступный номер:dayuTalk
Контактный адрес электронной почты: dayugog@gmail.com
Гитхаб:github.com/helei112g