Анализ высокочастотных вопросов интервью в компьютерных сетях (включая рекомендации книг)

опрос

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

  • «Иллюстрированный TCP/IP» объясняет основы сети, основы TCP/IP, каналы передачи данных, протокол IP, технологии, связанные с протоколом IP, TCP и UDP, протоколы маршрутизации, протоколы приложений, сетевую безопасность и т. д.
  • «Иллюстрированный HTTP» представляет собой всестороннее и систематическое введение в протокол HTTP.
  • Особенности этих двух книг объясняются одновременно, большим количеством шуточных коммуникативных легенд легче читается.

Анализ часто задаваемых вопросов на собеседовании

1. Структура и функции семиуровневой сетевой модели OSI.

OSI представляет собой эталонную модель взаимосвязи открытых систем связи.Семиуровневая модель OSI обеспечивает надежную связь между различными системами и различными сетями посредством семи иерархических структурных моделей.

OSI — это очень четко определенная спецификация протокола, но она более сложная, поэтому обычно описывается четырехуровневой моделью TCP/IP. В настоящее время более широко признана четырехуровневая модель TCP/IP.В компьютерных сетях все предпочитают использовать модель TCP/IP для разделения и понимания. Поскольку в практических приложениях границы между уровнем представления, сеансовым уровнем и прикладным уровнем нечеткие, их трудно различить.

2. Каковы структуры и функции четырехуровневого протокола TCP/IP?

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

三种划分方式的对应关系

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

四层协议

Прикладной уровень предоставляет протоколы обработки для различных пакетов данных приложения. Распространенными являются HTTP, FTP, DNS, электронная почта, Telnet и т. д.

Транспортный уровень предоставляет сквозные услуги связи для приложений.На этом уровне есть два протокола: TCP (протокол управления передачей, протокол управления передачей) и UDP (протокол пользовательских дейтаграмм, протокол пользовательских дейтаграмм). Среди них TCP обеспечивает надежные услуги с соединениями, а UDP предоставляет ненадежные службы без соединений.

Сетевой уровень также называют уровнем Интернета.Основным протоколом является протокол IP, который является основным уровнем алгоритма маршрутизации.

Уровень канала передачи данных включает в себя два подуровня: уровень управления логическим каналом (управление логическим каналом, LLC) и уровень управления доступом к среде (управление доступом к среде, MAC). LLC отвечает за идентификацию протоколов сетевого уровня, а затем их инкапсуляцию. Заголовок LLC сообщает канальному уровню, что делать с пакетом после получения кадра. Канальный уровень также включает в себя содержимое раздела драйвера устройства.

3. Архитектура пятиуровневого протокола, какие протоколы бывают?

Четырехуровневый протокол упоминался выше, и мы подробно объясним следующий пятиуровневый протокол на основе четырехуровневого протокола.

####(1) Прикладной уровень

Задача прикладного уровня (application-layer) состоит в том, чтобы выполнить конкретное сетевое приложение посредством взаимодействия между прикладными процессами. Протокол прикладного уровня определяет правила связи и взаимодействия между прикладными процессами (процессами: программами, работающими на хосте). Для разных сетевых приложений требуются разные протоколы прикладного уровня.

В Интернете существует множество протоколов прикладного уровня, таких как система доменных имен DNS, протокол HTTP, поддерживающий приложения World Wide Web, протокол SMTP, поддерживающий электронную почту, и так далее. Мы называем блок данных, с которым взаимодействует прикладной уровень, сообщением.

####(2) Транспортный уровень

Основная задача транспортного уровня — предоставить общие услуги передачи данных для связи между двумя хост-процессами. Прикладной процесс использует эту службу для передачи пакетов прикладного уровня. «Универсальный» означает, что он не нацелен на конкретное сетевое приложение, но несколько приложений могут использовать одну и ту же службу транспортного уровня.

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

Транспортный уровень в основном использует следующие два протокола:

  • Протокол управления передачей TCP (протокол управления передачей) — предоставляет услуги надежной передачи данных, ориентированные на установление соединения.
  • Протокол пользовательских дейтаграмм UDP (протокол пользовательских дейтаграмм) — предоставляет услуги передачи данных без установления соединения с максимальной эффективностью (не гарантирует надежность передачи данных).

(3) Сетевой уровень

Сетевой уровень отвечает за предоставление коммуникационных услуг для различных узлов в сети с коммутацией пакетов. При отправке данных сетевой уровень инкапсулирует сегменты или пользовательские дейтаграммы, сгенерированные транспортным уровнем, в пакеты и пакеты для передачи. В архитектуре TCP/IP, поскольку сетевой уровень использует протокол IP, пакеты также называются дейтаграммами IP или дейтаграммами для краткости.

Обратите внимание: не путайте «пользовательскую дейтаграмму UDP» транспортного уровня с «IP-дейтаграммой» сетевого уровня. Кроме того, независимо от того, какой уровень единицы данных, он обычно может быть представлен как «пакет». Другой задачей сетевого уровня является выбор подходящего маршрута, чтобы пакеты, передаваемые с транспортного уровня узла-источника, могли найти узел-получатель через маршрутизаторы на сетевом уровне.

Здесь подчеркивается, что слово «сеть» в сетевом уровне больше не является той конкретной сетью, о которой мы обычно говорим, а относится к названию третьего уровня в модели архитектуры компьютерной сети.

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

(4) Канальный уровень

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

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

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

(5) Физический уровень

Единицей данных, передаваемых на физическом уровне, является бит. Роль физического уровня заключается в реализации прозрачной передачи битовых потоков между соседними компьютерными узлами и максимально возможном устранении различий между конкретными средами передачи и физическими устройствами.

Уровень канала передачи данных выше него не должен учитывать, что является конкретной средой передачи сети. «Прозрачный битовый поток передачи» означает, что битовый поток, передаваемый реальной схемой, не изменился, и эта схема кажется невидимой для передаваемого битового потока.

4. Сравнение основных возможностей TCP и UDP

Ключевые особенности UDP

  • UDP не требует установления соединения;
  • UDP использует доставку с наилучшими усилиями, т.е. надежная доставка не гарантируется, поэтому хосту не нужно поддерживать сложное состояние канала (в нем много параметров);
  • UDP ориентирован на сообщения;
  • UDP не контролирует перегрузку, поэтому перегрузка сети не снизит скорость отправки хоста-источника (полезно для приложений реального времени, таких как прямые трансляции, видеоконференции в реальном времени и т. д.);
  • UDP поддерживает интерактивную связь «один к одному», «один ко многим», «многие к одному» и «многие ко многим»;
  • Заголовок UDP невелик, всего 8 байтов, что меньше 20-байтового заголовка TCP.

Ключевые особенности TCP

  • TCP ориентирован на соединение. (Так же, как и при звонке, вам нужно набрать номер, чтобы установить соединение, прежде чем звонить, и повесить трубку, чтобы разорвать соединение после завершения звонка);
  • Каждое соединение TCP может иметь только две конечные точки, и каждое соединение TCP может быть только двухточечным (один к одному); TCP обеспечивает надежную доставку услуг. Данные, передаваемые по TCP-соединению, безошибочны, не теряются, не дублируются и поступают последовательно;
  • TCP обеспечивает полнодуплексную связь. TCP позволяет приложениям на обеих сторонах связи отправлять данные в любое время. Оба конца соединения TCP оснащены буфером отправки и буфером приема, которые используются для временного хранения данных, передаваемых между двумя сторонами;
  • Ориентирован на байтовые потоки. «Поток» в TCP относится к последовательности байтов, поступающих в процесс или исходящих из него. Значение «ориентированного на поток байтов» заключается в том, что, хотя взаимодействие между приложением и TCP представляет собой один блок данных за раз (разных размеров), TCP рассматривает только данные, переданные приложением, как серию неструктурированных потоков байтов. .

5. Трехстороннее рукопожатие TCP и четырехсторонняя волна

Для точной доставки данных в пункт назначения протокол TCP использует стратегию трехэтапного рукопожатия. Давайте взглянем на мультяшную иллюстрацию «Иллюстрированный HTTP»:

Принципиальная схема конкретной операции:

Клиент — отправить пакет с флагом SYN — одно рукопожатие — сервер Сервер – Отправка пакета с флагом SYN/ACK – Двустороннее рукопожатие – Клиент Клиент — отправить пакет с флагом ACK — трехстороннее рукопожатие — сервер

6. Почему три рукопожатия?

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

  • Первое рукопожатие: Клиент ничего не может подтвердить; Сервер подтверждает, что другая сторона отправляет нормально
  • Второе рукопожатие: Клиент подтверждает: отправляет и принимает нормально, другая сторона отправляет и получает нормально Сервер подтверждает: принимает нормально, другая сторона отправляет нормально
  • Третье рукопожатие: Клиент подтверждает: он отправляет и получает нормально, другая сторона отправляет и получает нормально; Сервер подтверждает: он отправляет и получает нормально, а другая сторона отправляет и получает нормально Таким образом, трехстороннее рукопожатие может подтвердить, что функции двойной передачи, отправки и получения работают нормально, что необходимо.

7. Почему трехэтапное рукопожатие возвращает SYN и ACK?

SYN — это сигнал квитирования, используемый TCP/IP для установления соединения. Когда между клиентом и сервером устанавливается обычное сетевое соединение TCP, клиент сначала отправляет сообщение SYN, сервер использует ответ SYN-ACK, чтобы указать, что он получил сообщение, и, наконец, клиент отвечает ACK (подтверждение символ подтверждения) сообщение. Таким образом, между клиентом и сервером может быть установлено надежное TCP-соединение, и данные могут передаваться между клиентом и сервером.

  • SYN, отправленный получателем обратно отправителю, должен сообщить отправителю, что информация, которую я получил, действительно является сигналом, который вы отправили. Правильная связь между двумя сторонами должна заключаться в том, что информация, отправляемая друг другу обеими сторонами, верна. SYN передается, что доказывает, что с каналом от отправителя к получателю проблем нет, но канал от получателя к отправителю также нуждается в сигнале ACK для проверки.

8. Зачем махать четыре раза?

Для отключения TCP-соединения требуется четыре взмаха рук:

  • Клиент — отправляет FIN, который закрывает передачу данных от клиента к серверу.
  • Сервер — получает этот FIN, отправляет обратно ACK, подтверждая, что порядковый номер равен полученному порядковому номеру плюс 1. Как и SYN, FIN будет занимать порядковый номер
  • Сервер - закрывает соединение с клиентом, отправляет клиенту FIN
  • Клиент - отправляет обратно подтверждение сообщения ACK и устанавливает порядковый номер подтверждения равным полученному порядковому номеру плюс 1.

Любая из сторон может отправить уведомление об освобождении соединения после завершения передачи данных и перейти в полузакрытое состояние после подтверждения другой стороной. Когда у другой стороны нет данных для повторной отправки, выдается уведомление об освобождении соединения, и TCP-соединение полностью закрывается после подтверждения другой стороной. Например: A и B разговаривают по телефону, после того, как разговор подходит к концу, A говорит: «Мне нечего сказать», B отвечает: «Я знаю», но B может что-то сказать, A не может просить B следовать Завершите вызов в своем собственном ритме, чтобы B мог снова говорить, Барабара, и, наконец, B говорит: «Я закончил», A отвечает «понял», поэтому вызов завершен.

9. Разница между протоколами TCP и UDP

UDP не нужно устанавливать соединение перед передачей данных, а удаленному хосту не нужно давать никаких подтверждений после получения UDP-пакета. Хотя UDP не обеспечивает надежной доставки, в некоторых случаях UDP действительно является наиболее эффективным способом работы (обычно используется для обмена мгновенными сообщениями), например: голос QQ, видео QQ, прямая трансляция и т. д.

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

10. Как протокол TCP обеспечивает надежную передачу

1) Подтверждение и повторная передача: получатель подтвердит, когда получит сообщение, а отправитель отправит его повторно, не получив подтверждения по истечении определенного периода времени.

2) Проверка данных: заголовок TCP имеет контрольную сумму, которая используется для проверки того, повреждено ли сообщение.

3) Разумная фрагментация и сортировка данных:

TCP будет разумно фрагментирован в соответствии с максимальным блоком передачи (MTU), а получатель кэширует данные, поступающие не по порядку, а затем передает их на прикладной уровень после переупорядочивания.

И датаграмма UDP: IP больше 1500 байт, что больше, чем MTU. В это время IP-уровень отправителя нужно фрагментировать, а дейтаграмму разделить на несколько фрагментов, каждый из которых меньше MTU. Уровень IP получателя должен повторно собрать дейтаграмму. Из-за характеристик UDP при потере части данных дейтаграмма не может быть повторно собрана для удобства, что приводит к отбрасыванию всей дейтаграммы UDP.

4) Управление потоком: когда получатель слишком поздно обрабатывает данные отправителя, он может предложить отправителю уменьшить скорость отправки через скользящее окно, чтобы предотвратить потерю пакетов.

5) Контроль перегрузки: когда сеть перегружена, окно перегрузки используется для уменьшения передачи данных и предотвращения потери пакетов.

11. TCP использует скользящее окно для реализации механизма управления потоком.

Управление потоком предназначено для управления скоростью отправки отправителя и обеспечения того, чтобы у получателя было время для приема.

TCP использует скользящие окна для управления потоком.

Скользящее окно — это метод управления потоком. В ранней сетевой связи две взаимодействующие стороны не учитывали перегрузку сети для прямой отправки данных. Поскольку никто не знает о состоянии перегрузки сети и отправляет данные одновременно, промежуточные узлы блокируют и отбрасывают пакеты, и никто не может отправлять данные, поэтому для решения этой проблемы существует механизм скользящего окна. В TCP для управления передачей используется скользящее окно Размер скользящего окна означает, какой объем буфера есть у приемника для приема данных.

Отправитель может использовать размер скользящего окна, чтобы определить, сколько байтов данных следует отправить. Когда скользящее окно равно 0, отправитель, как правило, больше не может отправлять дейтаграммы, за исключением двух случаев, один из которых предназначен для отправки срочных данных, например, позволяющих пользователю завершить запущенный процесс на удаленной машине.

Другая ситуация заключается в том, что отправитель может послать 1-байтовую дейтаграмму, чтобы проинформировать получателя о том, что нужно повторно указать следующий байт, который он хочет получить, и размер скользящего окна отправителя.

Поле окна в сообщении подтверждения, отправленном получателем, может использоваться для управления размером окна отправителя, тем самым влияя на скорость отправки отправителем. Если в поле окна установлено значение 0, отправитель не может отправлять данные.

12. Механизм и алгоритм контроля перегрузки TCP

В определенный момент, если спрос на ресурс в сети превышает доступную часть этого ресурса, производительность сети ухудшится. Такая ситуация называется запором.

Контроль перегрузки предназначен для предотвращения ввода слишком большого количества данных в сеть, чтобы маршрутизаторы или каналы в сети не были перегружены.

Управление перегрузкой исходит из того, что сеть может выдержать существующую сетевую нагрузку. Управление перегрузкой — это глобальный процесс, в котором участвуют все хосты, все маршрутизаторы и все факторы, связанные с ухудшением производительности передачи по сети. Напротив, управление потоком часто представляет собой управление трафиком «точка-точка» и представляет собой сквозную проблему. Все, что делает управление потоком, — это регулирует скорость, с которой отправитель отправляет данные, чтобы у получателя было время их получить.

Для управления перегрузкой отправитель TCP поддерживает переменную состояния окна перегрузки (cwnd). Размер окна контроля перегрузки зависит от степени загруженности сети и изменяется динамически. Отправитель позволяет своему окну отправки быть меньшим из окна перегрузки и окна приема получателя.

Управление перегрузкой TCP использует четыре алгоритма, а именно медленный старт, предотвращение перегрузки, быструю повторную передачу и быстрое восстановление. На сетевом уровне маршрутизаторы также могут применять соответствующие стратегии отбрасывания пакетов (такие как активное управление очередями AQM), чтобы уменьшить вероятность перегрузки сети.

  • Медленный старт: Идея алгоритма медленного старта заключается в том, что когда хост начинает отправлять данные, если большое количество байтов данных сразу же вводится в сеть, это может вызвать перегрузку сети, потому что соответствие сети не известно еще. Опыт показывает, что лучшим методом является сначала зондирование, то есть постепенное увеличение окна отправки от малого до большого, то есть постепенное увеличение значения окна перегрузки от малого до большого. Начальное значение cwnd равно 1, и после каждого раунда распространения cwnd удваивается.

  • Предотвращение перегрузки: Идея алгоритма предотвращения перегрузки заключается в медленном увеличении cwnd окна перегрузки, то есть добавлении 1 к cwnd, отправляемому после каждого времени кругового обхода RTT.

  • Быстрая ретрансляция и быстрое восстановление: В TCP/IP быстрая повторная передача и восстановление (FRR) — это алгоритм управления перегрузкой, который быстро восстанавливает потерянные пакеты. Без FRR, если пакет потерян, TCP будет использовать таймер, требующий приостановки передачи.

Во время этой паузы новые или дублированные пакеты не отправляются. При использовании FRR, если получатель получает сегмент вне очереди, он немедленно отправляет дубликат подтверждения отправителю. Если передатчик получает три повторяющихся подтверждения, он предполагает, что сегменты данных, указанные в подтверждении, отсутствуют, и немедленно повторно передает эти недостающие сегменты данных. С FRR нет задержки из-за пауз, необходимых при повторных передачах.

当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。 Это не очень хорошо работает, когда за короткий промежуток времени теряется несколько пакетов данных.

13. Процесс отображения домашней страницы после ввода адреса URL в браузере

Полный процесс http-запроса обычно делится на следующие процессы:

  1. Разрешение доменного имени DNS
  2. установить TCP-соединение
  3. отправить HTTP-запрос
  4. Сервер обрабатывает запрос
  5. вернуть HTTP-сообщение
  6. закрыть TCP-соединение
  7. Браузер анализирует HTML
  8. Отрисовка макета браузера

14. Общие коды состояния HTTP

Коды возврата статуса http: 1xx (предварительный ответ), 2xx (успех), 3xx (перенаправление), 4xx (ошибка запроса), 5xx (ошибка сервера)

2ХХ успехов

  • 200 OK, что указывает на корректную обработку запроса от клиента на стороне сервера
  • 201 Created Запрос выполнен, и новый ресурс создан в соответствии с потребностями запроса
  • 202 Accepted Запрос принят, но не выполнен, и выполнение запроса не гарантируется
  • 204 Нет содержимого, что указывает на то, что запрос выполнен успешно, но ответное сообщение не содержит основной части сущности
  • 206 Частичный контент, сделайте запрос диапазона

3XX редирект

  • 301 перемещен навсегда, постоянное перенаправление, указывающее, что ресурсу был присвоен новый URL-адрес
  • 302 найдено, временное перенаправление, указывающее на то, что ресурсу временно присвоен новый URL
  • 303 см. другое, что указывает на то, что для ресурса существует другой URL-адрес, и для получения ресурса следует использовать метод GET.
  • 304 не изменено, указывающее на то, что сервер разрешает доступ к ресурсу, но запрос не соответствует условиям из-за возникновения
  • 307 временное перенаправление, временное перенаправление, имеет то же значение, что и 302

4XX Ошибка клиента

  • 400 неверный запрос, в сообщении запроса есть синтаксическая ошибка
  • 401 неавторизованный, что указывает на то, что для отправленного запроса требуется информация аутентификации через HTTP-аутентификацию.
  • 403 запрещено, что указывает на то, что доступ к запрошенному ресурсу был запрещен сервером
  • 404 not found, указывающий на то, что запрошенный ресурс не найден на сервере
  • 408 Время ожидания запроса истекло, время ожидания запроса клиента истекло
  • 409 Конфликт, запрошенный ресурс может вызвать конфликт

5ХХ ошибка сервера

  • 500 внутренняя ошибка сервера, указывающая на то, что при выполнении запроса произошла ошибка на стороне сервера
  • 501 Not Implemented Запрос выходит за рамки возможностей сервера, например, сервер не поддерживает функцию, требуемую текущим запросом, или запрос представляет собой метод, который сервер не поддерживает
  • 503 Служба недоступна, что указывает на то, что сервер временно перегружен или отключен и не может обрабатывать запросы.
  • 505 HTTP-версия не поддерживается Сервер не поддерживает или отказывается поддерживать версию HTTP, используемую в запросе

15. Какие существуют методы HTTP?

HTTP1.0 определяет три метода запроса: методы GET, POST и HEAD. HTTP1.1 добавил пять новых методов запроса: OPTIONS, PUT, DELETE, TRACE и CONNECT.

  • GET: обычно используется для запроса сервера на отправку некоторых ресурсов.
  • HEAD: Информация о заголовке запрашиваемого ресурса, и эти заголовки такие же, как те, которые возвращаются при запросе метода HTTP GET.Один из сценариев использования этого метода запроса — получить размер большого файла перед его загрузкой, а затем решить, следует ли чтобы загрузить его, чтобы сэкономить ресурсы пропускной способности
  • OPTIONS: используется для получения параметров связи, поддерживаемых целевым ресурсом.
  • POST: отправить данные на сервер
  • PUT: используется для добавления ресурса или замены представления целевого ресурса полезной нагрузкой в ​​запросе.
  • DELETE: используется для удаления указанного ресурса
  • PATCH: используется для частичного изменения ресурсов.
  • CONNECT: зарезервировано в протоколе HTTP/1.1 для прокси-серверов, которые могут изменять подключения к каналам.
  • TRACE: повторить запрос, полученный сервером, в основном для тестирования или диагностики

