Сетевые модели
Назначение моделей
Слово "модель" имеет много значений, например: "модель — схематическое описание предмета (системы, теории или явления), которое включает известные свойства предмета и может быть использовано для его дальнейшего изучения". В этом определении присутствует одно из назначений сетевых моделей: помочь нам описать и понять процесс сетевой коммуникации.
Другое значение слова "модель" — "пример для подражания или сравнения" — тоже неплохо подходит для сетевых моделей, поскольку они служат основой стандартизации оборудования и программного обеспечения сети. Если разные поставщики сетевых продуктов используют одну и ту же модель, то их продукты будут совместимы друг с другом. В модели представлено, как должны происходить процессы коммуникации. Если поставщики придерживаются стандартов на каждом уровне, то их оборудование будет совместимо с оборудованием других поставщиков на других уровнях.
Модель OSI
В мире компьютерных сетей модель OSI (Open System Interconnection) — это "модель моделей". Она обсуждается практически в каждой книге по компьютерным сетям. Разработана эта модель Международной организацией стандартизации (International Organization for Standardization — ISO).
Структура модели OSI
Модель OSI состоит из семи уровней, каждый из которых представляет определенный этап процесса сетевой коммуникации. Семиуровневая модель OSI показана на рис. 3.2.
Протоколы, входящие в состав пакета протоколов, работают на разных уровнях.
Каждый уровень модели OSI выполняет определенную задачу процесса коммуникации, а затем передает данные вверх или вниз на следующий уровень (в зависимости от того, передает или принимает компьютер данные). По мере прохождения данных по уровням, каждый уровень добавляет свою информацию в виде заголовков перед исходными данными. На рис. 3.1 показано, как присоединяются заголовки.
Взаимодействие одноранговых уровней
Процесс коммуникации протекает следующим образом. На передающей стороне приложение создает данные, которые должны быть переданы по сети. Затем данные поступают на уровень приложений сетевого компонента операционной системы.
Когда данные проходят по уровням, они инкапсулируются (вкладываются) во все больший блок, по мере того как каждый уровень добавляет заголовочную информацию. Когда данные поступают на принимающий компьютер, этот процесс выполняется в обратной последовательности. Информация передается вверх по уровням. При этом каждый уровень удаляет инкапсулирующую информацию.
Канальный уровень на принимающем конце считывает и удаляет заголовок, добавленный канальным уровнем на передающей стороне. Таким образом, каждый уровень на принимающей стороне обрабатывает заголовочную информацию, добавленную соответствующим уровнем на передающей стороне. Другими словами, каждый уровень взаимодействует с таким же уровнем на другой стороне. Этот процесс показан на рис. 3.3.
Когда данные прошли все уровни в принимающем компьютере, вся заголовочная информация оказывается удаленной и данные принимают исходную форму (как они были созданы приложением на передающей стороне). В этом виде они предоставляются принимающему приложению.
На рис. 3.4 показано, как добавляется заголовочная информация по мере продвижения по уровням.
Обратите внимание на то, что физический уровень не добавляет заголовочную информацию. Функции физического уровня не требуют этого, потому что это уровень сетевого оборудования. Его задачей является обработка электрических сигналов.
Прикладной уровень
Первое и главное, что нужно хорошо запомнить о прикладном уровне, — это то, что он не является пользовательским приложением, создающим сообщение. Напротив, прикладной уровень обеспечивает взаимодействие между пользовательским приложением и сетью. Протоколы прикладного уровня выполняют такие функции, как передача файлов, доступ к принтеру и служба сообщений. На прикладном уровне работают перечисленные ниже протоколы.
FTP (File Transfer Protocol). Используется для передачи файлов между компьютерами, на которых могут быть установлены разные операционные системы или платформы. Программное обеспечение FTP-сервера выполняется на компьютере, передающем файлы, а клиентская программа FTP используется для организации соединения и загрузки файлов с сервера. Клиентская программа FTP, вызываемая из командной строки, включена почти во все реализации пакета протоколов TCP/IP. Широко распространены графические клиентские программы FTP, например WSFTP, CuteFTP и FTP Voyager. В последних версиях Web-броузеров, таких как Microsoft Internet Explorer и Navigator/Communicator компании Netscape, тоже содержатся встроенные средства FTP.
Telnet. Используется для эмуляции терминала и для предоставления доступа к приложениям и файлам на другом компьютере. В отличие от FTP, протокол Telnet нельзя использовать для копирования файлов с одного компьютера на другой. Его можно использовать только для чтения и для выполнения приложений на удаленном узле. Программное обеспечение Telnet состоит из программного обеспечения сервера Telnet, выполняющегося на удаленном компьютере, к которому предоставляется доступ, и программного обеспечения клиента Telnet, выполняющегося на компьютере, который получает доступ.
SMTP (Simple Mail Transfer Protocol). Представляет собой простой протокол ASCII, не ориентированный на конкретного поставщика и используемый для передачи посредством Internet электронных сообщений. Протокол SMTP используется многими популярными программами отправки электронных сообщений и программами выгрузки писем из пользовательского почтового ящика на сервере (например, Post Office Protocol, текущая версия — РОРЗ, или Internet Message Access Protocol).
SNMP (Simple Network Management Protocol). Используется для получения информации о сети. Можно применять с разными платформами и операционными системами. Протокол SNMP входит в состав пакетов TCP/IP, IPX и OSI. В протоколе SNMP используется MIB (Management Information Base), которая представляет собой базу данных с информацией о компьютерах сети. Протокол SNMP состоит из двух частей: программного обеспечения агента, выполняющегося на контролируемом компьютере, и программного обеспечения управления, выполняющегося на контролирующем компьютере.
Кроме перечисленных, существует довольно много других протоколов прикладного уровня.
He следует путать приложения с протоколами под тем же именем, служащими основой этих программ. Например, существует много приложений различных поставщиков с именем FTP (таких, как FTP Voyager, FTP Explorer, Fetch для Macintosh и GREED для Linux). В этих программах FTP используется для передачи файлов, однако, кроме этого, в них включены некоторые дополнительные средства, такие как графические интерфейсы (отличающиеся в разных реализациях) или драйверы поиска файлов.
Уровень представления
Протокол прикладного уровня принимает данные от пользовательского приложения и передает их вниз по стеку протоколов на уровень представления. На этом уровне решаются задачи, связанные с представлением данных, т.е. с формированием пакетов.
Сжатие данных. Уменьшение размера данных с целью их быстрой передачи по сети. Различные типы данных могут сжиматься в разной степени.
Шифрование данных. Преобразование данных в закодированную форму таким образом, чтобы они не могли быть прочитаны посторонними лицами.
Трансляция протоколов. Преобразование данных из одного протокола в другой для передачи их между разными платформами и операционными системами.
Уровень представления на принимающем компьютере обеспечивает распаковку, расшифровку и другие преобразования данных в формат, пригодный для пользовательских приложений и передачи данных на прикладной уровень.
На уровне представлений работают шлюзы. Шлюз — это устройство или программа, служащие точкой соединения между двумя разными сетями. Ниже приведен список наиболее распространенных шлюзов.
GSNW (Gateway Services for Netware). Программное обеспечение, поставляемое с операционными системами Windows NT и Windows 2000 Server. Позволяет клиентам сервера подучить доступ к файлам на сервере Netware компании Novell. Этот шлюз выполняет необходимые преобразования данных между SMB (Server Message Block), используемым в системах Microsoft, и NCP (Netware Core Protocol) — протоколом разделения (совместного использования) файлов в сетях Netware.
Шлюз электронной почты. Преобразует сообщения от различных несовместимых систем электронной почты в один из общепринятых форматов Internet, например в SMTP. Это позволяет передавать сообщения, например, от компьютера Macintosh с почтовым клиентом Eudora в систему Lotus Notes в сети Netware. Несмотря на отличия систем электронной почты, сообщения успешно проходят и могут быть прочитаны.
Шлюз SNA (Systems Network Architecture). Входит в состав архитектуры IBM, используемой в мэйнфреймах, таких как AS/400. С помощью программного обеспечения шлюза SNA компьютеры локальной сети могут получить доступ к файлам и приложениям мэйнфрейма.
На уровне представления работает также редиректор (программа, определяющая, чем должен быть обработан запрос — локальным компьютером или устройством сети).
Сеансовый уровень
Следующий уровень вниз по стеку в модели OSI — сеансовый. Протоколы этого Уровня отвечают за установление сеанса связи между передающим и принимающим компьютерами. Сеансовый уровень устанавливает и разрывает диалоги приложения с приложением. На этом же уровне устанавливаются точки проверки для синхронизации потока данных к приложению, т.е. в потоке данных размешаются маркеры. Если в канале связи произошел сбой, то повторно передаются только данные, начиная с последнего маркера, или точки проверки.
На сеансовом уровне проверяется режим связи — дуплексный или полудуплексный. В дуплексном режиме осуществляется двунаправленная коммуникация, т.е. каждая сторона может быть передающей и принимающей одновременно. Полудуплексный режим тоже может быть двунаправленным, однако в один момент времени сигнал может передаваться только в одном направлении.
Коммуникация в дуплексном режиме похожа на разговор по обычному телефону. Обе стороны могут говорить одновременно и при этом слышать, что говорит другой. В то же время полудуплексный режим похож на двустороннюю радиосвязь: когда один из участников связи держит кнопку микрофона, он может говорить, но не может слышать, что говорит другой. Другими словами, в полудуплексном режиме сигналы могут передаваться в обоих направлениях, но не одновременно.
На сеансовом уровне выполняются многие функции, например установлены правила обмена данными между приложениями на протяжении сеанса. Это похоже на работу спортивного судьи, который должен проследить, чтобы оба участника состязания знали правила игры и придерживались их, как минимум, на протяжении сеанса.
Что еще делает такой занятой уровень? Сеансовый уровень определяет категории (приоритеты) услуг и генерирует сообщения о неполадках у себя и на вышестоящих уровнях.
На сеансовом уровне используется два протокола.
Интерфейс NetBIOS (Network Basic Input/Output System). В режиме сеанса NetBIOS отвечает за установление соединения между двумя компьютерами, за обработку длинных сообщений и за обнаружение и устранение ошибок. На этом уровне приложение освобождается от необходимости учитывать все детали работы сети.
Интерфейс Winsock (Windows Sockets). Обрабатывает запросы ввода-вывода для приложений Internet в среде Windows. Интерфейс Winsock происходит от интерфейсных сокетов UNIX, которые использовались для установки соединения и обмена данными между двумя программными процессами на одном и том же компьютере или в сети.
На сеансовом уровне могут также выполняться задачи обеспечения безопасности и распознавания имен.
Транспортный уровень
Этот уровень является весьма важным элементом сетевой коммуникации. На транспортном уровне выполняется несколько функций. Главная задача — обеспечение сквозного контроля ошибок. Протоколы транспортного уровня обрабатывают структурированные сообщения.
На транспортном уровне отслеживается целостность и последовательность пакетов данных и обрабатываются дубликаты пакетов. Принимающая система с помощью транспортного уровня может отправить на передающий компьютер подтверждение о приеме пакета. Эта операция выполняется, если на транспортном уровне для передачи сообщения используется протокол с установлением логических соединений.
Существует два типа протоколов транспортного уровня: протоколы с установлением логических соединений и протоколы без установления соединения. Важными атрибутами транспортного уровня являются также разрешение имен, порты и сокеты.
Протоколы с установлением логических соединений
К этому типу принадлежит TCP, использующийся на транспортном уровне как часть стека протоколов TCP/IP. Служебные программы протоколов этого типа перед передачей данных устанавливают логическое соединение. Для проверки получения данных используется механизм подтверждения.
Приведем такую аналогию. Если вам нужно послать по почте своему другу ценный пакет, то это можно сделать двумя способами. Первый — позвонить ему и сообщить, что выслан пакет. Это похоже на то, что делает протокол с установлением соединения: перед отправкой пакета устанавливается соединение. Второй способ — послать заказной пакет. В этом случае почтовая служба уведомит вас об успешном получении пакета адресатом. Эта операция тоже выполняется протоколом с установлением соединения: на передающий компьютер посылается подтверждение успешного приема пакета.
Протоколы без установления логического соединения
К протоколам этого типа принадлежит UDP (User Datagram Protocol), входящий в состав пакета TCP/IP. Работа протоколов этого типа похожа на обычную почтовую службу. Отправляя письмо, человек полагает, что оно дойдет до адресата, однако подтверждения того, что это действительно произошло, нет.
Протоколы без установления соединения используются для передачи не очень важных сообщений, а также в том случае, если сообщение достаточно короткое и при его потере пользовательское приложение может послать повторный запрос. Например, UDP используется для передачи широковещательных сообщений всем компьютерам подсети.
Несмотря на низкую надежность, протоколы без соединения все же имеют некоторые преимущества: их простота и скорость передачи обусловливают более низкую стоимость коммуникации.
Разрешение имен
Еще одной обязанностью транспортного уровня является разрешение имен (узлов) компьютеров, т.е. отображение их имен на логические сетевые адреса. Как TCP/IP, так и IPX/SPX присваивают сетевым компьютерам логические имена, а для идентификации компьютеров в сети используют присвоенные им логические адреса.
На транспортном уровне работает служба DNS (Domain Name System).
Порты и сокеты
В отличие от старых операционных систем (например, MS DOS), современные сетевые операционные системы являются многозадачными. Это позволяет пользователям выполнять несколько сетевых программ одновременно. Например, пока Web-броузер обращается к Web-узлу, можно выгружать из почтового ящика электронные письма.
На транспортном уровне есть механизмы разделения ответа броузеру от приходящих по сети одновременно с ним электронных сообщений. Чтобы различить их, в протоколах TCP и UDP используются порты.
Номера портов связаны с сетевыми адресами. Сейчас вам нужно лишь знать, что IP-адрес, представляющий собой логический сетевой адрес компьютера, состоит из двух частей: адреса сети и адреса компьютера в сети.
Близкая аналогия IP-адреса — название улицы и номер дома в почтовом адресе: название улицы позволяет найти нужную улицу, а номер дома — нужный дом. То же самое и в IP-адресе: адрес сети позволяет найти локальную сеть, в которую входит компьютер, а адрес компьютера — конкретный компьютер в локальной сети. Однако на компьютере может выполняться несколько приложений и нужно решить, какому из них адресовано сообщение. Это делают протоколы транспортного уровня (например, TCP или UDP), которые присваивают каждому приложению номера портов, чтобы сообщение приложению А не попало к приложению Б.
Сетевой уровень
Этот уровень отвечает за доставку пакетов данных адресату. На нем выполняется маршрутизация пакетов. Сетевой уровень можно сравнить с штурманом, планирующим наиболее эффективный путь корабля, или самолета. На сетевом уровне работает большинство протоколов маршрутизации (рассматриваются в главе 9, "Самая глобальная сеть — Internet"). На этом уровне также обрабатываются приоритеты типов данных (основа службы QoS — Quality of Service), обеспечивающие выделение сетевых ресурсов для широкополосных приложений, таких как передача видеосигналов в реальном времени.
Устройства сетевого уровня
Устройства, работающие на сетевом уровне, включают маршрутизаторы и коммутаторы сетевого уровня, т.е. уровня 3. (Как вы помните, уровни нумеруются снизу, поэтому сетевой уровень имеет номер 3.)
Канальный уровень
Уровень 2 (канальный уровень) делится на следующие два подуровня:
MAC (Media Access Control) — управление доступом к сети;
LLC (Logical Link Control) — управление логическими связями.
МАС-адресация
Подуровень MAC работает с физическими адресами, которые называются МАС- адресами. В сетях Ethernet и Token Ring MAC-адреса представляют собой шестнадцатеричные числа, записанные в микросхему сетевого адаптера.
MAC-адрес сети Ethernet (иногда его называют адресом Ethernet) — это 12 шестнадцатеричных цифр, каждая пара из которых отделена двоеточием (например, 17:A4:2C:43:2F:09).
Эти 12 шестнадцатеричных цифр представляют двоичное число длиной 48 бит (или 6 байт). Первые три байта содержат код производителя, присвоенный организацией