В подразделе 2.2. было упомянуто понятие протокола. Протокол – это единый набор правил, позволяющий взаимодействовать узлам сети друг с другом. Иными словами, протоколы заставляют разные компьютеры «говорить» на одном языке. Таким образом осуществляется возможность подключения к Интернет разнотипных компьютеров, работающих под управлением различных операционных систем.
Как и во всякой другой сети в Интернет существует 7 уровней взаимодействия между компьютерами:
1) физический;
2) логический;
3) сетевой;
4) транспортный;
5) сеансов связи;
6) представительский;
7) прикладной.
Протоколы физического уровня определяют вид и характеристики линий связи между компьютерами.
Для каждого типа линий связи разработан соответствующий протокол логического уровня, занимающийся управлением передачей информации по каналу. К протоколам логического уровня для телефонных линий относятся протоколы SLIP (Serial Line Interface Protocol) и PPP (Point to Point Protocol). Для связи по кабелю локальной сети – это пакетные драйверы плат ЛВС.
Протоколы сетевого уровня отвечают за передачу данных между устройствами в разных сетях, то есть занимаются маршрутизацией пакетов в сети. К протоколам сетевого уровня принадлежат IP (Internet Protocol) и ARP (Address Resolution Protocol).
Протоколы транспортного уровня управляют передачей данных из одной программы в другую. К протоколам транспортного уровня принадлежат TCP (Transmission Control Protocol) и UDP (User Datagram Protocol).
Протоколы уровня сеансов связи отвечают за установку, поддержание и уничтожение соответствующих каналов. В Интернете этим занимаются уже упомянутые TCP и UDP протоколы, а также протокол UUCP (Unix to Unix Copy Protocol).
Протоколы представительского уровня занимаются обслуживанием прикладных
программ. К программам представительского уровня принадлежат программы, запускаемые, к примеру, на Unix-сервере, для предоставления различных услуг абонентам.
Прикладной уровень объединяет все сервисы, которые система предоставляет пользователю. К наиболее важным прикладным протоколам относятся: протокол удаленного управления Telnet; протокол передачи файлов FTP; протокол передачи гипертекста HTTP; протоколы для работы с электронной почтой: SMTP, POP и т.д.
Поскольку протокол Интернет IP и протокол управления передачей TCP тесно взаимосвязаны, их объединяют и говорят, что в Интернет базовым протоколом является TCP/IP. Остальные протоколы строятся на их основе.
Задача протокола TCP заключается в передаче данных между любыми прикладными процессами, выполняющимися на компьютерах в сети. На каждом компьютере может выполняться одновременно несколько процессов. Для того чтобы доставить сообщение определенному процессу, необходимо каким-то образом идентифицировать его среди других. Идентификатор процесса носит название номера порта.
Протокол TCP разбивает информацию на порции, нумерует все порции, чтобы при получении можно было правильно собрать информацию. Каждый пакет получает заголовок TCP, где кроме адреса получателя содержится информация об исправлении ошибок и о последовательности передачи пакетов.
Затем пакеты TCP разделяются на еще более мелкие пакеты IP. Пакеты состоят из трёх различных уровней, каждый из которых содержит:
· данные приложения;
· информацию TCP;
· информацию IP.
Перед отправкой пакета протокол TCP вычисляет контрольную сумму кода сообщения. При поступлении сообщения снова рассчитывается контрольная сумма его кода, и если пакет поврежден, то запрашивается повторная передача. Затем принимающая программа объединяет пакеты IP в пакеты TCP, из которых реконструируются исходные данные.
Протоколы TCP/IP обеспечивают передачу информации между компьютерами. Все остальные протоколы с их помощью реализуют различные услуги Интернет.
Рассмотрим протоколы прикладного уровня HTTP, FTP и Telnet.
Протокол передачи гипертекста HTTP обеспечивает высокопроизводительный механизм тиражирования информации мультимедийных систем независимо от типа
представления данных. Протокол построен по объектно-ориентированной технологии и может использоваться для решения различных задач, например, работы с серверами имен или управления распределенными информационными системами.
Протокол HTTP построен по модели «запрос-ответ». Иными словами, клиент устанавливает соединение с сервером и отправляет запрос. В нем указан тип запроса, идентификатор ресурса URL (местонахождение ресурса URI, имя ресурса URN), версия протокола HTTP (поскольку формат запроса может меняться от версии к версии) и содержание запроса: информация клиента (параметры), сопровождающая информация и тело сообщения. Сервер HTTP отвечает строкой статуса обработки запроса или выдает код ошибки и возвращаемую по запросу информацию.
Рис. 2.3 Простой случай HTTP-соединения
HTTP-соединение инициируется пользователем и состоит из запроса к ресурсу определенного сервера. В простейшем случае, соединение представляет собой поток данных между клиентом – инициатором соединения и сервером (рис. 2.3).
Рис. 2.4 Сложный случай HTTP-соединения
В более сложной ситуации, в процессе передачи данных принимают участие несколько промежуточных объектов (рис. 2.4). Они могут быть трех видов: промежуточный агент (proxy), шлюз (gateway) и туннель (tunnel).
Proxy представляет собой промежуточного агента, который принимает запрос клиента и в зависимости от своих настроек изменяет часть или все сообщение запроса и передает переформатированный запрос далее по цепочке, например, другим серверам или запрашиваемому серверу. В момент принятия запросов Proxy может работать как сервер, а при передаче запросов – как клиент. Proxy часто используется как ретранслятор протоколов внутренней сети в Интернет и, как правило, представляет собой «главные ворота» выхода пользователей внутренней сети наружу.
Шлюз представляет собой промежуточный сервер. В отличие от proxy, шлюз принимает запросы клиента, будто он и есть запрашиваемый сервер, и передает их далее. Работа шлюза совершенно прозрачна для клиента. Шлюз, как правило, используется как ретранслятор запросов и протоколов внешней сети во внутреннюю, к ресурсам сервера. То он является «главными воротами» входа пользователей внешней сети.
Туннель представляет собой программу-посредника между двумя соединениями. Туннель используется в тех случаях, когда необходимо организовать поток данных через какой-либо промежуточный объект (например, тот же proxy), который не может интерпретировать структуру потока данных.
Например, рассмотрим соединение между клиентом и сервером с тремя промежуточными объектами А, В и С (см. рис. 2.4). Сообщения запроса и ответа должны пройти через 4 отдельных канала, а каждый из промежуточных объектов может одновременно поддерживать несколько соединений. Объект В может получать одновременно запрос как от объекта А, так и от других клиентов, и передавать сообщения на объект С и на другие сервера.
Каждый из объектов – участников соединения, за исключением туннеля, может поддерживать внутренний кэш запросов и ответов. Кэш (cash) представляет собой локальную базу данных сообщений ответов и систему управления этой базой. Кэш хранит ответы серверов и возвращает их по запросу клиента, не передавая запрос следующему объекту цепочки соединения (рис. 2.5). Эффект от использования кэша состоит в том, что он уменьшает длину цепочки и, тем самым, уменьшает время соединения.
Рис. 2.5 HTTP-соединение на кэшированный запрос
Необходимо помнить, что далеко не все ответы могут кэшироваться. Некоторые запросы могут содержать параметры, накладывающие ограничения на работу кэша. HTTP-соединение должно открываться клиентом перед каждым запросом и закрываться сервером после отправки ответа. Соединение может быть преждевременно закрыто либо пользователем, либо по истечении времени соединения, либо из-за сбоя
системы.
Протокол передачи файлов FTP является стандартом Интернет для передачи файлов. Передача файлов заключается в копировании целого файла из одной системы в другую. Обнаружив в Интернет необходимую информацию, проще получить для работы ее копию на своем компьютере, а не работать с данными в удаленной системе.
Протокол FTP использует два TCP-соединения для передачи файла:
1) управляющее соединение устанавливается как обычное соединение клиент-сервер. Сервер осуществляет пассивное открытие на заранее известный порт FTP (21) и ожидает запроса на соединение от клиента. Клиент осуществляет активное открытие на порт TCP, чтобы установить управляющее соединение. Управляющее соединение существует все время, пока клиент общается с сервером. Это соединение используется для передачи команд от клиента к серверу и для передачи откликов от сервера. Тип IP-сервиса для управляющего соединения устанавливается для получения «минимальной задержки», так как команды обычно вводятся пользователем;
2) соединение данных открывается каждый раз, когда осуществляется передача файла между клиентом и сервером. Тип сервиса IP для соединения данных должен соответствовать максимальной пропускной способности, так как это соединение используется для передачи файлов.
Telnet-протокол совместно с telnet-интерфейсом пользователя и telnet-процессом образует триаду, которая обеспечивает описание и реализацию сетевого терминала для доступа к ресурсам удаленного компьютера. То есть при работе с одного компьютера можно входить в другую (удаленную) систему. Связь можно устанавливать с компьютером, находящимся в любой части земного шара.
Чтобы получить доступ к удаленному компьютеру, необходимо ввести имя пользователя и пароль. Возможности работы с удаленным компьютером определяются уровнем доступа, который задается администратором сети. Наибольшую пользу эта программа приносит в тех случаях, когда вы находитесь не дома и вам нужно получить доступ к вашему компьютеру. Telnet входит в состав ОС Windows.
Telnet строится как протокол приложения над транспортным протоколом TCP. Протокол был описан в 1983 году. Его авторы J. Postel и J. Reynolds определили назначение Telnet так: «Назначение Telnet-протокола – дать общее описание, насколько это возможно, двунаправленного, восьмибитового взаимодействия, главной целью которого является обеспечение стандартного метода взаимодействия терминального устройства и терминал-ориентированного процесса. При этом данный протокол может
быть использован и для организации взаимодействия «терминал-терминал» (связь) и «процесс-процесс» (распределенные вычисления)».