Блог LearnQA

Про модель OSI быстро и просто

Будущего тестировщика довольно часто просят рассказать про модель OSI на собеседовании. Конечно, сетевой администратор Василий знает про OSI все, он уже 15 лет как “одмин”, знает наизусть весь bash.org (а теперь уже bash.im) и даже сам постил туда шутку про канал аниме. Или не он…

Нам и не надо тягаться с Васей, нам стоит иметь общее представление о том, что это за эта модель, зачем ее придумали и почему вообще о ней спрашивают.

Сетевая модель OSI - это модель взаимодействия сетевых протоколов. Так что сначала надо разобраться с тем, что такое протокол.

Допустим, вы с Васей (уже с другим, а может и тем же самым) живете в соседних домах. Телефон или интернет еще не изобрели, а передавать самые важные новости друг другу как-то надо. Что делать? Как обмениваться информацией? Вы решаете, что будете махать друг другу разноцветными тряпками:

  • красная означает, что опасность рядом;
  • синяя означает, что по телевизору показывают что-то интересное;
  • зеленая, самая важная, означает, что скоро выйдет новый сезон Рика и Морти!

Этот свод правил, по сути, протокол вашего общения - набор правил, по которым вы обмениваетесь данными. Если завтра Вася будет махать фиолетовой тряпкой, вы его не поймете и это закономерно. А вот если зеленой… в общем, ура!

Именно протокол является стандартом, который определяет способ общения программ и серверов. OSI - это набор протоколов, каждый из которых необходим для решения отдельно поставленной задачи. Если хотя бы один исключить, что-то пойдет не так.

Модель OSI состоит из 7 уровней. Каждый уровень отделен от других и ничего о них не знает. У каждого своя задача.

Физический уровень - первый уровень сетевой модели OSI. Он описывает способы передачи отдельных бит через линии связи, соединяющие сетевые устройства. Кроме единиц и нулей физический уровень не знает ничего. На этом уровне решаются вопросы, связанные с синхронизацией, избавлением от помех, скоростью передачи данных и так далее. Короче, тут течет ток...

Если убрать этот уровень, никакая информация от одного источника к другому поступать не будет.

Канальный уровень - второй уровень сетевой модели OSI. Он необходим для передачи данных узлам (серверам, компьютерам), находящимся в той же локальной сети. Также может использоваться для обнаружения и, возможно, исправления ошибок, возникших на физическом уровне.

Примером протокола, работающего на канальном уровне, является всем известный Ethernet.

В общем, тут у нас компьютеры начинают уже взаимодействовать. На этом уровне появляется адресация. Адресом является MAC-адрес устройства. Канальный уровень отвечает за доставку кадров адресату и их целостность.

Сетевой уровень - третий уровень сетевой модели OSI. Он нужен для определения маршрута передачи данных. Именно он понимает по указанному IP-адресу где физически расположен адресат и как до него доставить данные.

Без этого уровня данные просто заблудятся в интернете или попадут не туда, куда следует.

Транспортный уровень - четвертый уровень сетевой модели OSI. На этом уровне мы говорим о портах и протоколах TCP и UDP, которые отвечают за прямую связь между приложениями и за надежность доставки информации.

При помощи TCP сервер умеет переспрашивать данные, если в первый раз они дошли не полностью. С ним можно быть уверенным, что данные будут доставлены. UDP так не умеет, зато доставляет данные несколько быстрее. Как говорится, я бы рассказал тебе шутку про UDP, но она до тебя может не дойти...

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

Сеансовый уровень - пятый уровень сетевой модели OSI. Он отвечает за поддержку сеансов связи. Именно благодаря нему приложения могут взаимодействовать между собой по сети длительное время.

Без этого уровня не было бы онлайн-игр, видео-чатов и прочих полезных вещей.

Представительский уровень или уровень представления данных - шестой уровень сетевой модели OSI. Благодаря этому уровню информация, передаваемая прикладным уровнем (о нем чуть ниже) одной системы будет понятна прикладному уровню в другой системе. Уровень представления данных в момент передачи информации выполняет преобразование в некоторый общий формат, а в момент приема выполняет обратное преобразование.

С этим уровнем нам понятно, например, как передать данные, хранящиеся в виде массива, удаленному серверу. Или как передать картинку.

Прикладной уровень самый сложный и разнообразный уровень. На нем работают все протоколы высокого уровня: HTTP, POP, SMTP, RDP и так далее. Протоколы здесь не должны задумываться о маршрутизации или гарантии доставки информации (этим занимаются предыдущие уровни). На седьмом уровне необходима лишь реализации конкретных действий.

Без этого уровня наши компьютеры не могли бы получать html-код, email-сообщения или сообщения в чате.

Модульность модели OSI позволяет скорее разобраться в причине неполадки. Если, скажем, сайт не открывается в браузере, можно провести ping его IP-адреса. Если он не проходит, нет смысла искать проблему на высоком уровне - ошибки HTTP-сервера или, тем более, кода приложения. Она явно находится ниже по уровню.

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

Тестировщик же в свою очередь должен уметь быстро диагностировать проблему и не тратить время на поиск проблем там, где их быть не может. Надеюсь, статья внесет ясность и сделает вашу работу эффективнее.



Спасибо за внимание. :)