Фундаментальным принципом internet является равнозначность всех объединенных с ее помощью физических сетей: любая система коммуникаций рассматривается как компонент internet, независимо от ее физических параметров, размеров передаваемых пакетов данных и географического масштаба.
Рис. 1.
Внутренняя структура сети internet - физические сети соединены с помощью маршрутизаторов.
Семейство протоколов ТСР/IP позволяет построить универсальную сеть, реализующую принципы, которые рассмотрены в предыдущем разделе, и включает в себя протоколы 4-х уровней коммуникаций.
Рис. 2.
Четыре уровня стека протоколов TCP/IP.
· Уровень сетевого интерфейса отвечает за установление сетевого соединения в конкретной физической сети - компоненте internet, к которой подсоединен компьютер. На этом уровне работают драйвер устройства в операционной системе и соответствующая сетевая плата компьютера.
· Сетевой уровень - основа ТСР/IP. Именно на этом уровне реализуется принцип межсетевого соединения, в частности маршрутизация пакетов по internet. На сетевом уровне протокол реализует ненадежную службу доставки пакетов по сети от системы к системе без установления соединения (connectionless packet delivery service). Это означает, что будет выполнено все необходимое для доставки пакетов, однако эта доставка не гарантируется. Пакеты могут быть потеряны, переданы в неправильном порядке, продублированы и т.д. Служба, работающая без установления соединения, обрабатывает пакеты независимо друг от друга. Но главное, что именно на этом уровне принимается решение о маршрутизации пакета по межсетевым соединениям.
· Надежную передачу данных реализует следующий уровень, транспортный, на котором два основных протокола, TCP и UDP, осуществляют связь между машиной - отправителем пакетов и машиной-адресатом.
· Наконец, прикладной уровень - это приложения типа клиент-сервер, базирующиеся на протоколах нижних уровней. В отличие от протоколов остальных трех уровней, протоколы прикладного уровня занимаются деталями конкретного приложения и "не интересуются" способами передачи данных по сети. Среди основных приложений ТСР/IP, имеющихся практически в каждой его реализации, - протокол эмуляции терминала Telnet, протокол передачи файлов FTP, протокол электронной почты SMTP, протокол управления сетью SNMP, используемый в системе World Wide Web протокол передачи гипертекста НТТР и др.
На рисунке 3 показано, как осуществляется соединение двух сетей "с точки зрения" TCP/IP. Программное обеспечение IP-протокола с помощью маршрутизатора передает пакеты из сети Ethernet в сеть Token Ring. Протоколы верхних уровней, прикладного и транспортного, осуществляют соединения между хост-компьютерами, клиентом и сервером приложения, в то время как IP обеспечивает связь между конечной и
Рис. 3.
Две сети, соединенные с помощью маршрутизатора, "с точки зрения" TCP/IP.
Поскольку в internet детали физических соединений скрыты от приложений, прикладной уровень совершенно "не заботится" о том, что клиент приложения работает в Ethernet, а сервер подключен к сети Token Ring. Между конечными системами может быть несколько десятков маршрутизаторов и множество промежуточных физических сетей различных типов, но приложение будет воспринимать этот конгломерат как единую физическую сеть. Это и обуславливает основную силу и привлекательность технологии internet.
Семейство протоколов TCP/IP.
Хотя рассматриваемый стек протоколов и называется TCP/IP, сами протоколы 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. Он является одним из старейших протоколов семейства 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-дисках, точно также как с локальными файлами.