Разница между HTTP и HTTPS
HTTP — это超文本传输协议(Hypertext Transfer Protocol)
,HTTP — это соглашение и спецификация для передачи текста, изображений, аудио, видео и других гипертекстовых данных между двумя точками в компьютерном мире.
Основное содержание HTTP разделено на три части:Протокол передачи гипертекста.
- Гипертекст — это не просто текст, он также может передавать изображения, аудио, видео и даже щелкать по тексту или изображениям, чтобы
超链接
Прыжок. - Вышеупомянутые концепции можно в совокупности назвать данными, а передача — это процесс, в котором данные должны быть переданы от одной конечной системы к другой через ряд физических носителей. Обычно мы называем сторону, передающую пакет данных,
请求方
, сторона, получившая пакет двоичных данных, называется应答方
. - Протокол относится к некоторым спецификациям для передачи и управления информацией в сети (включая Интернет). Точно так же, как люди должны следовать определенным правилам для общения друг с другом, взаимное общение между компьютерами должно подчиняться определенным правилам, которые называются протоколами, но это всего лишь сетевые протоколы.
Говоря о HTTP, мы должны упомянуть сетевую модель TCP/IP, которая обычно представляет собой пятиуровневую модель. Как показано ниже
Но его также можно разделить на четыре слоя, т.Представлять как канальный уровень, так и физический уровень как уровень сетевого интерфейса.
Другая — семиуровневая сетевая модель OSI, которая добавляется поверх пятиуровневого протокола.уровень представления и уровень сеанса
Полное название HTTPSHypertext Transfer Protocol Secure
, из названия видно, что HTTPS имеет более безопасную концепцию, чем HTTPS.На самом деле, HTTPS не является новым протоколом прикладного уровня, на самом деле это комбинация протокола HTTP + TLS/SSL и гарантии безопасности. TLS/SSL делает.
Это,HTTPS — это HTTP со слоем SSL.
Итак, в чем основное различие между HTTP и HTTPS?
- В самом простом случае протокол HTTP в адресной строке
http://
, а протокол HTTPS в адресной строкеhttps://
начало
http://www.cxuanblog.com/
https://www.cxuanblog.com/
- HTTP — это ненадежно зашифрованный протокол, процесс его передачи легко проследить злоумышленникам, данные легко украсть, а отправителя и получателя легко подделать; в то время как HTTPS — безопасный протокол, он проходитАлгоритмы обмена ключами - Алгоритмы подписи - Алгоритмы симметричного шифрования - Алгоритмы дайджестаможет решить вышеуказанные проблемы.
- Порт по умолчанию для HTTP — 80, а порт по умолчанию для HTTPS — 443.
Разница между получением и публикацией HTTP
HTTP включает в себя множество методов,Get и Post — два наиболее часто используемых метода в HTTP., в основном 99% методов HTTP используют метод Get и метод Post, поэтому нам необходимо иметь более глубокое понимание этих двух методов.
- Метод get обычно используется для запросов, например, когда вы вводите в адресной строке браузера
www.cxuanblog.com
По сути, отправляется гет-запрос, его основная функция — запросить у сервера возврат ресурсов, а метод поста обычно используется для<form> 表单
Отправка эквивалентна отправке информации на сервер и ожидании ответа сервера, получение эквивалентно операции извлечения/вытягивания, а отправка эквивалентна операции проталкивания/проталкивания. - Метод get не является безопасным, поскольку при отправке запроса параметры вашего запроса будут прописаны за URL-адресом, что позволяет злоумышленникам легко его украсть, нанеся ущерб и подделав вашу информацию;
/test/demo_form.asp?name1=value1&name2=value2
Метод post помещает параметры в тело запроса, невидимое для пользователя.
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
-
URL-адрес запроса на получение имеет ограничение по длине, в то время как почтовый запрос будет помещать параметры и значения в тело сообщения, и нет требований к длине данных.
-
Запросы Get будут активно кэшироваться браузером, а post — нет, если только они не установлены вручную.
-
запросы на получение повторяются в браузере
回退/前进
Действие безвредно, и действие публикации снова отправляет запрос формы. -
Запрос get сгенерирует один TCP-пакет в процессе отправки, post — два TCP-пакета в процессе отправки. Для запроса на получение браузер отправляет HTTP-заголовок и данные вместе, а сервер отвечает 200 (возвращая данные); для отправки браузер сначала отправляет заголовок, сервер отвечает 100 continue, браузер отправляет данные, и сервер отвечает 200 ок (возврат данных).
Что такое протокол без сохранения состояния, является ли HTTP протоколом без сохранения состояния и как его решить
无状态协议(Stateless Protocol)
означаетБраузеры не имеют памяти для обработки транзакций. Например, клиент закрывает браузер после запроса на получение веб-страницы, затем снова запускает браузер и входит на веб-сайт, но сервер не знает, что клиент однажды закрыл браузер.
HTTP — это протокол без сохранения состояния, у которого нет памяти о пользовательских операциях. Большинство пользователей могут не поверить в это, и ему может показаться, что каждый раз, когда он вводит имя пользователя и пароль для входа на веб-сайт, он не будет повторно вводить имя пользователя и пароль при следующем входе в систему. На самом деле это не то, что делает HTTP, это функция, называемая小甜饼(Cookie)
Механизмы. Это позволяет браузерам иметь记忆
способность.
Если ваш браузер разрешает файлы cookie, узнайте, какchrome://settings/content/cookies
Это означает, что ваша микросхема памяти включена... Когда вы хотите, чтобы сервер отправил запрос, сервер отправит вам сообщение аутентификации. Когда сервер получает запрос в первый раз, он открывает пространство сеанса (создается сеанс объект), одновременно сгенерируйте sessionId и отправьте ответ с запросом на установку файла cookie клиенту с помощью команды **Set-Cookie: JSESSIONID=XXXXXXX ** в заголовке ответа; информация о файле cookie **JSESSIONID= ХХХХХХХ ** установлен, а время истечения куки - окончание сеанса браузера;
Затем каждый раз, когда клиент отправляет запрос на тот же веб-сайт, заголовок запроса будет содержать информацию о файлах cookie (включая sessionId), а затем сервер считывает информацию о файлах cookie в заголовке запроса и получает значение с именем JSESSIONID и получает на этот раз SessionId запроса. Таким образом, ваш браузер имеет возможность запоминать.
Другой способ — использовать механизм JWT, который также позволяет вашему браузеру иметь память. В отличие от файлов cookie, JWT — это информация, хранящаяся на стороне клиента, и она широко используется в ситуациях единого входа. JWT имеет две характеристики
- Информация о файлах cookie JWT хранится в
客户端
, а не в памяти сервера. То есть JWT может быть проверен непосредственно локально.После проверки токен будет отправлен на сервер вместе с запросом в сеансе.Таким образом, ресурсы сервера могут быть сохранены, а токен может быть проверен несколько раз. . - JWT поддерживает междоменную аутентификацию, файлы cookie можно использовать только в
单个节点的域
или его子域
эффективен в. Если они попытаются получить доступ через третий узел, они будут забанены. Использование JWT может решить эту проблему, используя JWT может пройти多个节点
Выполните аутентификацию пользователя, о чем мы часто говорим跨域认证
.
Разница между UDP и TCP
И TCP, и UDP расположены на транспортном уровне модели компьютерной сети и отвечают за транспортировку данных, генерируемых прикладным уровнем. Поговорим о характеристиках TCP и UDP и их различиях
что такое УДП
Полное название UDPUser Datagram Protocol
, протокол пользовательских дейтаграмм. он не нуждается в так называемом握手
операции, тем самым ускоряя связь, позволяя другим хостам в сети передавать данные до того, как получатель согласится на связь.
Дейтаграмма — это единица передачи, связанная с сетью с коммутацией пакетов.
Основные особенности UDP:
- UDP может поддерживать приложения с интенсивным использованием полосы пропускания, допускающие потерю пакетов.
- УДП Низкозадержка Характеристики
- UDP способен отправлять большое количество пакетов
- UDP позволяет осуществлять поиск DNS, который является протоколом прикладного уровня, построенным поверх UDP.
что такое птс
Полное название TCPTransmission Control Protocol
, Протокол управления передачей. Это может помочь вам определить, какие компьютеры подключены к Интернету и передачи данных между ними. TCP-соединение устанавливается через трехстороннее рукопожатие, которое представляет собой процесс инициации и подтверждения TCP-соединения. Как только соединение установлено, данные могут быть отправлены, а когда передача данных завершена, соединение разрывается путем замыкания виртуального канала.
Основными особенностями TCP являются
- TCP обеспечивает установку соединений и отправку пакетов
- TCP поддерживает механизм повторной передачи ошибок
- TCP поддерживает управление перегрузкой и может задерживать отправку в случае перегрузки сети.
- TCP может предоставлять контрольные суммы ошибок для идентификации вредоносных пакетов.
Разница между TCP и UDP
Ниже перечислены некоторые различия между TCP и UDP, чтобы вы могли их понять и запомнить.
TCP | UDP |
---|---|
TCP — это протокол, ориентированный на соединение. | UDP — это протокол без установления соединения. |
TCP должен установить соединение перед отправкой данных, а затем отправить данные | UDP может отправлять большие объемы данных напрямую, без установления соединения |
TCP переставляет пакеты в определенном порядке | Пакеты UDP не имеют фиксированного порядка, все пакеты независимы друг от друга. |
Скорость передачи TCP относительно низкая | UDP-передача будет быстрее |
Байты заголовка TCP имеют 20 байтов | Для байтов заголовка UDP требуется всего 8 байтов. |
TCP является тяжеловесным и требует трехэтапного рукопожатия для установления соединения перед отправкой любых пользовательских данных. | UDP легкий. Отсутствует отслеживание подключений, упорядоченность сообщений и т.д. |
TCP выполняет проверку ошибок и может выполнять восстановление после ошибок. | UDP также проверяет ошибки, но отбрасывает плохие пакеты. |
TCP имеет подтверждение отправки | UDP не отправляет подтверждение |
TCP использует протоколы рукопожатия, такие как SYN, SYN-ACK, ACK. | нет протокола рукопожатия |
TCP надежен, поскольку обеспечивает доставку данных на маршрутизаторы. | Доставка данных в пункт назначения не гарантируется в UDP. |
Трехстороннее рукопожатие TCP и четырехсторонняя волна
Трехстороннее рукопожатие TCP и четырехсторонняя волна также являются популярными тестовыми площадками для вопросов на собеседовании, которые соответствуют процессам подключения и освобождения TCP соответственно. Давайте кратко разберемся в этих двух процессах
Трехстороннее рукопожатие TCP
Прежде чем понять конкретный процесс, нам нужно понять несколько концепций.
тип сообщения | описывать |
---|---|
SYN | Это сообщение используется для инициализации и установления соединения. |
ACK | Помогите другой стороне подтвердить полученное сообщение SYN |
SYN-ACK | Локальные сообщения SYN и более ранние пакеты ACK |
FIN | отключить |
-
SYN: его полное имя
Synchronize Sequence Numbers
, порядковый номер синхронизации. Сигнал квитирования, используемый протоколом TCP/IP для установления соединения. Сигнал, который отправляется первым при установлении TCP-соединения между клиентом и сервером. Когда клиент получает сообщение SYN, он генерирует случайное значение X в своем собственном сегменте. -
SYN-ACK: после того, как сервер получает SYN, он открывает клиентское соединение и отправляет в ответ SYN-ACK. Номер подтверждения устанавливается на единицу больше полученного порядкового номера, т. е. X + 1, а порядковый номер, выбранный сервером для пакета, представляет собой другое случайное число Y.
-
ПОДТВЕРЖДЕНИЕ:
Acknowledge character
, Символ подтверждения, указывающий, что отправленные данные были подтверждены для получения без ошибок. Наконец, клиент отправляет ACK на сервер. Порядковый номер устанавливается равным полученному значению подтверждения, которое равно Y + 1.
Если мы возьмем реальную жизнь в качестве примера,
Сяо Мин - Клиент Сяохун - Сервер
- Сяомин позвонил Сяохуну, и после соединения Сяомин сказал:эй, ты меня слышишь, что эквивалентно установлению соединения.
- Сяохун ответил Сяомину,Ты слышишь меня, что эквивалентно запросу-ответу.
- После того, как Сяо Мин услышал ответ Сяохуна,В ПОРЯДКЕ, что эквивалентно подтверждению соединения. После этого Сяомин и Сяохун могут разговаривать/обмениваться информацией.
ПТС махнул четыре раза
Используя четыре волны на этапе завершения соединения, каждый конец соединения завершается независимо. Ниже мы опишем этот процесс.
- Сначала клиентское приложение решает разорвать соединение (здесь сервер также может выбрать разъединение). Это заставляет клиента отправить FIN на сервер и ввести
FIN_WAIT_1
государство. Когда клиент находится в состоянии FIN_WAIT_1, он ожидает ответа ACK от сервера. - Затем на втором этапе, когда сервер получает сообщение FIN, сервер немедленно отправит клиенту сообщение подтверждения ACK.
- Когда клиент получает ответ ACK, отправленный сервером, клиент вводит
FIN_WAIT_2
состояние, затем дождитесьFIN
Информация - После того, как сервер отправит подтверждающее сообщение ACK, он отправит клиенту сообщение FIN в течение определенного периода времени (после того, как может быть выполнено отключение), информируя клиента о том, что отключение может быть выполнено.
- Когда клиент получает сообщение FIN, отправленное с сервера, клиент переходит из состояния FIN_WAIT_2 в состояние
TIME_WAIT
государство. Клиенту в состоянии TIME_WAIT разрешено повторно отправлять ACK на сервер, чтобы предотвратить потерю информации. Время, которое клиент проводит в состоянии TIME_WAIT, зависит от его реализации.После ожидания в течение определенного периода времени соединение закрывается, и все ресурсы на клиенте (включая номера портов и данные буфера) освобождаются.
Или вы можете использовать пример вызова выше, чтобы описать
- Сяомин сказал Сяохуну: «Я закончил говорить обо всем и должен повесить трубку».
- Xiaohong сказал, получил, мне еще есть что сказать.
- Через несколько секунд Сяохун тоже закончил говорить, Сяохун сказал: Я закончил говорить, теперь вы можете повесить трубку.
- После того, как Сяо Мин получил сообщение, он повесил трубку после некоторого ожидания.
Кратко опишите разницу между HTTP1.0/1.1/2.0
HTTP 1.0
HTTP 1.0 был представлен в 1996 году, и с тех пор его популярность стала феноменальной.
- HTTP 1.0 обеспечивает только самую простую аутентификацию, а имя пользователя и пароль в настоящее время не шифруются, поэтому их легко отследить.
- HTTP 1.0 предназначен для использования коротких ссылок, то есть каждый раз, когда данные отправляются, они будут проходить через трехстороннее рукопожатие TCP и четырехстороннюю волну, что неэффективно.
- HTTP 1.0 использует только If-Modified-Since и Expires в заголовке в качестве критерия аннулирования кеша.
- HTTP 1.0 не поддерживает возобновление, то есть каждый раз будут отправляться все страницы и данные.
- HTTP 1.0 считает, что каждый компьютер может быть привязан только к одному IP-адресу, поэтому URL-адрес в сообщении запроса не передает имя хоста (имя хоста).
HTTP 1.1
HTTP 1.1 появился через три года после разработки HTTP 1.0, в 1999 году в него были внесены следующие изменения
- HTTP 1.1 использует дайджест-алгоритм для аутентификации.
- HTTP 1.1 по умолчанию использует длинное соединение. Длинное соединение означает, что данные могут передаваться несколько раз только с одним учреждением. После завершения передачи соединение нужно разорвать только один раз. Продолжительность длительного соединения может быть передана в заголовке запроса.
keep-alive
устанавливать - В HTTP 1.1 добавлены заголовки управления кешем, такие как E-tag, If-Unmodified-Since, If-Match, If-None-Match, для управления аннулированием кеша.
- HTTP 1.1 поддерживает возобновляемую загрузку с помощью
Range
реализовать. - HTTP 1.1 использует виртуальную сеть, в которой несколько виртуальных хостов (многосетевых веб-серверов) могут существовать на физическом сервере, и они имеют общий IP-адрес.
HTTP 2.0
HTTP 2.0 — это стандарт, разработанный в 2015 году, и его основные изменения заключаются в следующем.
-
头部压缩
, так как часто появляется HTTP 1.1User-Agent, Cookie, Accept, Сервер, ДиапазонДругие поля могут занимать сотни или даже тысячи байтов, тогда как Body часто занимает всего несколько десятков байт, поэтому заголовок необъективен. Использование HTTP 2.0HPACK
алгоритм сжатия. -
二进制格式
, HTTP 2.0 использует двоичный формат, более близкий к TCP/IP, и отказывается от кода ASCII для повышения эффективности синтаксического анализа. -
强化安全
, Поскольку безопасность стала главным приоритетом, HTTP2.0 обычно работает на HTTPS. -
多路复用
, то есть каждый запрос используется для совместного использования соединения. Запрос соответствует идентификатору, поэтому в соединении может быть несколько запросов.
Расскажите, пожалуйста, об общих заголовках HTTP-запросов.
Вопрос относительно открытый, т.к. заголовков HTTP-запросов много, вот лишь несколько примеров, подробности в другой моей статье.
Tickets.WeChat.QQ.com/Yes/XZ ZR0945i…
Существует четыре типа заголовков HTTP:通用标头
,实体标头
,请求标头
,响应标头
. Представьте их отдельно
Общий заголовок
Есть три основных общих заголовка, а именноDate
,Cache-Control
иConnection
Date
Date — это общий заголовок, он может появляться в заголовках запросов и ответов, его основное представление выглядит следующим образом.
Date: Wed, 21 Oct 2015 07:28:00 GMT
Это означает среднее время по Гринвичу, которое на восемь часов медленнее пекинского времени.
Cache-Control
Cache-Control — это общий заголовок, который может отображаться в请求标头
и响应标头
Среди них есть много типов Cache-Control.Хотя это общий заголовок, есть некоторые особенности, которые есть в заголовке запроса, и некоторые, которые являются только заголовком ответа. Основные категории可缓存性
,阈值性
,重新验证并重新加载
и其他特性
Connection
Connection решает, закрывать ли сетевое соединение после завершения текущей транзакции (одно трехстороннее рукопожатие и четыре волны). Существует два вида подключения, один из них持久性连接
, то есть сетевое соединение не закрывается после завершения транзакции
Connection: keep-alive
Другой非持久性连接
, то есть закрыть сетевое соединение после завершения транзакции
Connection: close
Другие распространенные заголовки HTTP1.1 следующие:
заголовок сущности
Заголовки объектов — это заголовки HTTP, описывающие содержимое тела сообщения. Заголовки объектов используются в HTTP-запросах и ответах. головаContent-Length
,Content-Language
,Content-Encoding
является главой организации.
-
Заголовок объекта Content-Length указывает размер тела объекта в байтах, отправляемого получателю.
-
Заголовок сущности Content-Language описывает языки, которые может принимать клиент или сервер.
-
Content-Encoding Это еще один проблемный атрибут, этот заголовок объекта используется для сжатия типа мультимедиа. Content-Encoding указывает, какая кодировка применяется к объекту.
Общие кодировки контента:gzip, сжать, выкачать, личность, этот атрибут можно использовать в пакетах запросов и ответных пакетах.
Accept-Encoding: gzip, deflate //请求头
Content-Encoding: gzip //响应头
Вот несколько полей заголовок сущности
Запросить заголовки
Host
Заголовок запроса хоста указывает доменное имя сервера (для виртуальных хостов) и (необязательно) номер TCP-порта, на котором сервер прослушивает. Если номер порта не указан, порт по умолчанию для запрошенной службы будет использоваться автоматически (например, при запросе URL-адреса HTTP будет автоматически использоваться порт 80).
Host: developer.mozilla.org
вышеAccpet
,Accept-Language
,Accept-Encoding
Оба являются заголовками запроса, которые относятся к согласованию контента.
Referer
Атрибут HTTP Referer является частью заголовка запроса.Когда браузер отправляет запрос на веб-сервер, он обычно приносит Referer, чтобы сообщить серверу, с какой страницы связана веб-страница, чтобы сервер мог получить некоторую информацию для обработки.
Referer: https://developer.mozilla.org/testpage.html
If-Modified-Since
If-Modified-Since обычно используется в сочетании с If-None-Match, If-Modified-Since используется для подтверждения достоверности локального ресурса, принадлежащего прокси или клиенту. Получите дату и время обновления ресурса, подтвердив поле заголовкаLast-Modified
Чтобы убедиться.
На народном языке, еслиLast-Modified
После обновления ресурса сервера сервер ответит 200, еслиLast-Modified
Если ресурс с тех пор не обновлялся, возвращается 304.
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match
Заголовок HTTP-запроса If-None-Match делает запрос условным. Для методов GET и HEAD, только если на сервере нет соответствующихETag
, сервер отправит обратно запрошенный ресурс со статусом 200. Для других методов, только если окончательный существующий ресурсETag
Когда не соответствует любому из указанных значений, он будет обработать запрос.
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Accept
HTTP-заголовок Accept-Request рекламирует типы MIME, понятные клиенту.
Accept-Charset
Атрибут accept-charset указывает набор символов, принятый сервером для обработки данных формы.
Обычно используются следующие наборы символов: UTF-8 — кодировка символов Unicode, ISO-8859-1 — кодировка символов латинского алфавита.
Accept-Language
Поле заголовка Accept-Language используется для информирования сервера о наборе естественного языка, который может обрабатывать пользовательский агент (ссылаясь на китайский или английский и т. д.), и об относительном приоритете набора естественного языка. Можно указать сразу несколько наборов естественных языков.
Вероятно, мы представим эти типы заголовков запросов. Позже будет статья, в которой подробно будут рассмотрены все заголовки ответов. Ниже приводится сводка заголовков ответов на основе HTTP 1.1.
заголовки ответа
Access-Control-Allow-Origin
Возвращаемый заголовок HTTP может иметь Access-Control-Allow-Origin,Access-Control-Allow-Origin
Указание источника указывает браузеру разрешить доступ к ресурсам из этого источника.
Keep-Alive
Keep-Alive представляет время существования непостоянного соединения Connection, которое можно указать.
Server
Заголовок сервера содержит информацию о программном обеспечении, используемом исходным сервером для обработки запроса.
Следует избегать чрезмерно подробных и подробных значений сервера, так как они могут раскрывать детали внутренней реализации, что может облегчить злоумышленникам обнаружение и использование известных брешей в безопасности. Например, написано следующее
Server: Apache/2.4.1 (Unix)
Set-Cookie
Set-Cookie используется сервером для отправки идентификатора сеанса клиенту.
Transfer-Encoding
Поле заголовка Transfer-Encoding указывает метод кодирования, используемый при передаче тела сообщения.
Метод кодирования передачи HTTP/1.1 действителен только для группового кодирования передачи.
X-Frame-Options
Поля заголовка HTTP являются саморасширяемыми. Поэтому в приложении веб-серверов и браузеров будут появляться различные нестандартные поля заголовков.
поле заголовкаX-Frame-Options
Он относится к заголовку ответа HTTP и используется для управления отображением содержимого веб-сайта в теге Frame других веб-сайтов. Его основная цель — предотвратить атаки кликджекинга.
Ниже приведена сводка заголовков ответа на основе HTTP 1.1.
Что происходит, когда вы вводите URL-адрес в адресную строку
Этот вопрос также часто задают на собеседованиях. Итак, давайте обсудим процесс с момента ввода URL до ответа.
- Во-первых, вам нужно ввести адрес, который вы хотите посетить, по URL-адресу в вашем браузере, как показано ниже.
Вы не должны иметь к нему доступ, верно?
- Затем браузер проверит, кэшируется ли доменное имя локальным DNS в соответствии с введенным вами URL-адресом.Разные браузеры имеют разные настройки DNS.Если браузер кэширует URL-адрес, который вы хотите посетить, он напрямую вернет IP-адрес. Если ваш URL-адрес не кэширован, браузер инициирует системный вызов для запроса машины.
hosts
Имеет ли файл IP-адрес конфигурации, если он найден, вернитесь напрямую. Если он не найден, выполняется DNS-запрос к сети.
Прежде всего, давайте посмотрим, что такое DNS Существует два способа идентификации хостов в Интернете.
主机名
иIP 地址
. Мы, люди, любим запоминать имена по именам, но маршрутизация в коммуникационных каналах предпочитает иерархические IP-адреса фиксированной длины. Таким образом, существует потребность в службе перевода, которая может преобразовывать имена хостов в IP-адреса, предоставляемые DNS. Полное имя DNSDomain Name System
Система доменных имен. DNS — это распределенная база данных, реализованная иерархическими DNS-серверами. DNS работает через UDP, используя порт 53.
DNS — это иерархическая база данных, и ее основная иерархия выглядит следующим образом.
Как правило, иерархическая структура серверов доменных имен в основном состоит из трех вышеперечисленных.Кроме того, существует еще один важный тип DNS-сервера, который本地 DNS 服务器(local DNS server)
. Строго говоря, локальный DNS-сервер не принадлежит к вышеуказанной иерархии, но локальный DNS-сервер имеет решающее значение. каждыйISP(Internet Service Provider)
Например, у частного интернет-провайдера или институционального интернет-провайдера есть локальный DNS-сервер. Когда хост подключается к интернет-провайдеру, интернет-провайдер предоставляет IP-адрес хоста, который имеет IP-адреса одного или нескольких своих локальных DNS-серверов. Получив доступ к сетевому соединению, пользователь может легко определить IP-адрес DNS-сервера. Когда хост делает DNS-запрос, запрос отправляется на локальный DNS-сервер, который действует как прокси и перенаправляет запрос в иерархию DNS-серверов.
Во-первых, запрос запроса сначала найдет локальный DNS-сервер для запроса, включен ли IP-адрес.Если локальный DNS не может запросить целевой IP-адрес, он инициирует DNS-запрос к корневому серверу доменных имен.
Примечание. DNS использует два метода запроса: один
递归查询(Recursive query)
, один迭代查询(Iteration query)
. "Компьютерные сети: нисходящий подход" даже не дает разницы между рекурсивными и итеративными запросами.Я нашел информацию в Интернете и, вероятно, понял ее.Если корневой сервер имен не может сообщить локальному DNS-серверу, к какому серверу имен верхнего уровня обращаться дальше, используется рекурсивный запрос;
Итеративный поиск используется, если корневые серверы имен могут сообщить DNS-серверу, к каким серверам имен верхнего уровня следует обратиться дальше.
После корневого сервера доменных имен -> сервера доменных имен верхнего уровня -> полномочного DNS-сервера полномочный сервер сообщает целевой IP-адрес локального сервера, а затем локальный DNS-сервер сообщает пользователю IP-адрес, к которому необходимо получить доступ. .
- На третьем этапе браузеру необходимо установить TCP-соединение с целевым сервером, и процесс трех рукопожатий см. в ответе выше.
- После установления соединения браузер инициирует целевой сервер.
HTTP-GET
Запрос, включая URL-адрес, по умолчанию использует постоянное соединение после HTTP 1.1, и для многократной передачи данных требуется только одно рукопожатие. - Если целевой сервер представляет собой простую страницу, он вернется напрямую. Однако для некоторых крупных веб-сайтов страница, на которой находится имя хоста, часто не возвращается напрямую, а напрямую перенаправляется. Возвращаемый код состояния не 200, а код перенаправления, начинающийся с 3 в 301, 302. После того, как браузер получит ответ о перенаправлении, он находит адрес перенаправления в элементе Location в ответном сообщении, и браузер может повторно получить доступ к первый шаг. .
- Затем браузер повторно отправляет запрос с новым URL-адресом и возвращает код состояния 200 OK, указывающий, что сервер может ответить на запрос и вернуть сообщение.
Как работает HTTPS
Выше мы описали, как работает HTTP, а теперь поговорим о том, как работает HTTPS. Потому что мы знаем, что HTTPS — это не новый протокол, а
Поэтому мы обсуждаем процесс рукопожатия HTTPS, который на самом деле является процессом рукопожатия SSL/TLS.
TLS — это протокол шифрования, предназначенный для обеспечения безопасности связи в Интернете. Рукопожатие TLS — это процесс инициирования и использования сеанса связи с шифрованием TLS. Во время рукопожатия TLS взаимодействующие стороны в Интернете обмениваются информацией друг с другом, проверяют наборы шифров и обмениваются сеансовыми ключами.
Рукопожатие TLS происходит всякий раз, когда пользователь переходит на определенный веб-сайт через HTTPS и отправляет запрос. В дополнение к этому, рукопожатие TLS также происходит всякий раз, когда любой другой обмен данными использует HTTPS (включая вызовы API и DNS-запросы через HTTPS).
Конкретный процесс рукопожатия TLS зависит от密钥交换算法的类型
и поддерживается обоими密码套件
и разные. мы начинаем сRSA 非对称加密
обсудить этот процесс. Вся блок-схема связи TLS выглядит следующим образом.
- Перед коммуникацией сначала будет выполнено трехстороннее рукопожатие HTTP, а после завершения рукопожатия будет выполнено рукопожатие TLS.
- ClientHello: клиент отправляет сообщение на сервер
hello
сообщение, чтобы инициировать процесс рукопожатия. Это сообщение будет включать поддерживаемые клиентомTLS 版本号(TLS1.0 、TLS1.2、TLS1.3)
, наборы шифров, поддерживаемые клиентом, и строку客户端随机数
. - ServerHello: после того, как клиент отправляет приветственное сообщение, сервер отправляет сообщение, которое включает SSL-сертификат сервера, набор шифров, выбранный сервером, и случайное число, сгенерированное сервером.
- Аутентификация: Центр сертификации клиента будет аутентифицировать SSL-сертификат, а затем отправить
Certificate
Сообщение содержит сертификат открытого ключа. Наконец сервер отправляетServerHelloDone
в видеhello
ответ на запрос. Первая часть фазы рукопожатия заканчивается. -
加密阶段
: после завершения первой фазы рукопожатия клиент отправляетClientKeyExchange
В ответ этот ответ содержитThe premaster secret
Строка ключа, которая представляет собой строку, зашифрованную с использованием указанного выше сертификата открытого ключа. Затем клиент отправитChangeCipherSpec
, скажите серверу расшифровать это с помощью закрытого ключаpremaster secret
строка, затем клиент отправляетFinished
Сообщите серверу, что отправка завершена.
Ключ сеанса на самом деле является открытым ключом, зашифрованным с помощью сертификата открытого ключа.
-
实现了安全的非对称加密
: Затем сервер отправляетChangeCipherSpec
иFinished
Сообщите клиенту, что расшифровка завершена и теперь реализовано асимметричное шифрование RSA.
Ссылка на статью:
Recursive and Iterative DNS Queries
Рекурсивный запрос DNS и итеративный запрос
Трехстороннее рукопожатие TCP и процесс четырехсторонней волны
HTTP/1.0 AND 1.1, WHAT ARE THE DIFFERENCES?
TCP 3-Way Handshake (SYN, SYN-ACK,ACK)
Каковы основные улучшения HTTP/2 по сравнению с 1.0?
TCP vs UDP: What's the Difference?