Уровень приложений модели OSI

В модели TCP/IP и в модели OSI самый верхний уровень носит название Application layer — то есть уровень приложений или прикладной уровень. Большая часть полезных данных, передаваемых по сети создаются на этом уровне и именно с этим уровнем взаимодействует человек посредством прикладного ПО. Все остальные уровни по сути выполняют задачу обслуживания передачи данных с уровня приложений на одном компьютере уровню приложений на другом компьютере.

Пример инкапсуляции данных

Рассмотрим типичный пример передачи. Клиент пользуясь веб-браузером обращается к веб-серверу за страничкой какого-то сайта. Уровень приложений — это браузер и веб сервер. Обе этих программы «знают» один и тот же протокол уровня приложений — HTTP благодаря чему и «понимают» друг друга.

Клиент создаёт HTTP запрос. Например:

GET /index.html HTTP/1.1
Host: ciscotips.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close

Этот запрос попадает на транспортный уровень. Он небольшой, поэтому он не разбивается на сегменты, а попадает в один TCP сегмент, в котором ставится порт получателя — 80 — стандартный порт, на котором обычно работает HTTP сервер.

Далее операционная система клиента делает DNS запрос, чтобы узнать какой IP адрес соответствует имени ciscotips.ru и формирует IP пакет, заворачивая в него сегмент, поля IP адрес отправителя и получателя заполняются соответственно адресами клиента и сервера.

Пакет на уровне Network Access заворачивается, например, в Ethernet или wifi кадр и уходит в локальную сеть — к шлюзу. Шлюз разворачивает кадр, смотрит на адрес получателя пакета, формирует новый кадр и передаёт следующему маршрутизатору. Цепочка повторяется пока пакет не дойдёт до маршрутизатора, который является шлюзом целевого сервера. Этот маршрутизатор передаёт пакет серверу.

Сервер получает пакет, достаёт из него сегмент. Операционная система видит, что порт получателя 80 и сверяется со своей таблицей, чтобы понять какой приложение у неё слушает какой порт. Выясняется, что это, например, веб-сервер Apache. Ему и передаётся содержимое сегмента, то есть собственно HTTP запрос. И в данном примере из всей цепочи передающих программ и устройств только браузер и веб-сервер «понимают» смысл того что находится в пакете, для остальных устройств — это просто черный ящик. Поле с данными. Сервер понимает, что надо дать клиенту содержимое странички index.html и в соответствии с протоколом HTTP формирует ответ. Например, такой:

HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
… и далее текст HTML странички.

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

Соответствие между уровнем приложений в OSI и TCP/IP

В модели OSI есть три уровня (7,6 и 5), которые соответствуют одному уровню приложений в модели TCP/IP:

  • Приложений;
  • Представлений;
  • Сессий.


По сути дела, это означает, что в TCP/IP работа программиста не определена так строго — он может реализовывать соответствующий, например, уровню сессий, функционал в своём приложении, а может и нет. Рассмотрим назначение этих уровней подробнее.

Уровень приложений в OSI — занимается собственно отправкой и получением полезных данных. Как видно в примере с HTTP, именно здесь обитает ПО, которое знает в каком байте запроса или ответа что должно находиться.

Уровень представлений занимается преобразованием данных, чтобы снять эту задачу с программиста конечного продукта. Например, на этом уровне может происходить смена кодировки текста, преобразование картинок из одного формата в другой, сжатие данных, шифрование данных. В модели TCP/IP всё это тоже может присутствовать и присутствует, но программист сам решает, как ему в рамках своего единственного уровня запрограммировать тот или иной функционал.

Уровень сессий занимается отслеживанием сессий в рамках приложений. Надо понимать, что это не те сессии, которые имеются в TCP, а это именно сессии с точки зрения логики конкретного приложения. Например, человек зашёл в скайп — с точки зрения скайпа для человека открылась сессия. Или человек зашёл в онлайн игру — тоже сессия. То есть всё это в любом случае есть в реальной жизни, но в OSI явно выделяется в отдельный уровень.

Протоколы уровня приложений

На уровне приложений существует бесчисленное множество протоколов, так как разработчик ПО в праве создать свой собственный протокол, когда ему это нужно. Тем не менее, администратору надо свободно понимать принципы функционирования основных наиболее часто использующихся протоколов, чтобы грамотно организовать сеть. Наиболее распространённые протоколы уровня приложений, с которыми мы работаем каждый день — это HTTP, POP, SMTP, IMAP, DNS, DHCP, FTP, Telnet.

Относится к теме: 

Добавить комментарий