Знакомство с OSI

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

Модель функционирования сети называется сетевая модель базовой эталонной модели взаимодействия открытых систем ISO/OSI. Кратко — модель OSI (Open Systems Interconnection).

модель OSI

Всего в такой модели 7 уровней. Взаимодействие уровней жестко стандартизировано и сведено к минимуму. Нижний уровень понятия не имеет о наличии более высоких уровней и об их устройстве.

Самый нижний уровень умеет просто посылать биты. Даже не передавать, а именно посылать. Он понятия не имеет дойдут они или нет. Послал и забыл.

Более высокий уровень оперирует уже группами бит — кадрами, и немного знает об физическом устройстве сети, понимает MAC-адреса и тому подобное.

Следующий уровень — пакетный. Он еще более умный и умеет оперировать IP-адресами сети. И так далее.

Зачем это все нужно? Для максимизации гибкости.

Представь, что каждый уровень — это Java-интерфейс и у него может быть несколько различных реализаций. Так и тут. На физическим уровне вы можете пересылать биты по проводу, слать по воздуху (Wi-Fi), отправлять через спутник, а все остальные уровни даже знать об этом ничего не будут. И все будет работать, как и было задумано.

Стек протоколов OSI

Более детально стек протоколов ты можешь изучить на картинке ниже:

Но если вы не системный администратор, то такая детализация протоколов вам ни к чему. Более интересным может быть изучение стека протоколов TCP (Transmission Control Protocol)/IP (Internet Protocol).

Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP, которая имеет только прикладной уровень над транспортным уровнем:

Распределение протоколов по уровням модели OSI

TCP/IP OSI
Прикладной Прикладной HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
Представления XDR, AFP, TLS, SSL
Сеансовый ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP
Транспортный Транспортный TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
Сетевой Сетевой IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP
Канальный Канальный Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP/td>
Физический электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение

Cтек протоколов TCP/IP

Стек протоколов TCP/IP включает в себя четыре уровня:

  • Прикладной уровень (Application Layer)
  • Транспортный уровень (Transport Layer)
  • Межсетевой уровень (Сетевой уровень) (Internet Layer)
  • Канальный уровень (Network Access Layer)

Протоколы этих уровней полностью реализуют все функциональные возможности модели OSI. На стеке протоколов TCP/IP построено все взаимодействие пользователей в IP-сетях.

Стек протоколов TCP/IP является независимым от физического оборудования благодаря чему, в частности, обеспечивается полностью прозрачное взаимодействие между проводными и беспроводными сетями.

На прикладном уровне (Application layer) работает большинство сетевых приложений.

Прикладной уровень

Для взаимодействия программ существуют высокоуровневые протоколы обмена информацией. Например, браузеры работают по протоколу HTTP, почта отправляется по протоколу SMTP, Телеграм работает по своему собственному зашифрованному протоколу.

Но приватные протоколы нам не очень интересны. Чаще всего ты будешь сталкиваться с массовыми протоколами, такими как ftp-клиент для протокола FTP (передача файлов), SSH (безопасное соединение с удаленной машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.

Почти все эти протоколы работают поверх протокола TCP, хотя некоторые для ускорения работы работают по UDP (User Datagram Protocol). Но, что важно, у этих протоколов есть порты по умолчанию. Пример:

  • 20 FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд)
  • 22 – SSH
  • 23 – Telnet
  • 53 – запросы DNS
  • 80 – HTTP
  • 443 – HTTPS

Эти порты определены Агентством по выделению имён и уникальных параметров протоколов (IANA).

Есть еще несколько популярных протоколов прикладного уровня: Echo, Finger, Gopher, HTTP, HTTPS, IMAP, IMAPS, IRC, NNTP, NTP, POP3, POPS, QOTD, RTSP, SNMP, SSH, Telnet, XDMCP.

Транспортный уровень

Протоколы транспортного уровня созданы для решения проблемы гарантированной доставки сообщений.

Сообщение (пакет данных) может быть послано и потеряно где-то в сети. В этом случае на плечи транспортного уровня ложится задача мониторинга таких ситуаций и повторной отсылки сообщения, если нужно.

Еще одна важная задача протокола транспортного уровня — это контроль за порядком прихода сообщений. Часто бывает так, что сообщения были посланы в одном порядке, а пришли в другом. И если собрать из таких кусочков изначально большое сообщение, то получится чепуха.

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

Протокол TCP — “гарантированный” транспортный механизм с предварительным установлением соединения, который предоставляет приложению надежный поток данных, дает уверенность в безошибочности получаемых данных, перезапрашивает данные в случае потери и устраняет дублирование данных.

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

Протокол UDP — это протокол передачи датаграмм без установления соединения. Также его называют протоколом “ненадежной” передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.

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

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


Еще немного о сетевой модели OSI