воскресенье, 11 апреля 2010 г.

ISSP \ Домен 05. Телекоммуникации и сетевая безопасность. Часть 2

В этой части рассмотрены следующие вопросы:
  • TCP/IP
  • TCP
  • "Рукопожатие" TCP
  • Структуры данных
  • Адресация IP
  • IPv6
  • Типы передачи
  • Аналоговая и цифровая
  • Асинхронная и синхронная
  • Однополосная и широкополосная

TCP/IP (Transmission Control Protocol/Internet Protocol) – это набор протоколов, которые управляют перемещением данных от одного устройства к другому. Помимо двух основных одноименных протоколов, TCP/IP также содержит и другие протоколы. IP – это протокол сетевого уровня, который предоставляет сервисы маршрутизации датаграмм. Основной задачей IP является поддержка межсетевой адресации и маршрутизации пакетов. Это протокол, работающий без установления соединения, который оборачивает пришедшие с транспортного уровня данные. Протокол IP адресует датаграммы, используя IP-адреса отправителя и получателя. Протоколы в рамках набора TCP/IP соместно работают для того, чтобы разбить приходящие с прикладного уровня данные на части, которые могут быть переданы по сети. Они работают с другими протоколами для передачи данных компьютеру получателя, а затем, чтобы пересобрать данные в обратном порядке в форму, которая понятна прикладному уровню и которую он может обработать.

IP – это протокол, работающий без установления соединения, который обеспечивает возможности маршрутизации и адресации для каждого пакета данных. Данные, IP и сетевое взаимодействие можно сравнить с взаимодействием между письмом и почтовой системой:
  • Данные = Письмо
  • IP = Адресованный конверт
  • Сеть = Почтовая система
Сообщение – это письмо, которое запечатано в конверт и адресовано IP, сеть и ее службы позволяют отправить сообщение от отправителя получателю, также как почтовая система.
Двумя основными протоколами, работающими на транспортном уровне, являются TCP и UDP. TCP – это надежный протокол с предварительным установлением соединения (connection-oriented protocol). Это означает, что он убеждается в доставке сообщения компьютеру получателя. Если пакет был потерян в процессе передачи, TCP способен выявить это и повторно отправить потерянный или поврежденный пакет. TCP также поддерживает упорядочивание пакетов (гарантируя получение всех и каждого пакета), контроль потока и перегрузок канала связи, выявление и исправление ошибок. UDP, с другой стороны, обеспечивает лучшую скорость и не использует предварительное установление соединений (connectionless protocol). Он не поддерживает упорядочивание пакетов, не выявляет перегрузки канала связи, не требует подтверждения получения каждого пакета получателем.


TCP называют протоколом с предварительным установлением соединения, поскольку он перед реальной отправкой данных выполняет процедуру «рукопожатия» между двумя системами, собирающимися взаимодействовать. После успешного завершения «рукопожатия» устанавливается виртуальное соединение между двумя системами. UDP – это протокол, не испоьзующий предварительное установление соединения, поскольку он не выполняет этих шагов. Вместо этого UDP отправляет сообщения компьютеру получателя без предаварительного контакта с ним, не проверяя, были ли они получены или потеряны. На рисунке 5-10 показаны различия между протоколом с предварительным установлением соединения и протоколом без предварительного установления соединения.

Рисунок 5-10. Функции протокла с установлением соединения по сравнению с функциями протокола без установления соединения

И UDP, и TCP находятся на транспортном уровне, разработчики могут выбирать какой из них использовать в своих приложениях. Часто в качестве транспортного протокола выбирают TCP, т.к. он обеспечивает надежность и контролирует доставку пакетов. Например, SMTP, используемый для передачи сообщений электронной почты, применяет TCP, поскольку ему нужно убедиться, что данные были доставлены. TCP обеспечивает дуплексный режим, надежный механизм связи, а в случае потери или повреждения любого пакета он его отправляет повторно. Однако TCP больше нагружает систему.

Если программист знает, что потеря данных в процессе передачи не нанесет вреда работе приложения, он может выбрать протокол UDP, поскольку он быстрее и требует меньше ресурсов. Например, UDP является лучшим выбором для отправки сервером информации о своем состоянии всем прослушивающим узлам в сети. Узлу не будет нанесено никакого вреда, если по какой-то причине он не получит эту информацию, т.к. она отправляется каждые 30 минут.

