Данные передаются блоками, которые называются кадрами. К каждому кадру добавляется несколько бит информации о типе кадра, а также контрольная сумма, которая сверяется при его получении адресатом. При несовпадении контрольных сумм запрашивается повторная передача кадра и данные синхронизируются.
   Что касается локальных сетей, то за работу канального уровня отвечают два подуровня:
   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, а также передачу служебной информации, синхронизирует взаимодействие прикладных процессов и т. д.

Глава 4
Протоколы передачи данных

   □ Понятие протокола
   □ Основные протоколы

Понятие протокола

   В предыдущей главе мы познакомились с эталонной моделью, описывающей принцип подготовки, приема и передачи данных через любой имеющийся канал связи. Каждый из ее семи уровней решает поставленную перед ним задачу, выполняя свою функцию в подготовке или обработке данных. Для этого он использует стандартные процедуры межуровневого обмена информацией и протоколы передачи данных. Таким образом, получается, что модель 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

   Стек протоколов 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

   Стек протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) является разработкой и собственностью компании Novell. Он был разработан для нужд операционной системы Novell NetWare, которая еще до недавнего времени занимала одну из лидирующих позиций среди серверных операционных систем.
   Протоколы IPX и SPX работают на сетевом и транспортном уровнях модели ISO/ OSI соответственно, поэтому отлично дополняют друг друга. Протокол IPX может передавать данные с помощью датаграмм, используя для этого информацию о маршрутизации в сети. Однако для того, чтобы передать данные по найденному маршруту, необходимо сначала установить соединение между отправителем и получателем. Этим и занимается протокол SPX или любой другой транспортный протокол, работающий в паре с IPX.
   К сожалению, стек протоколов IPX/SPX изначально ориентирован на обслуживание сетей небольшого размера, поэтому в больших сетях его использование малоэффективно: излишнее использование широковещательного вещания на низкоскоростных линиях связи недопустимо.

NetBIOS/SMB

   Достаточно популярный стек протоколов, разработкой которого занимались компании 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

   Пожалуй, самый востребованный из протоколов, с которым ежедневно работают десятки миллионов пользователей Интернета по всему миру.
   Протокол HTTP (HyperText Transfer Protocol) разрабатывался специально для Интернета: для получения и передачи данных по Интернету. Он работает по технологии «клиент – сервер», которая подразумевает, что есть клиенты, запрашивающие информацию (например, просмотр содержимого веб-страницы), и серверная часть, которая обрабатывает эти запросы и отсылает ответ.
   HTTP работает на уровне приложений. Это означает, что данный протокол должен пользоваться услугами транспортного протокола, в качестве которого по умолчанию выступает протокол TCP.
   Первая версия протокола HTTP была разработана еще в начале 90-х годов прошлого века и на то время полностью удовлетворяла пользователей своими возможностями. Но со временем, когда в Интернет пришла графика и динамичные изображения, возможностей протокола стало не хватать и он постепенно начал изменяться.
   В своей работе протокол использует понятие URI (Uniform Resource Identifier) – уникального идентификатора ресурса, в качестве которого обычно выступает адрес веб-страницы, файла или любого другого логического объекта. При этом URI поддерживает работу с параметрами, что позволяет расширять функциональность протокола. Так, используя параметры, можно указать, в каком формате и кодировке вы хотите получить ответ от сервера. Это в свою очередь позволяет передавать с помощью HTTP не только текстовые документы, но и любые двоичные данные.
   Основным недостатком протокола HTTP является избыточный объем текстовой информации, необходимой для того, чтобы клиент мог правильно отобразить полученный от сервера ответ. При большом объеме содержимого веб-страницы это может создавать излишне большой трафик, что ухудшает восприятие информации. Кроме того, протокол полностью лишен каких-либо механизмов сохранения состояния, что делает невозможной навигацию по веб-страницам посредством одного лишь HTTP-протокола. По этой причине вместе с HTTP-протоколом используются сторонние протоколы либо пользователю необходимо работать с браузером, обрабатывающим HTTP-запросы.