16. Длинное HTTP-соединение, короткое соединение

Короткое подключение по умолчанию по адресу http / 1.0. Другими словами, клиент и сервер один раз для каждой операции HTTP, как только соединение установлено, задача завершится отключена. Когда HTML-веб-страница или другой тип браузера клиента для доступа к сети содержит другие ресурсы (такие как файлы JavaScript, файлы изображений, файлы CSS и т. Д.), Когда он столкнулся с таким веб-ресурсом, браузер будет восстановлен HTTP-сеанс.

Начиная с HTTP/1.1, постоянные соединения используются по умолчанию для поддержания характеристик соединения. Используя протокол HTTP с длинным подключением, эта строка кода будет добавлена ​​в заголовок ответа:

  • Соединение: Keep-alive В случае использования длительного соединения при открытии веб-страницы TCP-соединение, используемое для передачи HTTP-данных между клиентом и сервером, не будет закрыто, при повторном обращении клиента к серверу он продолжит использовать установленное связь. . Keep-Alive не сохраняет соединение вечно, у него есть время сохранения, которое можно установить в другом серверном ПО (например, в Apache). Реализация постоянного соединения требует, чтобы и клиент, и сервер поддерживали постоянные соединения. Длинное соединение и короткое соединение протокола HTTP по существу представляют собой длинное соединение и короткое соединение протокола TCP.

17. Как защищен HTTPS?

Протокол HTTP — это протокол прикладного уровня, который обычно работает поверх протокола TCP. Это открытый текстовый протокол, клиент инициирует запрос, а сервер дает ответ. Поскольку сеть не заслуживает доверия, открытый текст протокола HTTP сопряжен со следующими рисками:

  • Данные связи находятся под угрозой прослушивания и подделки
  • Целевой веб-сайт находится под угрозой олицетворения

HTTPS на самом деле означает безопасный http, который является обновленной версией HTTP. HTTP — это протокол прикладного уровня, а ниже протокола HTTP находится транспортный протокол TCP. TCP отвечает за передачу, а HTTP определяет способ упаковки данных. Чем HTTPS отличается от HTTP? По сути, это добавление слоя шифрования TLS/SSL между HTTP и TCP.

HTTPS использует асимметричное шифрование.Ключ (открытый ключ), используемый для шифрования данных, отличается от ключа (закрытого ключа), используемого для расшифровки данных.

18. Что такое атака «человек посередине» HTTPS?

HTTPS решает проблему атак «человек посередине» в эпоху HTTP из протокола, но HTTPS также будет вызывать атаки «человек посередине», когда пользователи активно доверяют поддельным сертификатам (например, ранний 12306 требует ручного доверия сертификаты).Атака HTTPS «человек посередине» выглядит следующим образом:

Клиент использует HTTPS для подключения к порту 443 сервера.

Сервер выдает клиенту собственный цифровой сертификат.

Хакеры похитили настоящий сертификат сервера и подделали поддельный сертификат для браузера

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

Браузер генерирует случайный симметричный ключ A, шифрует его открытым ключом в поддельном сертификате и отправляет на сервер.

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

Хакер использует настоящий открытый ключ сервера, чтобы зашифровать симметричный ключ клиента A и отправить его на сервер.

Сервер связывается с хакером после расшифровки симметричного ключа A с помощью закрытого ключа.

Хакер использует симметричный ключ A для расшифровки данных сервера, а после подделки использует симметричный ключ A для шифрования и отправки их клиенту.

Данные, полученные клиентом, уже небезопасны

Вышеизложенный принцип атаки «человек посередине» HTTPS, поэтому сертификат является доверенным для захвата пакетов HTTPS.

19. Как понять, что протокол HTTP не имеет состояния?

Протокол HTTP не имеет состояния, что означает, что протокол не имеет возможности памяти для вещей, и сервер не знает, в каком состоянии находится клиент HTTP - это тот же протокол без сохранения состояния, ориентированный на соединение.

20. На каком принципе протокола уровня основана команда ping?

Команда ping основана на команде сетевого уровня и работает на основе протокола ICMP.

Подпишитесь на официальный аккаунт: Architecture Evolution, получайте техническую информацию и оригинальные статьи из первых рук.