Модель взаимодействия открытых систем ( OSI ) — это эталонная модель Международной организации по стандартизации (ISO), которая «обеспечивает общую основу для координации разработки стандартов с целью взаимодействия систем». [2] В эталонной модели OSI коммуникации между системами разделены на семь различных уровней абстракции: физический, канальный, сетевой, транспортный, сеансовый, презентационный и прикладной. [3]
Модель разделяет поток данных в системе связи на семь уровней абстракции для описания сетевой коммуникации от физической реализации передачи битов через среду связи до представления данных распределенного приложения на самом высоком уровне . Каждый промежуточный уровень обслуживает класс функциональности для уровня выше и обслуживается уровнем ниже.
Классы функциональности реализуются при разработке программного обеспечения с использованием установленных протоколов связи .
Каждый уровень модели OSI имеет четко определенные функции, а методы каждого уровня взаимодействуют и сообщаются с методами уровней, расположенных непосредственно выше и ниже по мере необходимости.
Набор протоколов Интернета , как определено в RFC 1122 и RFC 1123, представляет собой модель сетей, разработанную одновременно с моделью OSI и финансировавшуюся в основном Министерством обороны США. Она стала основой для разработки Интернета . Она предполагала наличие общих физических связей и фокусировалась в первую очередь на программных уровнях связи, с похожей, но гораздо менее строгой структурой, чем модель OSI.
Для сравнения, несколько сетевых моделей пытались создать интеллектуальную структуру для прояснения сетевых концепций и видов деятельности, [ требуется ссылка ], но ни одна из них не была столь успешной, как эталонная модель OSI, в становлении стандартной моделью для обсуждения и обучения сетевым технологиям в области информационных технологий . Модель обеспечивает прозрачную коммуникацию посредством эквивалентного обмена протокольными единицами данных (PDU) между двумя сторонами, посредством того, что известно как одноранговая сеть (также известная как одноранговая связь). В результате эталонная модель OSI стала не только важной частью среди профессионалов и непрофессионалов, но и во всех сетевых технологиях между одной или многими сторонами, во многом благодаря ее общепринятой удобной для пользователя структуре. [4]
Разработка модели OSI началась в конце 1970-х годов для поддержки появления разнообразных методов компьютерных сетей, которые конкурировали за применение в крупных национальных сетевых усилиях в мире (см. протоколы OSI и войны протоколов ). В 1980-х годах модель стала рабочим продуктом группы взаимодействия открытых систем в Международной организации по стандартизации (ISO). Несмотря на попытку предоставить всеобъемлющее описание сетей, модель не смогла получить доверия во время проектирования Интернета , что отражено в менее предписывающем наборе протоколов Интернета , в основном спонсируемом под эгидой Целевой группы по инжинирингу Интернета (IETF).
В начале и середине 1970-х годов сети в основном либо спонсировались правительством ( сеть NPL в Великобритании, ARPANET в США, CYCLADES во Франции), либо разрабатывались вендорами с использованием фирменных стандартов, таких как IBM Systems Network Architecture и Digital Equipment Corporation DECnet . Общественные сети передачи данных только начинали появляться, и они начали использовать стандарт X.25 в конце 1970-х годов. [5] [6]
Экспериментальная система коммутации пакетов в Великобритании в 1973–1975 годах выявила необходимость определения протоколов более высокого уровня. [5] Публикация Национального вычислительного центра Великобритании «Почему распределенные вычисления » , которая появилась в результате значительного исследования будущих конфигураций компьютерных систем, [7] привела к тому, что Великобритания представила доводы в пользу создания международного комитета по стандартам для работы в этой области на встрече ISO в Сиднее в марте 1977 года. [8] [9]
Начиная с 1977 года, ISO инициировала программу по разработке общих стандартов и методов сетевых технологий. Похожий процесс развивался в Международном консультативном комитете по телеграфии и телефонии (CCITT, от французского: Comité Consultatif International Téléphonique et Télégraphique ). Оба органа разработали документы, которые определяли схожие сетевые модели. Британский департамент торговли и промышленности выступал в качестве секретариата, а университеты Соединенного Королевства разработали прототипы стандартов. [10]
Модель OSI была впервые определена в сыром виде в Вашингтоне, округ Колумбия , в феврале 1978 года французским инженером-программистом Юбером Циммерманном , а доработанный, но все еще проект стандарта был опубликован ISO в 1980 году. [9]
Составителям эталонной модели пришлось бороться со многими конкурирующими приоритетами и интересами. Скорость технологических изменений сделала необходимым определение стандартов, к которым могли бы приближаться новые системы, а не стандартизацию процедур постфактум; обратный подход к традиционному подходу к разработке стандартов. [11] Хотя это и не был стандарт сам по себе, это была структура, в которой могли быть определены будущие стандарты. [12]
В мае 1983 года [13] документы CCITT и ISO были объединены в Базовую эталонную модель взаимодействия открытых систем , обычно называемую Эталонной моделью взаимодействия открытых систем , Эталонной моделью OSI или просто моделью OSI . Она была опубликована в 1984 году как ISO, как стандарт ISO 7498, так и переименованным CCITT (теперь называемым Сектором стандартизации телекоммуникаций Международного союза электросвязи или МСЭ-Т ) как стандарт X.200.
OSI имела два основных компонента: абстрактную модель сети, называемую базовой эталонной моделью или семиуровневой моделью, и набор определенных протоколов . Эталонная модель OSI была крупным шагом вперед в стандартизации сетевых концепций. Она продвигала идею согласованной модели уровней протоколов, определяя взаимодействие между сетевыми устройствами и программным обеспечением.
Концепция семислойной модели была представлена в работе Чарльза Бахмана из Honeywell Information Systems . [14] Различные аспекты дизайна OSI развивались из опыта работы с сетями NPL, ARPANET, CYCLADES, EIN и Международной сетевой рабочей группой ( IFIP WG6.1). В этой модели сетевая система была разделена на уровни. Внутри каждого уровня один или несколько объектов реализуют его функциональность. Каждый объект взаимодействовал напрямую только со слоем, находящимся непосредственно под ним, и предоставлял возможности для использования слоем, находящимся выше.
Документы стандартов OSI доступны в ITU-T как серия рекомендаций X.200. [15] Некоторые спецификации протоколов также были доступны как часть серии рекомендаций ITU-T X. Эквивалентные стандарты ISO/IEC для модели OSI были доступны в ISO. Не все они бесплатны. [16]
OSI была отраслевым усилием, пытавшимся заставить участников отрасли договориться об общих сетевых стандартах для обеспечения взаимодействия между производителями. [17] Для крупных сетей было обычным делом поддерживать несколько наборов сетевых протоколов, при этом многие устройства не могли взаимодействовать с другими устройствами из-за отсутствия общих протоколов. В течение некоторого периода в конце 1980-х и начале 1990-х годов инженеры, организации и страны поляризовались по вопросу о том, какой стандарт , модель OSI или набор протоколов Интернета , приведет к созданию лучших и наиболее надежных компьютерных сетей. [9] [18] [19] Однако, в то время как OSI разработал свои сетевые стандарты в конце 1980-х годов, [20] [ нужна страница ] [21] [ нужна страница ] TCP/IP стал широко использоваться в сетях разных производителей для межсетевого взаимодействия .
Модель OSI по-прежнему используется в качестве справочного материала для обучения и документирования; [22] однако протоколы OSI, изначально задуманные для этой модели, не получили популярности. Некоторые инженеры утверждают, что справочная модель OSI по-прежнему актуальна для облачных вычислений . [23] Другие говорят, что исходная модель OSI не соответствует сегодняшним сетевым протоколам и предлагают вместо этого упрощенный подход. [24] [25]
Протоколы связи позволяют сущности на одном хосте взаимодействовать с соответствующей сущностью на том же уровне на другом хосте. Определения служб, такие как модель OSI, абстрактно описывают функциональность, предоставляемую слою N уровнем N−1 , где N — один из семи уровней протоколов, работающих на локальном хосте.
На каждом уровне N два объекта на взаимодействующих устройствах ( одноранговые узлы уровня N ) обмениваются блоками данных протокола (PDU) посредством протокола уровня N. Каждый PDU содержит полезную нагрузку, называемую блоком данных службы (SDU), а также заголовки или нижние колонтитулы, относящиеся к протоколу.
Обработка данных двумя взаимодействующими OSI-совместимыми устройствами происходит следующим образом:
Модель OSI была определена в стандарте ISO/IEC 7498 и состоит из следующих частей:
Стандарт ISO/IEC 7498-1 также опубликован как Рекомендация МСЭ-Т X.200.
Рекомендация X.200 описывает семь уровней, обозначенных цифрами от 1 до 7. Уровень 1 является самым низким уровнем в этой модели.
Физический уровень отвечает за передачу и прием неструктурированных необработанных данных между устройством, таким как контроллер сетевого интерфейса , концентратор Ethernet или сетевой коммутатор , и физической средой передачи . Он преобразует цифровые биты в электрические, радио- или оптические сигналы. Спецификации уровня определяют такие характеристики, как уровни напряжения, синхронизация изменений напряжения, физические скорости передачи данных, максимальные расстояния передачи, схему модуляции, метод доступа к каналу и физические разъемы. Это включает в себя расположение контактов , напряжения , сопротивление линии , спецификации кабеля, синхронизацию сигнала и частоту для беспроводных устройств. Управление скоростью передачи данных осуществляется на физическом уровне и может определять режим передачи как симплексный , полудуплексный и полнодуплексный . Компоненты физического уровня можно описать в терминах топологии сети . Спецификации физического уровня включены в спецификации для повсеместных стандартов Bluetooth , Ethernet и USB . Примером менее известной спецификации физического уровня может быть стандарт CAN .
Физический уровень также определяет, как происходит кодирование физического сигнала, такого как электрическое напряжение или световой импульс. Например, бит 1 может быть представлен на медном проводе переходом от сигнала 0 вольт к сигналу 5 вольт, тогда как бит 0 может быть представлен переходом от сигнала 5 вольт к сигналу 0 вольт. В результате общие проблемы, возникающие на физическом уровне, часто связаны с неправильным завершением среды, электромагнитными помехами или шумовым скремблированием, а также сетевыми картами и концентраторами, которые неправильно настроены или работают неправильно.
Канальный уровень обеспечивает передачу данных от узла к узлу — связь между двумя напрямую соединенными узлами. Он обнаруживает и, возможно, исправляет ошибки, которые могут возникнуть на физическом уровне. Он определяет протокол для установления и завершения соединения между двумя физически соединенными устройствами. Он также определяет протокол для управления потоком между ними.
IEEE 802 делит уровень канала передачи данных на два подуровня: [27]
Уровни MAC и LLC сетей IEEE 802, таких как 802.3 Ethernet , 802.11 Wi-Fi и 802.15.4 Zigbee , работают на канальном уровне.
Протокол «точка-точка» (PPP) — это протокол канального уровня, который может работать на нескольких различных физических уровнях, таких как синхронные и асинхронные последовательные линии.
Стандарт ITU-T G.hn , обеспечивающий высокоскоростную локальную сеть по существующим проводам (линиям электропередач, телефонным линиям и коаксиальным кабелям), включает в себя полный уровень канала передачи данных, который обеспечивает как коррекцию ошибок , так и управление потоком с помощью протокола селективного повторения со скользящим окном .
Безопасность, в частности (аутентифицированное) шифрование, на этом уровне может быть применена с помощью MACsec .
Сетевой уровень предоставляет функциональные и процедурные средства передачи пакетов от одного узла к другому, соединенному в «разные сети». Сеть — это среда, к которой может быть подключено множество узлов, в которой каждый узел имеет адрес и которая позволяет узлам, соединенным с ней, передавать сообщения другим узлам, соединенным с ней, просто предоставляя содержимое сообщения и адрес узла назначения и позволяя сети найти способ доставки сообщения узлу назначения, возможно, маршрутизируя его через промежуточные узлы. Если сообщение слишком велико для передачи от одного узла к другому на уровне канала передачи данных между этими узлами, сеть может реализовать доставку сообщений, разделив сообщение на несколько фрагментов в одном узле, отправив фрагменты независимо и собрав фрагменты заново в другом узле. Она может, но не обязана, сообщать об ошибках доставки.
Доставка сообщений на сетевом уровне не обязательно будет надежной; протокол сетевого уровня может обеспечить надежную доставку сообщений, но это не обязательно.
Ряд протоколов управления уровнями, функция, определенная в приложении управления , ISO 7498/4, относятся к сетевому уровню. Они включают протоколы маршрутизации, управление многоадресными группами, информацию и ошибки сетевого уровня, а также назначение адресов сетевого уровня. Именно функция полезной нагрузки делает их принадлежащими сетевому уровню, а не протокол, который их переносит. [28]
Транспортный уровень обеспечивает функциональные и процедурные средства передачи последовательностей данных переменной длины от исходного хоста к целевому хосту из одного приложения в другое через сеть, сохраняя при этом функции качества обслуживания. Транспортные протоколы могут быть ориентированными на соединение или без соединения.
Это может потребовать разбиения больших блоков данных протокола или длинных потоков данных на более мелкие фрагменты, называемые «сегментами», поскольку сетевой уровень накладывает максимальный размер пакета, называемый максимальной единицей передачи (MTU), который зависит от максимального размера пакета, налагаемого всеми уровнями канала передачи данных на сетевом пути между двумя хостами. Объем данных в сегменте данных должен быть достаточно малым, чтобы учесть заголовок сетевого уровня и заголовок транспортного уровня. Например, для данных, передаваемых по Ethernet , MTU составляет 1500 байт, минимальный размер заголовка TCP составляет 20 байт, а минимальный размер заголовка IPv4 составляет 20 байт, поэтому максимальный размер сегмента составляет 1500−(20+20) байт или 1460 байт. Процесс деления данных на сегменты называется сегментацией ; это дополнительная функция транспортного уровня. Некоторые транспортные протоколы с установлением соединения, такие как TCP и транспортный протокол с установлением соединения OSI (COTP), выполняют сегментацию и повторную сборку сегментов на принимающей стороне; транспортные протоколы без установления соединения, такие как UDP и транспортный протокол без установления соединения OSI (CLTP), обычно этого не делают.
Транспортный уровень также контролирует надежность заданного соединения между исходным и целевым хостом с помощью управления потоком, контроля ошибок и подтверждений последовательности и существования. Некоторые протоколы ориентированы на состояние и соединение . Это означает, что транспортный уровень может отслеживать сегменты и повторно передавать те, которые не удалось доставить, через систему подтверждения связи. Транспортный уровень также предоставит подтверждение успешной передачи данных и отправит следующие данные, если не произошло ошибок.
Однако надежность не является строгим требованием на транспортном уровне. Такие протоколы, как UDP, например, используются в приложениях, которые готовы принять некоторую потерю пакетов, переупорядочение, ошибки или дублирование. Потоковое мультимедиа , многопользовательские игры в реальном времени и передача голоса по IP (VoIP) являются примерами приложений, в которых потеря пакетов обычно не является фатальной проблемой.
Транспортный протокол OSI с установлением соединения определяет пять классов транспортных протоколов с установлением соединения, начиная от класса 0 (который также известен как TP0 и предоставляет наименьшее количество функций) до класса 4 (TP4, разработанный для менее надежных сетей, похожих на Интернет). Класс 0 не содержит восстановления после ошибок и был разработан для использования на сетевых уровнях, которые обеспечивают безошибочные соединения. Класс 4 наиболее близок к TCP, хотя TCP содержит функции, такие как изящное закрытие, которое OSI назначает сеансовому уровню. Кроме того, все классы протоколов с установлением соединения OSI TP обеспечивают ускоренные данные и сохранение границ записей. Подробные характеристики классов TP0–4 приведены в следующей таблице: [29]
Простой способ визуализировать транспортный уровень — сравнить его с почтовым отделением, которое занимается отправкой и классификацией отправленной почты и посылок. Почтовое отделение проверяет только внешний конверт почты, чтобы определить ее доставку. Более высокие уровни могут иметь эквивалент двойных конвертов, например, криптографические службы представления, которые могут быть прочитаны только адресатом. Грубо говоря, туннельные протоколы работают на транспортном уровне, например, перенос не-IP-протоколов, таких как SNA от IBM или IPX от Novell по IP-сети, или сквозное шифрование с IPsec . Хотя Generic Routing Encapsulation (GRE) может показаться протоколом сетевого уровня, если инкапсуляция полезной нагрузки происходит только в конечной точке, GRE становится ближе к транспортному протоколу, который использует заголовки IP, но содержит полные кадры уровня 2 или пакеты уровня 3 для доставки в конечную точку. L2TP переносит кадры PPP внутри транспортных сегментов.
Хотя протокол управления передачей (TCP) и протокол пользовательских датаграмм (UDP) из набора протоколов Интернета не были разработаны в рамках эталонной модели OSI и не строго соответствуют определению транспортного уровня в OSI, их обычно относят к протоколам 4-го уровня в рамках OSI.
Transport Layer Security (TLS) также не вписывается строго в модель. Он содержит характеристики транспортных и презентационных уровней. [30] [31]
Уровень сеанса создает настройку, управляет соединениями и завершает разрыв между двумя или более компьютерами, что называется «сеансом». Общие функции уровня сеанса включают функции входа пользователя (установления) и выхода пользователя (завершения). Включая этот вопрос, методы аутентификации также встроены в большинство клиентского программного обеспечения, такого как FTP-клиент и NFS-клиент для сетей Microsoft. Таким образом, уровень сеанса устанавливает, управляет и завершает соединения между локальным и удаленным приложением. Уровень сеанса также обеспечивает полнодуплексную , полудуплексную или симплексную работу [ необходима цитата ] и устанавливает процедуры для контрольной точки, приостановки, перезапуска и завершения сеанса между двумя связанными потоками данных, такими как аудио- и видеопотоки в приложении веб-конференций. Таким образом, уровень сеанса обычно реализуется явно в прикладных средах, которые используют удаленные вызовы процедур .
Уровень представления устанавливает форматирование данных и трансляцию данных в формат, указанный прикладным уровнем во время инкапсуляции исходящих сообщений при передаче вниз по стеку протоколов , и, возможно, реверсирует во время деинкапсуляции входящих сообщений при передаче вверх по стеку протоколов. По этой самой причине исходящие сообщения во время инкапсуляции преобразуются в формат, указанный прикладным уровнем, в то время как преобразование для входящих сообщений во время деинкапсуляции является обратным.
Уровень представления обрабатывает преобразование протоколов, шифрование данных, дешифрование данных, сжатие данных, декомпрессию данных, несовместимость представления данных между операционными системами и графические команды. Уровень представления преобразует данные в форму, которую принимает прикладной уровень, для отправки по сети. Поскольку уровень представления преобразует данные и графику в формат отображения для прикладного уровня, уровень представления иногда называют уровнем синтаксиса. [32] По этой причине уровень представления согласовывает передачу структуры синтаксиса через основные правила кодирования абстрактной синтаксической нотации один (ASN.1), с такими возможностями, как преобразование текстового файла в кодировке EBCDIC в файл в кодировке ASCII или сериализация объектов и других структур данных из XML и в XML . [4]
Уровень приложений — это уровень модели OSI, который ближе всего к конечному пользователю, что означает, что как уровень приложений OSI, так и пользователь напрямую взаимодействуют с программным приложением, реализующим компонент связи между клиентом и сервером, например, File Explorer и Microsoft Word . Такие прикладные программы выходят за рамки модели OSI, если они не интегрированы в уровень приложений напрямую через функции связи, как в случае с такими приложениями, как веб-браузеры и программы электронной почты . Другими примерами программного обеспечения являются Microsoft Network Software for File and Printer Sharing и Unix/Linux Network File System Client для доступа к общим файловым ресурсам.
Функции прикладного уровня обычно включают в себя обмен файлами, обработку сообщений и доступ к базе данных через наиболее распространенные протоколы на прикладном уровне, известные как HTTP, FTP, SMB/CIFS, TFTP и SMTP. При идентификации партнеров по коммуникации прикладной уровень определяет идентификацию и доступность партнеров по коммуникации для приложения с данными для передачи. Наиболее важным различием на прикладном уровне является различие между сущностью приложения и приложением. Например, веб-сайт бронирования может иметь две сущности приложения: одну, использующую HTTP для связи со своими пользователями, и одну для протокола удаленной базы данных для записи бронирований. Ни один из этих протоколов не имеет ничего общего с бронированиями. Эта логика находится в самом приложении. У прикладного уровня нет средств для определения доступности ресурсов в сети. [4]
Межуровневые функции — это сервисы, которые не привязаны к определенному слою, но могут влиять на более чем один уровень. [33] Некоторые ортогональные аспекты, такие как управление и безопасность , затрагивают все уровни (см. Рекомендацию ITU-T X.800 [34] ). Эти сервисы направлены на улучшение триады CIA — конфиденциальности , целостности и доступности — передаваемых данных. Межуровневые функции являются нормой на практике, поскольку доступность сервиса связи определяется взаимодействием между проектированием сети и протоколами управления сетью .
Конкретные примеры кросс-уровневых функций включают следующее:
Ни эталонная модель OSI, ни спецификации протокола OSI не описывают никаких программных интерфейсов, кроме намеренно абстрактных описаний сервисов. Спецификации протоколов определяют методологию для связи между одноранговыми узлами, но программные интерфейсы зависят от реализации.
Например, спецификация интерфейса сетевого драйвера (NDIS) и открытый интерфейс передачи данных (ODI) являются интерфейсами между средой (уровень 2) и сетевым протоколом (уровень 3).
В таблице ниже представлен список уровней OSI, исходных протоколов OSI и некоторых приблизительных современных соответствий. Это соответствие грубое: модель OSI содержит особенности, не встречающиеся в более поздних системах, таких как стек IP в современном Интернете. [25]
Проектирование протоколов в модели TCP/IP Интернета не касается строгой иерархической инкапсуляции и разделения на слои. RFC 3439 содержит раздел под названием «Разделение на слои считается вредным ». [46] TCP/IP распознает четыре широких уровня функциональности, которые вытекают из области действия содержащихся в них протоколов: область применения программного обеспечения; транспортный путь от хоста к хосту; диапазон межсетевого взаимодействия; и область прямых ссылок на другие узлы локальной сети. [47]
Несмотря на то, что в модели OSI используется иная концепция разделения на уровни, эти уровни часто сравнивают со схемой разделения на уровни OSI следующим образом:
Эти сравнения основаны на исходной семиуровневой модели протокола, определенной в ISO 7498, а не на усовершенствованиях внутренней организации сетевого уровня.
Пакет протоколов OSI , который был определен как часть проекта OSI, многими считался слишком сложным и неэффективным, и в значительной степени нереализуемым. [48] [ нужна страница ] Принимая подход «обновления погрузчика» к сетям, он указал на устранение всех существующих сетевых протоколов и замену их на всех уровнях стека. Это усложнило реализацию и вызвало сопротивление многих поставщиков и пользователей, которые вложили значительные средства в другие сетевые технологии. Кроме того, протоколы включали так много дополнительных функций, что реализации многих поставщиков не были совместимы. [48] [ нужна страница ]
Хотя модель OSI все еще часто упоминается, набор протоколов Интернета стал стандартом для сетей. Прагматичный подход TCP/IP к компьютерным сетям и к независимым реализациям упрощенных протоколов сделал его практической методологией. [48] [ нужна страница ] Некоторые протоколы и спецификации в стеке OSI продолжают использоваться, одним из примеров является IS-IS , который был определен для OSI как ISO/IEC 10589:2002 и адаптирован для использования в Интернете с TCP/IP как RFC 1142. [49]