Опубликовано в Gazeta.Ru от 22-04-1999 (Выпуск No 038)
Оригинал: http://gazeta.ru/flopovod/22-04-1999_OSI.htm


Дмитрий Турецкий, <dmitri@listsoft.com>
OSI ISO


Некоторое время назад у меня с друзьями зашел разговор о "высоких технологиях" и их результатах - машинах и приборах, которые нас окружают. И мы обнаружили, что довольно часто не имеем никакого (ну, почти никакого) представления о том, как оно устроено внутри. А ведь это довольно интересно и иногда полезно (например, для понимания каких-то ограничений, возникающих при использовании той или иной штуки). Сегодня мы немножко поговорим о том, как работают компьютерные сети.

Наверняка все вы сталкивались с проблемами совместимости - когда какая-то программа отказывается читать какой-то формат файла, например, notepad не открывает документы MS Word. А задумывалиь ли вы, с какой огромной кучей всевозможных комбинаций железа и программ сталкиваются сети? И ведь они должны без искажений передавать даные, скажем, с PC на Unix, через коаксиальный кабель, модем, оптоволокно и т.д.

Для решения этой проблемы International Organization for Standartization, ISO была разработана модель OSI, которой должны придерживаться разработчики протоколов. Это не какой-то технический стандарт, а, скорее, функциональная модель, демонстрирующая различные блоки, составляющие систему.

Модель OSI сосоит из 7 уровней: приложения, представления данных, сеанса, транспорта, сети, канального и физического. Вы в качестве пользователя, работаете как-бы над этой моделью. Данные, которые вы передаете программе, она, в свою очередь, передает уровню приложения. Затем ваши данные спускаются по уровням OSI, причем каждый уровень выполняет какую-то свою работу, дописывает к ним свой заголовок и передает следующему уровню. Последний - физический - уровень OSI занимается передачей данных по физическому каналу связи, например, коаксиальному кабелю, витой паре, оптоволокну и т.д.

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

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

На первый взгляд OSI кажется излишне усложненной. Но это не так. Во-первых, каждый уровень выполняет свою определенную задачу, которая может быть выполнена "независимо" от остальных уровней. Во-вторых, если программист придумал новый, более оптимальный способ передачи данных, то ему не придется переписывать весь код "с нуля", а только, скажем, транспортный уровень (также, как, если бы почту решили возить не на поездах, а на пароходах, то не пришлось бы менять все почтовые ящики и жителей города :) Кроме того, эта модель позволяет взаимодействовать протоколам, написанным разными фирмами, скажем, "классическому" TCP/IP и MS TCP/IP.

Пишите нам: info@gazeta.ru
Copyright © Gazeta.Ru
RRU_Network
При перепечатке и цитировании ссылка на источник с указанием автора обязательна. Перепечатка без ссылки и упоминания имени автора является нарушением российского и международного законодательства, а также большим свинством.