1.7 Эталонные модели
До сих пор мы рассматривали некоторые абстрактные сети и понятия. Теперь мы рассмотрим две конкретные эталонные модели сетей ISO OSI эталонную модель и TCP/IP эталонную модель.
1.7.1 Эталонная модель OSI
Модель OSI (модель взаимодействия открытых систем; она представлена на рис.1-16) была разработана в Международной Организацией по Стандартизации (МОС) в целях разработки международных стандартов для вычислительных сетей. Это модель систем открытых для взаимодействия с другими системами.
Модель МОС имеет семь уровней. Принципы выделения этих уровней таковы:
Теперь рассмотрим каждый уровень этой модели. Отметим что это модель, а не архитектура сети. Она не определяет протоколов и сервис каждого уровня. Она лишь говорит, что он должен делать. Однако, ISO выпустила и стандарты для каждого уровня, но они не являются частью модели.
1.7.1.1 Физический уровень
Физический уровень отвечает за передачу последовательности битов через канал связи. Основной проблемой является как гарантировать что если на одном конце послали 1, то на другом получили 1, а не 0. На этом уровне решают такие вопросы каким напряжением надо представлять 1, а каким - 0; сколько микросекунд тратиться на передачу одного бита; следует ли поддерживать передачу данных в обоих направлениях одновременно; как устанавливается начальное соединение и как оно разрывается; каково количество контактов на сетевом разъеме, для чего используется каждый контакт. Здесь в основном вопросы механики, электрики.
1.7.1.2 Уровень канала данных
Основной задачей уровня канала данных - превратить несовершенную среду передачи в надежный канал, свободный от ошибок передачи. Эта задача решается разбиением данных отправителя на фреймы (обычно от нескольких сотен до нескольких тысяч байтов), передачей фреймов последовательно и обработкой фреймов уведомления, поступающих от получателя. Поскольку физический уровень не распознает структуры в передаваемых данных, то это целиком и полностью задача канала данных определить границы фрейма. Эта задача решается введением специальной последовательности битов, которая добавляется в начало и в конец фрейма и всегда интерпретируется как границы фрейма.
Помехи на линии могут разрушить фрейм. В этом случае он должен быть передан повторно. Он будет повторен также и в том случае если фрейм уведомление будет потерян. И это уже заботы уровня как бороться с дубликатами одного и того же фрейма, потерями или искажениями фреймов. Уровень канала данных может поддерживать сервис разных классов для сетевого уровня, разного качества и стоимости.
Другой проблемой, возникающей на уровне канала данных ( равно как и на других вышележащих уровнях) как управлять потоком передачи. Например, как предотвратить "захлебывание" получателя. Как сообщить передающему размер буфера, для приема передаваемых данных имеющийся у получателя в этот момент.
Если канал позволяет передавать данные в обоих направлениях одновременно, то возникает новая проблема: фреймы уведомления для потока от А к В используют тот же канал, что и трафик от В к А. Решение - использовать фреймы DU для передачи фреймов уведомлений.
В сетях с вещательным способом передачи возникает проблема управления доступом к общему каналу. За это отвечает специальный подуровень - подуровень доступа к среде (MAC - Media ACcess ).
1.7.1.3 Сетевой уровень
Сетевой уровень отвечает за функционирование подсети. Основной проблемой здесь является как маршрутизировать пакеты от отправителя к получателю. Маршруты могут быть определены заранее и прописаны в статической таблице, которая не изменяется. Они могут определяться в момент установления соединения. Наконец, они могут строиться динамически в зависимости от загрузка сети.
Если в подсети циркулирует слишком много пакетов, то они могут использовать одни и те же маршруты, что будет приводить к заторам. Эта проблема так же решается на сетевом уровне.
Поскольку за использование подсети, как правило, предполагается оплата, то на этом уровне также присутствуют функции учета: как много байт, символов послал или получил абонент сети. Если абоненты расположены в разных странах, где разные тарифы, то надо должным образом скорректировать цену услуги.
Если пакет адресован в другую сеть, то надо предпринять надлежащие меры: там может быть другой формат пакетов, отличный способ адресации, размер пакетов, протоколы и т.д. - это все проблемы неоднородных сетей решаются на сетевом уровне.
В сетях с вещательной передачей проблемы маршрутизации просты и этот уровень часто отсутствует.
1.7.1.4 Транспортный уровень
Основная функция транспортного уровня это: принять данные с уровня сессии, разделить, если надо, на более мелкие единицы, передать на сетевой уровень и позаботиться, чтобы все они дошли в целостности до адресата. Все это должно быть сделано эффективно и так, чтобы скрыть от вышележащего уровня непринципиальные изменения на нижних.
В нормальных условиях транспортный уровень должен создать специальное сетевое соединение для каждого транспортного соединения по запросу уровня сессии. Если транспортное соединение требует высокой пропускной способности, то транспортный уровень может создать несколько сетевых соединений, между которыми транспортный уровень буден распределять передаваемые данные. И наоборот, если требуется обеспечить недорогое транспортное соединение, то транспортный уровень может использовать одно и то же сетевое соединение для нескольких транспортных соединений. В любом случае, такое мультиплексирование должно быть незаметным на уровне сессии.
Сетевой уровень определяет какой тип сервиса предоставить вышележащим уровням и пользователям сети. Наиболее часто используемым сервисом является канал точка-точка без ошибок, обеспечивающий доставку сообщений или байтов в той последовательности, в какой они были отправлены. Другой вид сервиса - доставка отдельных сообщений без гарантии сохранения их последовательности, рассылка одного сообщения многим в режиме вещания. Тип сервиса определяется при установлении транспортного соединения.
Транспортный уровень - это действительно уровень, обеспечивающий соединение точка-точка. Активности транспортного уровня на машине отправителя общаются с равнозначными активностями транспортного уровня на машине получателя. Этого нельзя сказать про активности на нижележащих уровнях. Они общаются с равнозначными активностями на соседних машинах! В этом одно из основных отличий уровней 1-3 от уровней 4-7. Последние обеспечивают соединение точка-точка. Это хорошо видно рис.1-16.
Многие хост-машины - мультипрограммные, поэтому транспортный уровень для одной такой машины должен поддерживать несколько транспортных соединений. Для того, чтобы определить к какому соединению относиться тот или иной пакет, в его заголовке (H4 на рис.1-11) помещается необходимая информация.
Транспортный уровень также отвечает за установление и разрыв транспортного соединения в сети. Это предполагает наличие механизма именования, т.е. процесс на одной машине должен уметь указать с кем в сети ему надо обменяться информацией. Транспортный уровень также должен предотвращать "захлебывание" получателя в случае очень "быстро говорящего" отправителя. Механизм для этого называется управление потоком. Он есть и на других уровнях. Однако, управление потоком между хостами отличен от управление потоком между маршрутизаторами.
1.7.1.5 Уровень сессии
Уровень сессии позволяет пользователям на разных машинах (напомним что пользователем может быть программа) устанавливать сессии. Сессия позволяет передавать данные, как это может делать транспортный уровень, но кроме этого этот уровень имеет более сложный сервис, полезный в некоторых приложениях. Например, вход в удаленную систему, передать файл между двумя приложениями.
Одним из видов услуг на этом уровне - управление диалогом. Потоки данных могут быть разрешены в обоих направлениях одновременно, либо поочередно в одном направлении. Сервис на уровне сессии будет управлять направлением передачи.
Другим видом сервиса - управление маркером. Для некоторых протоколов недопустимо выполнение одной и той же операции на обоих концах соединения одновременно. Для этого уровень сессии выделяет активной стороне маркер. Операцию может выполнять тот кто владеет маркером.
Другой услугой уровня сессии является синхронизация. Пусть нам надо передать файл такой, что его пересылка займет два часа, между машинами, время наработки на отказ у которых один час. Ясно что "в лоб" такой файл средствами транспортного уровня не решить. Уровень сессии позволяет расставлять контрольные. В случае отказа одной из машин передача возобновиться с последней контрольной точки.
1.7.1.6 Уровень представления
Уровень представления предоставляет решения для часто возникающих проблем, чем облегчает участь пользователей. В основном это проблемы семантики и синтаксиса передаваемой информации. Этот уровень имеет дело с информацией, а не с потоком битов.
Типичным примером услуги на этом уровне - унифицированная кодировка данных. Дело в том, что на разных машинах используются разные способы кодировки ASCII, Unicode и т.п. для символов, разные способы представления целых - в прямом, обратном или дополнительном коде, нумирация бит в байте слева направо или наоборот и т.п. Пользователи как правило используют структуры данных, а не случайный набор байт. Для того, чтобы машины с разной кодировкой и представлением данных могли взаимодействовать, передаваемые структуры данных определяются специальным абстрактным способом, не зависящим от кодировки, используемой при передачи. Уровень представления работает со структурами данных в абстрактной форме, преобразует это представление во внутреннее для конкретной машины и из внутреннего, машинного представления в стандартное представление для передачи по сети.
1.7.1.7 Уровень приложений
Уровень приложений обеспечивает нужные часто используемые протоколы. Например, существуют сотни разных типов терминалов. Если мы захотим создать сетевой экранный редактор, то нам придется писать для каждого типа терминала свою версию.
Есть другой путь: определить сетевой виртуальный терминал и для него написать редактор. Для каждого типа терминала написать программу отображения этого терминала на сетевой виртуальный терминал. Все программное обеспечение для виртуального сетевого терминала расположено на уровне приложений.
Другой пример - передача файлов. Разные операционные системы используют разные механизмы именования, представления текстовых строк и т.д. Для передачи файлов между разными системами надо преодолевать все такие различия. Для этого есть приложение FTP, также расположенное на уровне приложений. На этом же уровне находятся: электронная почта, удаленная загрузка программ, удаленный просмотр информации и т.д.
1.7.1.8 Передача данных в МОС модели
На рис.1-17 показа последовательность действий при передаче данных в МОС модели. Хотя данные движутся вертикально, каждый уровень предполагает их горизонтальное передвижение. Здесь аналогия с синхронным переводом. Когда оратор говорит на Урду перед нами, то он считает, что он обращается к нам. Не тут-то было! Он обращается к переводчику, и тот обращается к нам.
1.7.2 Эталонная модель TCP/IP
Здесь мы рассмотрим другую эталонную модель, прототипом для которой послужил прородитель всех компьютерных сетей - сеть ARPA. Позднее мы рассмотрим историю этой сети. Сейчас лишь отметим, что эта сеть образовалась в результате НИР, проведенного по инициативе Министерства Обороны США. Позднее к этому проекту подключились сотни университетов и гос.учереждений Америки.С самого начала эта сеть задумывалась как объединение нескольких разных сетей. Одной из основных целей этого проекта было разработать унифицированные способы соединения сетей. С появлением спутниковых и радио цифровых каналов связи проблема становилась только актуальнее. Так появилась модель TCP/IP. Свое название она получила по именам двух основных протоколов: TCP - протокол управления передачей (Transmission Control Protocol), и IP - межсетевой протокол (Internet Protocol).
Другой целью проекта ARPA было создание протоколов, независящих от характеристик конкретных хост-машин, маршрутизаторов, шлюзов и т.п.
Кроме этого связь должна поддерживаться даже если отдельные сети компоненты будут выходить из строя во время соединения. Другими словами связь должна поддерживаться до тех пор, пока источник информации и получатель информации работоспособны. Архитектура сети не должна ограничивать приложения, начиная от простой передачи файлов до предачи речи и изображения в реальном времени.
1.7.2.1 Межсетевой уровень
В силу вышеперечисленных требований выбор очевиден: сеть с коммутацией пакетов с межсетевым уровнем без соединений. Этот уровень называется межсетевым уровнем. Он является основой всей архитектуры. Его назначение обеспечить доставку пакетов, движущихся в сети независимо друг от друга, даже если получатель принадлежит другой сети. Причем пакеты могут поступать к получателю не в том порядке как они были посланы. Упорядочить их в надлежащем порядке - задача вышележащего уровня.
Межсетевой уровень определяет межсетевой протокол IP и формат пакета. Обращаю внимание, что ни протокол, ни формат пакета не являются официальными международными стандартами, в отличии от протоколов эталонной модели МОС. Там большинство протоколов имеют статус международных стандартов.
Итак, назначение межсетевого уровня в TCP/IP доставить IP пакет по назначению. Это как раз то, за что отвечает сетевой уровень в IOS модели. На рис.1-18 показано соответствие между уровнями этих вдух эталонных моделей.
1.7.2.2 Транспортный уровень
Над межсетевым уровнем расположен транспортный уровень. Как и МОС модели его задача обеспечить связь точка-точка между двумя равнозначными активностями. В рамках TCP/IP модели было разработано два транспортных протокола. Первый TCP: надежный протокол с соединением. Он получает поток байт, фрагментирует его на отдельные сообщения и передает их на межсетевой уровень. На машине получателе равнозначная активность TCP протокола собирает эти сообщения в поток байтов. TCP протокол также обеспечивает управление потоком.
Второй протокол UDP (User Datagram Protocol). Это ненадежный протокол без соединения для тех приложений, которые используют свои механизмы фрагментации, управления потоком. Он часто используется для передачи коротких сообщений в клиен-серверных приложениях, а также там где скорость передачи важнее ее точности. Соотношение этих протоколов и их приложений показано на рис.1-19.
1.7.2.3 Уровень приложений
В TCP/IP модели нет уровней сессии и представления. Необходимость в них была не очевидна для ее создателей. На сегодня ело обстоит так, что разработчик сложного приложения берет на себя проблемы этих уровней.
Над транспортным протоколом располагается уровень приложений. Этот уровень включает виртуальный терминал - TELNET, передачу файлов - FTP, электронную почту - SMTP (см.рис.1-19). Позднее к ним добавились: служба имен домена - DNS (Domain Name Service) отображающая логические имена хост-машин на их сетевые адреса, протокол для передачи новостей - NNTP, и протокол для работы с гипертекстовыми документами во всемирной паутине (WWW) - HTTP.
Под межсетевым уровнем в TCP/IP модели великая пустота. Модель ничего не говорит что происходит так, лишь что хост-машина должна быть связана с сетью через некоторый протокол. Никаких ограничений на этот протокол, равно как т рекомендаций нет.
1.7.3 Сравнение моделей МОС и TCP/IP
Обе модели имеют много общего. Обе имеют уровневую иерархию, поддерживают понятие стека протоколов. Назначение их уровней примерно одинаково. Все уровни от транспортного и ниже используют протоколы для поддержки взаимодействия типа точка-точка, не зависящего от организации сети. Все уровни выше транспортного ориентированы на приложения.
В модели OSI центральными являются три понятия:
Наибольшее методологическое значение этой модели в четком выделении и разделении этих понятий.
Сервис определяет что делает уровень, но ничего не говорит как.
Интерфейс уровня определяет для вышележащего уровня доступа к сервису.
Протокол определяет реализацию сервиса.
Здесь можно провести аналогию с объектно-ориентированным программированием. У каждого объекта есть набор методов - сервис, которые определяют те операции, которые этот объект может выполнять. Иными словами, сервис - это семантика методов. Каждый метод имеет интерфейс - набор параметров, имя и т.п. Реализация методов скрыта в объекте - протокол; и не видима пользователю.
В TCP/IP модели нет столь же четкого выделения этих понятий. Там понятие протокола на столь четко "упрятано" и независимо от остальных частей модели. Этот факт есть следствие того как создавались эти модели. TCP/IP модель создавалась post factum, а МОС до того как появились протоколы. Поэтому понятие протокола там абсолютно не зависит от остальных частей модели. Например, изначально протоколы канального уровня в OSI создавались для соединений точка-точка. Позднее, когда появились средства типа вещания, на этот уровень были добавлены соответствующие протоколы. Никаких других изменений не последовало.
TCP/IP модель была создана когда TCP/IP стек уже существовал. Поэтому эта модель прекрасно описывала этот стек, но только этот стек и никакой другой.
Модели имеют разное число уровней. Обе имеют уровень приложений, транспортный уровень и сетевой уровень. Все остальные уровни разные.
OSI модель поддерживает на сетевом уровне как сервис с соединением, так и без соединения. На транспортном уровне этой модели поддерживается сервис только с соединением. В TCP/IP наоборот: сетевой уровень обеспечивает сервис без соединения, но транспортный - как с соединением, так и без.
1.7.4 Недостатки модели и протоколов МОС
Ни модель и протоколы МОС, ни модель и протоколы TCP/IP не являются совершенными. Начнем с модели и протоколов МОС.
В конце 80-х годов казалось что у модели протоколов МОС нет конкурентов. Однако в настоящее время очевидно что протоколы TCP/IP захватили большую часть мира. В чем причины?
Не вовремя - введение стандарта должно следовать за окончанием исследований, но прежде чем начнутся крупные вложения в разработку. Эту идею поясняет рис.1-20.
Не технологичны :
Трудно реализуемы - первые реализации были громоздки и неэффективны. Первые реализации TCP/IP были сделаны в рамках Berkeley UNIX.
Неправильная стратегия - модель МОС результат усилий ЕС, европейских министерств и ведомств. Даже правительство США приложило руку. TCP/IP - плод академической среды.
1.7.5 Недостатки эталонной модели TCP/IP
По существу OSI модель доказала свою эффективность как методологический инструмент, стала популярной чего нельзя сказать о протоколах. С TCP/IP все наоборот - модели по существу нет, зато протоколы получили широкое распространение.
В нашем курсе мы будем использовать модифицированную пятиуровневую МОС модель, а изучать протоколы TCP/IP. Наша гибридная модель показана на рис.1-21.