Физический уровень (Physical Layer) является самым нижним в модели ISO/OSI. Он работает непосредственно с имеющимся каналом связи. Его главная задача – преобразование поступивших от вышестоящего уровня данных и передача соответствующих им электрических сигналов по существующему каналу связи получателю, а также прием данных от отправителя и их конвертация согласно существующим таблицам кодирования сигналов.
Прежде чем начать передачу электрических сигналов, алгоритмы физического уровня определяют тип канала связи и его свойства: электротехнические и механические характеристики, величину напряжений, расстояние между отправителем и получателем, скорость передачи данных и т. д., то есть все, что является критичным для передачи данных. Именно на этом этапе определяется, сеть какого типа используется (проводная или беспроводная), а также выясняется топология сети.
Функции физического уровня выполняют сетевые адаптеры на отправителе и получателе, а также повторители сигнала, например концентратор.
Стандартизация на уровне модели ISO/OSI позволяет использовать в сети оборудование разных производителей, не заботясь при этом об их совместимости, что позволяет сосредоточиться только на процессе передачи и приема данных.
Задача канального уровня (Data Link Layer) – обеспечение гарантированной передачи данных через физический канал, параметры и особенности которого уже установлены и «приняты во внимание» на физическом уровне. При этом решаются вопросы физической адресации, корректности отправленной и полученной информации, контроля возникающих ошибок, управления потоком информации и т. д.
Данные передаются блоками, которые называются кадрами. К каждому кадру добавляется несколько бит информации о типе кадра, а также контрольная сумма, которая сверяется при его получении адресатом. При несовпадении контрольных сумм запрашивается повторная передача кадра и данные синхронизируются.
Что касается локальных сетей, то за работу канального уровня отвечают два подуровня:
□ MAC (Medium Access Control) – уровень доступа к разделяемой среде;
□ LLC (Logical Link Control) – уровень управления логическим каналом.
Уровень MAC отвечает за получение доступа к общей среде передачи данных, в связи с чем каждый протокол передачи данных имеет соответствующую процедуру доступа. Кроме того, MAC отвечает за согласование режимов работы канального и физического уровней (дуплексный и полудуплексный режим соответственно), буферизацию фреймов и т. д.
Уровень LLC имеет три разные процедуры, отвечающие за качество доставки данных.
□ LLC1 – без установления соединения и без подтверждения доставки. Данная процедура управления каналом позволяет передавать данные с максимальной скоростью, для чего используются датаграммы.
□ LLC2 – с установлением соединения и подтверждением доставки. Этот вид управления каналом наиболее надежный. Он позволяет гарантированно доставлять данные и получать подтверждения о доставке. На этом уровне работает система контроля ошибок, которая дает возможность восстанавливать поврежденные блоки данных и упорядочивать их последовательность. Подобная система функционирует благодаря нумерации кадров, что позволяет запрашивать ошибочные кадры и упорядочивать их.
□ LLC3 – без установления соединения, но с подтверждением доставки. Данный тип управления каналом достаточно специфичен и часто используется в процессах, которые требуют быстрой передачи данных, но с подтверждением доставки. Как правило, это необходимо для разного рода процессов, происходящих в режиме реального времени, когда временные затраты очень критичны. В этом случае передача следующего кадра осуществляется только после подтверждения доставки предыдущего.
Таким образом, LLC-уровень умеет передавать данные либо с помощью датаграмм, либо с использованием процедур с обеспечением качества передачи.
Канальный уровень может реализовываться как на аппаратном уровне (например, с помощью коммутаторов), так и с применением программного обеспечения (допустим, драйвера сетевого адаптера).
Сетевой (Network Layer) – один из важнейших уровней модели взаимодействия открытых систем. Поскольку для построения сети могут использоваться различные технологии и, а сеть может состоять из нескольких сегментов с абсолютно разными сетевыми топологиями, чтобы «подружить» эти сегменты, требуется соответствующий механизм. В качестве такого механизма и выступает сетевой уровень.
Кроме определения физических адресов всех участников сети, данный уровень отвечает за нахождение кратчайших путей доставки данных, то есть выполняет маршрутизацию пакетов. При этом постоянно отслеживается состояние сети и определяются новые маршруты, если возникают «заторы» на пути следования данных. Благодаря маршрутизации данные всегда доставляются с максимальной скоростью.
Сетевой уровень для доставки данных между разными сетевыми сегментами использует особую адресацию. Так, вместо MAC-адресов применяется пара чисел – номер сети и номер компьютера в этой сети. Использование нумерации позволяет составить точную карту сети независимо от топологии сегментов и определять альтернативные пути передачи данных.
На практике функции сетевого уровня выполняет маршрутизатор.
Транспортный уровень (Transport Layer) служит для организации гарантированной доставки данных, для чего используется подготовленный канал связи. При этом отслеживается правильная последовательность передачи и приема пакетов, восстанавливаются потерянные или отсеиваются дублирующие. При необходимости данные фрагментируются (разбиваются на более мелкие пакеты) или дефрагментируются (объединяются в большой пакет), что повышает надежность доставки данных и их целостность.
На транспортном уровне предусмотрено пять классов сервиса с различными уровнями надежности. Они различаются скоростью, возможностями восстановления данных и т. д. Например, некоторые классы работают без предварительной установки связи и не гарантируют доставку пакетов в правильной последовательности. В этом случае за выбор маршрута отвечают промежуточные устройства, которые попадают на пути следования данных. Классы с установкой связи начинают свою работу с установки маршрута и только после того, как маршрут будет определен, начинают последовательную передачу данных.
Благодаря такому подходу всегда можно найти компромисс между скоростью и качеством доставки данных.
Сеансовый уровень (Session Layer) используется для создания и управления сеансом связи на время, необходимое для передачи данных. Время сеанса зависит лишь от объема информации, которая должна быть передана. Поскольку этот объем может быть существенным, используются разные механизмы, контролирующие данный процесс.
Для управления сеансом применяется маркер, обладатель которого гарантирует себе право на связь. Кроме того, используются служебные сообщения, с помощью которых стороны могут, например, договариваться о способе передаче данных или сообщать о завершении передачи данных и освобождении маркера.
Чтобы передача данных была успешной, создаются специальные контрольные точки, которые позволяют начать повторную передачу данных практически с того места, на котором произошел непредвиденный обрыв связи. В данном случае работают также механизмы синхронизации данных, определяются права на передачу данных, поддерживается связь в периоды неактивности и т. п.
Уровень представления данных, или представительский уровень (Representation Layer), является своего рода проходным уровнем, основная задача которого – кодирование и декодирование информации в представление, понятное вышестоящему или нижестоящему уровню. С его помощью обеспечивается совместимость компьютерных систем, использующих разные способы представления данных.
Этот уровень удобен тем, что именно здесь выгодно использовать разные алгоритмы сжатия и шифрования данных, преобразование форматов данных, обрабатывать структуры данных, преобразовывать их в битовые потоки и т. д.
Прикладной уровень (Application Layer) – последний «бастион» между пользователем и сетью. Он обеспечивает связь пользовательских приложений с сетевыми сервисами и службами на всех уровнях модели ISO/OSI, а также передачу служебной информации, синхронизирует взаимодействие прикладных процессов и т. д.
□ Понятие протокола
□ Основные протоколы
В предыдущей главе мы познакомились с эталонной моделью, описывающей принцип подготовки, приема и передачи данных через любой имеющийся канал связи. Каждый из ее семи уровней решает поставленную перед ним задачу, выполняя свою функцию в подготовке или обработке данных. Для этого он использует стандартные процедуры межуровневого обмена информацией и протоколы передачи данных. Таким образом, получается, что модель ISO/OSI является теоретической основой функционирования сети, а сетевые протоколы – это то, что превращает теорию в практику.
Протокол передачи данных можно сравнить с набором правил и соглашений, которые описывают способ передачи данных между двумя и более объектами в сети.
Для обслуживания модели взаимодействия открытых систем используется достаточно большое количество сетевых протоколов. Многие из них вполне специфичны и часто выполняют только одно определенное действие, но делают это быстро и, самое главное, правильно. Существую также и более продвинутые и функциональные протоколы, которые могут выполнять определенные действия, захватывая сразу несколько уровней модели. Есть даже целые семейства (стеки) протоколов, которые являются составной частью протоколов с общим названием, например стеки протоколов TCP/IP или IPX/SPX.
Примечание
Модель ISO/OSI разрабатывалась тогда, когда уже были разработаны многие протоколы, в частности TCP/IP Ее главной задачей была стандартизация работы сетей Однако когда модель была принята окончательно, оказалось, что она имеет довольно много недостатков В частности, наиболее слабым звеном в модели стал транспортный уровень По этой причине существует достаточно много протоколов, которые выполняют работу сразу нескольких уровней, что идет вразрез с самой моделью открытых систем
Различают низкоуровневые и высокоуровневые протоколы.
Низкоуровневые работают на самых нижних уровнях модели ISO/OSI и, как правило, имеют аппаратную реализацию, что позволяет использовать их в таких сетевых устройствах, как концентраторы, мосты, коммутаторы и т. д.
Высокоуровневые протоколы работают на верхних уровнях модели ISO/OSI и обычно реализуются программным путем. Этот факт позволяет создавать любое количество протоколов разного применения, делая их настолько гибкими, как того требует современная ситуация.
В табл. 4.1 приведены названия некоторых популярных протоколов и их положение в модели взаимодействия открытых систем.
Таблица 4.1. Популярные протоколы модели ISO/OSI
Как вы уже могли заметить, количество протоколов, обслуживающих модель взаимодействия открытых систем, достаточно велико. Некоторые из этих протоколов, особенно низкоуровневые, не представляют особого интереса в плане знакомства с их принципом работы. Но принцип работы и возможности других протоколов все же стоит знать, особенно таких, как TCP/IP, UDP, POP3 и др.
Как уже упоминалось выше, часто за организацию работы всех уровней модели ISO/OSI отвечают стеки протоколов. Плюсом использования стеков протоколов является то, что все протоколы, входящие в стек, разработаны одним производителем, то есть они способны работать максимально быстро и эффективно.
За время существования сетей было разработано несколько различных стеков протоколов, среди которых наиболее популярными являются TCP/IP, IPX/SPX, NetBIOS/SMB, Novell NetWare, DECnet и др.
В составе стеков находятся протоколы, работающие на разных уровнях модели ISO/OSI, однако обычно выделяют только три типа протоколов: транспортный, сетевой и прикладной.
Плюсом использования стеков протоколов является то, что протоколы, работающие на нижних уровнях, применяют давно отлаженные и популярные сетевые протоколы, такие как Ethernet, FDDI и т д. Благодаря аппаратной реализации этих протоколов становится возможным использовать одно и то же оборудование для разных типов сетей и тем самым достигать их совместимости на аппаратном уровне. Что касается высокоуровневых протоколов, то каждый из стеков имеет свои преимущества и недостатки, и очень часто случается так, что нет жесткой привязки «один протокол – один уровень», то есть один протокол может работать сразу на двух-трех уровнях.
Важным моментом в функционировании сетевого оборудования, в частности сетевого адаптера, является привязка протоколов. На практике она позволяет использовать разные стеки протоколов при обслуживании одного сетевого адаптера. Например, можно одновременно использовать стеки TCP/IP и IPX/SPX, и если при попытке установления связи с адресатом с помощью первого стека произошла ошибка, автоматически происходит переключение на использование протокола из следующего стека. В этом случае важным моментом является очередность привязки, поскольку она однозначно влияет на использование того или иного протокола из разных стеков.
Вне зависимости от того, какое количество сетевых адаптеров установлено в компьютере, привязка может осуществляться как «один к нескольким», так и «несколько к одному», то есть один стек протоколов можно привязать сразу к нескольким адаптерам или несколько стеков к одному адаптеру.
Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) на сегодня является наиболее распространенным и функциональным. Он работает в локальных сетях любых масштабов. Кроме того, это единственный из протоколов, который позволяет работать глобальной сети Интернет.
Протокол был создан в 70-х годах прошлого века управлением Министерства обороны США. Именно с его подачи началась разработка протокола, целью которого было соединение любых двух компьютеров, как бы далеко они ни находились. Конечно, они преследовали свою цель – обеспечить постоянную связь с центром управления, даже если все вокруг будет разрушено в результате военных действий. В итоге была образована глобальная сеть ARPAnet, которую министерство активно использовало в своих целях.
Толчком к дальнейшему усовершенствованию и широкому распространению стека TCP/IP стал тот факт, что его поддержка была реализована в компьютерах c операционной системой UNIX. В результате популярность протокола TCP/IP возросла.
В стек протоколов TCP/IP входит достаточно много протоколов, работающих на различных уровнях, но свое название он получил благодаря двум протоколам – TCP и IP.
TCP (Transmission Control Protocol) – транспортный протокол, предназначенный для управлением передачей данных в сетях, использующих стек протоколов TCP/ IP. IP (Internet Protocol) – протокол сетевого уровня, предназначенный для доставки данных в составной сети с использованием одного из транспортных протоколов, например TCP или UDP.
Нижний уровень стека TCP/IP использует стандартные протоколы передачи данных, что делает возможным его применение в сетях с использованием любых сетевых технологий и на компьютерах с любой операционной системой.
Изначально протокол TCP/IP разрабатывался для применения в глобальных сетях, именно поэтому он является максимально гибким. В частности, благодаря способности фрагментации пакетов данные, несмотря на качество канала связи, в любом случае доходят до адресата. Кроме того, благодаря наличию IP-протокола становится возможной передача данных между разнородными сегментами сети.
Недостатком TCP/IP-протокола является сложность администрирования сети. Так, для нормального функционирования сети требуется наличие дополнительных серверов, например DNS, DHCP и т. д., поддержание работы которых и занимает большую часть времени системного администратора.
Стек протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) является разработкой и собственностью компании Novell. Он был разработан для нужд операционной системы Novell NetWare, которая еще до недавнего времени занимала одну из лидирующих позиций среди серверных операционных систем.
Протоколы IPX и SPX работают на сетевом и транспортном уровнях модели ISO/ OSI соответственно, поэтому отлично дополняют друг друга. Протокол IPX может передавать данные с помощью датаграмм, используя для этого информацию о маршрутизации в сети. Однако для того, чтобы передать данные по найденному маршруту, необходимо сначала установить соединение между отправителем и получателем. Этим и занимается протокол SPX или любой другой транспортный протокол, работающий в паре с IPX.
К сожалению, стек протоколов IPX/SPX изначально ориентирован на обслуживание сетей небольшого размера, поэтому в больших сетях его использование малоэффективно: излишнее использование широковещательного вещания на низкоскоростных линиях связи недопустимо.
Достаточно популярный стек протоколов, разработкой которого занимались компании IBM и Microsoft, соответственно, ориентированный на использование в продуктах этих компаний. Как и у TCP/IP, на физическом и канальном уровне стека NetBIOS/SMB работают стандартные протоколы, такие как Ethernet, Token Ring и другие, что делает возможным его использование в паре с любым активным сетевым оборудованием. На верхних же уровнях работают протоколы NetBIOS (Network Basic Input/Output System) и SMB (Server Message Block).
Протокол NetBIOS был разработан в середине 80-х годов прошлого века, но вскоре был заменен на более функциональный протокол NetBEUI (NetBIOS Extended User Interface), позволяющий организовать очень эффективный обмен информацией в сетях, состоящих не более чем из 200 компьютеров.
Чтобы обмен между компьютерами был возможен, каждый из них должен обладать логическим именем.
Для обмена данными между компьютерами используются логические имена, присваиваемые компьютерам динамически при их подключении к сети. При этом таблица имен распространяется на каждый компьютер сети. Поддерживается также работа с групповыми именами, что позволяет передавать данные сразу нескольким адресатам.
Главные плюсы протокола NetBEUI – скорость работы и очень малые требования к ресурсам. Если требуется организовать быстрый обмен данными в небольшой сети, состоящей из одного сегмента, лучшего протокола для этого не найти. Кроме того, для доставки сообщений установленное соединение не является обязательным требованием: в случае отсутствия соединения протокол использует датаграммный метод, когда сообщение снабжается адресом получателя и отправителя и «пускается в путь», переходя от одного компьютера к другому.
Однако NetBEUI обладает и существенным недостатком: он полностью лишен понятия о маршрутизации пакетов, поэтому его использование в сложных составных сетях не имеет смысла.
Что касается протокола SMB (Server Message Block), то с его помощью организуется работа сети на трех самых высоких уровнях – сеансовом, уровне представления и прикладном уровне. Именно при его использовании становится возможным доступ к файлам, принтерам и другим ресурсам сети. Данный протокол несколько раз был усовершенствован (вышло три его версии), что позволило применять его даже в таких современных операционных системах, как Microsoft Vista и Windows 7. Протокол SMB универсален и может работать в паре практически с любым транспортным протоколом, например TCP/IP и SPX.
Пожалуй, самый востребованный из протоколов, с которым ежедневно работают десятки миллионов пользователей Интернета по всему миру.
Протокол HTTP (HyperText Transfer Protocol) разрабатывался специально для Интернета: для получения и передачи данных по Интернету. Он работает по технологии «клиент – сервер», которая подразумевает, что есть клиенты, запрашивающие информацию (например, просмотр содержимого веб-страницы), и серверная часть, которая обрабатывает эти запросы и отсылает ответ.
HTTP работает на уровне приложений. Это означает, что данный протокол должен пользоваться услугами транспортного протокола, в качестве которого по умолчанию выступает протокол TCP.
Первая версия протокола HTTP была разработана еще в начале 90-х годов прошлого века и на то время полностью удовлетворяла пользователей своими возможностями. Но со временем, когда в Интернет пришла графика и динамичные изображения, возможностей протокола стало не хватать и он постепенно начал изменяться.
В своей работе протокол использует понятие URI (Uniform Resource Identifier) – уникального идентификатора ресурса, в качестве которого обычно выступает адрес веб-страницы, файла или любого другого логического объекта. При этом URI поддерживает работу с параметрами, что позволяет расширять функциональность протокола. Так, используя параметры, можно указать, в каком формате и кодировке вы хотите получить ответ от сервера. Это в свою очередь позволяет передавать с помощью HTTP не только текстовые документы, но и любые двоичные данные.
Основным недостатком протокола HTTP является избыточный объем текстовой информации, необходимой для того, чтобы клиент мог правильно отобразить полученный от сервера ответ. При большом объеме содержимого веб-страницы это может создавать излишне большой трафик, что ухудшает восприятие информации. Кроме того, протокол полностью лишен каких-либо механизмов сохранения состояния, что делает невозможной навигацию по веб-страницам посредством одного лишь HTTP-протокола. По этой причине вместе с HTTP-протоколом используются сторонние протоколы либо пользователю необходимо работать с браузером, обрабатывающим HTTP-запросы.