• 3.1 Введение
  • 3.2 Деление на уровни
  • 3.2.1 Физический уровень
  • 3.2.2 Уровень связи данных
  • 3.2.3 Сетевой уровень
  • 3.2.4 Транспортный уровень (TCP)
  • 3.2.5 Транспортный уровень (UDP)
  • 3.2.6 Службы для приложений
  • 3.2.7 Пакетирование данных
  • 3.3 Обзор протоколов
  • 3.4 Маршрутизаторы и топология сети
  • 3.5 Маршрутизация в IP
  • 3.5.1 Протоколы маршрутизации
  • 3.6 Архитектура TCP
  • 3.7 Архитектура UDP
  • 3.8 Концепция безопасности
  • 3.8.1 Аутентификация
  • 3.8.2 Технология формирования резюме сообщения
  • 3.8.3 Целостность сообщения
  • 3.8.4 Конфиденциальность с помощью симметричного шифрования
  • 3.8.5 Асимметричный общедоступный ключ шифрования
  • 3.8.6 Комбинированное шифрование
  • Глава 3

    Архитектура TCP/IP

    3.1 Введение

    Протоколы TCP/IP разработаны для сетевого окружения, которое было мало распространено в 70-х гг., но сегодня стало нормой. Эти протоколы позволяют соединять оборудование различных производителей и способны работать через различные типы носителей или сред и связи данных. Они позволили объединить сети в единую сеть интернет, все пользователи которой имеют доступ к набору базовых служб.

    Более того, спонсировавшие разработку TCP/IP научные, военные и правительственные организации хотели получить возможность подключения к интернету новых сетей без изменения служб уже существующих в интернете сетей.

    Все эти требования нашли отражение в архитектуре TCP/IP. Требования независимости от носителей и расширения за счет подключения новых сетей привели к решению о пересылке данных в интернет с разделением их на части и маршрутизацией каждой из этих частей как независимого элемента.

    Такие возможности гарантируют надежную пересылку данных от хоста источника к хосту назначения. Вследствие этого разработчики маршрутизаторов направили свои усилия на повышение производительности и внедрение новых коммуникационных технологий.

    Все это привело к прекрасной масштабируемости протоколов TCP/IP и возможности их применения на различных системах — от больших ЭВМ (mainframe) до настольных компьютеров. На практике полезный набор функциональных свойств сетевого управления маршрутизацией реализуется неинтеллектуальными устройствами, подобными мостам, мультиплексорам или коммутаторам.

    3.2 Деление на уровни

    Для достижения надежности обмена данными между компьютерами необходимо обеспечить выполнение нескольких операций:

    ■ Пакетирование данных

    ■ Определение путей (маршрутов) пересылки данных

    ■ Пересылку данных по физическому носителю

    ■ Регулировку скорости пересылки данных в соответствии с доступной полосой пропускания и возможностью приемника получать посланные ему данные

    ■ Сборку полученных данных, чтобы в формируемой последовательности не было потерянных частей

    ■ Проверку поступающих данных на наличие дублированных фрагментов

    ■ Информирование отправителя о том, сколько данных было передано успешно

    ■ Пересылку данных в нужное приложение

    ■ Обработку ошибок и непредвиденных событий

    В результате программное обеспечение для коммуникации получается достаточно сложным. Следование модели с разделением на уровни позволяет упростить объединение сходных функций в группы и реализовать разработку коммуникационного программного обеспечения по модульному принципу.

    Специфика структуры протоколов TCP/IP определяется требованиями коммуникаций в научных и военных организациях. IP позволяет объединить различные типы сетей в интернет, a TCP несет ответственность за надежную пересылку данных.

    Коммуникационная модель обмена данными OSI строго соответствует структуре TCP/IP. Уровни и терминология модели OSI стали стандартной частью коммуникационной структуры обмена данными.

    На рис. 3.1 показаны уровни OSI и TCP/IP. Начнем их анализ с самого нижнего уровня (в TCP/IP формально не определены уровни сеанса и представления).

    Рис. 3.1. Уровни TCP/IP и OSI

    3.2.1 Физический уровень

    Физический уровень (physical layer) имеет дело с физическими носителями, разъемами и сигналами для представления логических нулей и единиц. Например, адаптеры сетевого интерфейса Ethernet и Token-Ring и соединяющие их кабели реализуют функции физического уровня.

    3.2.2 Уровень связи данных

    Уровень связи данных (data link layer) организует данные в кадры (frame). Иногда его называют канальным уровнем. Как показано на рис. 3.2, каждый кадр имеет заголовок (header), содержащий адрес и управляющую информацию, а завершающая секция кадра (trailer) используется для исправления ошибок (иногда ее называют хвостом кадра. — Прим. пер.).

    Заголовки кадров локальных сетей содержат физические адреса источника и назначения, которые идентифицируют передающую и принимающую интерфейсные карты локальной сети (сетевые адаптеры). Заголовки кадров, пересылаемых по региональной сети Frame Relay, содержат циклические идентификаторы в специальном адресном поле.

    Вызов соединения (связи) в локальной сети, т.е. создание некоторой линии между конечными точками передачи данных, и аналогичные возможности в региональных сетях описываются протоколами уровня связи данных.

    Рис. 3.2. Формат кадра

    3.2.3 Сетевой уровень

    Функции сетевого уровня (network layer) выполняет протокол IP, который осуществляет, маршрутизацию данных между системами. Данные могут следовать по одному пути или использовать несколько различных путей при перемещении в интернете. Данные пересылаются в элементах, называемых датаграммами (datagram).

    Как показано на рис. 3.3, датаграмма имеет заголовок IP, содержащий информацию об адресации для третьего уровня. Маршрутизатор проверяет адрес назначения для пересылки датаграммы в нужное место.

    Рис. 3.3. Датаграмма IP

    Уровень IP называется "без создания соединения", поскольку каждая датаграмма маршрутизируется независимо и протокол IP не гарантирует тот же порядок получения датаграмм, как при их отправке. IP маршрутизирует трафик без учета взаимодействий между приложениями, которым принадлежат конкретные датаграммы.

    3.2.4 Транспортный уровень (TCP)

    Протокол TCP выполняет функции транспортного уровня (transport layer) и обеспечивает надежную службу пересылки данных для приложений. В TCP/IP встроен специальный механизм, гарантирующий пересылку данных без ошибок и пропусков и в той последовательности, в которой они были отправлены.

    Приложения, например пересылки файлов, передают данные в TCP, который добавляет к ним заголовок и формирует элемент, называемый сегментом (segment).

    TCP отсылает сегменты в IP, в котором производится маршрутизация данных в заданное место. На другой стороне соединения TCP предполагает получение тех же сегментов данных от IP, определяет приложение, которому направлены эти данные, и передает их приложению в том порядке, в котором они были отправлены.

    3.2.5 Транспортный уровень (UDP)

    Приложение может послать другому приложению независимое сообщение с помощью протокола UDP, который добавляем к сообщению заголовок и формирует элемент, называемый датаграммой UDP или сообщением UDP.

    UDP передает исходящие сообщения в IP и предполагает на другой стороне получение входящих сообщений от IP. Далее UDP определяет приложение, которому направлены данные.

    UDP реализует коммуникационную службу без создания соединения, которая часто используется для просмотра содержимого простых баз данных.

    3.2.6 Службы для приложений

    Как уже отмечалось в главе 2, набор протоколов TCP/IP включает стандартные службы для приложений, такие как доступ с терминала, пересылка файлов, обращение к файловым серверам NFS, электронная почта, сетевые новости, WWW и просмотр адресов в DNS.

    3.2.7 Пакетирование данных

    На рис. 3.4 показано, как пакетируются прикладные данные перед пересылкой по сети. Основным термином для объединения информации с заголовком соответствующего сетевого уровня является элемент данных протокола (Protocol Data Unit — PDU). Например, сегмент TCP является PDU транспортного уровня, а датаграмма IP — PDU сетевого уровня.

    Рис. 3.4. Пакетирование данных перед пересылкой по сети

    3.3 Обзор протоколов

    На рис. 3.5 представлено соотношение между отдельными компонентами набора протоколов TCP/IP.

    Рис. 3.5. Соотношение между компонентами набора протоколов TCP/IP

    Хотя текстовые пользовательские интерфейсы для пересылки файлов, доступа с терминала, работы с новостями или запросами к DNS для определения адреса по имени формально не стандартизованы, многие разработчики копируют интерфейс конечного пользователя из BSD Unix. Работающие в режиме текстовых команд пользователи находят, что пользовательский интерфейс не слишком отличается в разных системах.

    Для настольных систем Windows и Macintosh существует множество графических пользовательских интерфейсов. Хотя они и отличаются в деталях, но в целом следуют стандартным соглашениям операционных систем и обычно могут использоваться без специального изучения.

    Клиенты WWW, сетевых новостей, пересылки файлов (FTP), почты (SMTP) и терминального доступа (telnet) могут взаимодействовать со своими серверами через соединения TCP. Большинство клиентов NFS обмениваются со своими серверами сообщениями UDP, хотя некоторые реализации NFS предполагают использование как UDP, так и TCP.

    Просмотр каталогов DNS основан на сообщениях UDP. Станции управления SNMP извлекают сведения из сетевых устройств с помощью сообщений UDP.

    3.4 Маршрутизаторы и топология сети

    Набор протоколов TCP/IP может использоваться как в независимых локальных или региональных сетях, так и для их объединения в общие сети интернета. Любой хост с TCP/IP может взаимодействовать с другим хостом через локальную сеть, соединение "точка-точка" или через региональную сеть с пакетированием информации (см. рис. 3.6).

    Рис. 3.6. Независимые друг от друга сети

    Объединение сетей в интернет предполагает использование маршрутизаторов IP. На рис. 3.7 показана сеть интернет, созданная из независимых сетей, соединенных маршрутизаторами IP.

    Рис. 3.7. Объединение независимых сетей маршрутизаторами

    Современные маршрутизаторы обеспечивают работу нескольких аппаратных интерфейсов, которые можно комбинировать для применения с конкретной сетевой топологией: Ethernet, Token-Ring, FDDI, синхронные соединения "точка-точка", Frame Relay и т.д.

    Сети интернет можно построить с помощью самых разнообразных топологий. Однако если интернет будет иметь логически связанную структуру, маршрутизаторы смогут выполнять свою работу более эффективно и быстрее реагировать на неисправности в отдельных сегментах сети, перенаправляя датаграммы по функционирующим путям. Простая для понимания логическая структура поможет сетевым администраторам в диагностике, локализации и ликвидации сетевых неисправностей.

    Обширный и основанный на конкуренции рынок маршрутизаторов IP помог развитию архитектуры TCP/IP. Разработчики маршрутизаторов быстро реализовывали новые топологии локальных и региональных сетей, предоставляя своим клиентам возможность выбора среди аналогичных устройств. За последние несколько лет существенно снизилось соотношение цены маршрутизаторов к их производительности.

    3.5 Маршрутизация в IP

    Программное обеспечение IP работает на хостах и маршрутизаторах IP. Если пункт назначения датаграммы не находится в том же самом сетевом сегменте, что и ее источник, то протокол IP локального хоста направляет такую датаграмму на локальный маршрутизатор. Если последний не подключен непосредственно к узлу назначения датаграммы, то она будет передана другому маршрутизатору. Этот процесс продолжается до тех пор, пока датаграмма не достигнет заданного пункта назначения.

    Маршрутизатор IP определяет местоположение удаленного узла по таблице маршрутизации (routing table), содержащей сведения о ближайших маршрутизаторах, которым должен быть направлен трафик датаграмм для достижения конечной точки в сети.

    3.5.1 Протоколы маршрутизации

    В небольшой статической сети интернет таблицы маршрутизации могут заполняться и обслуживаться вручную. В больших сетях интернет корректность таблиц маршрутизации поддерживается самими устройствами посредством обмена информацией между маршрутизаторами. Маршрутизаторы могут динамически определять следующие события:

    ■ Добавление к интернету новой сети

    ■ Разрушение пути к пункту назначения или невозможность его достижения за заданное время

    ■ Добавление в интернет нового маршрутизатора, который может обеспечить более короткий путь к месту назначения

    Не существует единого стандарта для обмена информацией между маршрутизаторами. Свобода выбора между несколькими согласованными протоколами позволяет добиться наилучшей производительности в каждом конкретном случае.

    Сетевая возможность по управлению организацией сети соответствует понятию "автономной системы" (Autonomous System — AS). Организация может выбрать любой из протоколов обмена информацией о маршрутизации, который связан с ее собственной автономной системой. Протоколы обмена информацией о маршрутизации применяются внутри автономных систем в виде протокола внутреннего шлюза (Interior Gateway Protocol — IGP).

    Протокол информации о маршрутизации (Routing Information Protocol — RIP) стал одним из популярных стандартов IGP. Широкое распространение этого протокола связано с его простотой, однако новый протокол "Сначала открывать самый короткий путь" (Open Shortest Path First — OSPF) имеет еще более обширный набор полезных возможностей.

    Хотя все маршрутизаторы поддерживают один или несколько стандартных протоколов, некоторые разработчики реализуют собственные лицензионные протоколы для обмена информацией между маршрутизаторами. Многие продукты для маршрутизаторов могут одновременно обрабатывать несколько протоколов.

    3.6 Архитектура TCP

    TCP реализуется на хостах. Наличие TCP на каждом конце соединения обеспечивает для доставки данных локального приложения следующие возможности:

    ■ Точность

    ■ Сохранение последовательности

    ■ Полноту

    ■ Исключение дублирования

    Базовый механизм для реализации этих возможностей начинает использоваться с самого начала обмена данными. Передающая система TCP:

    ■ Нумерует каждый сегмент

    ■ Устанавливает таймер

    ■ Пересылает сегмент

    Принимающая система TCP сообщает своему партнеру, сколько данных было передано правильно, посредством выдачи подтверждения (acknowledgment — ACK). Если подтверждение пересылки сегмента не будет получено за заданный интервал времени, TCP производит повторную пересылку этого сегмента. Такая стратегия называется повторной трансляцией с положительным подтверждением (retransmission with positive acknowledgment). Иногда повторная пересылка приводит к дублированию доставленных на принимающую систему сегментов.

    Принимающая система TCP должна расположить приходящие сегменты в правильном порядке и исключить дублирование. TCP передает данные в приложение в правильном порядке, без пропусков.

    Поскольку одна сторона отправляет данные, а другая их принимает, TCP можно назвать полнодуплексным (full-duplex) протоколом: обе стороны соединения могут одновременно посылать и принимать данные (т.е. присутствуют два потока данных). TCP одновременно выполняет роли передатчика и приемника.

    3.7 Архитектура UDP

    UDP реализуется на хостах. Протокол не обеспечивает целостности доставки данных, поскольку эта функция возлагается на обменивающиеся данными приложения. Именно они проверяют целостность доставляемых данных.

    Приложение, которое хочет переслать данные с помощью UDP, передает блок данных в UDP, а протокол UDP просто добавляет к ним заголовок и производит их пересылку по сети.

    Участвующие во взаимодействии по UDP приложения могут посылать сообщения с пользовательскими датаграммами в любое время. Клиент и сервер, которые надстроены над UDP, несут ответственность за все взаимоотношения при обмене пользовательскими датаграммами.

    3.8 Концепция безопасности

    TCP/IP успешно обслуживает открытые соединения между компьютерами локальных, региональных, а также глобальных сетей. Однако к соединениям стали предъявляться требования обеспечения безопасности.

    Базовые концепции безопасности в сетевом окружении подобны аналогичным концепциям для центрального хоста:

    ■ Аутентификация пользователей

    ■ Целостность (гарантия отсутствия изменения данных)

    ■ Конфиденциальность (защита от нежелательного раскрытия информации)

    3.8.1 Аутентификация

    Важным аспектом компьютерной безопасности является выяснение "кто есть кто". Ранее это определяли идентификатор и пароль пользователя. Аналогичным образом в поле "From:" сообщения электронной почты идентифицируется отправитель. Однако пароль может быть перехвачен любителем подслушивать в сети, и сообщение электронной почты может быть фальсифицировано.

    Если речь идет о пересылке серьезных транзакций в сетях TCP/IP, то требуется способ для надежной идентификации отправителя. Процесс проверки на авторство называется аутентификацией (authentication, дословно: проверка подлинности. — Прим. пер.).

    3.8.2 Технология формирования резюме сообщения

    Простой, но эффективный способ технологии аутентификации основан на резюме сообщения (message digest). Как показано на рис. 3.8, такое резюме вычисляется по содержимому сообщения с помощью секретного ключа. В настоящее время наиболее распространен алгоритм Message Digest 5 (MD5), который был разработан Рональдом Ривестом (см. RFC 1321).

    Рис. 3.8. Использование резюме сообщения.

    Взаимное исследование (challenge handshake) иллюстрирует один из способов применения резюме сообщения. Как и при обычной аутентификации, пользователю присваивается пароль, регистрируемый на хосте. Однако этот пароль уже не пересылается по сети. Вместо этого настольная система выполняет вычисление по алгоритму MD5, используя пароль и секретный ключ (ключ шифрования. — Прим. пер.). Как показано на рис. 3.9:

    1. Пользователь посылает на хост свой идентификатор.

    2. Хост посылает пользователю сообщение со случайным содержимым.

    3. Хост и настольная система пользователя выполняют вычисления по алгоритму MD5 для сообщения от хоста и секретного пароля пользователя.

    4. Система пользователя отсылает ответ хосту.

    5. Хост сравнивает ответ. Если ответ верен, пользователь аутентифицируется.

    Рис. 3.9. Использование MD5 при взаимном исследовании

    3.8.3 Целостность сообщения

    MD5 и совместно используемые секретные ключи можно применять для определения изменений в данных при их пересылке по сети. Рассмотрим рис. 3.10:

    1. Вычисление MD5 выполняется над данными с помощью секретного ключа.

    2. Данные и полученное сообщение посылаются партнеру.

    3. Партнер выполняет вычисление MD5 над полученными данными и известным секретным ключом.

    4. Партнер сравнивает полученный результат с соответствующим резюме сообщения. При совпадении считается, что данные не изменились.

    Отметим, что, не зная секретного ключа, подглядывающий за пересылаемыми данными злоумышленник не сможет фальсифицировать или изменить эти данные. Такой механизм применяется в системах защищенной электронной почты и безопасных от вторжения транзакциях клиент/сервер.

    Рис. 3.10. Защита пересылаемых данных с помощью резюме сообщения, вычисленного по MD5

    3.8.4 Конфиденциальность с помощью симметричного шифрования

    Для предотвращения чтения и нежелательного использования пересылаемых данных злоумышленником (snooper) данные должны быть зашифрованы. Классическим способом является согласование секретных ключей между отправителем и получателем. Часто при пересылке добавляется резюме сообщения, и получатель может проверить, что данные получены в том виде, в котором они были отправлены. Как показано на рис. 3.11, после шифрования данные выглядят как бессмысленные строки.

    Рис. 3.11. Симметричное шифрование

    Этот традиционный метод шифрования называется симметричным. Симметричное шифрование предполагает использование одного и того же ключа как для шифрования, так и для последующей расшифровки. Обе стороны знают ключ и должны сохранять его в тайне. Недостатки такого способа следующие:

    ■ В целях большей безопасности каждой взаимодействующей паре приходится применять собственный секретный ключ.

    ■ Изменение ключа связано с большими трудностями.

    3.8.5 Асимметричный общедоступный ключ шифрования

    Методы асимметричного шифрования известны достаточно давно (основные идеи были заложены в работах Диффи, Хеллмана и Меркля). При таком методе для шифрования и расшифровки используются различные ключи.

    Рассмотрим шкатулку с двумя различными ключами (А и Б), как показано на рис. 3.12:

    ■ Если шкатулка закрывается ключом А, то открывается ключом Б.

    ■ Если шкатулка закрывается ключом Б, то открывается ключом А.

    Рис. 3.12. Использование различных ключей для открытия и закрытия

    Асимметричное шифрование называется также шифрованием по общедоступным ключам (public key), поскольку позволяет управлять ключами более согласованным способом. Ключ А может быть общедоступным. Его значение можно открыть для друзей или даже хранить в одном из доступных файлов.

    ■ Все партнеры могут применять общедоступный ключ для шифрования пересылаемых данных.

    ■ Однако только вы будете знать личный ключ, и никто иной не сможет расшифровать посылаемые вам данные.

    Схема шифрования по общедоступным/личным ключам основана на том, что очень трудно подобрать два числа с большими значениями (количество проверок при этом выражается степенной функцией), чтобы получить значение ключей шифрования. Лучшим специалистам потребуется несколько месяцев, чтобы расшифровать данные с 129-разрядным ключом. Однако скорость работы компьютеров постоянно увеличивается, и вряд ли можно ожидать, что 1024-разрядные ключи останутся секретными по истечении еще нескольких лет.

    Обслуживание общедоступных/личных ключей гораздо проще, чем симметричных. Однако нужна уверенность, что опубликованный общедоступный ключ "Jane Jone's Public Key" реально принадлежит нужной Джейн Джон, а не другому человеку с тем же именем.

    К сожалению, известные сегодня методы асимметричного шифрования достаточно медленны, поэтому наиболее предпочтительна комбинация симметричных и асимметричных методов.

    3.8.6 Комбинированное шифрование

    Комбинированное шифрование реализуется следующим образом:

    ■ Выбирается случайный симметричный ключ.

    ■ По этому ключу шифруются данные.

    ■ Случайный ключ шифруется с помощью общедоступного ключа шифрования получателя и включается в пересылаемое сообщение (это похоже на помещение нового случайного ключа в контейнер, который будет закрыт общедоступным ключом шифрования получателя).

    ■ Получатель расшифровывает временный случайный ключ и далее использует его для расшифровки данных.

    Как показано на рис. 3.13, общедоступный ключ получателя обеспечивает защитную оболочку вокруг случайного ключа. Открыть эту оболочку сможет только получатель сообщения.

    Рис. 3.13. Вложенный в зашифрованное сообщение ключ

    В следующих главах мы рассмотрим реализацию этих методов в приложениях и коммуникациях TCP/IP. Наиболее впечатляющий результат рассмотрен в главе 24, где описываются аутентификация и шифрование на уровне IP как для классической версии 4 протокола IP, так и для новой версии 6 — IP Next Generation (следующее поколение IP).






     

    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх