СЕТЕВЫЕ ПРОТОКОЛЫ.docx

  • docx
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала СЕТЕВЫЕ ПРОТОКОЛЫ.docx

СЕТЕВЫЕ ПРОТОКОЛЫ*

Правила, регулирующие взаимодействие различных компонентов вычислительной системы, называются протоколами (protocols). Этот термин возник по аналогии с протоколом, регулирующим взаимоотношения между людьми в обществе. В компьютерной сети протоколы определяют детали каждого действия, включая то, как адресуются сообщения, как между машинами передается право передачи сообщения, как должны решаться задачи упаковки сообщений для передачи и даль- нейшей обработки уже распакованных поступивших сообщений.

Многоуровневый подход к организации сетевого программного обеспечения. Главной задачей сетевого программ- ного обеспечения является предоставление абстрактных механизмов для передачи сообщений по сети. В случае с Internet эта задача также включает передачу сообщений между сетями. Процесс передачи сообщений аналогичен процедуре, к которой мы прибегаем, если необходимо отослать некоторую запчасть к автомобилю заказчику, проживающему в другом городе. Прежде всего, запчасть упаковывают и на пакете пишут адрес получателя. Затем пакет доставляют в компанию по перевозке грузов. Работники компании помещают его в большой контейнер вместе с другими пакетами и отправляют в агентство неко- торой авиалинии. Служащие авиалинии грузят контейнер в самолет, который отправится в нужный город, возможно, с про- межуточными остановками по пути. В месте назначения служащие авиалинии выгружают контейнер из самолета и отправ- ляют в контору компании по перевозке грузов. Наконец, работники компании извлекают наш пакет из контейнера и достав- ляют его адресату.

Говоря коротко, транспортировка запасных частей производится с помощью трехуровневой иерархии служб доставки (рис. 3.15). Первый уровень – это уровень пользователя, он состоит из отправителя и получателя. Второй уровень представ- лен компанией по перевозке грузов, а третий – авиалинией. Каждый из уровней рассматривает следующий


Рис. 3.15. Пример доставки посылки

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


Четыре уровня программного обеспечения Internet (прикладной, транспортный, сетевой и канальный) представлены на рис. 3.16. Левый столбец представляет уровни программного обеспечения, используемые машиной для отправки исходного сообщения, а правый – уровни, используемые машиной при обработке поступившего сообщения. Как и в примере с достав- кой груза, уровни программного обеспечения при обработке отправляемого и получаемого сообщения одни и те же.

Рис. 3.16. Уровни сетевого программного обеспечения в Internet

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

Самым верхним уровнем в иерархии программного обеспечения Internet является прикладной уровень, который, не- смотря на схожесть названий, не следует путать с прикладным программным обеспечением в классификации, приведенной в разделе 3.2. (В действительности мы скоро увидим, что большая часть программного обеспечения прикладного уровня в ие- рархии программного обеспечения Internet относится к категории обслуживающих программ.) Этот уровень иерархии состо- ит из элементов программного обеспечения, которые должны взаимодействовать друг с другом через Internet. Традиционный пример – набор стандартных утилит для передачи файлов по Internet с использованием протокола передачи файлов FTP (File Transfer Protocol). Этот набор стандартных утилит часто оформляется в виде единой прикладной программы с именем FTP, название которой отражает лежащий в ее основе протокол. Другой пример – пакет утилит под именем telnet, который был разработан в целях предоставления пользователям доступа к любой машине в Internet в таком режиме, как если бы они были


локальными пользователями этой машины. Как программа FTP, так и пакет telnet первоначально создавались как прикладное программное обеспечение в соответствии с классификацией, приведенной в разделе 3.2. Однако сегодня они стали частью инфраструктуры операционных систем большинства персональных компьютеров. Действительно, эти элементы системного программного обеспечения используются как абстрактные механизмы для конструирования более крупных приложений, подобных Web-броузерам. В этом смысле они превратились теперь в типичные программы класса утилит.

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

Задача транспортного уровня машины-отправителя сообщения – проследить за тем, чтобы сообщение было успешно доставлено транспортному уровню компьютера-получателя, где оно будет вновь преобразовано в форму, соответствующую прикладному уровню. Таким образом, обязанности транспортного уровня состоят в выполнении тех действий, которые должны производиться в месте отправления сообщения и в месте его получения, без учета возможных промежуточных оста- новок по пути следования. В частности, в задачу транспортного уровня входит разбиение длинных сообщений на сегменты, размеры которых совместимы с требованиями лежащего ниже сетевого уровня. Отдельные сегменты последовательно нуме- руются, что позволяет машине-получателю воссоздать первоначальное сообщение после пересылки. Затем транспортный уровень присоединяет к каждому сегменту адрес места назначения и передает сформированные блоки данных, называемые пакетами, на сетевой уровень.

Как видите, сообщения путешествуют по Internet в виде небольших пакетов, каждый из которых содержит фрагмент ис- ходного сообщения и дополнительную "упаковку", содержащую информацию, необходимую для передачи сообщения. Не- редко бывает так, что размеры упаковки пакета превышают размеры находящегося внутри элемента сообщения. Достаточно часто встречаются элементы сообщений, состоящие из одного байта, в то время как каждый пакет содержит более 50 байтов упаковки. Хотя это и кажется неэффективным, тем не менее, вся система работает достаточно хорошо.

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

В обязанности канального уровня входит учет всех деталей установки соединений, присущих той сети, где находится данная машина. Каждая отдельная сеть в составе Internet имеет собственную систему адресации, независимую от общей сис- темы адресации в Internet. Поэтому канальный уровень должен перевести Internet-адреса, указанные во внешней оболочке пакета, в адреса, соответствующие локальной адресной системе (6-битовые MAC-адреса (Media Access Control) сетевого адаптера, который назначается производителями оборудования и является уникальными адресами), после чего добавить их к пакетам в виде дополнительного слоя упаковки.

Каждый уровень в иерархии программного обеспечения Internet играет определенную роль и в процессе получения со- общений, которая в общих чертах противоположна задаче, выполняемой на данном уровне при отправке сообщения. Так, канальный уровень получает пакеты из сетевых линий связи, удаляет внешнюю упаковку (адрес данной машины в форме, со- вместимой с этой локальной сетью), в которую поместил данный пакет канальный уровень той машины, откуда этот пакет посту- пил, а затем передает обработанный пакет своему сетевому уровню.

Каждый раз, когда сетевой уровень получает пакет от своего канального уровня, он удаляет из него промежуточный Internet-адрес, прикрепленный сетевым уровнем последней машины-отправителя, и изучает адрес конечного места назначе- ния пакета, находящийся под ним. Если это собственный адрес данной машины, сетевой уровень передает обработанный пакет своему транспортному уровню. В противном случае сетевой уровень решает, что пакет должен быть передан по Inter- net дальше. Для этого он должен снова "упаковать" пакет, снабдив его новым промежуточным адресом, и вернуть его на свой канальный уровень для дальнейшей передачи. Таким способом пакеты "перепрыгивают" с машины на машину, пока не достигнут конечного места назначения. На каждом промежуточном этапе именно сетевой уровень определяет место назна- чения следующего прыжка.

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


Заметим, что сетевой уровень передает транспортному уровню только те пакеты, которые адресованы данной локаль- ной машине. Таким образом, в пересылке пакетов, предназначенных другим машинам, участвуют только канальный и сете- вой уровни. Транспортный и прикладной избавлены от этой обязанности и обрабатывают только те пакеты, которые предна- значены их собственной машине (рис. 3.17). Когда транспортный уровень получает пакеты от сетевого уровня, он выделяет из них сегменты сообщения и воссоздает первоначальное сообщение, используя последовательную нумерацию фрагментов, вы- полненную транспортным уровнем в месте отправления сообщения. Как только сообщение будет готово, транспортный уровень передает его прикладному уровню, завершая, таким образом, процесс передачи сообщения.

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


Рис. 3.17. Путь прохождения данных по Internet,

включающий две промежуточные машины

Управление правом передачи данных. В обязанности канального уровня входит учет всех деталей установки соеди- нений, присущих той сети, где находится данная машина, в том числе задача управления правом машины передавать по сети собственное сообщение. Одним из подходов к координации распределения прав на отправку сообщений является протокол с передачей маркера по сети с кольцевой конфигурацией (Token Ring protocol). Согласно этому протоколу, каждая машина передает сообщения только "направо", а получает их только "слева", как показано на рис. 3.18. Следовательно, сообщение от одной машины к другой передвигается по сети против часовой стрелки до тех пор, пока не достигнет своего места назначе- ния. Когда сообщение поступает по назначению, машина-получатель сохраняет его копию и отправляет ее дальше по сети. Когда отправленная копия достигает машины-отправителя, эта машина определяет, что ее сообщение получено, и удаляет его из кольца. Конечно, такая система зависит от четкого взаимодействия всех машин. Если каждая машина постоянно будет отправлять только свои сообщения, а не пересылать сообщения других машин, то ничего не получится.

Чтобы разрешить эту проблему, по кольцу посылается определенная последовательность битов, называемая маркером (token). Обладание этим маркером дает машине право послать собственное сообщение; в противном случае ей разрешено передавать только чужие сообщения. В обычной ситуации каждая машина просто передает маркер слева направо, точно так же, как она передает сообщения. Если машина, получившая маркер, имеет собственные сообщения, которые нужно передать по сети, она посылает одно сообщение, удерживая маркер у себя. Если это сообщение завершит свой кольцевой цикл, маши- на передаст маркер следующей машине в кольце. Аналогично, когда следующая машина получает маркер, она может или сразу передать маркер дальше,

 


Рис. 3.18. Обмен информации в сети с кольцевой конфигурацией


Рис. 3.19. Обмен информации в сети с шинной конфигурацией

 

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

Другой протокол для координации распределения прав отправки сообщений применен в сетях Ethernet – популярной версии сети с шинной конфигурацией. В таких сетях право передачи сообщений регулируется протоколом CSMA/CD (Carrier Sence, Multiple Access with Collision Detection – множественный доступ с опросом несущей и разрешением конфликтов). Этот протокол предусматривает, что каждое посланное сообщение будет передано всем машинам, соединенным шиной (рис. 3.19). Каждая машина просматривает все поступающие сообщения, но отбирает только те, которые адресованы именно ей. Чтобы отправить собственное сообщение, машина ожидает, пока в шине наступит тишина, затем начинает отправку, одно- временно продолжая наблюдать за шиной. Если в этот момент и другая машина пытается отправить свое сообщение, обе обнаруживают конфликт и делают паузу на произвольно короткий промежуток времени, а затем предпринимают попытку вновь начать отправку. В результате складывается ситуация, аналогичная той, которая возникает при разговоре в небольшой группе людей. Если два человека начинают говорить одновременно, оба замолкают. Различие состоит в том, что люди могут выйти из ситуации таким образом: "Простите, что вы хотели сказать?", "Нет, нет, говорите вы первым"; в то время как по протоколу CSMA/CD каждая машина просто делает следующую попытку.

Семейство протоколов TCP/IP. Спрос на открытые сети вызвал потребность в разработке открытых стандартов. Сле- дуя этим стандартам, производители могли бы выпускать оборудование и программное обеспечение, корректно взаимодей- ствующее с продуктами других фирм-производителей. Одним из таких стандартов является модель OSI (Open System Inter- connection – взаимодействие открытых систем), разработанная Международной организацией по стандартизации (ISO). Этот стандарт предусматривает иерархию из семи уровней, в отличие от четырехуровневой системы, принятой в Internet. На мо- дель OSI часто ссылаются, так как ее поддерживает авторитет международной организации. Но она так и не была оконча- тельно внедрена, главным образом из-за того, что появилась уже после того, как семейство протоколов TCP/IP получило ши- рокое распространение в Internet.

Семейство протоколов TCP/IP представляет собой набор протоколов, определяющих четырехуровневую иерархию, ис- пользуемую в Internet, основанную на представлении о том, что сетевая инфраструктура содержит четыре вида объектов: ресурсы, процессы, хосты, сети (см. табл. 3.2).

Таблица 3.2

 

Название уровня

Объекты

Адресация

Протоколы

Название блока информации

Уровень приложений

Ресурсы

Определяется конкрет- ным сервисом

HTTP, FTP, POP3, SMTP

Сообщение

Транспортный уровень

Сервисы (процессы)

Номер порта

TCP, UDP

Сегмент (пакет)

Сетевой уровень

Сети

IP-адрес

IP

Датаграмма (пакет)

 

Канальный уровень

 

Хосты (узлы)

Локальный адрес узла (MAC-адрес в сетях Ethernet)

CSMA/CD (в сетях

Ethernet)

Кадр

(пакет)

 

В действительности TCP/IР – это название только двух протоколов: TCP (Transmission Control Protocol – протокол управления передачей) и IP (Internet Protocol); так что по отношению ко всему семейству такое название несколько неточно. Говоря точнее, протокол TCP определяет одну из версий транспортного уровня. Мы употребили слово "версия", так как в семействе протоколов TCP/IP для представления транспортного уровня существуют два способа; второй определяется про- токолом UDP (User Datagram Protocol – протокол датаграмм пользователя). Это напоминает ситуацию, когда при отправке запчастей отправитель имеет возможность выбора среди различных компаний по доставке грузов, каждая из которых пред- лагает одинаковый набор основных услуг, но имеет собственные характеристики. Таким образом, в зависимости от специ- фики требуемого обслуживания программное обеспечение прикладного уровня может выбирать, с помощью какой версии транспортного уровня, протокола TCP или UDP будут отправлены данные.

Протоколы транспортного уровня вводят новый уровень адресации, так называемый номер порта (port number), кото- рый определяет, какому процессу на машине передаются данные. Существует список соответствия номеров портов прило- жениям, определенных в RFC1700 (Request For Comments – запрос для пояснений – данные документы описывают стандар- ты протоколов Internet и их взаимодействие). Некоторые зарезервированные порты представлены в табл. 3.3.


Таблица 3.3

 

№ порта

Сервис

Описание

20

FTP-data

Передача данных

21

FTP

Управляющие команды

23

Telnet

Удаленный доступ в систему

25

SMTP

Протокол электронной почты

53

DNS

Сервер доменных имен

80

HTTP

Сервер WWW

110

POP3

Протокол электронной почты

119

NNTP

Телеконференции

 

Между протоколами TCP и UDP существуют два основных различия. Первое состоит в том, что, перед тем как передать данные на транспортный уровень, базирующийся на протоколе TCP, посылается сообщение транспортному уровню маши- ны-получателя, уведомляющее о том, что предназначенные ему данные готовы к отправке, и извещающее, какое именно программное обеспечение прикладного уровня должно их принять. Затем транспортный уровень машины-отправителя ожи- дает уведомления о получении адресатом этого предварительного сообщения, и только после его прихода он приступает к передаче сегментов данных. Говорят, что транспортный уровень с протоколом TCP сначала устанавливает соединение, а затем посылает данные. Транспортный уровень, основанный на UDP, не устанавливает никакие соединения, прежде чем по- слать данные. Он просто посылает данные по указанному адресу и забывает о них. Для него не имеет значения, работает ли вообще в данный момент машина, указанная как получатель. Поэтому протокол UDP называют протоколом без установки соеди- нения.

Второе существенное отличие между протоколами TCP и UDP заключается в том, что транспортные уровни отправите- ля и получателя, использующие протокол TCP, совместно работают над обеспечением целостности передаваемых сообще- ний. Для этой цели используется механизм уведомлений и повторных передач сегментов, выполняемых до тех пор, пока не появится уверенность в том, что все сегменты сообщения были успешно переданы. Поэтому протокол TCP называют надеж- ным, в то время как о протоколе UDP, который не предоставляет услуг по повторной передаче сегментов, говорят как о не- надежном. Это не означает, что протокол UDP вообще плох. В действительности, транспортный уровень, основанный на UDP, работает существенно быстрее, и если прикладной уровень готов к устранению возможных последствий использова- ния протокола UDP, последний может оказаться лучшим выбором.

Протокол IP – это стандарт Internet для сетевого уровня. Одна из его функций состоит в том, что каждый раз, когда ис- пользующий протокол IP сетевой уровень с протоколом IP подготавливает пакет к передаче на канальный уровень, он при- крепляет к пакету некоторое значение, называемое счетчиком переходов по сети, или временем жизни пакета. Это значение указывает, сколько раз пакет может пересылаться между машинами в попытках проложить свой путь через Internet. Каждый раз, когда использующий протокол IP сетевой уровень пересылает некоторый пакет, он уменьшает значение его счетчика переходов на единицу. С помощью этого механизма сетевой уровень защищает Internet от бесконечной циркуляции пакетов в системе. Хотя размеры Internet продолжают расти с каждым днем, начальное значение счетчика переходов по сети, равное 64, остается более чем достаточным для того, чтобы позволить пакету найти свой путь в лабиринте локальных и глобальных сетей и маршрутизаторов.

Вопросы для самопроверки

1.     Какие уровни иерархии программного обеспечения Internet используются для пересылки исходящего сообщения в адрес другой машины?

2.     Каковы различия между транспортным уровнем, основанным на протоколе TCP, и транспортным уровнем, основан- ным на UDP?

3.     Как программное обеспечение Internet гарантирует, что сообщения не будут вечно блуждать по Internet?

4.     Что удерживает подключенную к Internet машину от записи копий всех проходящих через нее сообщений?