UDP и TCP являются транспортными протоколами, которые используются приложениями для обмена данными по сети. Оба они используют порты для взаимодействия с вышестоящими уровнями OSI и разделения различных взаимодействий, происходящих одновременно. Порты также являются механизмом, позволяющим определить к какой службе обращается другой компьютер. При формировании сообщения TCP или UDP, порты отправителя и получателя указываются в заголовке пакета вместе с адресами отправителя и получателя; адрес и номер порта создают сокет. Таким образом, пакеты знают, куда им нужно идти (по адресу) и с какой службой или протоколом взаимодействовать (по номеру порта). IP-адрес работает как дверь к компьютеру, а порт работает как дверь к определенному протоколу или службе. Для правильного взаимодействия пакет должен знать нужные ему двери. На рисунке 5-11 показано, как пакеты взаимодействуют с приложениями и службами через порты.

Рисунок 5-11. Пакеты могут взаимодействовать с протоколами вышестоящего уровня и службами посредством портов
Общеизвестные порты. Номера портов до 1023 (0-1023) называются общеизвестными портами (следует отметить, что порты 0-1023 могут использоваться только привилегированными системными процессами или root'ом). Почти на любом компьютере в мире к одним и тем же портам в этом диапазоне «привязаны» одни и те же протоколы. Поскольку они общеизвестны, все используют этот стандартный подход. Это означает, что почти на каждом компьютере протокол SMTP работает на 25-м порту, FTP – на 21-м, а 80-й порт выделен для HTTP и т.д. Эта «привязка» портов с номерами от 0 до 1023 к определенным протоколам является стандартом (де факто), который мы все используем. Однако, поскольку это не является строго обязательным стандартом, администраторы при необходимости могут изменить «привязку» протоколов к портам.

Ниже приведены некоторые наиболее часто используемые протоколы и порты, к которым они «привязаны»:
  • Telnet – порт 23
  • SMTP – порт 25
  • HTTP – порт 80
  • SNMP – порты 161 и 162
  • FTP – порты 21 и 20

Различие между TCP и UDP можно увидеть также в формате их сообщений. Поскольку TCP предоставляет больше сервисов, чем UDP, он должен включать больше информации в заголовки своих пакетов, как это показано на рисунке 5-12. В таблице 5-1 приведены основные различия между TCP и UDP.

Рисунок 5-12. TCP передает больше информации в заголовках своих пакетов, поскольку он предоставляет больше сервисов, чем UDP

Таблица 5-1. Основные различия между TCP и UDP


TCP должен установить виртуальное соединение между двумя хостами перед отправкой данных. Это означает, что два хоста должны договориться об определенных параметрах, потоке данных, кадрировании, выявлению ошибок и других опциях. Эти параметры настраиваются на этапе «рукопожатия» (handshaking), показанного на на рисунке 5-13.

Рисунок 5-13. Трехступенчатый процесс «рукопожатия» TCP

Инициирующий взаимодействие хост отправляет получателю пакет синхронизации (SYN – synchronous packet). Получатель отвечает на него, отправляя пакет SYN/ACK. Этот означает что-то типа «я получил твой запрос и готов к взаимодействию с тобой». Хост отправителя отвечает на это пакетом подтверждения (ACK – acknowledgment packet), что означает «я получил твое подтверждение, давай начнем передачу данных». На этом процедура «рукопожатия» завершается, виртуальное соединение считается установленным и начинается реальная передача данных. Установленное соединение работает в дуплексном режиме, т.е. возможна одновременная передача данных в обоих направлениях.

Структуры данных

Как было сказано ранее, сообщение обычно формируется программным обеспечением и передается им на прикладной уровень. Затем оно отправляется вниз по стеку протоколов. Каждый протокол на каждом уровне добавляет собственную информацию к сообщению и передает его вниз на следующий уровень. Эта концепция обычно называется инкапсуляцией. Сообщение, перемещаясь вниз по стеку, проходит своего рода эволюцию, каждый этап которой имеет свое название, указывающее, что на нем происходит. Когда приложение форматирует данные для отправки по сети, эти данные называют потоком (stream), либо сообщением (message). Они отправляются на транспортный уровень, где TCP колдует над данными. Там этот набор данных превращается в сегмент (segment). Сегмент отправляется на сетевой уровень. Сетевой уровень добавляет информацию для маршрутизации и адресации, после чего набор данных называется датаграммой (datagram). Сетевой уровень передает датаграмму на канальный уровень, который «обрамляет» ее заголовком (header) и окончанием (trailer). При этом датаграмма превращается в кадр (frame). Рисунок 5-14 иллюстрирует этот процесс.

Рисунок 5-14. Данные проходят несколько этапов эволюции, проходя по уровням сетевого стека


Каждый узел в сети должен иметь уникальный IP-адрес. В настоящее время в большинстве случаев используется IP версии 4 (IPv4), но количество устройств в сети уже настолько возросло, что свободные адреса стали стремительно заканчиваться. Чтобы избежать этого, был создан IP версии 6 (IPv6). Кроме того, IPv6 имеет множество встроенных функций безопасности, которых нет в IPv4.

IPv4 использует 32-битную адресацию, а IPv6 – 128-битную. Поэтому IPv6 предоставляет гораздо больше адресов. Каждый IP-адрес состоит из части, относящейся непосредственно к хосту, и части, относящейся к сети. Адреса группируются в классы, а затем в подсети. Маски подсетей делят адреса на группы, которые определяют подсети в сети. Классы адресов IPv4 приведены ниже:


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

Подсеть (subnet) создается из хостовой части IP-адреса для присвоения «под» сети. Это позволяет нам дополнительно разбить хостовую часть адреса на две или более логические группы, как показано на Рисунке 5-15. Сеть может быть логически разделена для упрощения администрирования, повышения производительности сети, а также для безопасности. Разделение компьютеров (узлов) по различным подсетям позволит лучше управлять ими. Маска подсети служит неким барьером, на логическом уровне разделяющим маленькие сети внутри большой сети.

Рисунок 5-15. Подсети создают логические сегменты

Разделение на подсети (subnetting) позволяет разделять широкие диапазоны IP-адресов на более узкие, логические и четкие сетевые сегменты. Рассмотрим компанию с несколькими подразделениями, такими как ИТ, бухгалтерия, отдел кадров и т.д. Создание подсетей для каждого подразделения разделяет сеть на логические части, что позволяет направлять трафик напрямую получателям, не распространяя данные по всей сети. Это резко снижает загруженность сети, уменьшая вероятность ее перегрузки, в частности, большим количеством широковещательных (broadcast) пакетов. Реализация политик безопасности сети также гораздо более эффективна для логически категорированных подсетей с отдельными периметрами, чем для большой, беспорядочной и сложной сети.

Разделение на подсети особенно выгодно для поддержания небольшого размера таблиц маршрутизации, поскольку при этом внешние маршрутизаторы могут напрямую направлять данные в реальный сетевой сегмент, не беспокоясь о внутренней архитектуре сети и доставке данных к отдельным хостам. Эта работа будет выполняться внутренними маршрутизаторами, которые могут определять конкретные хосты в разделенной на подсети среде, освобождая внешние маршрутизаторы от хлопот, связанных с необходимостью анализа всех 32 бит IP-адреса, – в такой среде внешним маршрутизаторам достаточно смотреть только на биты маски, указывающие на подсеть.
ПРИМЕЧАНИЕ. Чтобы полностью понять вопрос разделения сети на подсети, вам нужно детально разобраться с тем, как работают IP-адреса на двоичном уровне. Более детальную информацию об этом вы можете получить на странице http://compnetworking.about.com/od/workingwithipaddresses/a/subnetmask.htm
Использование традиционной маски подсети означает, что используются классические или классифицированные IP-адреса. Если компани нужно создать подсети, не соответствующуе этим традиционным размерам, она может использовать неклассифицированные IP-адреса. Это просто означает, что будет использоваться другая маска подсети для разделения в IP-адресе частей, относящихся к хосту и к сети. Когда стало ясно, что доступные адреса в сети стремительно заканчиваются, поскольку к сети Интернет подключается все больше и больше людей и компаний, была создана безклассовая междоменная маршрутизация (CIDR – classless interdomain routing). Диапазон адресов Класса В обычно слишком велик для большинства компаний, а Класс С, наоборот, слишком мал. В таких случаях CIDR обеспечивает гибкость, позволяя при необходимости увеличить или уменьшить размеры классов.
ПРИМЕЧАНИЕ. Для лучшего понимания работы CIDR посетите страницу www.tcpipguide.com/free/t_IPClasslessAddressingClasslessInterDomainRoutingCI.htm
Хотя каждый узел имеет свой IP-адрес, люди чаще используют имя хоста, чем его адрес. Имена хостов (например, www.logicalsecurity.com) проще запомнить, чем их IP-адреса, такие как 10.13.84.4. Однако использование этих двух систем обозначения требует установления связи между ними (между именем хоста и его адресом), поскольку компьютеры понимают только цифровые схемы. Этот процесс разбирается в разделе «DNS».
ПРИМЕЧАНИЕ. IP обеспечивает адресацию, фрагментацию и таймауты пакетов. Чтобы гарантировать, что пакеты не будут ходить по сети вечно, IP использует значение TTL (время жизни пакета), которое уменьшается каждый раз, когда сообщение проходит через маршрутизатор. IP также может предоствалять функциональность ToS (Type of Service – тип обслуживания), которая обеспечивает приоритезацию пакетов чувствительных к задержкам сервисов.

IPv6, также известный как IP следующего поколения (IPng), не только имеет более широкое адресное пространство, но и множество возможностей, которых нет в IPv4. Хотя все эти новые возможности IPv6 выходят за рамки этой книги, мы немного поговорим о некоторых из них, т.к. за IPv6 будущее. IPv6 позволяет использовать ограничивать области адресов (scoped addresses), что дает администратору возможность ограничить определенные адреса для файловых серверов или общих принтеров, например. В IPv6 IPSec встроен в стек протоколов, что обеспечивает безопасную сквозную передачу и аутентификацию. Этот протокол предоставляет возможность автоматической конфигурации, что сильно упрощает администрирование и не требует использования NAT для расширения адресного пространства.

NAT (network address translation – трансляция сетевых адресов) был разработан только потому, что в IPv4 свободные адреса быстро заканчивались. Хотя технология NAT очень полезна, она является причиной дополнительных издержек и многих проблем передачи данных, т.к. она ломает клиент-серверную модель, используемую многими современными приложениями. IPv6 имеет большую гибкость и лучшие возможности маршрутизации, позволяя устанавливать значения приоритетов QoS (Quality of Service – качество обслуживания) для чувствительных к задержкам сервисов. Однако, хотя IPv6 имеет значительно больше преимуществ, чем IPv4, он пока не применяется массово, его принятие индустрией идет очень медленно, что связано в основном с вопросами взаимодействия между IPv4 и IPv6, а также тем, что разработка протокола NAT существенно снизила скорость уменьшения количества свободных адресов.
ПРИМЕЧАНИЕ. NAT рассматривается далее, в разделе «NAT».
В спецификации IPv6 (см. RFC 2460) приведены отличия и преимущества IPv6 над IPv4. Вот некоторые из них:
  • В IPv6 увеличен размер IP-адреса с 32 бит до 128 бит для поддержки большего количества уровней иерархии адресов, обеспечения гораздо большего количества адресов для узлов и упрощенной автоконфигурации адресов.
  • Масштабируемость многоадресной маршрутизации (multicast routing) улучшена за счет добавления поля «Область» (scope) для групповых адресов (multicast addresses). Также, определены новые типы адресов, названные альтернативными адресами (anycast address), которые используются для отправки пакетов любому узлу из группы узлов.
  • Некоторые поля заголовка IPv4 удалены или сделаны опциональными для снижения общих затрат на обработку пакетов и увеличения полосы пропускания за счет уменьшения размера заголовка пакета IPv6. Это показано на Рисунке 5-16.

Рисунок 5-16. Заголовки IPv4 и IPv6
  • Изменения в способе кодирования информации заголовка пакета IP обеспечивают более эффективную пересылку, менее жесткие ограничения на длину опций, значительно повышают гибкость для введения в будущем новых опций.
  • Добавлены новые возможности, позволившие маркировать пакеты, для которых отправителем запрошена специальная обработка, выделяя их из общего потока трафика. Это может быть необходимо, например, для установки нестандартного QoS или для сервиса реального времени.
  • В IPv6 также предусмотрены расширения для поддержки аутентификации, обеспечения целостности данных и (опционально) конфиденциальности данных.
IPv4 не обеспечивает таких аспектов безопасности, как аутентификация, целостность и конфиденциальность данных, но как это делает IPv6? Все дело в использовании IP security (IPSec). IPSec – это набор протоколов, который защищает данные, передающиеся по IP-сетям. Хотя использование IPSec доступно и для IPv4, он не интегрирован полностью в сетевой стек IP так, как это сделано в IPv6. Более подробно IPSec рассматривается в Домене 06.


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


Аналоговая передача сигналов – это постоянно изменяющаяся электромагнитная волна, которая может распространяться по воздуху, воде, витой паре, коаксиальному или оптоволоконому кабелю. С помощью процесса модуляции, данные объединяются с сигналом несущей, имеющим определенную частоту. Модуляция сигнала различается по амплитуде (высота сигнала) и частоте (число волн в определенный период времени), как показано на Рисунке 5-17. Это означает, что данные размещаются на «спине» сигнала несущей частоты. Сигналы несущей частоты предоставляют многие радиостанции, частотные диапазоны и коммуникационные каналы. Каждая радиостанция имеет определенный сигнал несущей и частоту, используемую ей для передачи. Поэтому, например, три различные радиостанции в городе могут предоставлять три различных радиоканала.

Рисунок 5-17. Аналоговые сигналы измеряются по амплитуде и частоте, тогда как цифровые сигналы представляют собой двоичные цифры в виде электрических импульсов

Внутри компьютеров используются цифровые сигналы для передачи данных от одного компонента к другому. Когда компьютер подключается к телефонной линии посредством коммутируемого (dial-up) соединения, модем (модулятор/демодулятор) должен преобразовать эти цифровые данные в аналоговый сигнал, используемый в телефонной линии. Фактически модем модулирует цифровые данные в аналоговый сигнал. Когда данные получены компьютером получателя, он должен преобразовать их обратно в цифровую форму, которую он понимает. Цифровые сигналы представляют собой двоичные цифры в виде электрических импульсов. Каждый отдельный импульс – это элемент сигнала, представляющий собой 1 или 0. Полоса пропускания (bandwidth) при цифровой передаче – это число электрических импульсов, которые могут быть переданы через соединение в секунду, а эти электрические импульсы передают отдельные биты информации.

Цифровые сигналы более надежны, чем аналоговые, при передаче на большое расстояние и обеспечивают более четкий и эффективный метод передачи сигнала, т.к. гораздо проще сравнить наличие напряжения (1) с его отсутствием (0), чем сравнивать волны для интерпретации аналогового сигнала. Цифровой сигнал проще очистить от шумов и отраженных сигналов. Аналоговый сигнал гораздо сложнее отделить от фонового шума, поскольку амплитуда и частота волн постепенно теряют форму. Это связано с тем, что аналоговый сигнал может иметь бесконечное число значений и состояний, тогда как цифровой сигнал находится в дискретных состояниях. Цифровой сигнал – это волны прямоугольной формы, которые не имеют множества возможных значений, различной амплитуды и частоты как в аналоговом сигнале. Цифровые системы более совершенны, чем аналоговые, они могут передавать больше телефонных звонков и данных по одной и той же линии, обеспечивая при этом лучшее качество при передаче на большие расстояния.

Раньше передача голоса и данных осуществлялась в основном посредством аналоговых сигналов по телекоммуникационным каналам, но сейчас большинство коммуникаций оцифровано. Телефонные компании оцифровывают телефонные звонки, многие корпоративные телефонные системы являются цифровыми. Радиоволны продолжают использоваться в радиостанциях, радиолюбительской связи, частных домах и центральных офисах телефонных компаний. Эта часть телекоммуникационных сетей называется абонентской линией (local loop) или «последней милей» (last mile).


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

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

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

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

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


При однополосной (baseband) передаче весь коммуникационный канал используется для одной этой передачи, тогда как при широкополосной (broadband) передаче коммуникационный канал делится на отдельные независимые каналы, которые могут передавать одновременно различные типы данных. Однополосная передача позволяет передавать только один сигнал в единицу времени, тогда как широкополосная – много сигналов по различным каналам. Например, коаксиальный телевизионный кабель (CATV – Coaxial cable TV) использует широкополосную технологию, позволяющую передавать множество телевизионных каналов по одному проводу. Причем посредством того же кабеля можно дополнительно предоставить доступ в Интернет домашним пользователям, но эти данные будут передаваться на другой частоте по сравнению с телевизионными каналами. Ethernet – это однополосная технология, в которой весь провод используется для передачи только одного канала.

Широкополосную передачу используют и многие другие технологии, но общим правилом для них является обеспечение передачи данных на скорости выше 56 кбит/с, которую обеспечивает стандартный модем, работающий на обычном коммутируемом соединении. Широкополосные коммуникации предоставляют каналы для передачи данных и могут использоваться множеством пользователей. Типами широкополосных систем связи, доступных сегодня, являются выделенные линии связи (T1, T3), широкополосный ISDN, ATM, DSL (Digital Subscriber Line - цифровая абонентская линия), широкополосные беспроводные каналы и CATV.

Комментариев нет: