Можете описать сетевую модель OSI?
Объясните, какие слои участвуют при отправе на сервер HTTP запроса.
Подсказки:
- Существует 7 слоёв
- Подумайте, на каком слое чаще всего работают бэкенд приложения.
- Учтите, как данные инкапсулируются при перемещении по стеку OSI.
Обязательно:
- Назвать как минимум 5 слоёв
- Понимание инкапсуляции протоколов на разных слоях.
- Знание того, как проблемы сети на различных уровнях влияют на работу бэкенд приложения.
Модель OSI (Open Systems Interconnection) — это концептуальная модель, которая стандартизирует функции системы связи на семи уровнях абстракции. Каждый уровень выполняет определённую функцию в передаче данных:
-
Физический (Physical) уровень: Обрабатывает передачу битов по физическому каналу связи.
- Занимается электрическими сигналами, кабелями, разъёмами.
- Примеры: Кабели Ethernet, оптоволокно, беспроводные сигналы.
-
Канальный (Data Link) уровень: Обеспечивает передачу данных между двумя непосредственно соединёнными узлами.
- Имеет адресацию MAC (Media Access Control).
- Обнаруживает и потенциально исправляет ошибки, возникшие на физическом уровне.
- Примеры: Ethernet, Wi-Fi, PPP.
-
Сетевой (Network) уровень: Маршрутизирует пакеты данных между различными сетями.
- Реализует IP адресацию и решения по маршрутизации.
- Примеры: IP (IPv4/IPv6), ICMP, протоколы маршрутизации.
-
Транспортный (Transport) уровень: Обеспечивает передачу данных.
- Управляет потоком данных end-to-end с возможностью ограниченного восстановления данных при ошибках.
- Примеры: TCP (надёжный), UDP (быстрый, но ненадежный).
-
Сеансовый (Session) уровень: Устанавливает, управляет и завершает соединения.
- Обрабатывает установку сеанса, координацию и завершение.
- Примеры: NetBIOS, любой протокол RPC.
-
Представления (Presentation) данных: Преобразовывает данные для совместимости с приложением.
- Обрабатывает шифрование, сжатие и преобразование форматов.
- Примеры: SSL/TLS, MPEG.
-
Прикладной (Application) уровень: Непосредственно взаимодействует с приложениями конечного пользователя.
- Предоставляет сетевые услуги приложениям.
- Примеры: HTTP, SMTP, FTP, DNS.
Поток HTTP-запроса через уровни OSI
Когда приложение на бэкенде отправляет HTTP-запрос:
-
Прикладной уровень: Генерируется HTTP-запрос
# Пример на Python с использованием библиотеки requests response = requests.get('https://api.example.com/data')
-
Уровень представления данных: Данные могут быть зашифрованы (HTTPS использует TLS/SSL).
-
Сеансовый уровень: Устанавливается сеанс соединения.
-
Транспортный уровень: Устанавливается TCP-соединение.
-
Сетевой уровень: Создаются IP-пакеты с исходными/конечными адресами.
-
Канальный уровень: Создаются кадры с адресами MAC.
-
Физический уровень: Биты передаются по физическому каналу.
Приложения на бэкенде в основном работают на прикладном уровне, но разработчики должны понимать, как нижние уровни влияют на работу приложения и как находить первопричины проблем.
Проблемы в сети на разных уровнях по-разному влияют на приложения на бэкенде:
- Проблемы на физическом/канальном уровнях: Полная потеря соединения.
- Проблемы на сетевом уровне: Высокая задержка, потеря пакетов.
- Проблемы на транспортном уровне: Таймауты соединения, разрыв соединения.
- Проблемы на прикладном уровне: Коды ошибок HTTP, некорректные ответы.
Понимание инкапсуляции протоколов, где как каждый уровень оборачивает данные с более высоких уровней, помогает диагностировать проблемы работоспособности и производительности приложений.