Передача данных в компьютерной сети Введение. Благодаря возникновению и развитию сетей передачи данных появился новый, высокоэффективный способ взаимодействия между людьми. Первоначально сети использовались главным образом для научных исследований, но затем они стали проникать буквально во все области человеческой деятельности. При этом большинство сетей существовало совершенно независимо друг от друга, решая конкретные задачи
для конкретных групп пользователей. В соответствии с этими задачами выбирались те или иные сетевые технологии и аппаратное обеспечение. Построить универсальную физическую сеть мирового масштаба из однотипной аппаратуры просто невозможно, поскольку такая сеть не могла бы удовлетворять потребности всех ее потенциальных пользователей. Одним нужна высокоскоростная сеть для соединения машин в пределах здания, а другим – надежные коммуникации между компьютерами, разнесенными на сотни километров.
Тогда возникла идея объединить множество физических сетей в единую глобальную сеть, в которой использовались бы как соединения на физическом уровне, так и новый набор специальных соглашений или протоколов. Эта технология, получившая название internet, должна была позволить компьютерам общаться друг с другом независимо от того, к какой сети и каким образом они подсоединены. Осознав важность идеи internet, несколько правительственных организаций в
США стали работать над ее реализацией. И наибольшего успеха в этом добилось агентство Defense Advanced Research Projects Agency DARPA, создавшее стек протоколов TCPIP. Возникший в конце 60-х гг. как проект объединения сетей нескольких крупных исследовательских организаций, в наше время TCPIP стал одним из наиболее популярных протоколов сетевого взаимодействия и стандартом de facto для реализации глобальных сетевых соединений. Сеть Internet – это одна из реализаций технологии internet, которая объединяет около 10 млн. компьютеров по всему миру, которые взаимодействуют друг с другом с помощью стека протоколов TCPIP. Серия протоколов TCPIP – яркий пример открытой системы в том смысле, что, в отличие от протоколов, используемых в коммуникационных системах разных поставщиков, все спецификации этого стека протоколов и многие из его реализаций общедоступны предоставляются бесплатно или за символическую цену.
Это позволяет любому разработчику создавать свое программное обеспечение, необходимое для взаимодействия по Internet. TCPIP привлекает своей масштабируемостью, предоставляя одинаковые возможности глобальным и локальным сетям. Немного о прошлом Работа над созданием технологии internet была начата в DARPA в середине 70-х годов. А в 1977-1979 гг. архитектура и протоколы TCPIP приобрели современный вид. К этому времени агентство
DARPA уже стало одним из лидеров в исследовании и разработке сетей с коммутацией пакетов и реализовало немало новых идей в этой области в своей сети ARPANET. Бурное развитие разнообразных сетевых технологий, в том числе беспроводных радиосетей и спутниковых каналов связи, стимулировало активность DARPA в исследовании проблем межсетевого взаимодействия и реализации принципов internet в ARPANET. DARPA не делало тайны из своей деятельности в этом направлении, поэтому
разнообразные научные группы проявляли большой интерес к разработкам технологии глобальной сети сетей, особенно те исследователи, которые уже имели опыт использования принципов коммутации пакетов в сети ARPANET. DARPA инициировало ряд неформальных встреч, во время которых ученые обменивались новыми идеями и обсуждали результаты экспериментов. К 1979 г. в работу по созданию TCPIP оказались вовлечены такие значительные силы, что было принято решение о создании неформального комитета для координации и руководства процессом разработки протоколов и архитектуры сети Internet. Получившая название Internet Control and Configuration Board ICCB, эта группа существовала и регулярно работала до 1983 г когда она была реорганизована. Начало 80-х гг время зарождения реальной сети Internet. В эти годы DARPA инициировало перевод машин, подсоединенных к его исследовательским сетям, на использование
стека TCPIP. ARPANET стала магистральной сетью Internet и активно использовалась для многочисленных экспериментов с TCPIP. Окончательный переход к технологии internet произошел в январе 1983 г. В это же время сеть ARPANET была разбита на две независимые части. Одна из них предназначалась для исследовательских целей, и за ней было оставлено название ARPANET вторая, несколько большая по масштабу сеть
MILNET, должна была отвечать за военные коммуникации. Для того чтобы стимулировать адаптацию и использование новых протоколов в университетских кругах, DARPA сделало реализацию TCPIP доступной, предлагая ее за низкую цену. В это время большинство факультетов, занимающихся исследованиями в компьютерной области, использовало версию ОС Unix от Berkeley Software Distribution Berkeley
Unix, или BSD Unix университета шт. Калифорния в Беркли. Субсидировав компанию Bolt Beranek and Newman BBN с целью реализации ею протоколов TCPIP для использования вместе с Unix, а также университет в Беркли для интеграции этих протоколов в свою версию популярной операционной системы, DARPA добилось того, что более 90 компьютерных факультетов университетов адаптировали новую сетевую
технологию. Версия BSD стала стандартом de facto для реализаций стека протоколов TCPIP. Такую большую популярность она приобрела во многом благодаря тому, что обеспечивает больше, чем просто базовые internet-протоколы. Помимо стандартных прикладных программ TCPIP, BSD предоставляет набор сетевых утилит, сходных с Unix-службами, используемыми на автономной машине. Основное преимущество этих утилит состоит в том, что они аналогичны стандартным средствам Unix. Сейчас поддержку стека протоколов TCPIP встраивают в свои операционные системы многие компании, в том числе Microsoft, Novell и Apple. Большое количество независимых поставщиков работает над продуктами, расширяющими возможности TCPIP, добавляя поддержку интерактивных приложений, защиту информации, речевую почту и средства коллективной работы. Но вернемся в начало прошлого десятилетия.
Сетевые коммуникации становятся критически важной составляющей научных исследований. Осознав этот факт, National Science Foundation приняла активное участие в расширении Internet с целью сделать стек TCPIP доступным максимальному числу исследовательских организаций. С 1985 г. NSF реализовывала программу создания сетей вокруг шести своих суперкомпьютерных центров. В 1986 г. была создана магистральная сеть NSFNET, которая в конце концов, объединила все эти центры
и связала их с ARPANET. К началу 90-х гг. Internet объединяла уже сотни отдельных сетей в США и Европе. К мировой Сети помимо научных институтов и университетов стали подключаться компьютерные компании и большие корпорации нефтяной, автомобильной и электронной индустрии, а также телефонные компании. Кроме того, многие организации использовали TCPIP для создания своих корпоративных сетей, которые не являются компонентами большой Internet. В наши же дни
Internet проникает буквально во все сферы человеческой жизни, и сейчас уже всерьез говорят о влиянии мировой сети на наше мировоззрение и мировосприятие. Основы технологии internet. Итак, создатели технологии internet исходили из двух основополагающих соображений невозможно создать единую физическую сеть, которая позволит удовлетворить потребности всех пользователей пользователям нужен универсальный способ для установления соединений друг с другом. В пределах каждой физической сети, подсоединенные к ней компьютеры, используют ту или иную технологию Ethernet, Token Ring, FDDI, ISDN, соединение типа точка-точка, а в последнее время к этому списку добавились сеть АТМ и даже беспроводные технологии. Между механизмами коммуникаций, зависящими от данных физических сетей, и прикладными системами встраивается новое программное обеспечение, которое обеспечивает соединение различных физических сетей друг с другом. При этом детали этого соединения скрыты от пользователей и
им предоставляется возможность работать как бы в одной большой физической сети. Такой способ соединения в единое целое множества физических сетей и получила название internet. Для соединения двух и более сетей в internet используются маршрутизаторы routers – компьютеры, которые физически соединяют сети друг с другом и с помощью специального программного обеспечения передают пакеты из одной сети в другую. Технология internet не навязывает какой-то определенной топологии межсетевых
соединений. Добавление новой сети к internet не влечет за собой ее подсоединения к некоторой центральной точке коммутации или установки непосредственных физических соединений со всеми уже входящими в internet сетями. Маршрутизатор знает топологию internet за пределами тех физических сетей, которые он соединяет, и, основываясь на адресе сети назначения, передает пакет по тому или иному маршруту. В internet используются универсальные идентификаторы подсоединенных к ней компьютеров адреса, поэтому
любые две машины имеют возможность взаимодействовать друг с другом. В internet также должен быть реализован принцип независимости пользовательского интерфейса от физической сети, то есть должно существовать множество способов установления соединений и передачи данных, одинаковых для всех физических сетевых технологий. Фундаментальным принципом internet является равнозначность всех объединенных с ее помощью физических сетей любая система коммуникаций рассматривается как компонент internet, независимо от ее физических параметров, размеров передаваемых пакетов данных и географического масштаба. Семейство протоколов ТСРIP позволяет построить универсальную сеть, реализующую принципы, которые рассмотрены в предыдущем разделе, и включает в себя протоколы 4-х уровней коммуникаций. Уровень сетевого интерфейса отвечает за установление сетевого соединения в конкретной физической сети – компоненте internet, к которой подсоединен компьютер.
На этом уровне работают драйвер устройства в операционной системе и соответствующая сетевая плата компьютера. Сетевой уровень – основа ТСРIP. Именно на этом уровне реализуется принцип межсетевого соединения, в частности маршрутизация пакетов по internet. На сетевом уровне протокол реализует ненадежную службу доставки пакетов по сети от системы к системе без установления соединения connectionless packet delivery service. Это означает, что будет выполнено все необходимое для доставки пакетов, однако эта доставка
не гарантируется. Пакеты могут быть потеряны, переданы в неправильном порядке, продублированы и т.д. Служба, работающая без установления соединения, обрабатывает пакеты независимо друг от друга. Но главное, что именно на этом уровне принимается решение о маршрутизации пакета по межсетевым соединениям. Надежную передачу данных реализует следующий уровень, транспортный, на котором два основных протокола, TCP и UDP, осуществляют связь между машиной – отправителем пакетов и машиной-адресатом.
Наконец, прикладной уровень – это приложения типа клиент-сервер, базирующиеся на протоколах нижних уровней. В отличие от протоколов остальных трех уровней, протоколы прикладного уровня занимаются деталями конкретного приложения и не интересуются способами передачи данных по сети. Среди основных приложений ТСРIP, имеющихся практически в каждой его реализации протокол эмуляции терминала Telnet, протокол передачи файлов FTP, протокол электронной почты SMTP, протокол управления сетью SNMP, используемый в системе World Wide Web протокол передачи гипертекста НТТР и др. Поскольку в internet детали физических соединений скрыты от приложений, прикладной уровень совершенно не заботится о том, что клиент приложения работает в Ethernet, а сервер подключен к сети Token Ring. Между конечными системами может быть несколько десятков
маршрутизаторов и множество промежуточных физических сетей различных типов, но приложение будет воспринимать этот конгломерат как единую физическую сеть. Это и обуславливает основную силу и привлекательность технологии internet. Семейство протоколов TCPIP. Хотя рассматриваемый стек протоколов и называется TCPIP, сами протоколы TCP и IP являются важнейшими, но не единственными представителями этого семейства. Каждый уровень коммуникаций обслуживается несколькими протоколами.
Рассмотрим их более подробно. TCP и UDP – протоколы транспортного уровня, организующие поток данных между конечными системами для приложений верхнего уровня. Эти протоколы значительно отличаются друг от друга. TCP Transmission Control Protocol обеспечивает надежную передачу данных между двумя хостами. Он позволяет клиенту и серверу приложения устанавливать между собой логическое соединение и затем использовать
его для передачи больших массивов данных, как если бы между ними существовало прямое физическое соединение. Протокол позволяет осуществлять дробление потока данных, подтверждать получение пакетов данных, задавать таймауты которые позволяют подтвердить получение информации, организовывать повторную передачу в случае потери данных и т.д. Поскольку этот транспортный протокол реализует гарантированную доставку информации, использующие его приложения получают возможность игнорировать все детали такой передачи. Протокол UDP User Datagram Protocol реализует гораздо более простой сервис передачи, обеспечивая подобно протоколам сетевого уровня, ненадежную доставку данных без установления логического соединения, но, в отличие от IP для прикладных систем на хост-компьютерах. Он просто посылает пакеты данных, дейтаграммы datagrams, с одной машины на другую, но не предоставляет никаких гарантий их доставки. Все функции надежной передачи должны встраиваться в прикладную систему,
использующую UDP. Протокол UDP имеет и некоторые преимущества перед TCP. Для установления логических соединений нужно время, и они требуют дополнительных системных ресурсов для поддержки на компьютере информации о состоянии соединения. UDP занимает системные ресурсы только в момент отправки или получения данных. Поэтому если распределенная система осуществляет непрерывный обмен данными между клиентом и сервером,
связь с помощью транспортного уровня TCP окажется для нее более эффективной. Если же коммуникации между хост-компьютерами осуществляются редко, предпочтительней использовать протокол UDP. Почему же существуют два транспортных протокола TCP и UDP, а не один из них Дело в том, что они предоставляют разные услуги прикладным процессам. Большинство прикладных программ пользуются только одним из них.
Программист выбирает тот протокол, который наилучшим образом соответствует его потребностям. Если нужна надежная доставка, то лучшим может быть TCP, если же нужна доставка датаграмм, то лучше может быть UDP. Если нужна эффективная доставка по длинному и ненадежному каналу передачи данных, то лучше может подойти протокол TCP, если же нужна эффективность на быстрых сетях с короткими соединениями, то лучшим может быть протокол UDP. Среди известных распределенных приложений, использующих TCP такие как Telnet, FTP и SMTP. Протоколом UDP пользуется, в частности, протокол сетевого управления SNMP. Протоколы прикладного уровня ориентированы на конкретные прикладные задачи. Они определяют как процедуры по организации взаимодействия определенного типа между прикладными процессами, так и форму представления информации при таком взаимодействии.
Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные сетевые виртуальные терминалы строчного типа, работающие в коде ASCII, а также обеспечивает возможность согласования более сложных функций например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т.д. TELNET работает на базе протокола TCP. На прикладном уровне над
TELNET находится либо программа поддержки реального терминала на стороне пользователя, либо прикладной процесс в обсуживающей машине, к которому осуществляется доступ с терминала. Работа с TELNET походит на набор телефонного номера. Пользователь набирает на клавиатуре что-то вроде telnet delta и получает на экране приглашение на вход в машину delta. Протокол TELNET существует уже давно.
Он хорошо опробован и широко распространен. Создано множество реализаций для самых разных операционных систем. Протокол FTP File Transfer Protocol распространен также широко как TELNET. Он является одним из старейших протоколов семейства TCPIP. Также как TELNET он пользуется транспортными услугами TCP. Существует множество реализаций для различных операционных систем, которые хорошо взаимодействуют
между собой. Пользователь FTP может вызывать несколько команд, которые позволяют ему посмотреть каталог удаленной машины, перейти из одного каталога в другой, а также скопировать один или несколько файлов. Протокол SMTP Simple Mail Transfer Protocol поддерживает передачу сообщений электронной почты между произвольными узлами сети internet. Имея механизмы промежуточного хранения почты и механизмы повышения надежности доставки, протокол SMTP допускает использование различных транспортных служб. Он может работать даже в сетях, не использующих протоколы семейства TCPIP. Протокол SMTP обеспечивает как группирование сообщений в адрес одного получателя, так и размножение нескольких копий сообщения для передачи в разные адреса. Сетевая файловая система NFS Network File System впервые была разработана компанией Sun Microsystems Inc. NFS использует транспортные услуги
UDP и позволяет монтировать в единое целое файловые системы нескольких машин с ОС UNIX. Бездисковые рабочие станции получают доступ к дискам файл-сервера так, как будто это их локальные диски. NFS значительно увеличивает нагрузку на сеть. Если в сети используются медленные линии связи, то от NFS мало толку. Однако, если пропускная способность сети позволяет
NFS нормально работать, то пользователи получают большие преимущества. Поскольку сервер и клиент NFS реализуются в ядре ОС, все обычные несетевые программы получают возможность работать с удаленными файлами, расположенными на подмонтированных NFS-дисках, точно также как с локальными файлами. Протокол SNMP Simple Network Management Protocol работает на базе
UDP и предназначен для использования сетевыми управляющими станциями. Он позволяет управляющим станциям собирать информацию о положении дел в сети internet. Протокол определяет формат данных, их обработка и интерпретация остаются на усмотрение управляющих станций или менеджера сети. TCP и UDP идентифицируют приложения по 16-битным номерам портов. Серверы приложений обычно имеют заранее известные номера портов.
Например, в каждой реализации TCPIP, которая поддерживает сервер FTP, этот протокол передачи файлов получает для своего сервера номер TCP-порта 21. Каждый Telnet-сервер имеет TCP-порт 23, а сервер протокола TFTP Trivial File Transfer Protocol – UDP-порт 69. Службам, которые могут поддерживаться любой реализацией TCPIP, назначаются номера портов в диапазоне от 1 до 1023. Назначение номеров портов находится в ведении организации Internet Assigned Numbers Authority IANA. Клиент приложения обычно не интересуется номером своего порта для транспортного уровня, который он использует. Ему лишь необходимо гарантировать, что этот номер уникален для данного хоста. Номера портов клиентов приложений принято называть краткосрочными т.е. недолговечными,
поскольку в общем случае клиенты существуют ровно столько времени, сколько работающий с ним пользователь нуждается в соответствующем сервере. Серверы, напротив, находятся в рабочем состоянии все время, пока включен хост, на котором они работают. В большинстве реализаций TCPIP краткосрочным номерам портов выделен диапазон от 1024 до 5000. Internet Protocol IP – основной протокол сетевого уровня, позволяющий реализовывать межсетевые соединения.
Он используется обоими протоколами транспортного уровня. IP определяет базовую единицу передачи данных в internet, IP-дейтаграмму, указывая точный формат всей информации, проходящей по сети TCPIP. Программное обеспечение IP выполняет функции маршрутизации, выбирая путь данных по паутине физических сетей. Для определения маршрута поддерживаются специальные таблицы выбор осуществляется на основе адреса
сети, к которой подключен компьютер-адресат. Протокол IP определяет маршрут отдельно для каждого пакета данных, не гарантируя надежной доставки в нужном порядке. Он задает непосредственное отображение данных на нижележащий физический уровень передачи и реализует тем самым высокоэффективную доставку пакетов. Кроме IP, на сетевом уровне используются также протоколы
ICMP и IGMP. ICMP Internet Control Message Protocol отвечает за обмен сообщениями об ошибках и другой важной информацией с сетевым уровнем на другом хосте или маршрутизаторе. IGMP Internet Group Management Protocol используется для отправки IP-дейтаграмм множеству хостов в сети. На самом нижнем уровне – сетевого интерфейса – используются специальные протоколы разрешения адресов ARP Address Resolution Protocol и RARP Reverse Address Resolution Protocol. Эти протоколы применяются только в определенных типах физических сетей Ethernet и Token Ring для преобразования адресов сетевого уровня в адреса физической сети и обратно. Адресация в сети. Коммуникационная система считается универсальной, если она предоставляет возможность любому хосту взаимодействовать с любым другим хостом.
Для того чтобы добиться такой универсальности, необходимо определить глобальный метод идентификации компьютеров в распределенной системе для доступа к ним. В TCPIP выбрана схема идентификации, аналогичная адресации в физических сетях. Каждому сетевому интерфейсу присваивается уникальный 32-битный адрес IP-адрес, который используется для всех коммуникаций с этим интерфейсом по internet.
IP-адрес компьютера имеет определенную структуру. Она задает идентификатор сети, к которой подсоединен компьютер, и уникальный идентификатор самого компьютера. На рисунке 4 показаны различные классы internet-адресов. Для 32-битных IP-адресов принята десятичная нотация, в которой каждый из четырех байтов адреса записывается десятичным числом. Адреса класса С, например, охватывают диапазон от 192.0.0.0 до 223.255.255.255.
Структура адресов различных классов делает достаточно очевидным их применение. Адреса класса С, в которых 21 бит отводится для идентификатора сети и только 8 бит – для идентификатора хоста, присваиваются компьютерам локальных сетей небольших организаций, которые объединяют до 255 машин. Более крупные организации могут получить адреса класса В, которые способны обслужить до 256 сетей, в состав которых входит до 64 тыс. рабочих станций.
И наконец, адреса класса А присваиваются компьютерам, подключенным к ограниченному числу глобальных сетей очень большого масштаба, например, в Arpanet. Помимо адресов, предназначенных для одного хоста unicast, существуют также широковещательные broadcast и групповые multicast адреса. Широковещательные адреса позволяют обращаться ко всем хостам сети. В них поле идентификатора хоста состоит только из единиц. Механизм IP-адресации предоставляет возможность широковещательной передачи, но не гарантирует ее, поскольку она зависит от характеристик конкретной физической сети. В Ethernet, например, широковещательная передача может выполняться с той же эффективностью, что и обычная передача данных, но есть сети, которые вообще не поддерживают такой тип передачи или имеют для этого ограниченные возможности. Групповые адреса адреса класса
D используются для отправки сообщений определенному множеству адресатов multicasting. Такая возможность необходима для многих приложений, например для реализации интерактивных конференций, отправки почты или новостей группе получателей. Для поддержки групповой передачи хосты и маршрутизаторы используют протокол IGMP, который предоставляет всем системам в физической сети информацию о том, какие хосты принадлежат к какой группе в настоящее время.
Уникальный IP-адрес назначается каждому сетевому интерфейсу специальной организацией, Internet Network Information Center InterNIC, которая отвечает за выделение адресов сетям, объединенным в мировую сеть Internet. Назначение идентификаторов хостов не входит в компетенцию InterNIC и находится в ведении системного администратора. До 1 апреля 1993 г. дата создания InterNIC регистрационное обслуживание для
Internet назначение IP-адресов и имен доменов DNS выполнялось организацией Network Information Center NIC. В настоящее время NIC выполняет запросы только для сети DDN Defense Data Network. Всех остальных пользователей Internet обслуживает регистрационный сервис InterNIC. В связи с бурным ростом Internet 32-битная схема адресации нынешней версии
Internet Protocol, IPv4, уже не удовлетворяет потребности Мировой сети. Новая версия, IPv6, проект которой был обнародован в 1991 г призвана решить эти проблемы. IPv6 обеспечит 128-битный формат IP-адреса и будет поддерживать автоматическое назначение адресов. TCPIP дает пользователям возможность работать не с адресами хост-компьютеров, а с их именами, что, конечно, намного удобнее для человеческого восприятия. Распределенная база данных DNS Domain Name System обеспечивает отображение IP-адресов в имена хостов. Любое приложение может вызвать стандартную библиотечную функцию для преобразования IP-адреса в соответствующее имя хоста или наоборот. Эта база данных является распределенной, поскольку ни один объект в internet не обладает всей информацией об именах. Каждый объект например, университетский факультет, компания или подразделение компании поддерживает
свою базу данных и имеет серверную программу, к которой могут обращаться другие системы клиенты в сети. DNS обеспечивает протокол, по которому взаимодействуют эти клиенты и серверы. и о будущем Открытость, масштабируемость, универсальность и простота использования – неоспоримые преимущества TCPIP, но у этого семейства протоколов есть и очевидные недостатки. Столь привлекательная простота доступа оборачивается для
Internet серьезнейшей проблемой защиты информации, которая приобретает особую остроту сейчас, когда мировая Сеть все активнее используется для электронной коммерции. Неупорядоченность передачи пакетов и невозможность отследить маршрут их продвижения также представляют собой важные проблемы, поскольку препятствуют реализации таких необходимых в современных коммуникациях возможностей, как передача мультимедийных данных в реальном времени.
Наконец, как уже упоминалось, предоставляемый нынешней версией протокола IP объем адресного пространства, особенно в связи с его неэффективным использованием, уже с большим трудом позволяет удовлетворять потребности гигантской и все более разрастающейся Сети. В XXI в. многие проблемы Internet, по-видимому, будут сняты реализацией уже упоминавшегося протокола IPv6. Помимо четырехкратного увеличения размера адреса, что обеспечит адресное пространство объемом около 4 квадриллионов адресов по сравнению с современными 4 миллиардами, новый стандарт обещает реализацию встроенных функций защиты от несанкционированного доступа, поддержку передачи данных мультимедиа в реальном времени и возможности автоматического реконфигурирования адресов. Выпуск окончательной версии стандарта IPv6 планируется в этом году.