2. Организация вычислительных сетей Все оборудование сети можно разделить на терминалы и абонентские машины, и систему передачи данных. Система передачи данных состоит из каналов, каналообразующей аппаратуры, коммуникационных машин и средств сопряжения систем передачи данных. Сеть состоит из множества машин, на которых пользователи запускают приложения. Эти машины мы будем называть абонентскими или хост-машинами (host). Терминалы и абонентские машины обеспечивают интерфейс пользователей и работу приложений в сети. Система передачи данных обеспечивает взаимодействие приложений и пользователей в сети. Хосты подсоединены к системе передачи данных - коммуникационной подсети (или просто подсети). Назначение подсети обеспечить передачу данных от одного хоста к другому. Подсеть состоит из коммуникационных каналов (их также называют линиями, магистралями) и коммутирующих элементов. Коммутирующие элементы - это специализированные компьютеры, соединяющие два и более коммуникационных канала. Эти машины мы будем называть маршрутизаторы. Иерархия протоколов В целях борьбы со сложностью сеть, как правило, организована в виде иерархии слоев или уровней. В разных сетях число уровней, их название, содержание и функции могут быть разными. Однако, во всех сетях назначение каждого уровня - - обеспечить определенный сервис верхним уровням; - сделать независимыми верхние уровни от деталей реализаций сервиса на нижних уровнях. Уровень n на одной машине обеспечивает связь с уровнем n на другой машине. Правила и соглашения по становлению связи и ее поддержанию называются протоколом. Уровень n непосредственно с уровнем n не взаимодействует. Он передает данные нижележащему уровню. Между каждой парой уровней есть интерфейс. Интерфейс определяет какие примитивы - элементарные операции - и какие услуги (сервис) нижележащий уровень должен обеспечивать для верхнего уровня. Набор уровней и протоколов называется архитектурой сети. Спецификация архитектуры сети должна содержать достаточно информации, чтобы разработчик сетевого программного обеспечения мог написать надлежащие программы для каждого уровня, а инженер электронщик - надлежащую аппаратуру. Конкретный набор протоколов, используемый на конкретной машине, называется стеком протоколов. Здесь на каждом уровне к сообщению добавляется заголовок. Заголовок содержит управляющую информацию - кому адресовано сообщение, время, дата, порядковый номер и т.д. Виртуальное и фактическое взаимодействие; протокол и интерфейс - это принципиально разные сущности. Интерфейсы и сервис Назначение каждого уровня обеспечить надлежащий сервис для вышележащего слоя. Активные элементы уровня будем называть активностями. Активности могут быть программными и аппаратными. Активности одного и того же уровня на разных машинах называются равнозначными активностями. Активности уровня n+1 являются пользователями сервиса, создаваемого активностями уровня n, которые называются поставщиками сервиса. Сервис может подразделяться на классы, например, быстрая и дорогостоящая связь или медленная и дешевая. Доступ к сервису осуществляется через, так называемые, точки доступа к сервису - SAPs ( service access points). Каждая точка доступа к сервису имеет уникальный адрес. Например, телефонная розетка на стене - это точка доступа к сервису АТС. Каждой розетке сопоставлен определенный номер - номер телефона. Для того чтобы осуществить обмен информации между двумя уровнями надо определить интерфейс между ними. Типичный интерфейс: активность на уровне n+1 передает IDU (Interface Data Unit - интерфейсную единицу данных) активности на уровне n через SAP . IDU состоит из SDU (Service Data Unit - сервисной единицы данных) и управляющей информации. SDU передается по сети равнозначной сущности, а затем - на уровень n+1. Управляющая информация нужна нижележащему уровню, чтобы правильно передать SDU, но она не является частью передаваемых данных. Для того чтобы передать SDU по сети нижележащему уровню может потребоваться разбить его на части. Каждая часть снабжается заголовком (header) и передается как самостоятельная единица данных протокола - PDU (Protocol Data Unit - единица данных протокола). Заголовок в PDU используется равнозначной активностью чтобы реализовать равнозначный протокол. Он определяет какой PDU содержит управляющую информацию, а какой данные, порядковый номер и т.д. Возможна такая аналогия с языками программирования. Сервис подобен абстрактному типу данных или объектам в объектно-ориентированных языках программирования. Он определяет операции, выполнимые над данным объектом, но ничего не говорит как эти операции реализованы. Протокол относиться к реализации сервиса и, как таковой, не виден пользователю сервиса. Cервис с соединением и сервис без соединения Уровни могут предоставлять вышележащим два вида сервисов: ориентированный на соединение и без соединения. Сервис с соединением предполагает, что между получателем и отправителем сначала устанавливается соединение, и только потом доставляется сервис. Пример - телефонная сеть. Сервис без соединения действует подобно почтовой службе. Каждое сообщение имеет адрес получателя. В надлежащих точках оно маршрутизируется по нужному маршруту. Независимо от других сообщений. При таком сервисе вполне возможно, что сообщение позже посланное придет раньше. В сервисе с соединением - это невозможно. Любой сервис характеризуется качеством. Например, надежный сервис, гарантирующий доставку данных без потерь, предполагает подтверждение получения каждого сообщения. Несомненно, это требует определенных накладных расходов. Это- плата за качество. Пример надежного сервиса с соединением - передача файлов. Надежный сервис с соединением имеет две разновидности: последовательность сообщений и поток байтов. В первом случае четко различаются границы каждого сообщения. Если было послано два сообщения по 1МВ, то получено будет два сообщения по 1МВ. Ни при каких условиях у получателя не окажется одно сообщение в 2МВ. В случае потока байтов, получатель получит 2МВ. У него нет способа распознать, то ли это 2 сообщения по 1МВ, 1 в 2МВ и 2048 по 1 байту.