Так же, как и дипломаты, использующие во время встреч дипломатические протоколы, компьютеры используют сетевые протоколы для связи друг с другом в компьютерной сети. Существует много сетевых протоколов. TCP/IP – это семейство протоколов, которые используются в Интернете.
Сетевой протокол – это стандарт, написанный на бумаге (или, более точно, в текстовом редакторе на компьютере). Стандарты, использующиеся в Интернете, называются Requests For Comment (RFC) – Запросы на комментарий. Стандарты RFC пронумерованы от 1 и далее. Сегодня существует более 4500 RFC. Большинство из них вышли из употребления, так что до сих пор используются лишь некоторые из первой тысячи.
Международная организация по стандартизации (International Standardization Office – ISO) разработала стандарты системы сетевых протоколов, называемой ISO OSI. Другой организацией, разрабатывающей стандарты коммуникаций, является Международный союз телекоммуникаций (International Telecommunication Union – ITU), который находится в Женеве. Раньше ITU назывался CCITT. Союз основан в 1865 году и является одной из самых старых всемирных организаций (для сравнения, Красный Крест был образован в 1863 году). Некоторые стандарты разрабатываются Институтом инженеров по электротехнике и электронике (Institute of Electrical and Electronics Engineers — IEEE). RFC, стандарты выпускаемые RIPE (Réseaux IP Européens – Европейская континентальная сеть TCP/IP), и PKCS (Public Key Cryptography Standard – Криптографический стандарт открытого ключа) свободно доступны в Интернете, их очень легко найти. Другие организации (ISO, ITU и т.д.) не дают стандарты бесплатно – за них нужно платить. Если это для вас проблема, вам придется потратить время на поиски в библиотеке.
В начале давайте посмотрим, почему сетевые связи разделены на несколько протоколов. Ответ прост, хотя он и рождает сложные проблемы в различных сферах деятельности. Большинство книг о сетевых протоколах объясняют проблему с помощью метафоры: два иностранца (философа, доктора и т.п.) пытаются общаться друг с другом. Каждый из них владеет только своим родным языком. Для того, чтобы они могли общаться, им нужен переводчик (Рисунок 1.1):
Рисунок 1.1: Трехуровневая архитектура общения
Два иностранца обмениваются идеями, т.е., они общаются. Но это происходит виртуально. В реальности они меняются информацией со своим переводчиками, которые затем передают ее путем вибраций, издаваемых голосовыми связками. Или, если собеседники находятся на большом расстоянии друг от друга, переводчики передают информацию по телефону, и информация физически передается по телефонным линиям. Мы можем говорить и о виртуальном общении в горизонтальном направлении (философский разговор, общий язык переводчиков и электронные сигналы, передаваемые по телефонной линии) и реальном общении в вертикальном направлении (иностранец-переводчик и переводчик-телефон). Таким образом, мы можем выделить три уровня общения:
Общение между иностранцами и переводчиками виртуально. Фактически, реальное общение происходит между иностранцем и его переводчиком.
В компьютерной сети используется больше уровней. Количество уровней зависит от выбранной вами системы сетевых протоколов. Система сетевых протоколов иногда называется сетевой моделью. Обычно вы работаете с системой, которая используется в Интернете и называется семейством TCP/IP. Помимо TCP/IP мы рассмотрим модель ISO OSI, стандартизированную ISO.
Рисунок 1.2: Сравнение сетевых моделей TCP/IP и ISO OSI
Семейство TCP/IP использует четыре уровня, в то время как ISO OSI использует семь. Системы TCP/IP и ISO OSI значительно отличаются друг от друга, хотя и похожи на сетевом и транспортном уровне.
Лишь в некоторых исключительных случаях, таких как SLIP или PPP, семейство TCP/IP работает на канальном и физическом уровне. Поэтому даже в Интернете мы используем протоколы канального и физического уровня модели ISO OSI.
Схема связи между двумя компьютерами показана на следующем рисунке:
Рисунок 1.3: Семиуровневая архитектура модели ISO OSI
Физический уровень отвечает за инициализацию физической цепи между терминальным оборудованием (Data Terminal Equipment — DTE) и оконечным оборудованием линии передачи связи (Data Circuit-terminating Equipment — DCE), соединение по ней и ее дезактивацию. Помимо этого, физический уровень отвечает за соединение между DCE (Рисунок 1.3a). В роли DTE может выступать компьютер или маршрутизатор. С другой стороны, в роли DCE обычно выступает модем или мультиплексор.
Рисунок 1.3a: DTE и DCE
Другими словами, физический уровень описывает электрический или оптический сигнал, использующийся для связи между двумя компьютерами. Физические линии передачи связи создаются на физическом уровне. Другие приложения, например, модемы, модулирующие сигнал для телефонной линии, часто расположены на физической линии передачи связи, созданной между двумя компьютерами.
Протоколы физического уровня следующие:
Для последовательных каналов, канальный уровень производит обмен данными между соседними компьютерами, а также между компьютером и локальной сетью.
Для канального уровня основным элементом передачи данных является кадр данных (Рисунок 1.4). Кадр данных состоит из заголовка, полезной информации и окончания.
Рисунок 1.4: Кадр данных
В заголовке кадра содержится адрес получателя, адрес отправителя и другая контрольная информация. В окончании обычно хранится контрольная сумма переданных данных. С помощью контрольной суммы мы можем определить, не были ли нарушены полезные данные при передаче. В поле полезной информации обычно хранится пакет сетевого уровня.
На Рисунке 1.3a канальный уровень не участвует в связи между DTE и DCE (канальный уровень не видит DCE). Однако, он участвует в связи между DTE. (Для работы с DCE он полагается на физический уровень.)
На следующем рисунке показано, что на разных концах соединения на физическом уровне могут использоваться разные протоколы. В нашем случае на одном из концов соединения используется протокол X.21, а на другом – V.35. Это правило справедливо не только для последовательных соединений, но и для локальной сети. В локальных сетях вы можете увидеть и более сложные связи, при которых между двумя окончаниями соединения расположен свитч, который конвертирует кадры одного канального протокола в кадры другого (например, Ethernet в FDDI). Естественно, в этом случае на физическом уровне используются разные протоколы.
Рисунок 1.5: Соединения на канальном уровне
Последовательный порт или карта Ethernet могут служить интерфейсом канала. Интерфейс канала обладает адресом, который уникален внутри отдельной локальной сети (Local Area Network — LAN).
Сетевой уровень гарантирует передачу данных между двумя удаленными компьютерами внутри отдельной глобальной сети (Wide Area Network — WAN). Основным элементов передачи является датаграмма, которая заключена в кадре. Датаграмма также состоит из заголовка и поля данных. В сетевых протоколах окончания обычно не используются.
Рисунок 1.6: Сетевой пакет в кадре данных
Как видно из Рисунка 1.6, заголовок датаграммы и данные (полезные данные сетевого уровня) составляют поле данных кадра.
Обычно между двумя компьютерами в WAN находится как минимум один маршрутизатор. Соединение между двумя маршрутизаторами на канальном уровне всегда прямое. Перед отправкой кадра в другую сеть маршрутизатор распаковывает датаграмму из кадра для того, чтобы поместить ее в другой кадр (или, более обобщенно, в кадр другого протокола канального уровня). Сетевой уровень не видит устройства физического и канального уровня (модемы, повторители, свитчи и т.д.).
Сетевому уровню все равно, какой протокол канального уровня используется на маршруте между отправителем и получателем.
Рисунок 1.7: Связи на сетевом уровне
Последовательный порт или карта Ethernet могут быть использованы в качестве сетевого интерфейса. Сетевой интерфейс внутри отдельной сети WAN обладает одним или более уникальным адресом.
Сетевой уровень способствует установке соединения между двумя удаленными компьютерами. Транспортный уровень действует так, как будто модемов, повторителей, мостов или маршрутизаторов не существует. Транспортный уровень полностью полагается на службы более низких уровней. Он считает, что соединение установлено, и потому полностью отвечает за взаимодействие двух удаленных компьютеров. Обычно транспортный уровень отвечает за соединение приложений, запущенных на разных компьютерах.
Между двумя компьютерами в один промежуток времени может быть несколько транспортных соединений (например, одно для виртуального терминала, casino online а другое для электронной почты). На сетевом уровне транспортные пакеты напрямую основываются на адресе компьютера (или его сетевого интерфейса). На транспортном уровне адресом обладает отдельное приложение. Приложения используют уникальные адреса внутри одного компьютера, так что транспортный адрес обычно состоит из сетевого и транспортного адреса.
Рисунок 1.8: Соединения на транспортном уровне
В данном случае основным элементом является сегмент, который состоит из заголовка и полезной информации. Транспортный пакет передается внутри поля данных сетевого пакета.
Рисунок 1.9: Транспортный пакет находится внутри сетевого пакета, который, в свою очередь, находится внутри канального кадра
Сеансовый уровень способствует обмену данных между двумя приложениями. Другими словами, он служит контрольной точкой и участвует в процессе синхронизации транзакций, правильно закрывая файлы и т.п. Предоставления общего доступа к сетевому диску является хорошим примером сеанса. Сетевой диск не используется все время. Если нам нужно работать с файлом, находящимся на сетевом диске, на транспортном уровне создается соединение с момента его открытия до момента его закрытия. Однако на сеансовом уровне сеанс существует все время, когда диск открыт для общего доступа.
Основной элемент сеансового уровня — PDU (Protocol Data Unit – Модуль данных протокола), который встроен в сегмент. В некоторых книгах изображают PDU сеансового уровня состоящим из заголовка сеанса и полезной информации, встроенных в сегмент. Однако для начала работы на сеансовом уровне это не обязательно так. Информация сеансового уровня может передаваться внутри поля данных. Такой вариант достоин большего внимания, если, к примеру, на уровне представлений происходит шифрование данных, что меняет все содержимое PDU сеансового уровня.
Уровень представлений отвечает за представление и защиту данных. Представление может отличаться на разных компьютерах. Например, он решает проблему нахождения старшего бита слева или справа байта. Под защитой имеется в виду шифрование, гарантия целостности данных, цифровая подпись и т.п.
Уровень приложений определяет формат данных, которые должны быть получены или переданы приложениям. Например, протокол виртуального терминала OSI описывает, как нужно форматировать данные, а также диалог между двумя участниками соединения.
Рисунок 1.10: Примеры сетевых протоколов семейства ISO OSI
За небольшим исключением, семейство протоколов TCP/IP не работает на физическом и канальном уровне. Но практике, для физического и канального уровней протоколы Интернета часто используют протоколы, связанные со стандартами ISO OSI.
Какая связь между протоколами ISO OSI и TCP/IP? Каждая группа протоколов имеет свое определение на собственном уровне, то же относится и к самим протоколам. Грубо говоря, протоколы ISO OSI и TCP/IP несовместимы. На практике ISO OSI-совместимые устройства соединения используются для передачи IP-датаграмм, или, с другой стороны, службы, основанные на ISO OSI, должны быть переданы через Интернет.
Протокол Интернета (Internet Protocol – IP) в основном работает на сетевом уровне. Протокол IP используется для передачи IP-датаграмм между удаленными компьютерами. Каждая IP-датаграмма содержит адрес назначения, который является полной информацией о маршруте для доставки IP-датаграммы до назначения. Из-за этого каждая датаграмма передается по сети по отдельности. IP-датаграммы одного сеанса могут переданы разными путями, и потому могут быть получены в пункте назначения в порядке, отличном от того, в котором они были посланы.
Каждый сетевой интерфейс с сети Интернет обладает одним или более уникальным IP-адресом. (Один сетевой интерфейс может иметь несколько IP-адресов, но один IP-адрес не может использоваться несколькими сетевыми интерфейсами.) Интернет состоит из отдельных сетей, которые соединены маршрутизаторами. В старой литературе маршрутизаторы также называются шлюзами.
Протоколы TCP и UDP относятся к транспортному уровню. TCP передает данные с помощью TCP-сегментов, которые относятся к отдельным приложениям. UDP передает данные с помощью UDP-датаграмм.
Протоколы TCP и UDP организовывают соединения между приложениями, которые работают на удаленных компьютерах. TCP и UDP также могут управлять соединениям между процессами, работающими на одном и том же компьютера, но для нас это не так интересно.
Разница между TCP и UDP в том, что TCP – это служба, ориентированная на соединение: получатель подтверждает получение данных. Если некоторые данные (TCP-сегменты) потеряны, получатель запрашивает повторную передачу потерянных данных. UDP передает данные датаграммами (доставка не гарантируется). Другими словами, отправитель посылает датаграмму не заботясь о том, будет ли она получена или нет. UDP – это служба, не ориентированная на соединение.
Порт используется в качестве адреса. Для того, чтобы понять разницу между IP-адресом и номером порта, мы приведем в пример почтовые адреса. IP-адрес соответствует номеру дома, а порт – имени человека, которому предназначено письмо.
Протокол TCP isописан в Главе 9, а UDP — в Главе 10.
Протоколы приложений соответствуют нескольким уровням модели ISO OSI. Уровни сеанса, представления и приложений модели ISO OSI сокращены до одного уровня приложений в TCP/IP.
Отсутствие уровня представлений замещает специальными протоколами представлений-приложений, таких как SSL и S/MINE, которые отвечают за защиту данных или за протоколы виртуального терминала и ASN.1, разработанные для представления данных. Протокол виртуального терминала (не путайте его с протоколом модели ISO OSI с тем же самым именем) определяет представление сетевых данных для сетевых протоколов, ориентированных на символы (Telnet, FTP, SMTP и, отчасти, HTTP). Протокол ASN.1 часто используется в качестве транспорта для двоичных данных. ASN.1 (включающий BER или DER -шифрование) изначально использовался SNMP, но сегодня он также используется и S/MINE.
Существуем много различных протоколов приложений. По практическим целям, они могут быть разделены на две группы:
Рисунок 1.11: Некоторые протоколы семейства TCP/IP
Существует множество различных сетевых протоколов, и некоторые из них используются на одном и том же уровне. Некоторые, особенно протоколы низких уровней, разделяются по типу передачи: предоставляют ли они физическое соединение или нет, используют ли виртуальные цепи и т.д. Также передача разделяется на синхронную, пакетную и асинхронную.
Синхронная передача используется при создании стабильной (гарантированной) пропускной способности, например, аудио или видео. Если источник не использует предоставленную пропускную способность, он остается неиспользованным. Синхронная передача использует кадры фиксированной длины, которые передаются с постоянной скоростью.
Рисунок 1.12: Кадры, разделенные на области при синхронной передаче
При синхронной передаче гарантированная пропускная способность устанавливается путем деления передаваемых кадров на области (Рисунок 1.12). Одна или более областей в кадре зарезервированы для конкретного соединения. Допустим, что в каждом кадре для соединения зарезервирована область 1. Поскольку кадры идут один за другим, наше приложение получает гарантированную пропускную способность, состоящую из количества областей 1, которые могут быть переданы по сети за одну секунду.
Идея станет еще прозрачней, если мы нарисуем кадры один под другим, создав таким образом «суперкадр» (Рисунок 1.13). Области, расположенные прямо друг под другом, принадлежат одному соединению.
Рисунок 1.13: Суперкадр
Синхронная передача используется для связи вашего коммутатора с коммутатором телефонной компании. В этом случае мы используем канал E1(или T1 в США), состоящий из 32 областей по 64 Кб/с каждый. Область может использоваться для телефонного звонка. Поэтому, в теории, одновременно гарантированы 32 звонка (хотя некоторые области могут использоваться для служебных целей).
В Интернете не используется синхронная передача, т.е. в общем, Интернет не гарантирует пропускную способность. Качество передачи аудио или видео информации по Интернету обычно достигается с помощью увеличенного размера линий передачи. Не так давно возник рост запросов на передачу аудио и видео информации по Интернету, поэтому все чаще и чаще мы сталкиваемся с системами, гарантирующими пропускную способность даже в Интернете с помощью Quality of Service (QoS – Качество услуг передачи данных). Однако, для достижения желаемых результатов все устройства на пути от отправителя к получателю должны поддерживать эти службы. Сегодня мы стараемся иметь дело только с теми областями Интернета, которые гарантируют пропускную способность, например, с конкретным Интернет-провайдером.
(Начиная с данного момента, мы будем использовать термин пакет для обозначения пакета, датаграммы, сегмента и модуля данных протокола.) Пакетная передача крайнее важна для передачи данных. Обычно в пакетах хранятся данные различного размера.
Рисунок 1.14: Пакетная передача
Один пакет всегда содержит данные одного конкретного приложения (одного соединения). Поскольку пакеты имеют разную длину, нет возможности гарантировать пропускную способность. С другой стороны, мы можем использовать пропускную способность более эффективно, поскольку если одно приложение не передает данные, пропускную способность могут использовать другие приложения.
Асинхронная передача использует протокол ATM. Этот тип передачи сочетает в себе возможности пакетной и синхронной передачи.
Рисунок 1.15: Асинхронная передача
Подобно синхронной передаче, при асинхронной передаче данные передаются небольшими пакетами одинаковой величины. Эти пакеты называются ячейками. Подобно пакетной передаче, данные одного приложения (одного соединения) передаются в одной ячейки. Все ячейки обладают одной длиной. Так что если мы гарантируем, что n-ая ячейка будет доступна для определенного приложения (конкретное соединение), пропускная способность тоже будет гарантирована. Помимо этого не важно, посылает ли приложение ячейки в то время как пересылаются ячейки другого приложения.
Некоторые сетевые протоколы создают в сети виртуальные цепи. Виртуальная цепь проводится через сеть, и все пакеты определенного соединения проходят через эту цепь. Если цепь где-нибудь прерывается, прерывается и соединение, создается новая цепь, передача данных продолжается.
Рисунок 1.16: Виртуальная цепь
На рисунке 1.16 между узлами A и D создана виртуальная цепь, проходящая через узлы B, F и G. Все пакеты должны проходить по этой цепи.
Датаграммы могут передаваться по виртуальной цепи двумя способами:
Преимущество виртуальных цепей состоит в том, что они вначале они устанавливаются (с помощью сигнализации), а затем в нее вставляются данные. Каждый пакет не несет в своем заголовке уникальный адрес получателя (полная информация о маршруте). Пакету требуется знать только идентификатор цепи.
Для целей Министерства Обороны США виртуальный механизм не используется в Интернете, поскольку разрушение узла виртуальной цепи приводит к прерыванию передачи – это то, чего не любят создатели TCP/IP. Поэтому, IP не использует виртуальные цепи. Каждая IP-датаграмма содержит в себе IP-адрес получателя (полная информация о маршруте), и потому переносится независимо. Если узел недоступен, отбрасываются только те IP-датаграммы, которые проходят через определенных узел. Оставшиеся датаграммы направляются через другие узлы.
Рисунок 1.17: IP не использует виртуальные цепи
На Рисунке 1.17 показано, что IP-датаграммы 1, 2 и 3 идут из узла A в узел B, но в этой точке датаграммы 1 и 3 направляются по маршруту, отличному от датаграммы 2. Получатель (узел D) достигается ими разными путями. Обычно IP-датаграммы могут достигать получателя в порядке, отличном от того, в котором они были посланы. Поэтому IP-датаграммы могут быть получены в следующем порядке: 2, 1, а затем 3.
В иерархии Интернета TCP является протоколом высокого уровня, который устанавливает соединение и гарантирует доставку данных. Он используется поверх протокола IP. Если какие-либо пакеты данных потеряны, требуется их повторная передача. Если пакеты данных были потеряны из-за разрушения узла и в сети есть другой возможный маршрут, передача автоматически повторяется по другому пути.
Виртуальные цепи разделяются на следующие группы:
PVC соответствует выделенным линиям, а SVC – коммутируемым линиям телефонной сети.
Замечание:
Протоколы, использующие виртуальные цепи, называются Сетевыми услугами с предоставлением физического доступа (Connection—Oriented Network Services — CONS), а протоколы, передающие пакеты без использования виртуальных цепей, называются Сетевыми услугами без предоставления физического доступа (Connection-Less Network Services — CLNS).
www.windowsnetworking.com
Tags: ftp, imap, nat, ppp, qos