Предварительное собеседование для проверки и заполнения вакансий — (9) HTTP и HTTPS

опрос
Предварительное собеседование для проверки и заполнения вакансий — (9) HTTP и HTTPS

предисловие

Эта серия изначально была подготовлена ​​для моего собственного интервью, потом я обнаружил, что сортировок становится все больше и больше, почти 120 000 символов, и, наконец, решил поделиться со всеми.

Чтобы поделиться ими и упорядочить их, я потратил много времени, по крайней мере, в три раза больше времени, которое я только использовал.Если вам это нравится, добро пожаловать, чтобы собрать и подписаться на меня!Спасибо!

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

Коллекция:

Предварительные собеседования для проверки пропусков и заполнения вакансий — индекс (набор из 120 000 слов)Содержит более дюжины других статей из серии, которые были написаны до сих пор.Последующие новые статьи с добавленной стоимостью больше не будут добавлять ссылки на каждую статью.Настоятельно рекомендуется ставить лайк и следить за коллекцией!!!!, спасибо!~

Последующий план обновления

Будет продолжать добавлять в будущемШаблоны проектирования,Фронтенд-инжиниринг,процесс проекта, развертывание, замкнутый цикл,Vue часто проверяет очки знанийДождитесь контента. Если вы считаете, что контент хорош, добро пожаловать, собирайте и подписывайтесь на меня! Спасибо!

Спросите инсайдера

В настоящее время я тоже готовлюсь к смене работы, надеюсь, вы и HR дамы порекомендуете надежную.УханьФронтальный пост! Электронная почта: bupabuku@foxmail.com. Спасибо!~

протокол TCP/IP

Прежде чем объяснять HTTP и HTTPS, необходимо заранее объяснить один момент, а именно протокол TCP/IP.

В буквальном смысле можно подумать, что TCP/IP относится как к протоколам TCP, так и к протоколам IP. В реальной жизни это иногда относится к этим двум соглашениям. Однако во многих случаях это просто общий термин для группы протоколов, который необходимо использовать при использовании IP для связи. В частности, IP или ICMP, TCP или UDP, TELNET или FTP и HTTP — все это протоколы TCP/IP. Они тесно связаны с TCP или IP и являются неотъемлемой частью Интернета. Термин TCP/IP в широком смысле относится к этим протоколам и поэтому иногда упоминается какTCP/IP — это набор интернет-протоколов.

При обмене данными через Интернет требуются соответствующие сетевые протоколы. TCP/IP изначально был семейством протоколов, разработанным для использования в Интернете. следовательно,Протокол Интернета — TCP/IP, а TCP/IP — это протокол Интернета.

Более подробно и всесторонне можно посмотретьСтатья для ознакомления с протоколом TCP/IP (сетевой протокол, часть 2)

Протокол TCP (протокол управления передачей): связь между приложениями

TCP следит за тем, чтобы пакеты поступали в правильном порядке, и пытается подтвердить, что содержимое пакетов не изменилось.TCP относится к порту поверх IP-адреса, который позволяет компьютерам предоставлять различные услуги по сети. Некоторые номера портов зарезервированы для различных служб, и эти номера портов хорошо известны.

Служба или демон: на машине, предоставляющей службу, есть программа, которая отслеживает трафик на определенном порту. Например, большая часть трафика электронной почты проходит через порт 25, а HTTP-трафик для wwww — через порт 80.

Когда приложение хочет связаться с другим приложением через TCP, оно отправляет запрос на связь. Этот запрос должен быть отправлен на точный адрес. После «рукопожатия» двух сторон TCP установит полнодуплексную (full-duplex) связь между двумя приложениями, занимая всю линию связи между двумя компьютерами. TCP используется для управления передачей данных из приложения в сеть. TCP отвечает за разбиение данных на IP-пакеты перед их отправкой, а затем их повторную сборку по прибытии.

TCP/IP — это два протокола TCP и IP, которые работают вместе и имеют связь между верхним и нижним уровнями.

TCP отвечает за связь между прикладным программным обеспечением (например, вашим браузером) и сетевым программным обеспечением. IP отвечает за связь между компьютерами.TCP отвечает за разделение данных на IP-пакеты, а IP отвечает за отправку пакетов получателю., IP-маршрутизаторы несут ответственность за их правильную адресацию в зависимости от трафика, ошибок в сети или других параметров, а затем за их повторную сборку по прибытии.

