# 4. Модель OSI

## Декомпозиция
**Декомпозиция** - разбиение одной задачи на несколько задач-модулей.  
![Декомпозиция|453x217](../Pictures/04_01.%20Декомпозиция.png)  
**Иерархическая декомпозиция** задачи предполагает:
- Четкое определение функции каждого уровня
- Четкое определение интерфейсов между уровнями
  
Интерфейс определяет набор функций, которые нижележащий уровень предоставляют вышележащему.  
![Иерархическая декомпозиция|415x227](../Pictures/04_02.%20Иерархическая%20декомпозиция.png)  
В результате иерархической декомпозиции достигается относительная независимость уровней, а значит, возможность их автономной разработки и модификации.  
Пример многоуровневого взаимодействия предприятий:  
![Пример многоуровневого взаимодействия предприятий|374x149](../Pictures/04_03.%20Пример%20многоуровневого%20взаимодействия%20предприятий.png)  
**Стек коммуникационных протоколов** - иерархически организованный набор протоколов, достаточный для организации взаимодействия узлов в сети.  
Коммуникационные протоколы могут быть реализованы как программно, так и аппаратно. Протоколы **нижних уровней** часто реализуются комбинацией программных и аппаратных средств, а протоколы **верхних уровней** - как правило, чисто программными средствами.  
Программный модуль, реализующий некоторый протокол, для краткости также называют протоколом.  
Соотношение между протоколом, как формально определенной процедурой и протоколом - программным модулем, реализующим эту процедуру, аналогично соотношению между алгоритмом решения некоторой задачи и программой, решающей эту задачу.  
## Модель OSI
В начале 80-х годов ХХ века ряд международных организаций по стандартизации (ISO, ITU-T и другие) разработали модель ISO/OSI.  
**Модель взаимодействия открытых систем (Open System Interconnection, OSI)** - семиуровневая модель протоколов передачи данных, разработанная ISO (International Organization for Standartization) и CCITT (Consuiltative Committee for International Telephony and Telegraphy) для сопряжения различных видов вычислительного и коммуникационного оборудования различных производителей. Она определяет различные уровни взаимодействия систем в сетях с коммутацией пакетов, дает им стандартные имена и указывает, какие функции должен выполнять каждый уровень.  
![Модель OSI|326x476](../Pictures/04_04.%20Модель%20OSI.png)  
Наряду с термином **сообщение** (message) существуют и другие термины:
- Для обозначения единиц данных, с которыми имеют дело протоколы разных уровней, используется общее название **протокольный блок данных** (Protocol Data Unit, PDU)
- Для обозначения блоков данных определенных уровней часто используются специальные названия:
	- **Кадр** (frame)
	- **Пакет** (packet)
	- **Дейтаграмма** (datagram)
	- **Сегмент** (segment)
  
## Уровни OSI
**Уровни OSI** (OSI layers) - группы протоколов передачи данных, связанные между собой иерархическими отношениями. Каждый уровень обслуживает вышестоящий уровень и, в свою очередь, пользуется услугами нижестоящего.  

| Тип данных | Уровень                  | Функции                                                  |
| ---------- | ------------------------ | -------------------------------------------------------- |
| Данные     | 7. Прикладной уровень    | Доступ к сетевым службам                                 |
| Данные     | 6. Уровень представления | Представление и кодирование данных                       |
| Данные     | 5. Сеансовый уровень     | Управление сеансом связи                                 |
| Сегменты   | 4. Транспортный          | Прямая связь между конечными пунктами и надежность       |
| Пакеты     | 3. Сетевой               | Определение маршрута и логическая адресация              |
| Кадры      | 2. Канальный             | Физическая адресация                                     |
| Биты       | 1. Физический уровень    | Работа со средой передачи, сигналами и двоичными данными |
#### Прикладной уровень
Обеспечивает взаимодействие пользовательских приложений с сетью:
- Позволяет приложениям использовать сетевые службы
- Отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках
#### Уровень представления
Отвечает за преобразование протоколов и кодирование/декодирование данных:
- Преобразует запрос приложений в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям
- Осуществляет сжатие/распаковку или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу
#### Сеансовый уровень
Отвечает за поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время:
- Управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач
- Определяет права на передачу данных и поддерживает сеанс в периоды неактивности приложений
#### Транспортный уровень
Предназначен для доставки данных без ошибок, потерь и дублирования.  
Блоки данных разделяются на фрагменты (UDP-диаграмма, TCP-сегмент), размер которых зависит от протокола: короткие объединяются в один, а длинные разбиваются.
#### Сетевой уровень
Предназначен для определения пути передачи данных. Отвечает за:
- Трансляцию логических адресов и имен в физические
- Определение кратчайших маршрутов
- Коммутацию и маршрутизацию
- Отслеживание неполадок и "заторов" в сети
#### Канальный уровень
Предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть.  
Полученные с физического уровня данные он упаковывает во фреймы, проверяет на целостность, если нужно, исправляет ошибки (посылает повторный запрос поврежденного кадра) и отправляет на сетевой уровень.
#### Физический уровень
Предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель или другую среду и их прием и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов

