Обмен технологиями

Распространенные вопросы на собеседовании по компьютерным сетям (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Общие вопросы на собеседованиях по компьютерным сетям затрагивают многие уровни, включая сетевые протоколы, сетевую архитектуру, сетевую безопасность, передачу данных и т. д. Вот подробные объяснения некоторых распространенных вопросов:

1. Что такое семиуровневая модель OSI? Какова функция каждого слоя?

Семиуровневая модель OSIЭто стандартная система взаимодействия между компьютерами или системами связи, разработанная Международной организацией по стандартизации (ISO). Сверху вниз это:

  1. Прикладной уровень: предоставление интерактивных услуг для приложений, таких как HTTP, FTP, SMTP и другие протоколы.
  2. уровень представления: Представление данных, безопасность и сжатие, преобразование данных прикладного уровня в формат, подходящий для передачи по сети.
  3. сеансовый уровень: устанавливать, управлять и завершать сеансы, организовывать и координировать связь между двумя процессами сеанса.
  4. транспортный уровень: Отвечает за предоставление услуг передачи данных для связи между двумя хост-процессами, включая протоколы TCP и UDP, для обеспечения надежной передачи данных.
  5. Сетевой уровень: выберите соответствующие узлы маршрутизации и коммутации для обеспечения своевременной передачи данных. Основной протокол — IP.
  6. канальный уровень: При передаче данных между двумя соседними узлами объединяйте IP-дейтаграммы, передаваемые сетевым уровнем, в кадры и добавляйте необходимую управляющую информацию.
  7. физический слой: Реализуйте прозрачную передачу битовых потоков между соседними компьютерными узлами, максимально скрывая различия в средах передачи и физических устройствах.

2. В чем разница между TCP и UDP?

TCP (протокол управления передачей) и UDP (протокол пользовательских дейтаграмм) являются протоколами транспортного уровня. Их основные различия включают в себя:

  1. Возможности подключения: TCP — это протокол, ориентированный на соединение, и соединение необходимо установить перед передачей данных, тогда как UDP — это протокол без установления соединения, и соединение не требуется устанавливать перед отправкой данных.
  2. надежность: TCP обеспечивает надежную передачу и гарантирует правильную передачу данных с помощью таких механизмов, как порядковые номера, ответы-подтверждения и повторные передачи по тайм-ауту. UDP не предоставляет гарантий надежности, и данные могут быть потеряны или доставлены не по порядку.
  3. Эффективность передачи: Поскольку TCP необходимо установить соединение и выполнить проверку надежности, его эффективность передачи относительно низка, в то время как UDP не имеет этих накладных расходов и имеет более высокую эффективность передачи;
  4. Сценарии применения: TCP подходит для сценариев приложений, требующих надежной передачи, таких как передача файлов, просмотр веб-страниц и т. д.. UDP подходит для сценариев приложений, требующих высокой производительности в реальном времени и допускающих определенную потерю данных, например, видео в реальном времени; трансляции, онлайн-игры и т.д.

3. В чем разница между HTTP и HTTPS?

Основное различие между HTTP (протоколом передачи гипертекста) и HTTPS (защищенным протоколом передачи гипертекста) заключается в безопасности:

  1. безопасность: HTTP передает простой текст, а данные легко перехватываются и подделываются, тогда как HTTPS добавляет к HTTP уровень протокола SSL/TLS для шифрования и передачи данных для обеспечения безопасности передачи данных.
  2. Номер порта: HTTP по умолчанию использует порт 80; HTTPS по умолчанию использует порт 443.
  3. производительность: Поскольку HTTPS требует операций шифрования и дешифрования, его производительность будет снижена по сравнению с HTTP.

4. Каков процесс трехстороннего рукопожатия TCP и четырехсторонней волны?

Трехстороннее рукопожатие TCPПроцесс выглядит следующим образом:

  1. Клиент отправляет пакет SYN (порядковый номер синхронизации) на сервер и переходит в состояние SYN_SENT, ожидая подтверждения от сервера.
  2. После получения пакета SYN сервер подтверждает SYN клиента (ack=j+1), а также отправляет пакет SYN (то есть пакет SYN+ACK). В это время сервер входит в состояние SYN_RCVD.
  3. После получения пакета SYN+ACK от сервера клиент отправляет пакет подтверждения ACK (ack=k+1) на сервер. После отправки пакета клиент и сервер переходят в состояние ESTABLISHED и завершают трехстороннее соединение. рукопожатие.

TCP посылает четыре сигналаПроцесс выглядит следующим образом:

  1. Клиент отправляет FIN для закрытия передачи данных от клиента к серверу, и клиент переходит в состояние FIN_WAIT_1.
  2. После того, как сервер получает FIN, он отправляет ACK клиенту. Порядковый номер подтверждения равен полученному порядковому номеру + 1 (так же, как SYN, один FIN занимает один порядковый номер), и сервер переходит в состояние CLOSE_WAIT.
  3. Сервер закрывает соединение с клиентом, отправляет клиенту FIN, и сервер переходит в состояние LAST_ACK.
  4. После получения FIN клиент отправляет на сервер ACK, подтверждающий, что порядковый номер равен полученному порядковому номеру + 1, и клиент переходит в состояние TIME_WAIT. Сервер закрывает соединение после получения ACK. Если клиент по-прежнему не получает ответа после ожидания 2MSL, он переходит в состояние ЗАКРЫТО.

5. Почему TCP требует трех рукопожатий вместо двух?

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

  • Первое рукопожатие: клиент отправляет пакет SYN, а сервер подтверждает возможность отправки клиента.
  • Второе рукопожатие: сервер отправляет пакет SYN+ACK, а клиент подтверждает возможности приема и отправки сервера.
  • Третье рукопожатие: клиент отправляет пакет ACK, а сервер подтверждает возможность приема клиента.

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

6. Какие методы HTTP-запросов обычно используются? Каковы различия и способы использования между ними?

Обычно используемые методы HTTP-запроса включают GET, POST, PUT, DELETE, CONNECT, OPTIONS и TRACE, среди которых наиболее часто используются GET и POST.

  • ПОЛУЧАТЬ : используется для отправки запроса на получение данных на сервере. Параметры включены в URL-адрес и подходят для сценариев, в которых объем запрашиваемых данных невелик и требования безопасности не высоки.
  • ПОЧТА : используется для отправки данных в ресурс, указанный URL-адресом. Параметры передаются через тело запроса, что подходит для сценариев, в которых передается большой объем данных или когда требования безопасности высоки.

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

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