IP-протокол (интернет-протокол): связь между компьютерами

IP-протокол — это механизм связи, который компьютеры используют для идентификации друг друга.Каждый компьютер имеет IP-адрес.Он используется для идентификации этого компьютера в Интернете.IP отвечает за отправку и получение пакетов в Интернете.С помощью IP сообщения (или другие данные) разбиваются на небольшие отдельные пакеты и отправляются между компьютерами через Интернет.IP отвечает за маршрутизацию каждого пакета к месту назначения.

Протокол IP просто позволяет компьютерам отправлять сообщения друг другу, но не проверяет, чтобы сообщения поступали в том порядке, в котором они были отправлены, и не были повреждены (проверяются только критические заголовки). Чтобы обеспечить функцию проверки сообщений, протокол управления передачей TCP разработан непосредственно на протоколе IP.

HTTP-протокол

концепция

Протокол HTTP (протокол передачи гипертекста) — это протокол передачи гипертекста с WWW-сервера в локальный браузер. Это может сделать браузер более эффективным и уменьшить сетевой трафик. Он не только обеспечивает правильную и быструю передачу компьютером гипертекстовых документов, но и определяет, какая часть документа передается и какая часть содержимого отображается первой (например, текст перед графикой).

HTTP — это протокол связи прикладного уровня между клиентским браузером или другой программой и веб-сервером.Вся гипертекстовая информация хранится на веб-сервере в Интернете, и клиент должен передавать гипертекстовую информацию для доступа через протокол HTTP. HTTP содержит команды и информацию о передаче, которые можно использовать не только для доступа в Интернет, но и для связи между другими системами приложений Интернета/интрасети, чтобы реализовать интеграцию гипермедиа-доступа к различным ресурсам приложений.

Адрес веб-сайта, который мы вводим в адресную строку браузера, называется URL (Uniform Resource Locator). Точно так же, как у каждого домохозяйства есть адрес с номером дома, у каждой веб-страницы также есть интернет-адрес. Когда вы вводите URL-адрес в поле адреса вашего браузера или щелкаете гиперссылку, URL-адрес определяет адрес для просмотра.Браузер извлекает код веб-страницы сайта на веб-сервере через протокол передачи гипертекста (HTTP) и переводит его в красивую веб-страницу.

