Поэтому если распределенная система осуществляет непрерывный обмен данными между клиентом и сервером, связь с помощью транспортного уровня 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. Он является одним из старейших протоколов семейства TCP/IP. Также как TELNET он пользуется транспортными услугами TCP. Существует множество реализаций для различных операционных систем, которые хорошо взаимодействуют между собой.
Пользователь FTP может вызывать несколько команд, которые позволяют ему посмотреть каталог удаленной машины, перейти из одного каталога в другой, а также скопировать один или несколько файлов.
Протокол SMTP (Simple Mail Transfer Protocol) поддерживает передачу сообщений (электронной почты) между произвольными узлами сети internet. Имея механизмы промежуточного хранения почты и механизмы повышения надежности доставки, протокол SMTP допускает использование различных транспортных служб. Он может работать даже в сетях, не использующих протоколы семейства TCP/IP. Протокол 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-битным номерам портов. Серверы приложений обычно имеют заранее известные номера портов. Например, в каждой реализации TCP/IP, которая поддерживает сервер FTP, этот протокол передачи файлов получает для своего сервера номер TCP-порта 21. Каждый Telnet-сервер имеет TCP-порт 23, а сервер протокола TFTP (Trivial File Transfer Protocol) - UDP-порт 69. Службам, которые могут поддерживаться любой реализацией TCP/IP, назначаются номера портов в диапазоне от 1 до 1023. Назначение номеров портов находится в ведении организации Internet Assigned Numbers Authority (IANA).
Клиент приложения обычно "не интересуется" номером своего порта для транспортного уровня, который он использует. Ему лишь необходимо гарантировать, что этот номер уникален для данного хоста. Номера портов клиентов приложений принято называть краткосрочными (т.е. недолговечными), поскольку в общем случае клиенты существуют ровно столько времени, сколько работающий с ним пользователь нуждается в соответствующем сервере. (Серверы, напротив, находятся в рабочем состоянии все время, пока включен хост, на котором они работают.) В большинстве реализаций TCP/IP краткосрочным номерам портов выделен диапазон от 1024 до 5000.
Internet Protocol (IP) - основной протокол сетевого уровня, позволяющий реализовывать межсетевые соединения. Он используется обоими протоколами транспортного уровня. IP определяет базовую единицу передачи данных в internet, IP-дейтаграмму, указывая точный формат всей информации, проходящей по сети TCP/IP. Программное обеспечение 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) для преобразования адресов сетевого уровня в адреса физической сети и обратно.
Адресация в сети.
Коммуникационная система считается универсальной, если она предоставляет возможность любому хосту взаимодействовать с любым другим хостом. Для того чтобы добиться такой универсальности, необходимо определить глобальный метод идентификации компьютеров в распределенной системе для доступа к ним. В TCP/IP выбрана схема идентификации, аналогичная адресации в физических сетях. Каждому сетевому интерфейсу присваивается уникальный 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, который предоставляет всем системам в физической сети информацию о том, какие хосты принадлежат к какой группе в настоящее время.