При изучении работы компьютерных сетей рано или поздно придется столкнуться с так называемой открытой сетевой моделью OSI. Модель оси очень важна для понимания сетевых технологий, и она часто вызывает неожиданные трудности у новичков.
Протоколы обмена (или просто протоколы) необходимы, чтобы участники обмена информацией понимали друг друга. В работе компьютерных сетей задействуется множество протоколов, относящихся к разным сетевым уровням. Например, сетевая карта компьютера следует протоколу, который описывает перевод цифровых данных в передающийся по проводам аналоговый сигнал; браузер связывается с сайтом в Интернете при помощи транспортного протокола TCP; сервер и браузер общаются, используя протокол HTTP.
Иными словами, протокол — это набор соглашений между разработчиками ПО и аппаратуры. Текст протокола отвечает на вопрос: «Что нужно сделать, чтобы программы и устройства могли взаимодействовать с другими программами/устройствами, поддерживающими протокол».
OSI — это аббревиатура от Open Systems Interconnection, что в переводе буквально означает «Взаимодействие открытых систем». Речь не идет об Open Source, открытые системы в данном случае являются системами, построенными на основе открытых (общедоступных) спецификаций, соответствующих стандартам.
Часто можно встретить термин «эталонная модель OSI». Эталонная модель описывает, какие уровни должны быть в сети и какие функции выполняются на каждом из уровней. OSI-модель разделяет все протоколы на 7 таких уровней:
Модель OSI не включает описание протоколов; они определяются в отдельных стандартах. Исторически вышло, что на практике модель взаимодействия открытых систем не применяется. Раньше существовали её буквальные реализации, содержащие ровно 7 слоев. Однако со временем их вытеснил менее предписывающий набор протоколов TCP/IP, на котором построен современный Интернет.
Тем не менее ныне используемые протоколы приблизительно соответствуют уровням OSI, а сама модель используется в качестве общего языка для описания устройства сетей.
cloud
Все уровни нумеруют, начиная с самого близкого к среде передачи данных. В данном случае первым будет физический уровень модели osi. Здесь происходит преобразование битов информации в сигналы, которые затем передаются по среде. Используемый физический протокол зависит от того, каким образом компьютер подключен к сети.
Например, в случае обычной локальной сети на основе витой пары применяется спецификация 100BASE-TX (стандарт IEEE 802.3u), определяющая кабели и разъемы для соединения, технические характеристики проводов, частоты, напряжение, кодировку и многое другое. Подключения через Wi-Fi сложнее, так как данные передаются по радиоканалам, а эфир один на всех. Взаимодействие Wi-Fi устройств описывается спецификацией IEEE 802.11, которая, как и Ethernet, включает помимо физического уровня часть канального.
При выходе в Интернет через сеть сотовой телефонной связи используются спецификации GSM, включающие специальные протоколы (например GPRS) и затрагивающие не только два первых, но и сетевой уровень. Бывают и относительно простые протоколы, например RS232. Он будет использоваться, если соединить два компьютера нуль-модемным кабелем через COM-порты.
Далее располагается канальный уровень модели osi. На этом слое пересылаются не биты, а целые сообщения (кадры, фреймы). Канальный уровень получает с физического поток бит, находит начало и конец сообщения и упаковывает биты в кадр. Также происходит обнаружение и коррекция ошибок. В многоточечных сетевых соединениях, где один и тот же канал связи используется разными компьютерами, канальный уровень дополнительно обеспечивает физическую адресацию и управление доступом к разделяемой среде передачи данных.
Часть задач, которые в теории решают протоколы этого уровня, решена в спецификациях Ethernet и Wi-Fi, но есть кое-что еще. Сетевые интерфейсы в многоточечном соединении опознают друг друга по специальным шестибайтовым идентификаторам, mac-адресам. При настройке сети сетевые адаптеры должны знать, кто из них отвечает за какой сетевой адрес (ip-адрес), чтобы отправлять пакеты (блоки данных, передаваемые в пакетном режиме) по назначению. Для автоматического построения таблиц соответствия ip- и mac-адресов используется протокол ARP (Address Resolution Protocol).
В соединениях “точка-точка” ARP не нужен. Зато часто применяется протокол PPP (Point to Point Protocol). Кроме структуры кадра и контроля его целостности, он содержит правила для установления соединения, проверки состояния линии связи и аутентификации участников.
Следующий уровень — сетевой уровень модели osi. Он предназначен для построения крупных составных сетей на основе различных сетевых технологий. На этом уровне обеспечивается согласование различий в разных технологиях канального уровня и общая адресация с помощью глобальных адресов, позволяющих однозначно определить компьютер в сети. Также выполняется маршрутизация — определение маршрута пересылки пакетов через промежуточные узлы.
Иногда можно столкнуться с утверждением, что в Интернете в роли этого уровня выступает протокол IP (Internet Protocol). С одной стороны это так: именно IP определяет структуру отдельного пакета, передающегося по сети через шлюзы, систему сетевых адресов и некоторые другие функции. С другой стороны существует несколько других протоколов, которые также можно отнести к сетевому уровню, хотя они и работают «поверх» IP.
Наиболее важным среди них можно считать протокол ICMP (Internet Control Message Protocol). Благодаря ему участники соединений обмениваются сообщениями о всяких штатных и нештатных ситуациях: обрыв соединения, отсутствие подходящего маршрута и другие случаи невозможности доставки пакета. Иногда сообщения ICMP содержат рекомендации по использованию альтернативного маршрута.
Пакеты, передаваемые по сети при помощи протоколов сетевого уровня, обычно ограничены в размерах. Они могут доставляться не в том порядке, в котором были отправлены, теряться, или, наоборот, дублироваться. Прикладным программам требуется более высокий уровень сервиса, обеспечивающий надежность доставки данных и простоту работы. За это как раз отвечают протоколы транспортного уровня модели osi. Они следят за доставкой пакетов, отправляя и анализируя соответствующие подтверждения, нумеруют пакеты и расставляют их в нужном порядке после получения.
Как говорилось выше, протоколы сетевого уровня не гарантируют доставку пакета. Отправленный пакет может потеряться или, наоборот, прийти в двух экземплярах, а пакеты, отправленные раньше других, могут прийти к получателю позже. Содержимое такого пакета обычно называют дейтаграммой (datagram).
Одним из самых простых транспортных протоколов является UDP (user datagram protocol). Участники сетевого взаимодействия, работающие на одном компьютере, идентифицируются целыми числами, называемыми номерами портов (или просто портами). Протокол UDP предписывает добавлять к передаваемым через сеть данным номер порта отправителя и получателя, длину дейтаграммы и ее контрольную сумму. Все это “заворачивается” в пакет в соответствии с соглашениями протокола IP. При этом ответственность о подтверждениях, повторных отправках, о делении информации на небольшие порции и о последующем восстановлении исходной последовательности лежит на авторе программ. Поэтому UDP не защищает от возможности потери, дублирования пакета и нарушения порядка получения обеспечивается только целостность данных внутри одной дейтаграммы.
Существует также второй вид транспортного взаимодействия — потоковое. Решение всех проблем, связанных с потерями пакетов, восстановлением данных из отдельных фрагментов берет на себя реализация транспортного протокола, которая оказывается гораздо сложнее реализации протокола дейтаграммного. Соответствующий транспортный протокол, используемый в Интернете, называется TCP (transmission control protocol). В отличие от работы с UDP, при потоковой работе необходимо установить соединение. Гарантируется, что все байты, записанные в поток, будут затем доступны для чтения на другом конце потока, причем их порядок будет сохранен; при невозможности соблюдения этой гарантии соединение окажется разорвано, о чем узнают оба партнера. Протокол TCP предусматривает целый ряд нетривиальных соглашений, к счастью, всю их реализацию берет на себя операционная система.
Определить, какие из реально существующих протоколов относятся к оставшимся трем уровням, будет несколько сложней. После транспортного идет сеансовый уровень. По замыслу создателей OSI-модели, его целью является установка сеансов связи. Сюда можно включить определение очередности передачи сообщений в управлении диалогом, например в видеоконференциях, задачи одновременного доступа к некоторым критическим операциям и защиту от разрывов сетевого соединения (функция синхронизации). Проблема заключается в том, что на практике все это реализуется либо средствами протоколов прикладного уровня, либо еще более высокоуровневыми соглашениями, не входящими в модель OSI. Поэтому в реальных сетях сеансовый уровень не используется.
Следующий слой — уровень представления. Его задача заключается в предоставлении данных в виде, понятном как отправителю, так и получателю. Сюда можно включить различные форматы данных и правила их интерпретации: протоколы кодировки текста (ASCII, UTF-8, koi8r), спецификации разнообразных версий HTML\XHTML, графические форматы (JPEG, GIF, PNG), набор спецификаций MIME и прочее. На уровне представления реализуется шифрование и дешифрование. Самые популярные примеры - Transport Layer Security (TLS)/Secure Socket Layer (SSL).
С прикладным уровнем все просто. На нем организуется взаимодействие приложений, которыми пользуются конечные пользователи. Сюда входит электронная почта, “Всемирная паутина” (World Wide Web), социальные сети, видео и аудиосвязь и т.п.
Подготовили для вас выгодные тарифы облачных серверов
Модель OSI была принята Международной организацией по стандартизации (ISO) в 1983 году. В то время сетевые технологии активно развивались. Пока в комитете спорили о стандартах, все постепенно переходили на стек TCP/IP, вытесняющий другие протоколы. Когда свет увидел реализацию протоколов OSI, на нее обрушился шквал критики. Их ругали за несоответствие реальным технологиям, неполную спецификацию, малый спектр возможностей по сравнению с существующими протоколами.
Кроме того, эксперты отмечали деление на 7 уровней необоснованным. Некоторые слои практически не использовались, а одни и те же задачи решались на разных уровнях. Специалисты шутят, что модель OSI вышла семиуровневой, потому что в соответствующем комитете образовалось 7 подкомитетов и каждый предложил что-то свое. Между тем набор протоколов TCP/IP, на котором построен весь современный Интернет, разрабатывался узкой группой людей по принципу ad hoc - решение задачи здесь и сейчас. Никаких комитетов в создании TCP/IP участия не принимало.
Однако не все так плохо. Неоспоримым преимуществом модели OSI является хорошая теоретическая проработка вопросов сетевого взаимодействия, поэтому сегодня она является эталоном для документации и обучения. Некоторые считают, что не все потеряно, и, возможно, модель найдет свое место, например в облачных вычислениях.
Просто скорировали из книги Эндрю Тоненбаумана комп. сети слово в слово междупрочем, укажите настоящего автора
Добрый день! Мы не нашли дословных совпадений с «Компьютерными сетями» ни в русском переводе, ни в оригинале 🧐
По информации от автора статьи, в работе он опирался на различные источники, в том числе на «Системы и сети» Андрея Столярова.