Основы протокола HTTP

  • Клиент всегда инициирует запрос, а сервер отправляет ответ.При применении протокола HTTP один конец должен быть клиентом, а другой конец должен быть сервером. В рамках только одной линии связи определяются роли серверной и клиентской сторон. Протокол HTTP предусматривает, что запрос отправляется от клиента, и, наконец, сервер отвечает на запрос и возвращает.Другими словами, связь должна быть установлена ​​сначала со стороны клиента, и сторона сервера не отправит ответ, пока не будет получен запрос.

  • протокол без сохранения состояния HTTP — это протокол без сохранения состояния. Сам протокол не сохраняет состояние связи между запросом и ответом.То есть на уровне HTTP протокол не сохраняет отправленные запросы или ответы. Это делается для того, чтобы быстрее обрабатывать большое количество транзакций и обеспечивать масштабируемость протокола, а протокол HTTP намеренно разработан таким простым. Однако с непрерывным развитием Интернета многим нашим предприятиям необходимо сохранять состояние связи. Поэтому мы внедрили технологию cookie. С помощью файлов cookie и связи по протоколу HTTP можно управлять состоянием.

  • Статус управления файлами cookieТехнология cookie черезЗаписывайте информацию о файлах cookie в пакеты запросов и ответов, чтобы контролировать состояние клиента.Файл cookie уведомит клиента о сохранении файла cookie в соответствии с информацией поля заголовка Set-Cookie в ответном сообщении, отправленном с сервера. Когда клиент отправит запрос на сервер в следующий раз, клиент автоматически добавит значение cookie в сообщение запроса и отправит его. После того, как сервер найдет файл cookie, отправленный клиентом, он проверит, от какого клиента отправлен запрос на подключение, затем сравнит записи на сервере и, наконец, получит предыдущую информацию о состоянии.

  • URI находит ресурсПротокол HTTP использует URI для поиска ресурсов в Интернете. Именно из-за специфической функции URI можно получить доступ к ресурсам в любом месте Интернета.

  • постоянное соединениеВ начальной версии протокола HTTP TCP-соединение отключалось для каждого HTTP-соединения. Например, при использовании браузера для просмотра HTML-страницы, содержащей несколько изображений, при отправке запроса на доступ к ресурсам HTML-страницы он также запрашивает другие ресурсы, содержащиеся на HTML-странице. Таким образом, каждый запрос будет вызывать бесстрашное установление и разрыв TCP-соединения, увеличивая нагрузку на трафик. Чтобы решить вышеупомянутую проблему TCP-соединения, HTTP/1.1 и некоторые HTTP/1.0 придумали метод постоянного соединения. Он характеризуется,Состояние TCP-соединения сохраняется до тех пор, пока ни одна из сторон не запрашивает явное отключение. Он предназначен для взаимодействия с несколькими запросами и ответами после установления одного TCP-соединения. В HTTP/1.1 все соединения по умолчанию являются постоянными.

  • ТрубопроводПостоянные соединения позволяют конвейеризировать большинство запросов. Предыдущий запрос должен подождать и получить ответ перед отправкой следующего запроса. С появлением конвейерной обработки следующий запрос можно отправить без ожидания. так чтоМожно отправлять несколько запросов параллельно одновременно, вместо того, чтобы ждать ответов один за другим.Например, при запросе HTML-страницы, содержащей несколько изображений, использование постоянного соединения позволяет завершить запрос быстрее, чем подключение по одному. Конвейерная обработка быстрее, чем постоянные соединения. Чем больше количество запросов, тем сильнее будет разница во времени.

Рабочий процесс HTTP

  • 1, адресное разрешение

Чтобы запросить эту страницу с помощью клиентского браузера:localhost.com:8080/index.htmИз него декомпозируется имя протокола, имя хоста, порт, путь к объекту и др. Для нашего адреса результат парсинга такой:

协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm

На этом этапе DNS системы доменных имен требуется для разрешения доменного имени и получения IP-адреса хоста.

  • 2, инкапсулировать пакеты HTTP-запросов

Объедините вышеуказанные части с собственной информацией машины и инкапсулируйте ее в пакет HTTP-запроса.

  • 3. Инкапсулировать его в TCP-пакет и установить TCP-соединение (трехстороннее рукопожатие TCP).

Прежде чем начнется работа HTTP, клиент (веб-браузер) должен сначала установить соединение с сервером через сеть, а соединение завершается через TCP, который вместе с протоколом IP строит Интернет, известный протокол TCP/IP. семьи, поэтому Интернет также известен как сеть TCP/IP. HTTP является протоколом прикладного уровня более высокого уровня, чем TCP.Согласно правилам, только после того, как будет установлен протокол нижнего уровня, может быть выполнено соединение протокола более высокого уровня.Поэтому сначала должно быть установлено соединение TCP.Как правило , номер порта TCP-соединения — 80. Вот порт 8080.

  • 4, клиент отправляет команду запроса на сервер

После установления TCP-соединения клиент отправляет серверу запрос в следующем формате: универсальный идентификатор ресурса (URL), номер версии протокола, за которым следует информация MIME, включая модификаторы запроса, информацию о клиенте и содержимое.

  • 5, сервер отвечает

После того, как сервер получает запрос, он предоставляет соответствующую ответную информацию в виде строки состояния, включая номер версии протокола, код успеха или ошибки, за которым следует информация MIME, включая информацию о сервере, информацию об объекте и возможное содержимое.

Сообщение сущности заключается в том, что после того, как сервер отправит информацию заголовка в браузер, он отправит пустую строку, чтобы указать, что отправка информации заголовка заканчивается здесь, а затем отправит фактический контент, запрошенный пользователем, в описанном формате. данными заголовка ответа Content-Type.

  • 6, сервер закрывает TCP-соединение

В общем, как только сервер возвращает данные запроса клиенту, он закроет TCP-соединение, а затем, если клиент или сервер добавят эту строку кода Connection:keep-alive в свой заголовок, TCP-соединение останется после отправки Open состояние, поэтому клиент может продолжать отправлять запросы по тому же соединению. Поддержание соединения экономит время, необходимое для установления нового соединения для каждого запроса, а также экономит пропускную способность сети.

Структура и заголовки сообщений протокола HTTP

Знания, связанные с этой частью, особенно громоздки и ограничены по объему, поэтому я не буду здесь вдаваться в подробности.Главы 4, 5 и 6 этой статьи очень подробные.

Метод HTTP-запроса

GET: 获取URL指定的资源;
POST:传输实体信息
PUT:上传文件
DELETE:删除文件
HEAD:获取报文首部,与GET相比,不返回报文主体部分
OPTIONS:询问支持的方法
TRACE:追踪请求的路径;
CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信。主要使用SSL和TLS将数据加密后通过网络隧道进行传输。

Коды состояния HTTP

В учебнике для новичков есть полные инструкции.

Недостатки HTTP

  • Общение ведется в виде простого текста, который легко подслушать
  • Не проверяйте личность общающейся стороны, можете столкнуться с маскировкой
  • Целостность сообщения не может быть доказана, и оно может быть подделано

протокол HTTPS

концепция

Безопасный протокол передачи гипертекста (англ. Hypertext Transfer Protocol Secure, аббревиатура: HTTPS, часто называемый HTTP через TLS, HTTP через SSL или HTTP Secure) — это протокол передачи для безопасной связи по компьютерным сетям.

HTTPS взаимодействует через HTTP, ноИспользуйте SSL/TLS для шифрования пакетов.

Основной целью разработки HTTPS является обеспечениеАутентификация на сервере веб-сайта для защиты конфиденциальности и целостности передаваемых данных.

вкратце:HTTPS должен установить уровень шифрования SSL в HTTP и зашифровать передаваемые данные.Это безопасная версия протокола HTTP.

HTTPS имеет дополнительный уровень протокола TLS/SSL, чем HTTP.

TLS/SSL расшифровывается как Transport Layer Security, который представляет собой уровень протокола безопасности между TCP и HTTP.Он не влияет на исходный протокол TCP и протокол HTTP.Поэтому использование HTTPS в основном не требует слишком большой работы над преобразованием HTTP-страниц.

принцип HTTPS

Об этой части действительно можно подробно рассказать, и здесь я кратко подытожу ее:

  • Клиент запрашивает и проверяет открытый ключ с сервера. На этом этапе используетсяАсимметричная зашифрованная передача(RSA), сервер отправляет клиенту цифровой сертификат.Цифровой сертификат включает в себя: открытый ключ и цифровую подпись.Клиент проверяет их после получения.
  • При асимметричной зашифрованной передаче оба конца договариваются о создании «ключа диалога».
  • Две стороны используют «ключ разговора» для симметричной зашифрованной связи.

Из-за ограниченного места не буду расширять.А то слишком много.Вот рекомендую несколько статей для полного понимания всем:

  • Поймите принцип https простым для понимания способом:статья
  • Подробное описание принципов SSL/TLS:статья
  • Инструкции по системе PKI и сертификату:статья

Разница между HTTP и HTTPS

  • HTTP — это передача открытого текста, HTTPS шифруется через SSL\TLS
  • Номер порта 80 для HTTP и 443 для HTTPS.
  • HTTPS требует сертификата от ЦС. Как правило, бесплатных сертификатов очень мало, и вам нужно платить комиссию.
  • Соединение HTTP очень простое и не имеет состояния; протокол HTTPS — это сетевой протокол, созданный на основе протокола SSL+HTTP, который может выполнять зашифрованную передачу и аутентификацию и является более безопасным, чем протокол HTTP.

Основная роль HTTPS заключается в следующем:

  • Шифровать данные и устанавливать канал защиты информации для обеспечения безопасности данных при передаче
  • Аутентифицировать веб-сервер

