Wiki Барышева Анна

Материал из Wiki
Перейти к: навигация, поиск

Содержание

Сетевая модель OSI

Сетевая модель OSI (Open Systems Interconnection) — эталонная модель взаимодействия открытых систем. Разработана ISO в 1984 году. Описывает семь уровней, через которые данные передаются по сети.

TOC

Уровни модели

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

Верхние уровни (прикладные)

  1. Прикладной уровень (Application) — интерфейс пользователя (HTTP, FTP).
  2. Уровень представления (Presentation) — шифрование, сжатие данных.
  3. Сеансовый уровень (Session) — управление сеансами связи.

Нижние уровни (транспортные)

  1. Транспортный уровень (Transport) — надёжная доставка (TCP, UDP).
  2. Сетевой уровень (Network) — маршрутизация и IP-адресация.
  3. Канальный уровень (Data Link) — доступ к среде, MAC-адреса.
  4. Физический уровень (Physical) — передача битов по кабелю.

Формальное описание процесса инкапсуляции

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

D_{app} \xrightarrow{+H_7} D_7 \xrightarrow{+H_6} D_6 \xrightarrow{+H_5} D_5 \xrightarrow{+H_4} D_4 \xrightarrow{+H_3} D_3 \xrightarrow{+H_2} D_2 \xrightarrow{+H_1} D_1

где:

  • D_{app} — исходные данные приложения,
  • H_i — заголовок i-го уровня,
  • D_i — данные после обработки на уровне i.

Общий размер передаваемого кадра: S_{\text{frame}} = S_{\text{data}} + \sum_{i=1}^{7} S_{H_i} + S_{\text{trailer}}

Пример работы модели

Рассмотрим передачу HTTP-запроса через сеть Ethernet.

Имитация инкапсуляции на Python

<syntaxhighlight lang="python"> def encapsulate_osi(data: str, protocol_headers: dict) -> dict:

   """Моделирует процесс инкапсуляции по уровням OSI."""
   packet = {"data": data}
   
   # Уровни с 7 по 1 (сверху вниз)
   levels = [
       "Прикладной (HTTP)",
       "Представления (TLS)",
       "Сеансовый (SSL)",
       "Транспортный (TCP)",
       "Сетевой (IP)",
       "Канальный (Ethernet)",
       "Физический (биты)"
   ]
   
   for level in levels:
       header = protocol_headers.get(level, "")
       packet[level] = f"{header}{packet.get('data', data)}"
   
   return packet
  1. Пример использования

if name == "main":

   http_request = "GET /index.html HTTP/1.1"
   headers = {
       "Прикладной (HTTP)": "[HTTP-Header]",
       "Транспортный (TCP)": "[TCP-Segment]",
       "Сетевой (IP)": "[IP-Packet]",
       "Канальный (Ethernet)": "[Ethernet-Frame]"
   }
   
   result = encapsulate_osi(http_request, headers)
   for level, value in result.items():
       if level != "data":
           print(f"{level}: {value[:50]}...")

</syntaxhighlight>

Сравнение с моделью TCP/IP

Модель TCP/IP — практическая реализация, где уровни OSI объединены:

  • Прикладной + Представления + Сеансовый → Прикладной (TCP/IP)
  • Транспортный → Транспортный
  • Сетевой → Интернет
  • Канальный + Физический → Сетевой интерфейс

Процесс передачи данных можно представить как поток, проходящий через уровни: Данные → [Уровень 7] → Данные₇ → [Уровень 6] → Данные₆ → ... → [Уровень 1] → Биты

Где каждый уровень добавляет свой заголовок (инкапсуляция).

Примечания

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты