43. Описание сервисов сетевого и транспортного уровней.

 

Сетевой уровень занимается разработкой маршрутов доставки пакетов от отпра­вителя до получателя. Чтобы добраться до пункта назначения, пакету может по­требоваться преодолеть несколько транзитных участков между маршрутизаторами. Функции, выполняемые на сетевом уровне, резко контрастируют с деятельно­стью уровня передачи данных, цель которого была более скромной - просто переместить кадры с одного конца провода на другой. Таким образом, сетевой Уровень оказывается самым низким уровнем, который имеет дело с передачей Данных по всему пути от одного конца до другого.

Для достижения этих целей сетевой уровень должен обладать информацией о топологии подсети связи (то есть о множестве всех маршрутизаторов) и выби­рать нужный путь по этой подсети. Он должен также заботиться о том, чтобы на­грузка на маршрутизаторы и линии связи была, по возможности, более равномер­ной. Наконец, если источник и приемник находятся в различных сетях, именно сетевой уровень должен уметь решать проблемы, связанные с различиями в сетях. В данной главе мы рассмотрим все эти аспекты и проиллюстрируем их прежде всего на примере Интернета и его протокола сетевого уровня - IP, хотя и бес­проводные сети мы также рассмотрим.

Сервисы, предоставляемые транспортному уровню

Сетевой уровень предоставляет транспортному уровню сервисы в виде интер­фейса между сетевым и транспортным уровнями. Важным вопросом является то, какой именно вид сервиса сетевой уровень предоставляет транспортному. При разработке сервисов сетевого уровня ставились следующие задачи:

      Сервисы сетевого уровня не должны зависеть от технологии маршрутиза­тора.

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

      Сетевые адреса, доступные транспортному уровню, должны использовать единую систему нумерации в локальных и глобальных сетях.

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

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

Из этого следует, что сетевой сервис должен быть сервисом, не требующим установки соединения и состоящим в основном из примитивов END P A C K E T (по­слать пакет) и R E C E IV E P A C K E T (принять пакет). В частности, сюда нельзя включать упорядочивание пакетов и контроль потока - все равно эти действия будет вы­полнять хост. От того, что одна и та же работа будет выполнена дважды, качест­во обслуживания не повысится. Кроме того, каждый пакет должен содержать полный адрес получателя, так как пересылка производится независимо от пред­шествующих пакетов.

Другой лагерь, представленный телефонными компаниями, возражает, что сеть должна предоставлять надежный, ориентированный на соединение сервис. Они утверждают, что 100 лет успешного управления телефонными системами по всему миру - это серьезный аргумент в их пользу. По их мнению, качество об­служивания является определяющим фактором, и без установления соединения в подсети очень сложно добиться каких-либо приемлемых результатов, особенно Когда дело касается трафика реального масштаба времени - например, передачи голоса и видео. Примерами технологий, защищаемых каждой из сторон, являются Интернет и ATM. Интернет предоставляет не требующие установления соединения серви­сы сетевого уровня, а система ATM - ориентированные на соединение. Интерес­но, что в последнее время вопрос гарантии качества обслуживания становится все более важным, а Интернет при этом активно развивается. В частности, как мы увидим позже, ему все больше вменяются свойства, ассоциирующиеся с сер­висами, ориентированными на соединение.

 

Реализация сервиса без установления соединения

Рассмотрев два класса сервисов, которые сетевой уровень может предоставлять своим пользователям, можно перейти к обсуждению устройства этого уровня. Возможны два варианта в зависимости от типа сервиса. Если предоставляется сервис без установления соединения, пакеты внедряются в подсеть по отдельности и их маршруты рассчитываются независимо. При этом никакой предварительной настройки не требуется. В этом случае пакеты часто называют дейтаграммами, по аналогии с телеграммами, а подсети, соответственно, - дейтаграммными. При использовании сервиса, ориентированного на соединение, путь от маршрутизато­ра отправителя до маршрутизатора получателя должен быть установлен до нача­ла каких-либо передач пакетов. Такое соединение называется виртуальным кана­лом, по аналогии с физическими каналами, устанавливаемыми в телефонной системе. Подсеть при этом называется подсетью виртуального канала. В этом разделе мы обсудим дейтаграммные подсети; в следующем разделе - подсети виртуального канала.

 

Реализация сервиса с установлением соединения

Сервису с установлением соединения нужна подсеть виртуального канала. Рас­смотрим ее работу. Идея виртуальных каналов состоит в предотвращении выбора своего маршрута для каждого пакета, как было показано на рис. 5.2. Вместо этого устанавливается соединение, маршрут от отправляющей до получающей машины прописывается в настройках системы и хранится в специальных таблицах, встро­енных в маршрутизаторы. Один и тот же маршрут используется для всего трафи­ка, проходящего через данное соединение. Именно так работает телефонная сис­тема. Когда соединение разрывается, виртуальный канал также прекращает свое существование. При использовании сервиса, ориентированного на установление соединения, каждый пакет включает в себя идентификатор виртуального канала.

 

Транспортный уровень - это не просто очередной уровень. Это сердцевина всей иерархии протоколов. Его задача состоит в предоставлении надежной и экономич­ной передачи данных от машины-источника машине-адресату вне зависимости от физических характеристик использующейся сети или сетей. Без транспортно­го уровня вся концепция многоуровневых протоколов потеряет смысл. В данной главе мы подробно рассмотрим транспортный уровень, включая его сервисы, уст­ройство, протоколы и производительность.

Услуги, предоставляемые верхним уровнем

Конечная цель транспортного уровня заключается в предоставлении эффектив­ных, надежных и экономичных услуг (сервисов) своим пользователям, которыми обычно являются процессы прикладного уровня. Для достижения этой цели транс­портный уровень пользуется услугами, предоставляемыми сетевым уровнем. Ап­паратура и/или программа, выполняющая работу транспортного уровня, называ­ется транспортной сущностью или транспортным объектом. Транспортный объект может располагаться в ядре операционной системы, в отдельном пользователь­ском процессе, в библиотечном модуле, загруженном сетевым приложением, или в сетевой интерфейсной плате. Логическая взаимосвязь сетевого, транспортного и прикладного уровней проиллюстрирована на рис. 6.1.

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

Возникает закономерный вопрос: если сервис транспортного уровня так схож с сервисом сетевого уровня, то зачем нужны два различных уровня? Почему не­достаточно одного уровня? Для ответа на этот важный вопрос следует вернуться к рис. 1.7. На рисунке мы видим, что транспортный код запускается целиком на пользовательских машинах, а сетевой уровень запускается в основном на машрутизаторах, которые управляются оператором связи (по крайней мере, в глобаль­ных сетях). Что произойдет, если сетевой уровень будет предоставлять ориенти­рованный на соединение сервис, но этот сервис будет ненадежным? Например, если он часто будет терять пакеты? Можно себе представить, что случится, если маршрутизаторы будут время от времени выходить из строя.

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

По сути, благодаря наличию транспортного уровня транспортный сервис мо­жет быть более надежным, чем лежащий ниже сетевой сервис. Транспортным уровнем могут быть обнаружены потерянные пакеты и искаженные данные, по­сле чего потери могут быть компенсированы. Более того, примитивы транспорт­ной службы могут быть разработаны таким образом, что они будут независимы от примитивов сетевой службы, которые могут значительно варьироваться от се­ти к сети (например, сервис локальной сети без соединений может значительно отличаться от сервиса ориентированной на соединение глобальной сети). Если спрятать службы сетевого уровня за набором примитивов транспортной службы, то для изменения сетевой службы потребуется просто заменить один набор биб­лиотечных процедур другими, делающими то же самое, но с помощью других сервисов более низкого уровня.

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

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

Hosted by uCoz