OSI (Open Systems Interconnection Reference Model, модель взаимодействия открытых систем) — модель для создания сетевых коммуникаций и разработки сетевых протоколов на основе уровней. Каждый уровень обслуживает свою часть процесса взаимодействия. Благодаря такому подходу упрощается совместная работа сетевого оборудования и программного обеспечения. Разработка протокола TCP/IP не была связана с моделью OSI. Реально OSI она не была реализована, и осталась в теории. Специалисты используют только некоторое подмножество модели OSI.
В 1978 году Международный комитет по стандартизации (ISO) для объединения различных сетей разработал стандарт сетевой архитектуры ISO 7498. В разработке участвовало семь комитетов, каждому из них был отведен свой уровень. В 1980 году IEEE опубликовал спецификацию 802, детально описавшую механизмы взаимодействия физических устройств на канальном и физическом уровнях модели OSI. В 1984 году спецификация модели OSI была пересмотрена и принята, как международный стандарт для сетевых коммуникаций.
Модель состоит из семи уровней, расположенных вертикально друг над другом. Каждый уровень может взаимодействовать только со своими соседями и выполнять отведенные только ему функции Прикладной уровень (Application layer) является верхним (седьмым) уровенем модели и обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты; отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления.
Уровень представления (Presentation layer) отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На этом уровне может осуществляться сжатие/распаковка или кодирование/раскодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
Сеансовый уровень (Session layer) — отвечает за поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия.
Транспортный уровень (Transport layer) — предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. Блоки данных подразделяются на фрагменты, размер которых зависит от протокола. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.
Сетевой уровень (Network layer) — предназначен для определения пути передачи данных, отвечает за трансляцию логических адресов и имен в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию пакетов, отслеживание неполадок и заторов в сети. На этом уровне работают сетевые устройства типа маршрутизаторов.
Канальный уровень (Data Link layer) — предназначен для взаимодействия сетей на физическом уровне и контроля за ошибками. Полученные с физического уровня данные он упаковывает, проверяет на целостность, исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на два подуровня: MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты и сетевые адаптеры.
Физический уровень (Physical layer) — нижний уровень модели, предназначен для передачи потока данных; осуществляет передачу электрических или оптических сигналов в кабель, их прием и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Физический уровень осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают концентраторы и повторители (ретрансляторы) сигнала.
Уровни взаимодействуют сверху вниз и снизу вверх посредством интерфейсов и могут взаимодействовать с аналогичным уровнем другой системы с помощью протоколов. Семиуровневая модель OSI является теоретической, содержит ряд недоработок. Реальные сетевые протоколы вынуждены отклоняться от нее, обеспечивая непредусмотренные возможности, поэтому привязка их к уровням OSI является условной. Основной недоработкой OSI считается непродуманный транспортный уровень. На нем OSI позволяет обмен данными между приложениями (вводя понятие порта — идентификатора приложения), однако, возможность обмена простыми датаграммами в OSI не предусмотрена — транспортный уровень должен образовывать соединения, обеспечивать доставку, управлять потоком. Реальные протоколы реализуют такую возможность.
Семейство TCP/IP имеет два транспортных протокола: TCP, полностью соответствующий OSI, и UDP, отвечающий транспортному уровню только наличием порта, обеспечивающий обмен датаграммами между приложениями. В семействе IPX/SPX, порты («сокеты» или «гнезда») появляются в протоколе сетевого уровня IPX, обеспечивая обмен датаграммами между приложениями (операционная система резервирует часть сокетов для себя). Протокол SPX, в свою очередь, дополняет IPX возможностями транспортного уровня в полном соответствии с OSI. Кроме того, IPX не имеет адреса для хоста, полагаясь на адресацию канального уровня (например, MAC-адреса для Ethernet).