
- •3.7.0. Понятие. Состав. Протоколы
- •3.7.1. Уровень межсетевого взаимодействия стека протоколов tcp/ip
- •3.7.2. Уровень сетевых интерфейсов стека протоколов tcp/ip
- •3.7.3. Прикладной уровень стека протоколов системы управления ip-cemu
- •3.7.4. Транспортный уровень стека протоколов системы управления ip-cemu
- •3.8. Анализ уязвимостей технологии тср/iр
- •3.8.1. Воздействия нарушителя науровне интерфейсов стека протоколов tcp/ip
- •3.8.2. Воздействия нарушителя на уровне межсетевого взаимодействия стека протоколов tcp/ip
- •3.8.2.1. Воздействия нарушителя, направленные на активизацию «закладок»
- •3.8.2.2. Воздействия нарушителя, направленные на блокирование процесса передачи сообщений пользователя
- •3.8.2.3. Воздействия нарушителя, направленные на уменьшение скорости передачи сообщений пользователя
- •3.8.2.4. Воздействия нарушителя, направленные на нарушение работоспособности цус путём активизации уязвимостей программного обеспечения
- •3.8.2.5. Воздействия нарушителя, направленные на блокирование доступа к цус
- •3.8.3. Воздействия нарушителя на транспортном уровне стека протоколов tcp/ip
- •3.8.3.1. Воздействия нарушителя, направленные на блокирование процесса передачи сообщений, содержащих информацию управления
- •3.8.3.2. Воздействия нарушителя, направленные на уменьшение скорости передачи сообщений, содержащих информацию управления
- •3.8.3.3. Воздействия нарушителя, направленные на выявление уязвимостей программного обеспечения маршрутизаторов
- •3.8.3.4. Воздействия нарушителя, направленные на нарушение работоспособности цус
- •3.8.3.5. Воздействия нарушителя, направленные на блокирование доступа к цус
- •3.8.4. Воздействия нарушителя на прикладном уровне сте¬ка протоколов tcp/ip.
- •3.8.4.1. Воздействия нарушителя, направленные на блокирование процесса передачи сообщений, содержащих информацию управления.
- •3.8.4.2. Воздействия нарушителя, направленные на получение нсд к содержимому базы данных управляющей информации маршрутизаторов
3.7.4. Транспортный уровень стека протоколов системы управления ip-cemu
Транспортный уровень стека протоколов TCP/IP системы управления выполняет функции, обеспечивающие два типа передачи блоков данных, сформированных на основе протоколов прикладного уровня:
передача блоков данных прикладного уровня с предварительным установлением логического соединения. Такой способ передачи реализуется при помощи протокола TCP (Transport Control Protocol), информационной единицей которого является сегмент. Протокол TCP обеспечивает проверку и восстановление правильной последовательности передаваемых сегментов, а также повторную передачу тех сегментов, содержимое которых было искажено;
дейтаграммная передача блоков данных прикладного уровня, реализуемая при помощи протокола UDP (User Datagram Protocol). Информационной единицей протокола UDP является дейтаграмма. Протокол UDP, в отличие от протокола TCP, не обеспечивает проверку правильности последовательности передаваемых дейтаграмм, а также не предусматривает повторную передачу дейтаграмм, содержимое которых было искажено.
Выбор одного из этих двух протоколов осуществляется в соответствии с информацией, сформированной на прикладном уровне стека протоколов TCP/IP. Рассмотрим каждый из протоколов транспортного уровня стека TCP/IP более подробно.
Протокол TCP обеспечивает передачу блоков данных прикладного уровня через создаваемое этим протоколом логическое соединение, которое ликвидируется сразу же после завершения передачи всех блоков данных. Структура TCP-сегмента показана на рис. 3.34.
Порт отправителя (16 бит) |
Порт получателя (16 бит) |
|||
Порядковый номер (32 бита) |
||||
Номер подтверждения (32 бита) |
||||
Смещение данных (4 бита) |
Зарезервировано (6 бит) |
Флаги (6 бит) |
Размер окна (16 бит) |
|
Контрольная сумма (16 бит) |
Указатель на неотложные данные (16 бит) |
|||
Параметры (переменная длина) |
Выравнивание (переменная длина) |
|||
Поле данных (переменная длина) |
Рис. 3.34. Структура ТСР-сегмента
Рассмотрим каждое из полей TCP-сегмента более подробно.
Номера портов отправителя и получателя выступают в роли идентификаторов, позволяющих получателю TCP-сегмента определить, при помощи какого протокола прикладного уровня стека TCP/IP должен быть обработан блок данных, содержащийся в поле данных этого ТСР-сегмента
Для идентификации ТСР-сегмента в созданном логическом соединении используются два 4-байтовых номера, хранящихся в полях «Порядковый номер» (Sequence Number) и «Номер подтверждения» (Acknowledgment Number). Значения этих полей выступают в роли счётчиков TCP-сегментов и используются для проверки и восстановления правильной последовательности передаваемых сегментов.
Поле «Смещение данных» содержит количество четырёхбайтовых слов в заголовке ТСР-сегмента.
Поле «Контрольная сумма» содержит инвертированную сумму всех 16-битных слов в заголовке и поле данных ТСР-сегмента. Значение этого поля используется для выявления случайных ошибок в заголовке и поле данных ТСР-сегмента. При обнаружении ошибки получатель искажённого ТСР-сегмента сформирует запрос на его повторную передачу.
«Поле данных» ТСР-сегмента содержит блоки данных, сформированные при помощи протоколов прикладного уровня стека TCP/IP.
Поле «Флаги» содержит команды, которыми могут обмениваться отправитель и получатель TCP-сегментов в рамках логического соединения. Для формирования определённой команды субъект должен установить в единицу соответствующий бит флагового поля. Протокол TCP предусматривает наличие шести различных команд, описание которых приведено в табл. 3.13.
Таблица 3.13. Команды протокола TCP
Номер бита, отвечающего за команду |
Описание команды |
сокращение, используемое для обозначения команды |
1 |
Команда передачи неотложных данных |
URG |
2 |
Команда подтверждения успешного получения данных |
АСК |
3 |
Команда передачи данных вне очереди |
PSH |
4 |
Команда закрытия логического соединения |
RST |
5 |
Команда синхронизации значений счетчиков ТСР-сегментов |
SYN |
6 |
Команда, сигнализирующая о завершении передаваемых данных |
FIN |
Для того, чтобы в рамках установленного TCP-соединения можно было проверять правильность последовательности передаваемых сегментов, а также организовать повторную передачу тех сегментов, заголовок которых был искажён, отправитель номерует отправляемые им ТСР-сегменты (номера содержатся в поле «Порядковый номер»). Для каждого отправленного ТСР-сегмента отправитель ожидает от получателя TCP-сегмент, подтверждающий успешное получение данных. ТСР-сегмент, подтверждающий успешное получение сегмента с номером n, содержит команду АСК, а поле «Номер подтверждения» заголовка этого сегмента содержит значение n+1. Время ожидания получения подтверждающего ТСР-сегмента ограничено - при отправке каждого ТСР-сегмента на стороне отправителя запускается так называемый таймер, и в случае, если по его истечении отправитель не получит подтверждения, то отосланный TCP-сегмент будет считаться утерянным и отправитель сформирует запрос на его повторную передачу.
При этом при передаче каждого нового TCP-сегмента старый таймер сбрасывается и запускается новый. Для TCP-сегментов, подтверждающих успешный приём данных, характерно свойство кумулятивности. Другими словами, TCP-сегмент, в котором содержится команда АСК и номер подтверждения которого равен п, отражает успешный приём ТСР-сегментов с порядковыми номерами вплоть до п-1. В случае неполучения одного из TCP-сегментов автоматически формируется запрос на повторную передачу путём отправки TCP-сегмента с командой АСК и номером подтверждения того сегмента, который необходимо передать повторно.
Для ускорения процесса передачи данных при помощи ТСР-протокола назначается так называемое окно, которое определяет количество TCP-сегментов, которое может быть отправлено без получения подтверждения. Значение размера окна определяется в соответствующем поле заголовка TCP-сегмента (рис. 3.34).
Далее рассмотрим пример установления TCP-соединения между ЦУС и маршрутизатором, предназначенного для последующей передачи информации управления.
На первом этапе установления соединения ЦУС направляет маршрутизатору TCP-сегмент, который в поле «Флаги» содержит команду SYN, а в поле «Порядковый номер» - начальное значение порядкового номера - ISNa. Таким образом, ЦУС формирует запрос на установление TCP-соединения с маршрутизатором.
ЦУС---------------------------- SYN, ISNa------------------------- Маршрутизатор
В качестве ответа на полученный запрос маршрутизатор посылает в ЦУС TCP-сегмент, в котором содержатся команды SYN и АСК в поле «Флаги», в поле «Номер подтверждения» указывается значение ISNa, увеличенное на единицу, а в поле «Порядковый номер» маршрутизатор определяет начальное значение счётчика своих сегментов - ISNb.
ЦУС < SYN, АСК, ISNb, ISNa+1---------------------Маршрутизатор
Завершая процесс установления соединения, ЦУС посылает маршрутизатору TCP-сегмент, в котором содержится команда АСК, поле «Порядковый номер» содержит значение ISNa+1, а поле «Номер подтверждения» - ISNb+1.
ЦУС АСК, ISNb+1, ISNa+1----------------------> Маршрутизатор
После установления соединения ЦУС и маршрутизатор начинают обмениваться TCP-сегментами, содержащими блоки данных прикладного уровня.
В IP-сетях протокол TCP используется для обработки блоков данных, сформированных на прикладном уровне при помощи протоколов FTP и Telnet.
Как уже отмечалось выше, помимо протокола TCP на транспортном уровне стека TCP/IP также используется протокол UDP, обеспечивающий дейтаграммную передачу блоков данных прикладного уровня. Структура дейтаграммы, сформированной при помощи протокола UDP, показана на рис. 3.35.
Номер порта отправителя (16 бит) |
Номер порта получателя (16 бит) |
Длина (16 бит) |
Контрольная сумма (16 бит) |
Поле данных (переменная длина) |
Рис. 3.35. Структура UDP-дейтаграммы
Номера портов отправителя и получателя, содержащиеся в UDP-дейтаграмме, предназначены для определения протокола прикладного уровня стека TCP/IP, который должен быть использован для обработки блоков данных прикладного уровня, содержащихся в поле данных дейтаграммы.
Поле «Контрольная сумма» представляет собой инвертированную сумму 16-битовых слов заголовка и поля данных дейтаграммы. Это поле используется для обнаружения случайных ошибок в заголовке и поле данных дейтаграммы. В случае обнаружения ошибки в дейтаграмме получатель не формирует запрос на её повторную передачу, а просто отбрасывает искажённую дейтаграмму
Поле «Длина» содержит длину дейтаграммы в байтах, включая заголовок и поле данных. Максимальная длина дейтаграммы может достигать 65535 байт.
«Поле данных» дейтаграммы содержит блоки данных, сформированные при помощи протоколов прикладного уровня. В случае если блок данных прикладного уровня превышает максимально допустимую длину поля данных дейтаграммы, то на прикладном уровне этот блок данных фрагментируется на несколько блоков меньшей длины.
В IP-сети протокол UDP используется для обработки блоков данных, сформированных на прикладном уровне при помощи протокола SNMP.