Недостатки HTTPS

  • Фаза рукопожатия протокола HTTPS требует много времени, что увеличивает время загрузки страницы почти на 50% и увеличивает энергопотребление на 10–20%;
  • Кэширование соединения HTTPS не так эффективно, как HTTP, и если это веб-сайт с высокой посещаемостью, стоимость трафика будет слишком высокой.
  • Использование ресурсов на стороне сервера для https-соединений намного выше, а поддержка веб-сайта с немного большим количеством посетителей требует более высоких затрат.Если используется весь https, средняя стоимость VPS основана на предположении, что большая часть ресурсы простаивают, будет увеличиваться.
  • SSL-сертификаты стоят денег. Чем мощнее сертификат, тем выше стоимость. Персональные веб-сайты и небольшие веб-сайты обычно не используют его.
  • Сертификаты SSL обычно должны быть привязаны к IP, а несколько доменных имен не могут быть привязаны к одному и тому же IP. Ресурсы IPv4 не могут поддерживать такое потребление (SSL имеет расширения, которые могут частично решить эту проблему, но это более проблематично и требует браузера и операционной поддержка системы, Windows XP не поддерживает это расширение, и эта функция практически бесполезна, учитывая количество установок XP).

Оптимизация доступа HTTPS

CDN-доступ

Задержка, увеличенная HTTPS, в основном представляет собой задержку передачи RTT. Характеристика RTT заключается в том, что чем ближе узел, тем меньше задержка, и CDN, естественно, ближе всего к пользователю. Поэтому выбор использования CDN в качестве точки входа для доступа по HTTPS значительно сократит задержку доступа. Узел CDN значительно сокращает задержку, вызванную HTTPS, благодаря контролируемым методам, таким как поддержание длительного соединения с сервером службы, мультиплексирование сеансов и оптимизация качества соединения.

кеш сеанса

Хотя ранее упоминалось, что HTTPS требует задержки не менее 1*RTT, даже если используется кеш сеанса, но, по крайней мере, задержка была уменьшена до половины исходной, очевидно оптимизация задержки; в то же время HTTPS-соединение устанавливается на основе в кэше сеанса не требует, чтобы сервер использовал RSA. Расшифровка закрытого ключа для получения информации Pre-master может снизить потребление ресурсов ЦП. Если соединения бизнес-доступа сосредоточены, а частота попаданий в кэш высока, возможности доступа HTTPS значительно улучшаются. Пиковая частота попаданий в кэш текущей платформы TRP превышает 30%, а ресурсы доступа со скоростью 10 КБ/с могут фактически нести 13 КБ/с, что очень эффективно.

Аппаратное ускорение

Установите выделенную плату аппаратного ускорителя SSL для сервера доступа, которая действует как графический процессор и освобождает ЦП, предоставляя более широкие возможности доступа по протоколу HTTPS, не затрагивая бизнес-программы. Проверьте, может ли одна плата аппаратного ускорителя обеспечить возможность дешифрования 35 КБ, что эквивалентно 175-ядерному ЦП, по крайней мере, эквивалентно семи 24-ядерным серверам.Учитывая стоимость доступа к другим программам на сервере, одна аппаратная карта может обеспечить почти 10 серверы возможность доступа.

Удаленная расшифровка

Локальный доступ потребляет слишком много ресурсов ЦП и тратит впустую ресурсы, такие как сетевые карты и жесткие диски.Рассмотрите возможность переноса вычислительной задачи расшифровки RSA, которая потребляет больше всего ресурсов ЦП, на другие серверы, чтобы можно было полностью использовать возможности доступа сервера, а пропускная способность и сетевая карта могут быть полностью использованы ресурс. Удаленный сервер дешифрования может выбрать машину с низкой загрузкой ЦП для повторного использования ресурсов машины или это может быть специально оптимизированный сервер с высокой вычислительной производительностью. Это также одно из решений, которые CDN используют для крупномасштабного доступа по HTTPS.

SPDY/HTTP2

Предыдущие методы улучшают производительность доступа HTTPS за счет уменьшения задержки передачи и нагрузки на один компьютер соответственно, но методы основаны на методах оптимизации, предложенных на основе сохранения протокола HTTP.SPDY/HTTP2 использует преимущества TLS/SSL путем модификации метод протокола для улучшения производительности HTTPS, увеличения скорости загрузки и т. д.

спасибо и ссылка