FTP

   Протокол FTP (File Transfer Protocol) является «родным братом» протокола HTTP, только, в отличие от последнего, он работает не с текстовыми или двоичными данными, а с файлами.
   Этот протокол – один из старейших: он появился еще в начале 70-х годов прошлого века. Как и HTTP, он работает на прикладном уровне и в качестве транспортного протокола использует TCP-протокол. Его основная задача – передача файлов с/на FTP-сервер.
   FTP-протокол представляет собой набор команд, которые описывают правила подключения и обмена данными. При этом команды и непосредственно данные передаются с использованием различных портов. В качестве стандартных портов используются порты 21 и 20: первый – для передачи данных, второй – передачи команд. Кроме того, порты могут быть динамическими.
   Размер файлов, передаваемых с помощью FTP-протокола, не лимитируется. Предусмотрен также механизм докачки файла, если в процессе передачи произошел обрыв связи.
   Главным недостатком FTP-протокола является отсутствие механизмов шифрования данных, что позволяет перехватить начальный трафик и определить с его помощью имя пользователя, а также его пароль подключения к FTP-серверу. Чтобы избежать подобной ситуации, параллельно используется протокол SSL, с помощью которого данные шифруются.

РОРЗ и SMTP

   Использование электронной почты для обмена сообщениями уже давно является альтернативой обычной почте. Электронная почта гораздо эффективнее и быстрее. Ее использование стало возможным благодаря протоколам POP3 (Post Office Protocol Version 3) и SMTP (Simple Mail Transfer Protocol).
   Протокол POP3 работает на прикладном уровне и применяется для получения электронных сообщений из почтового ящика на почтовом сервере. При этом он использует один из портов и транспортный протокол TCP.
   Сеанс связи с почтовым сервером разбит на три этапа: авторизация, транзакция и обновление. Авторизации пользователя происходит при соединении с почтовым сервером, для чего может использоваться любой почтовый клиент, поддерживающий работу с протоколом POP3. На этапе транзакции клиент запрашивает у сервера выполнение необходимого действия, например получения информации о количестве сообщений, получения самих сообщения либо их удаления. Процесс обновления предназначен для выполнения запроса клиента. После окончания обновления сеанс связи завершается до поступления следующего запроса на соединение.
   При прохождении этапа авторизации может использоваться любой из существующих протоколов шифрования, например SSL или TLS, что делает процесс получения электронной корреспонденции более защищенным.
   Протокол POP3 позволяет только получать электронные сообщения, а для их отправки приходится использовать другой протокол, в качестве которого чаще всего применяется SMTP, точнее, его усовершенствованная версия – ESMTP (Extended SMTP).
   Как и POP3, протокол SMTP работает на прикладном уровне, поэтому ему необходимы услуги транспортного протокола, в роли которого выступает протокол TCP. При этом отправка электронных сообщений также происходит с использованием одного из портов, например 25 порта.

IMAP

   IMAP (Interactive Mail Access Protocol) – еще один почтовый протокол, созданный на основе протокола POP3. Он был разработан позже протокола POP3. В результате в нем были учтены все недостатки и добавлено большое количество новых востребованных функций.
   Наиболее полезными среди них является возможность частичного скачивания сообщений, анализируя содержимое которых можно эффективно настраивать фильтры, сортирующие письма или отсеивающие спам.
   Еще одна немаловажная функция – механизм оптимизации использования каналов, по которым передаются сообщения. Эти каналы не всегда быстрые и незагруженные, поэтому наличие такой функции существенно облегчает жизнь пользователя. Имеется также возможность передачи сообщений по небольшим частям, что очень полезно, когда размер письма большой, например 5–10 Мбайт.

SLIP

   Протокол передачи данных SLIP (Serial Line Internet Protocol) создан специально для организации постоянного подключения к Интернету с использованием имеющейся телефонной линии и обычного модема. Из-за высокой стоимости этот тип подключения могут позволить себе немногие пользователи. Как правило, такое подключение создается в организациях, имеющих сервер, на котором находится веб-страница организации и другие ресурсы (база данных, файлы).
   Данный протокол работает вместе с протоколом TCP/IP и находится на более низком уровне. Перед тем как информация с модема поступит на обработку TCP/ IP-протоколу, ее предварительно обрабатывает SLIP-протокол. Выполнив все необходимые действия, он создает другой пакет и передает его TCP/IP.