Уровень приложений модели OSI
Пример инкапсуляции данных
Рассмотрим типичный пример передачи. Клиент пользуясь веб-браузером обращается к веб-серверу за страничкой какого-то сайта. Уровень приложений — это браузер и веб сервер. Обе этих программы «знают» один и тот же протокол уровня приложений — 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.
Добавить комментарий