К какому уровню модели OSI относится протокол HTTP?

«К какому уровню модели OSI относится протокол HTTP?» — вопрос из категории Сети, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Протокол HTTP (HyperText Transfer Protocol) относится к прикладному уровню (Application Layer, 7-й уровень) модели OSI.

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

Контекст в Node.js: Когда мы создаем HTTP-сервер с помощью встроенного модуля http или фреймворка вроде Express, мы работаем именно на прикладном уровне.

const http = require('http');

// Создаем сервер, который работает на прикладном уровне (HTTP).
const server = http.createServer((req, res) => {
  // req и res — объекты, представляющие HTTP-запрос и ответ.
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello from the Application Layer!');
});

server.listen(3000, () => {
  console.log('HTTP server listening on port 3000');
});

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