Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Понимание работы глобальной сети

Все темы QA

Что такое клиент-серверная архитектура?

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

  1. Сервер:

    • Центральный компьютер или программа, которая предоставляет ресурсы, данные или услуги. Серверы обрабатывают запросы от клиентов, выполняют необходимые операции и отправляют результаты обратно клиентам.
  2. Клиент:

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

Основные особенности клиент-серверной архитектуры:

  • Распределённость: Клиенты и серверы могут находиться в разных географических локациях и соединяться через Интернет или локальную сеть.

  • Масштабируемость: Систему можно масштабировать, добавляя больше серверов или увеличивая мощность сервера.

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

  • Специализация: Серверы могут быть специализированы для выполнения определённых задач, например, баз данных, файловых серверов или почтовых серверов.

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


Что может выступать в роли клиента?

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

  1. Веб-браузеры:

    • Браузеры, такие как Google Chrome, Mozilla Firefox, и Safari, запрашивают веб-страницы и другие веб-ресурсы с веб-серверов.
  2. Мобильные приложения:

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

    • Программы для настольных компьютеров, такие как клиенты электронной почты или офисные приложения, которые могут подключаться к серверам для обмена данными, совместной работы и синхронизации.
  4. Игровые клиенты:

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

    • Клиентские приложения в промышленных и домашних автоматизационных системах, которые отправляют запросы к серверам для управления устройствами или мониторинга состояний.
  6. Скрипты и API-клиенты:

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

Клиенты могут быть реализованы на разных платформах и в разных технологических стеках, но их основная функция — отправлять запросы на сервер и получать от него ответы.


Что такое REST API, SOAP? В чем разница?

REST API и SOAP — это два различных подхода к организации взаимодействия между клиентами и серверами в сети, каждый из которых имеет свои особенности и области применения.

REST API (Representational State Transfer API):

  • Архитектурный стиль: REST не является протоколом, а представляет собой архитектурный стиль, который использует стандартные HTTP-методы (GET, POST, PUT, DELETE и т.д.).

  • Без сохранения состояния: REST API обычно не сохраняет состояние между запросами. Это означает, что каждый запрос от клиента к серверу содержит всю информацию, необходимую для его выполнения.

  • Формат данных: Может использовать различные форматы для передачи данных, включая JSON, XML, HTML, и др., хотя наиболее часто используется JSON за его лёгкость и читаемость.

  • Масштабируемость и гибкость: REST предлагает большую гибкость и масштабируемость, что делает его популярным выбором для современных веб-сервисов и публичных API.

SOAP (Simple Object Access Protocol):

  • Протокол: SOAP — это строго специфицированный протокол, который обеспечивает обмен структурированными сообщениями через сеть.

  • Надёжная доставка и распределённые транзакции могут обеспечиваться дополнительными WS-спецификациями и инфраструктурой. Базовый SOAP сам по себе этих гарантий не даёт.

  • Формат данных: Использует XML для кодирования всех сообщений, что может приводить к большему объёму данных по сравнению с JSON.

  • WS- спецификации: Поддерживает расширенный набор стандартов (например, WS-Security, WS-ReliableMessaging), что делает его подходящим для сложных бизнес-транзакций.

Различия:

  • Форматы данных: REST может использовать различные форматы, в то время как SOAP строго использует XML.

  • Гибкость против строгости: REST предоставляет большую гибкость и проще в использовании, в то время как SOAP более строг и обеспечивает более широкий набор функций для обработки транзакций и безопасности.

  • Простота против комплексности: REST проще для разработки и интеграции, SOAP же может быть более сложным в реализации, но поддерживает более сложные взаимодействия и стандарты безопасности.


Какие протоколы передачи данных знаете?

Протоколы передачи данных определяют правила и стандарты для обмена данными между устройствами в сетях. Вот некоторые из наиболее известных протоколов передачи данных:

  1. HTTP (Hypertext Transfer Protocol):

    • Основной протокол для передачи гипертекста в Интернете, используется в веб-браузерах для загрузки веб-страниц.
  2. HTTPS (HTTP Secure):

    • Расширение HTTP, которое добавляет слой шифрования (SSL/TLS) для безопасной передачи данных.
  3. FTP (File Transfer Protocol):

    • FTP передаёт файлы между клиентом и сервером. FTPS защищает FTP с помощью TLS; SFTP является отдельным протоколом передачи файлов поверх SSH.
  4. SMTP (Simple Mail Transfer Protocol):

    • Протокол, используемый для отправки электронной почты между серверами.
  5. IMAP (Internet Message Access Protocol) и POP3 (Post Office Protocol version 3):

    • Протоколы для извлечения почты из почтового ящика. IMAP поддерживает более сложные операции с сообщениями и множественные клиенты.
  6. TCP (Transmission Control Protocol):

    • TCP предоставляет упорядоченный поток байтов с обнаружением потерь и повторной передачей. При неисправимом сбое соединение завершается ошибкой; протокол не гарантирует выполнение операции приложением.
  7. UDP (User Datagram Protocol):

    • Протокол без установления соединения, предоставляющий быстрые, но не гарантированные услуги передачи данных.
  8. SSH (Secure Shell):

    • Протокол для безопасного удаленного управления системами и передачи данных с шифрованием.
  9. DNS (Domain Name System):

    • Протокол, который переводит доменные имена в IP-адреса.
  10. IP (Internet Protocol):

    • Основной протокол для маршрутизации данных через сети, включая IPv4 и IPv6.
  11. SOAP (Simple Object Access Protocol):

    • Протокол, основанный на XML, для обмена структурированными сообщениями в веб-сервисах.
  12. MQTT (Message Queuing Telemetry Transport):

    • Протокол обмена сообщениями, ориентированный на минимальный трафик и надёжность, часто используемый в системах IoT.

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


Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx).

Статусные коды HTTP (HTTP status codes) используются для определения состояния ответа сервера на запрос клиента. Вот краткая характеристика каждого класса статусных кодов:

  1. 1xx: Informational (Информационные):

    • 100 Continue: Запрос принят, продолжайте отправку данных.

    • 101 Switching Protocols: Запрос клиента на изменение протоколов принят сервером.

  2. 2xx: Success (Успех):

    • 200 OK: Запрос успешно обработан, данные переданы в теле ответа.

    • 201 Created: Запрос успешно выполнен, создан новый ресурс.

    • 202 Accepted: Запрос принят, но ещё не обработан.

    • 204 No Content: Запрос успешно обработан, но в ответе нет содержимого.

  3. 3xx: Redirection (Перенаправление):

    • 301 Moved Permanently: Ресурс перемещён на постоянный новый URL.

    • 302 Found: Ресурс временно находится по другому URL.

    • 304 Not Modified: Ресурс не изменился с момента последнего запроса.

  4. 4xx: Client Error (Ошибки клиента):

    • 400 Bad Request: Некорректный запрос, сервер не может его обработать.

    • 401 Unauthorized: Требуется аутентификация пользователя.

    • 403 Forbidden: Доступ к ресурсу запрещён.

    • 404 Not Found: Ресурс не найден на сервере.

    • 429 Too Many Requests: Превышено количество запросов за определённый период.

  5. 5xx: Server Error (Ошибки сервера):

    • 500 Internal Server Error: Внутренняя ошибка сервера, запрос не может быть обработан.

    • 501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.

    • 502 Bad Gateway: Сервер получил некорректный ответ от вышестоящего сервера.

    • 503 Service Unavailable: Сервер временно недоступен, например, из-за перегрузки или обслуживания.

    • 504 Gateway Timeout: Сервер не получил своевременный ответ от вышестоящего сервера.

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


Какие есть HTTP-методы?

HTTP-методы (также известные как HTTP-глаголы) определяют действия, которые могут быть выполнены над ресурсами в веб-приложениях. Вот основные HTTP-методы:

  1. GET:

    • Используется для запроса данных с сервера. Не изменяет состояние ресурса.

    • Пример: получение веб-страницы или данных в формате JSON.

  2. POST:

    • Используется для отправки данных на сервер, обычно для создания новых ресурсов.

    • Пример: отправка формы на сервер.

  3. PUT:

    • Используется для обновления или создания ресурса. Если ресурс не существует, он будет создан.

    • Пример: обновление информации о пользователе.

  4. DELETE:

    • Используется для удаления ресурса с сервера.

    • Пример: удаление пользователя из базы данных.

  5. PATCH:

    • Используется для частичного обновления ресурса.

    • Пример: обновление одного поля в записи пользователя.

  6. HEAD:

    • Аналогичен методу GET, но сервер возвращает только заголовки, без тела ответа.

    • Пример: проверка существования ресурса.

  7. OPTIONS:

    • Используется для получения поддерживаемых сервером методов для конкретного ресурса.

    • Пример: проверка доступных методов для ресурса перед отправкой основного запроса.

  8. CONNECT:

    • Используется для установления туннеля к серверу, часто применяется для проксирования через HTTP.

    • Пример: установка SSL-туннеля через прокси.

  9. TRACE:

    • Используется для диагностики. Сервер возвращает запрос клиента как тело ответа.

    • Пример: трассировка маршрута запроса.

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


Какие знаете Web elements?

Веб-элементы (Web elements) — это составляющие HTML-документа, которые создают структуру и содержимое веб-страницы. Вот основные типы веб-элементов:

  1. Текстовые элементы:

    • \<p\>: Параграф текста.

    • \<h1\> - \<h6\>: Заголовки различного уровня.

  2. Формы и ввод данных:

    • \<input\>: Поля ввода (текст, пароль, радио-кнопки, чекбоксы и т.д.).

    • \<textarea\>: Многострочное текстовое поле.

    • \<select\>: Выпадающий список.

    • \<option\>: Опция внутри выпадающего списка.

    • \<button\>: Кнопка.

    • \<label\>: Метка для элемента формы.

  3. Ссылки и навигация:

    • \<a\>: Гиперссылка.
  4. Изображения и мультимедиа:

    • \<img\>: Изображение.

    • \<video\>: Видео.

    • \<audio\>: Аудио.

    • \<source\>: Источник мультимедийного контента.

  5. Списки:

    • ul: маркированный, неупорядоченный список.

    • ol: нумерованный, упорядоченный список.

    • \<li\>: Элемент списка.

  6. Таблицы:

    • \<table\>: Таблица.

    • \<tr\>: Строка таблицы.

    • \<td\>: Ячейка таблицы.

    • \<th\>: Заголовочная ячейка таблицы.

    • \<thead\>, \<tbody\>, \<tfoot\>: Секции таблицы.

  7. Контейнеры и структурные элементы:

    • \<div\>: Блочный контейнер.

    • \<span\>: Встроенный контейнер.

    • \<header\>: Заголовок страницы или секции.

    • \<footer\>: Подвал страницы или секции.

    • \<section\>: Раздел документа.

    • \<article\>: Независимый, самостоятельный контент.

    • \<nav\>: Навигационное меню.

  8. Скрипты и метаданные:

    • \<script\>: Встраивание или подключение скриптов.

    • \<link\>: Подключение внешних ресурсов, таких как стили.

    • \<meta\>: Метаданные документа.

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


Какие браузеры знаете? В чем их отличие?

Существует множество браузеров, каждый из которых имеет свои особенности и преимущества. Вот некоторые из наиболее известных браузеров и их отличия:

  1. Google Chrome:

    • Разработчик: Google

    • Движок: Blink (основан на WebKit)

    • Особенности: Высокая производительность, широкая поддержка веб-стандартов, частые обновления, большая библиотека расширений, интеграция с сервисами Google.

  2. Mozilla Firefox:

    • Разработчик: Mozilla Foundation

    • Движок: Gecko

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

  3. Safari:

    • Разработчик: Apple

    • Движок: WebKit

    • Особенности: Оптимизирован для macOS и iOS, высокая производительность на устройствах Apple, энергоэффективность, поддержка последних веб-стандартов.

  4. Microsoft Edge:

    • Разработчик: Microsoft

    • Движок: Blink (основан на Chromium)

    • Особенности: Интеграция с Windows, высокая производительность, поддержка расширений Chrome, функции для повышения безопасности и конфиденциальности.

  5. Opera:

    • Разработчик: Opera Software

    • Движок: Blink

    • Особенности: Встроенные VPN и блокировщик рекламы, экономия заряда батареи, широкий набор встроенных функций, поддержка расширений Chrome.

  6. Brave:

    • Разработчик: Brave Software

    • Движок: Blink

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

  7. Internet Explorer:

    • Разработчик: Microsoft

    • Движок: Trident

    • Особенности: Устаревший браузер, заменен Microsoft Edge, используется для совместимости со старыми веб-приложениями.

  8. Vivaldi:

    • Разработчик: Vivaldi Technologies

    • Движок: Blink

    • Особенности: Высокая настраиваемость интерфейса и функций, ориентация на опытных пользователей, поддержка расширений Chrome.

  9. Tor Browser:

    • Разработчик: The Tor Project

    • Движок: Gecko (основан на Firefox)

    • Особенности: Обеспечение анонимности в интернете, маршрутизация трафика через сеть Tor, защита от отслеживания и слежки.

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


Для чего необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тестировании.

Инструменты разработчика в браузере, такие как Chrome DevTools, являются мощным набором инструментов, встроенных в браузеры для помощи разработчикам и тестировщикам. Они необходимы для выполнения различных задач, связанных с разработкой, отладкой и тестированием веб-приложений. Вот основные способы их использования и преимущества в тестировании:

  1. Просмотр и редактирование HTML и CSS:

    • Позволяют просматривать и изменять структуру HTML и стили CSS в реальном времени, что помогает тестировать и устранять проблемы с версткой и стилями.
  2. Консоль JavaScript:

    • Используется для выполнения и отладки JavaScript-кода на странице, что помогает тестировать и исправлять ошибки скриптов.
  3. Сетевой монитор (Network Monitor):

    • Отслеживает все сетевые запросы и ответы, включая ресурсы, загружаемые страницей, время загрузки и коды состояния HTTP. Это полезно для тестирования производительности и выявления проблем с загрузкой ресурсов.
  4. Инспектор элементов (Elements panel):

    • Позволяет детально исследовать и взаимодействовать с DOM-деревом страницы, что помогает в отладке и тестировании динамически изменяющегося контента.
  5. Производительность (Performance panel):

    • Анализирует производительность страницы, измеряя время загрузки, использование памяти и процессора. Это помогает выявлять узкие места и оптимизировать производительность веб-приложения.
  6. Безопасность (Security panel):

    • Предоставляет информацию о безопасности соединения, сертификатах SSL/TLS и потенциальных уязвимостях. Полезно для тестирования безопасности веб-приложения.
  7. Хранилище (Application panel):

    • Показывает данные, хранящиеся в Local Storage, Session Storage, IndexedDB и Cookies. Это помогает тестировать и управлять данными, хранящимися на стороне клиента.
  8. Аудиты (Lighthouse):

    • Инструмент для проведения аудитов веб-приложения на соответствие лучшим практикам, производительности, доступности и SEO. Полезно для получения рекомендаций по улучшению качества веб-приложения.
  9. Отладка кода (Debugger):

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

Использование Chrome DevTools значительно упрощает процесс разработки и тестирования веб-приложений, позволяя быстро находить и устранять проблемы, улучшать производительность и безопасность, а также проверять корректность работы интерфейсов.

Эта страница была полезной?