3 Обмен данных в сети
Главная цель, которая преследуется при соединении компьютеров в сеть – это возможность использования ресурсов каждого компьютера всеми пользователями сети. Для того, чтобы реализовать эту возможность, компьютеры, подсоединенные к сети, должны иметь необходимые для этого средства взаимодействия с другими компьютерами сети.
Задача разделения сетевых ресурсов включает в себя решение множества проблем – выбор способа адресации компьютеров и согласование электрических сигналов при установление электрической связи, обеспечение надежной передачи данных и обработка сообщений об ошибках, формирование отправляемых и интерпретация полученных сообщений, а также много других не менее важных задач.
Обычным подходом при решении сложной проблемы является ее разбиение на несколько частных проблем – подзадач. Для решения каждой подзадачи назначается некоторый модуль. При этом четко определяются функции каждого модуля и правила их взаимодействия.
Частным случаем декомпозиции задачи является многоуровневое представление, при котором все множество модулей, решающих подзадачи, разбивается на иерархически упорядоченные группы – уровни. Для каждого уровня определяется набор функций-запросов, с которыми к модулям данного уровня могут обращаться модули выше лежащего уровня для решения своих задач.
Такой набор функций, выполняемых данным уровнем для выше лежащего уровня, а также форматы сообщений, которыми обмениваются два соседних уровня в ходе своего взаимодействия, называется интерфейсом.
Правила взаимодействия двух машин могут быть описаны в виде набора процедур для каждого из уровней. Такие формализованные правила, определяющие последовательность и формат сообщений, которыми обмениваются сетевые компоненты, лежащие на одном уровне, но в разных узлах, называются протоколами 1 .
Согласованный набор протоколов разных уровней, достаточный для организации межсетевого взаимодействия, называется стеком протоколов.
При организации взаимодействия могут быть использованы два основных типа протоколов. В протоколах с установлением соединения (connection-oriented network service, CONS) перед обменом данными отправитель и получатель должны сначала установить логическое соединение, то есть договориться о параметрах процедуры обмена, которые будут действовать только в рамках данного соединения. После завершения диалога они должны разорвать это соединение. Когда устанавливается новое соединение, переговорная процедура выполняется заново.
Вторая группа протоколов — протоколы без предварительного установления соединения (connectionless network service, CLNS). Такие протоколы называются также дейтаграммными протоколами. Отправитель просто передает сообщение, когда оно готово.
3.2 Модель iso/osi
Из того, что протокол является соглашением, принятым двумя взаимодействующими объектами, в данном случае двумя работающими в сети компьютерами, совсем не следует, что он обязательно представляет собой стандарт. Но на практике при реализации сетей стремятся использовать стандартные протоколы. Это могут быть фирменные, национальные или международные стандарты.
Международная Организация по Стандартам (International Standards Organization, ISO) разработала модель, которая четко определяет различные уровни взаимодействия систем, дает им стандартные имена и указывает, какую работу должен делать каждый уровень. Эта модель называется моделью взаимодействия открытых систем (Open System Interconnection, OSI) или моделью ISO/OSI.
В модели OSI взаимодействие делится на семь уровней или слоев (рис.1). Каждый уровень имеет дело с одним определенным аспектом взаимодействия. Таким образом, проблема взаимодействия декомпозирована на 7 частных проблем, каждая из которых может быть решена независимо от других. Каждый уровень поддерживает интерфейсы с выше- и нижележащими уровнями.
Модель OSI описывает только системные средства взаимодействия, не касаясь приложений конечных пользователей. Приложения реализуют свои собственные протоколы взаимодействия, обращаясь к системным средствам. Следует иметь в виду, что приложение может взять на себя функции некоторых верхних уровней модели OSI, в таком случае, при необходимости межсетевого обмена оно обращается напрямую к системным средствам, выполняющим функции оставшихся нижних уровней модели OSI.
Приложение конечного пользователя может использовать системные средства взаимодействия не только для организации диалога с другим приложением, выполняющимся на другой машине, но и просто для получения услуг того или иного сетевого сервиса.
Итак, пусть приложение обращается с запросом к прикладному уровню, например к файловому сервису. На основании этого запроса программное обеспечение прикладного уровня формирует сообщение стандартного формата, в которое помещает служебную информацию (заголовок) и, возможно, передаваемые данные. Затем это сообщение направляется представительному уровню.
Представительный уровень добавляет к сообщению свой заголовок и передает результат вниз сеансовому уровню, который в свою очередь добавляет свой заголовок и т.д.
Наконец, сообщение достигает самого низкого, физического уровня, который действительно передает его по линиям связи.
Когда сообщение по сети поступает на другую машину, оно последовательно перемещается вверх с уровня на уровень. Каждый уровень анализирует, обрабатывает и удаляет заголовок своего уровня, выполняет соответствующие данному уровню функции и передает сообщение вышележащему уровню.
Кроме термина «сообщение» (message) существуют и другие названия, используемые сетевыми специалистами для обозначения единицы обмена данными. В стандартах ISO для протоколов любого уровня используется такой термин как «протокольный блок данных» — Protocol Data Unit (PDU). Кроме этого, часто используются названия кадр (frame), пакет (packet), дейтаграмма (datagram).
Передача информации в компьютерных сетях
Последовательный и параллельный способы передачи информации
Информация в компьютерах представлена в форме последовательностей двоичных чисел. Обмен данными как внутри вычислительного устройства между его узлами, так и между автономными машинами, может производиться двумя способами:
- последовательная передача: имеется только одна линия, состояние на ее передающей стороне отправляется только тогда, когда предыдущее обработано принимающей, т.е. данные передаются побитно;
- параллельная передача; при таком способе организуются сразу несколько линий, состояние на концах которых меняется одновременно; таким образом, можно передать за один раз столько бит, сколько имеется линий между передатчиком и приемником.
Рисунок 1. Последовательная и параллельная передача данных. Автор24 — интернет-биржа студенческих работ
При параллельной передаче технологически трудно избежать взаимовлияния токов, протекающих по близко расположенным проводникам. Поэтому такой способ используется там, где расстояния невелики: между узлами компьютера (т.н. шина данных), между компьютером и монитором (VGA-порт), между компьютером и принтером (параллельный порт).
Последовательная передача, хотя и уступает параллельной по скорости, обеспечивает более эффективную обработку ошибок и менее затратна в случае отправки данных на большие расстояния: двужильный кабель дешевле и надежнее многожильного.
Американские фермеры в начале XX в. использовали огораживавшую пастбища колючую проволоку и заземление для организации телефонной связи. Таким образом, для передачи информации они обходились всего одним проводом.
Для передачи информации в компьютерных сетях в подавляющем большинстве случаев используется последовательная передача данных. Хотя с развитием технологий стало возможным одновременно передавать несколько потоков (разнесение по частотам в wifi, передача по оптоволокну лучей с разным углом наклона), такие способы нельзя назвать параллельной передачей, т.к. данные в каждой такой линии обрабатываются независимо друг от друга.
Пакетный принцип организации данных и маршрутизация
При последовательной передаче данные в сетях принято передавать не непрерывным потоком, а пакетами (порциями, сериями). Такой подход обладает следующими преимуществами:
- по одной и той же линии можно передавать данные для нескольких получателей, указывая их адреса в заголовочной части пакетов;
- получив определенный объем информации, можно убедиться, что содержащиеся в них данные точно соответствуют тому, что было отправлено; для этого в последовательность пакетов добавляются так называемые контрольные суммы — особым образом подсчитанные числа, на которые влияет каждый бит переданной информации; если хотя бы один бит на стороне приемника будет отличаться (например, из-за помех на линии), то контрольные суммы приемника и передатчика не совпадут и станет понятно, что информация принята с искажениями, следует повторить ее отправку/прием.
Пакетный принцип положен в основу протоколов (правил обмена информацией), используемых в современных компьютерных сетях. В большинстве из них используется семейство TCP/IP — набор протоколов для обмена данными в глобальной сети Интернет, представляющей собой объединение локальных сетей.
Ключевым методом, позволяющим компьютерам, подключенным к разным сетям обмениваться информацией, является маршрутизация. Пакеты, отправляемые внутри локальной сети, принимаются всеми компьютерами, но каждый обрабатывает лишь те, в которых находит свой адрес. Частью адреса является еще и номер сети, который тоже анализируется каждым получателем. Этот номер должен совпадать с заранее настроенным номером, хранящимся в памяти компьютера. Однако среди компьютеров есть такие, которые подключены одновременно к более чем одной сети. Они называются маршрутизаторами (в англоязычной традиции роутерами, а также шлюзами). Если роутер обнаруживает, что пакет предназначен компьютеру чужой по отношению к отправителю сети, он отправляет его во внешнюю сеть. Соседняя сеть также может передать пакет дальше, пока через цепочку шлюзов он не достигает адресата или не вернется с пометкой, что доставка невозможна.
Рисунок 2. Структура заголовка IP-пакета. Автор24 — интернет-биржа студенческих работ
Маршруты, по которым идут пакеты от отправителя к получателю, могут меняться. Интернет — децентрализованная система, в которой нет единого центра управления. Поэтому при повреждении части глобальной сети информация по ней все равно будет передаваться по альтернативным маршрутам, хотя, возможно, и с более низкой скоростью.
Служба доменных имен (DNS)
Структура пакетов протокола TCP/IP, а также правила адресации и маршрутизации в Интернете достаточно сложны для обычного пользователя. Для удобства обращения к ресурсам глобальной сети разработана система доменных имен.
Домен — совокупность сетевых сервисов, принадлежащих организации или частному лицу.
Домен характеризуется особыми именем, регистрируемым в международной организации ICANN, например, yandex.ru. Последние две буквы имени домена обозначают национальную принадлежность (ru — Россия, by — Беларусь, kz — Казахстан, us — Соединенные Штаты и т.п.) или назначение домена (biz — для бизнеса, org — некоммерческие организации, academy — образование и т.п.).
Для преобразования удобных для человеческого запоминания доменных имен в IP-адреса, обрабатываемые компьютерами, предназначена служба доменных имен (DNS, Domain Name Service).
Рисунок 3. Принцип работы DNS. Автор24 — интернет-биржа студенческих работ
Сервисы, принадлежащие домену, могут размешаться на разных компьютерах и даже в разных сетях. Поэтому фраза «компьютер принадлежит домену» не совсем корректна. На одном компьютере могут быть запущены сервисы, принадлежащие разным доменам.