Интервью HTTP, 99% интервьюеров любят задавать эти вопросы

задняя часть HTTP

Разница между 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.

Ссылка на статью:

What is a TLS handshake?

Recursive and Iterative DNS Queries

Рекурсивный запрос DNS и итеративный запрос

Трехстороннее рукопожатие TCP и процесс четырехсторонней волны

HTTP/1.0 AND 1.1, WHAT ARE THE DIFFERENCES?

TCP Connection Termination

Transmission_Control_Protocol

SYN

TCP 3-Way Handshake (SYN, SYN-ACK,ACK)

Каковы основные улучшения HTTP/2 по сравнению с 1.0?

TCP vs UDP: What's the Difference?

7-уровневая модель компьютерной сети

Общие вопросы на собеседовании по HTTP