Тема № 5 . Стек протоколов TCP/IP
- Описание протокола IP дано в документе RFC 791
- Он является базовым протоколом всего стека TCP/IP и отвечает за передачу информации по сети
- Информация передается блоками, которые называются дейтаграммами
- IP является протоколом сетевого уровня
- При этом для каждой среды передачи данных (например, Ethernet) определен способ инкапсуляции дейтаграмм
Протокол IP
- Маршрутизаторы пересылают инкапсулированные дейтаграммы по различным сетям, используя объединение IP-сетей, по которому каждая рабочая станция может поддерживать связь по протоколу IP с любой другой рабочей станцией
- Услуги IP сводятся к негарантированной доставке дейтаграмм, то есть IP не исключает потери дейтаграмм, их доставку с ошибками, а также дублирование и нарушение порядка следования дейтаграмм, заданного при их отправлении
Протокол IP
- Протокол IP выполняет фрагментацию и сборку дейтаграмм, если принятый размер кадров в данном участке распределенной сети отличается от размера исходных дейтаграмм
- IP получает информацию для передачи от протоколов более высокого уровня типа TCP и UDP
- После получения информации IP передает дейтаграммы через распределенную сеть, используя сервисы LAN
Протокол IP
- Дейтаграмма состоит из заголовка и поля данных, которое следует сразу за заголовком
- Длина поля данных определяется полем «Общая длина» в заголовке
- На рисунке приведен формат заголовка IP-дейтаграммы
Протокол IP
Протокол IP
- Поле «Номер версии» указывает на версию используемого протокола IP
- Сейчас распространена 4 версия, но осуществляется переход на 6 версию
- Связь между абонентами гарантируется если все они работают с одной версией протокола
- Перед обработкой дейтаграммы это поле проверяется
- Если используется версия 4, будут отбрасываться дейтаграммы с версией 6
Протокол IP
- Поле «Длина заголовка» определяет длину заголовка в 32-битных словах
- Минимальный размер – 5 слов
- При увеличении объема служебной информации эта длина может быть увеличена за счет поля «Опции»
Протокол IP
Протокол IP
- Бит 4 определяет пропускную способность (нормальная или высокая)
- Бит 5 определяет надежность доставки
- 6 и 7 биты зарезервированы
- Биты 3..7 используются протоколами маршрутизации OSPF и BGP, которые отвечают за вычисление наилучшего маршрута к получателю, основываясь на понятии «стоимость пути»
- Ею может быть скорость, надежность и т.д.
Протокол IP
- При определенных условиях дейтаграммы могут попасть в замкнутый логический контур, образованный некоторой группой маршрутизаторов
- Чтобы избавить сеть от дейтаграмм, циркулирующих в таких контурах слишком долго, протоколом IP устанавливается предельный срок пребывания дейтаграммы в сети
- Он задается в поле «Время жизни» - TTL
- Его содержимое уменьшается на единицу при прохождении дейтаграммы через маршрутизатор
Протокол IP
- При обнулении поля TTL дейтаграмма отбрасывается
- В спецификации протокола TCP предполагается, что максимальное время жизни дейтаграммы в сеть составляет 2 минуты
- Поле «Идентификатор» используется для распознавания дейтаграмм, образованных в результате фрагментации
- Все фрагменты фрагментированного пакета должны иметь одинаковое значение этого поля
Протокол IP
Протокол IP
- Передача дейтаграммы в кадре называется инкапсуляцией
- Дейтаграмма выглядит для нижних уровней так же, как и любое другое сообщение в сети
- Сетевое оборудование не работает с дейтаграммами, поэтому каждая из них является частью области данных кадра
- На рисунке инкапсуляция данных в кадр (см. след. слайд)
Протокол IP
- Функции фрагментации и сборки также возложены на протокол IP
- Фрагментация – разделение большой дейтаграммы на несколько небольших частей
- В большинстве сетей есть ограничения на максимальный размер кадра
- Это максимальная единица передачи (MTU)
- В Ethernet данная величина составляет 1500 байт, а в сетях FDDI – 4096 байт
Протокол IP
- Когда маршрутизатор переправляет дейтаграмму из одной сети в другую, может оказаться, что ее размер является недопустимым в новой сети
- В спецификации протокола предусмотрено следующее решение этой проблемы:
- Маршрутизатор может разбить дейтаграмму на более мелкие фрагменты, приемлемые для выходной среды, а в пункте назначения эти фрагменты будут вновь объединены в дейтаграмму исходного вида
Протокол IP
- Формируемые маршрутизатором фрагменты идентифицируются смещением относительно начала исходной дейтаграммы
- Дейтаграмма идентифицируется по отправителю, пункту назначения, типу протокола высокого уровня и 16-разрядному полю «Идентификатор»
- В совокупности это должно образовывать уникальную комбинацию
Протокол IP
Протокол IP
Протокол IP
- Проблема эффективного использования битов идентификатора оказалась практически разрешенной с появлением метода MTU Discovery , позволяющего определить значения MTU на всем пути к пункту назначения
- Согласно этому методу конечная система может устанавливать в заголовке дейтаграммы бит DF ( не фрагментировать ), запрещающий фрагментацию, так как конечные системы могут заранее узнать о том, что отправляемые ими дейтаграммы имеют чрезмерную длину
Протокол IP
- Источник, устанавливающий бит DF, теперь может не опасаться того, что две дейтаграммы перепутаются
- Однако в сетевой среде, где метод MTU Discovery не применяется, необходимо принимать дополнительные меры для предотвращения подобной ситуации
Протокол IP
- Фрагментация и сборка производятся автоматически, не требуя от отправителя специальных действий
- Каждая фрагментированная часть исходной дейтаграммы имеет тот же формат
- Использование фрагментации повышает вероятность потери исходной дейтаграммы, так как потеря даже одного фрагмента приводит к потере всей дейтаграммы
- Сборка дейтаграммы осуществляется на месте назначения
- Такой метод позволяет маршрутизировать фрагменты независимо
Протокол IP
Протокол IP
Протокол IP
- Поля «Адрес отправителя» и «Адрес получателя» имеют одинаковые длину и структуру и содержат 32-битные IP-адреса отправителя и получателя
- Поле «Опции» необязательно, используется при настройке сети
- В поле могут быть указаны точный маршрут прохождения дейтаграммы в распределенной сети, данные о безопасности, различные временные отметки и т.д.
- Поле не имеет фиксированной длины, поэтому для выравнивания заголовка по 32-битной границе предусмотрено поле «Выравнивание»
- Оно осуществляется нулями
Протокол IP
Протокол IP
- Байт кода опции делится на три поля: «Копировать», «Класс опции» и «Номер опции»
- Флаг «Копировать» управляет тем, как маршрутизаторы учитывают опции при фрагментации дейтаграммы
- Если бит включен, опции должны копироваться во все фрагменты дейтаграммы
- Если выключен – опцию нужно скопировать только в первый фрагмент
Протокол IP
Протокол IP
- ы
Протокол IP
№ опции класса 0
Длина
0
Пояснение
-
1
-
Конец списка опций. Используется, если опция не заканчивается в конце заголовка
2
3
Нет операций. Используется для выравнивания по 32-битной границе в списке опций
11
Переменная
Безопасность
7
Используется для маршрутизации дейтаграммы с учетом информации, предоставленной отправителем
Переменная
8
4
Запись маршрута
9
Идентификатор маршрута. Используется для идентификации потока
Переменная
Другой
-
Используется для маршрутизации дейтаграммы с учетом информации, предоставленной отправителем
Не используется
Протокол ARP
- Протокол разрешения адреса ARP описан в документе RFC 826
- В большинстве случаев прикладные программы используют IP-адреса, а устройства в сети имеют физические адреса
- Так как схемы физической адресации устройств весьма разнообразны необходим специальный, универсальный протокол
- Разрешение адресов может быть выполнено путем прямого отображения либо с помощью динамического связывания
- ARP использует последний способ
Протокол ARP
- Протокол состоит из двух частей
- Одна часть протокола определяет ФА при посылке дейтаграммы, другая отвечает на запросы от других устройств в сети
- ARP предполагает, что каждое устройство знает как свой IP-адрес, так и ФА
- Для уменьшения количества посылаемых ARP запросов, каждое сетевое устройство, использующее протокол ARP, должно иметь специальную буферную память, в которой хранятся пары (IP, ФА) устройств в сети
Протокол ARP
- Когда устройство получает ARP-ответ, оно сохраняет в памяти соответствующую пару
- Если адрес есть в списке пар, то нет необходимости посылать IP-запрос
- Эта буферная память называется ARP-таблицей
- В ARP-таблице могут быть как статические, так и динамические записи
- Таблица всегда содержит запись с физическим широковещательным адресом ( 0x FFFFFFFFFFFF) для LAN
- Эта запись позволяет устройству принимать широковещательные ARP-запросы
Протокол ARP
- Каждая запись в ARP-таблице имеет свое время жизни (обычно 10 минут)
- Если запись не используется в первые две минуты, она удаляется
- Если используется – она «живет» 10 минут
- В некоторых реализациях протокола ARP новый таймер устанавливается после каждого использования записи в таблице
- Сообщения протокола ARP при передаче по сети инкапсулируются в поле данных кадра
Протокол ARP
- Они не содержат IP-заголовка и не имеют фиксированного формата своего заголовка
- Протокол ARP разработан для использования при разрешении адресов в различных сетях
- Фактически его можно использовать с произвольными ФА и сетевыми протоколами
- На следующем слайде показан формат сообщения ARP
Протокол ARP
Протокол ARP
Протокол ARP
- В поле «Тип сети» для сетей Ethernet указывается 2
- Для других типов значения этого поля определено соответствующими документами RFC
- Поле «Тип протокола» позволяет использовать сообщения ARP не только для протокола IP, но и других сетевых протоколов
- Для IP значение этого поля составляет 0x 0800
- В поле «Тип операции» для ARP-запросов указывается 1, а для ARP-ответов – 2
Протокол ARP
- Поля «Длина сетевого адреса» позволяют использовать протокол ARP в любых сетях, так как длину адресов можно задать
- Протокол ARP работает по следующей схеме:
- Устройство, отправляющее ARP-запрос, заполняет в сообщении все поля, кроме искомого аппаратного адреса Затем оно рассылает запросы по всей подсети Поле заполняется устройствами, опознавшими свой IP-адрес
- Устройство, отправляющее ARP-запрос, заполняет в сообщении все поля, кроме искомого аппаратного адреса
- Затем оно рассылает запросы по всей подсети
- Поле заполняется устройствами, опознавшими свой IP-адрес
Протокол ICMP
- Протокол обмена управляющими сообщениями ICMP описан в документе RFC 792
- Этот протокол позволяет маршрутизатору сообщать станции об ошибках и нештатных ситуациях при передаче дейтаграммы от этой станции
- Он должен обязательно включаться во все реализации стека TCP/ IP как неотъемлемая часть протокола IP
Протокол ICMP
- Сообщения ICMP передаются по сети в поле данных IP-дейтаграммы
- Конечным получателем является модуль ICMP, входящий в состав ПО поддержки IP
- Если модуль определит, что ошибка вызвана протоколом высокого уровня или приложением, то об этом сообщается соответствующему модулю, который связан с источником ошибки
- Могут посылаться два типа сообщений – управляющие и об ошибках
- Они посылаются как на маршрутизаторы, так и на конечные станции
Протокол ICMP
- Протокола ICMP служит для обнаружения, но не для исправления ошибок
- Отправитель должен сам определить источник и предпринять меры по устранению ошибок
- Для транспортировки сообщений используется протокол IP, так как для достижения конечной станции сообщение может пересечь несколько физических сетей
- Дейтаграммы, несущие сообщение ICMP, маршрутизируются точно так же, как и дейтаграммы с информацией для пользователей
- Сообщения могут быть потеряны или удалены, и кроме того они занимают определенную полосу пропускания сети
Протокол ICMP
Протокол ICMP
- Сообщения ICMP начинаются с трех одинаковых полей:
- «Тип» (8 бит), определяет смысл сообщения и его формат; «Код» (8 бит); «Контрольная сумма» (16 бит).
- «Тип» (8 бит), определяет смысл сообщения и его формат;
- «Код» (8 бит);
- «Контрольная сумма» (16 бит).
- Сообщения ICMP всегда включают заголовок и первые 64 бита данных дейтаграммы, вызвавшей ошибку
Протокол ICMP
Протокол ICMP
- Сообщение «Запрос маски адреса» (17) необходимо для интерпретации адреса, т.е. какие биты в 32-разрядном адресе соответствуют номеру сети, а какие – номеру устройства
- В ответ на сообщение передается 32-битная величина, называемая маской подсети
- Ответ передается через сообщение «Передача маски адреса» (18)
- Запрос может посылаться напрямую, если известен адрес маршрутизатора, или широковещательно
- На следующем слайде показан формат сообщений запроса маски адреса и ответ на него
Протокол ICMP
- Поле «Тип» в сообщении указывает, является сообщение запросом или ответом
- «Идентификатор» и «Номер» используются источником для установления связи между ответами и запросами
- В «Маске адреса» - ответ на запрос
Протокол UDP
- Протокол пользовательских дейтаграмм UDP описан в документе RFC 768
- Протокол разработан для представления приложениям транспортных услуг UDP
- Как и IP, обеспечивает негарантированную доставку дейтаграмм получателю и не поддерживает установку соединений
- В стеке TCP/IP он располагается над IP
Протокол UDP
- протокольные порты
Протокол UDP
- Когда станция получает дейтаграмму с ее IP-адресом, она направляет эту дейтаграмму конкретному приложению, используя номер протокольного порта, который определяется во время установки сеанса связи
- Протокольные порты UDP отличаются от портов TCP
Протокол UDP
- Назначением портов и обеспечением параллельного доступа к ним занимается сетевая ОС
- Протокольный порт – это натуральное число
- Для связи с протокольным портом на другой рабочей станции, отправитель должен знать IP-адрес получателя и номер порта на этой станции
- Каждое сообщение содержит также номер протокольного порта отправителя
- Приложение, получающее сообщения, может напрямую ответить отправителю
Протокол UDP
- Каждое сообщение протокола UDP называется пользовательской дейтаграммой
- Она состоит из двух частей: заголовка и области данных
- Заголовок содержит четыре 16-битных поля, которые определяют протокольные порты отправителя и получателя, длину сообщения и контрольную сумму (см. след. слайд)
Протокол UDP
Протокол UDP
Протокол UDP
- Остальные порты могут назначаться динамически
- Сетевое ПО назначает протокольные порты не контролируются IANA и могут свободно использоваться процессами
- Номера этих протокольных портов лежат в диапазоне от 1024 до 65535
- Протокольные порты в диапазоне от 1024 до 5000 называется временными ( ephemeral )
Протокол RTP
- Требование поддержки нескольких типов трафика с различными требованиями к качеству обслуживания является одним из самых актуальных
- Эту задачу призван решить транспортный протокол реального времени RTP, который является стандартным для передачи данных типа голоса или видео по сети в реальном времени
Протокол RTP
- Он гарантирует доставку данных одному или нескольким адресатам с задержкой не превышающей установленной значение
- Для этого в заголовке протокола предусмотрены временн ы е отметки, необходимые для успешного восстановления аудио- и видеоинформации, а также данные о способе кодирования информации
Протокол RTP
- В стеке протоколов TCP/IP протокол TCP ( Transmission Control Protocol ) работает так же, как и протокол UDP, на транспортном уровне
- Он обеспечивает надежную транспортировку данных между прикладными процессами путем установления логического соединения
- Единицей данных протокола TCP является сегмент
- сегмент
- В протоколе TCP предусмотрен случай, когда приложение обращается с запросом о срочной передаче данных (бит PSH в запросе установлен в 1)
- В этом случае протокол TCP, не ожидая заполнения буфера до уровня размера сегмента, немедленно передает указанные данные в сеть
- О таких данных говорят, что они передаются вне потока ( out of band )
- Не все сегменты, посланные через соединение, будут одинакового размера
- Оба участника соединения должны договориться о максимальном размере сегмента, который они будут использовать
- Этот размер выбирается таким образом, чтобы при упаковке сегмента в IP-пакет он помещался туда целиком, то есть максимальный размер сегмента не должен превосходить максимального размера поля данных IP-пакета
- В противном случае пришлось бы выполнять фрагментацию – разделить сегмент на несколько частей, чтобы он вместился в IP-пакет
- В протоколе TCP для связи с приложениями используются порты
- Имеются стандартные, зарезервированные номера (например, номер 21 закреплен за сервисом FTP), а менее известные приложения пользуются произвольно выбранными локальными номерами
- Для организации надежной передачи данных предусматривается установление логического соединения между двумя прикладными процессами
- оконечных точек
- Установление соединения выполняется в следующей последовательности:
- При установлении соединения одна из сторон является инициатором. Он посылает запрос к протоколу TCP на открытие порта для передачи ( active open ) После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение
- При установлении соединения одна из сторон является инициатором. Он посылает запрос к протоколу TCP на открытие порта для передачи ( active open )
- После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение
- Установление соединения выполняется в следующей последовательности (продолжение):
- Протокол TCP на приемной стороне открывает порт для приема данных ( passive open ) и возвращает квитанцию, подтверждающую прием запроса Для того чтобы передача могла вестись в обе стороны, протокол на приемной стороне также открывает порт для передачи ( active port ) и также передает запрос к противоположной стороне
- Протокол TCP на приемной стороне открывает порт для приема данных ( passive open ) и возвращает квитанцию, подтверждающую прием запроса
- Для того чтобы передача могла вестись в обе стороны, протокол на приемной стороне также открывает порт для передачи ( active port ) и также передает запрос к противоположной стороне
- Установление соединения выполняется в следующей последовательности (окончание):
- Сторона-инициатор открывает порт для приема и возвращает квитанцию. Соединение считается установленным.
- Сторона-инициатор открывает порт для приема и возвращает квитанцию. Соединение считается установленным.
- Далее происходит обмен данными в рамках данного соединения
- Квитирование
- Для каждого кадра отправитель ожидает от приемника так называемую положительную квитанцию – служебное сообщение, извещающее о том, что исходный кадр был получен, и данные в нем оказались корректными
- Время этого ожидания ограничено: при отправке каждого кадра передатчик запускает таймер, и если по его истечении положительная квитанция на получена, то кадр считается утерянным
- В некоторых протоколах приемник в случае получения кадра с искаженными данными должен отправить отрицательную квитанцию – явное указание того, что данный кадр нужно передать повторно
- Во втором методе для повышения коэффициента использования линии источнику разрешается передать некоторое количество кадров в непрерывном режиме, то есть в максимально возможном для источника темпе, без получения на эти кадры ответных квитанций
- Количество кадров, которые разрешается передавать таким образом - размер окна
- Рисунок иллюстрирует данный метод для размера окна в W кадров
- W
- W-1
- Если поток квитанций поступает более-менее регулярно, в пределах допуска в W кадров, то скорость обмена достигает максимально возможной величины для данного канала и принятого протокола
- Этот алгоритм называют алгоритмом плавающего окна
- При каждом получении квитанции окно перемещается («плывет»), захватывая все новые и новые данные, которые разрешается передавать без подтверждения с помощью квитанции
- Квитанция посылается только в случае правильного приема данных, т.е. отрицательные квитанции не посылаются
- Отсутствие квитанции означает либо прием искаженного сегмента, либо потерю сегмента, либо потерю квитанции
- В качестве квитанции получатель сегмента отсылает ответное сообщение (сегмент), в которое помещает число, на единицу превышающее максимальный номер байта в полученном сегменте
- W N N+W
- Выбор времени ожидания (тайм-аута) очередной квитанции является важной задачей, результат решения которой влияет на производительность протокола TCP
- Тайм-аут не должен быть слишком коротким, чтобы по возможности исключить избыточные повторные передачи, которые снижают полезную пропускную способность системы
- Но он не должен быть и слишком большим, чтобы избежать длительных простоев, связанных с ожиданием несуществующей или «заблудившейся» квитанции
- При выборе величины тайм-аута должны учитываться скорость и надежность физических линий связи, их протяженность и многие другие подобные факторы
- В протоколе TCP тайм-аут определяется с помощью достаточно сложного адаптивного алгоритма, идея которого состоит в следующем
- При каждой передаче засекается время от момента отправки сегмента до прихода квитанции о его приеме ( время оборота RTT)
- RTT(i) i ARRT(K) K
- Здесь SRTT(K) – сглаженное оценочное время обращения , α – фактор сглаживания , причем 0
- Таймер повторной передачи должен быть установлен в значение, большее оцененного времени обращения
- Документ RFC определяет таймер, пропорциональный значению SRTT со следующими ограничениями:
- Здесь UBOUND и LBOUND – фиксированные верхняя и нижняя границы значения таймер, β = const (фактор задержки)
- В документе RFC 793 нет рекомендаций относительно фиксированных значений, но приводится диапазон изменений параметров: α – между 0,8 и 0,9 и β – между 1,3 и 2,0
- Варьируя величину окна, можно повлиять на загрузку сети
- Чем больше окно, тем большую порцию неподтвержденных данных можно послать в сеть
- Если сеть не справляется с нагрузкой, то возникают очереди в промежуточных узлах (маршрутизаторах) и в конечных узлах (компьютерах)
- При переполнении буфера конечного узла «перегруженный» протокол TCP, отправляя квитанцию с новым уменьшенным размером окна
- Если он совсем отказывается от приема, то в квитанции указывается окно нулевого размера
- Даже после этого приложение может послать сообщение на отказавшийся от приема порт
- Для этого сообщение должно сопровождаться пометкой «срочно» (бит URG установлен в 1)
- В такой ситуации порт обязан принять сегмент, даже если для этого придется вытеснить из буфера уже находящиеся там данные
- Другим проявлением перегрузки сети является переполнение буферов в маршрутизаторах
- В таких случаях они могут централизовано изменить размер окна, посылая управляющие сообщения некоторым конечным узлам, что позволяет им дифференцировано управлять интенсивностью потока данных в разных частях сети
- Сегменты состоят из заголовка и блока данных
- Заголовок сегмента имеет следующие поля:
- Порт источника (SOURCE PORT) занимает 2 байта, идентифицирует процесс-отправитель; Порт назначения (DESTINATION PORT) занимает 2 байта, идентифицирует процесс-получатель; Последовательный номер (SEQUENCE NUMBER) занимает 4 байта, указывает номер байта, который определяет смещение сегмента относительно потока отправляемых данных;
- Порт источника (SOURCE PORT) занимает 2 байта, идентифицирует процесс-отправитель;
- Порт назначения (DESTINATION PORT) занимает 2 байта, идентифицирует процесс-получатель;
- Последовательный номер (SEQUENCE NUMBER) занимает 4 байта, указывает номер байта, который определяет смещение сегмента относительно потока отправляемых данных;
- Заголовок сегмента имеет следующие поля (продолжение):
- Подтвержденный номер (ACKNOWLEDGEMENT NUMBER) занимает 4 байта, содержит максимальный номер байта в полученном сегменте, увеличенный на единицу; именно это значение используется в качестве квитанции; Длина заголовка (HLEN) занимает 4 бита, указывает длину заголовка сегмента TCP, измеренную в 32- битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле «Опции»; Резерв (RESERVED) занимает 6 битов, поле зарезервировано для последующего использования;
- Подтвержденный номер (ACKNOWLEDGEMENT NUMBER) занимает 4 байта, содержит максимальный номер байта в полученном сегменте, увеличенный на единицу; именно это значение используется в качестве квитанции;
- Длина заголовка (HLEN) занимает 4 бита, указывает длину заголовка сегмента TCP, измеренную в 32- битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле «Опции»;
- Резерв (RESERVED) занимает 6 битов, поле зарезервировано для последующего использования;
- Заголовок сегмента имеет следующие поля (продолжение):
- Кодовые биты (CODE BITS) занимают 6 битов, содержат служебную информацию о типе данного сегмента, задаваемую установкой в единицу соответствующих бит этого поля: URG – срочное сообщение; ACK – квитанция на принятый сегмент; PSH – запрос на отправку сообщения без ожидания заполнения буфера; RST – запрос на восстановление соединения; SYN – сообщение используемое для синхронизации счетчиков переданных данных при установлении соединения; FIN - признак достижения передающей стороной последнего байта в потоке передаваемых данных
- Кодовые биты (CODE BITS) занимают 6 битов, содержат служебную информацию о типе данного сегмента, задаваемую установкой в единицу соответствующих бит этого поля: URG – срочное сообщение; ACK – квитанция на принятый сегмент; PSH – запрос на отправку сообщения без ожидания заполнения буфера; RST – запрос на восстановление соединения; SYN – сообщение используемое для синхронизации счетчиков переданных данных при установлении соединения; FIN - признак достижения передающей стороной последнего байта в потоке передаваемых данных
- URG – срочное сообщение;
- ACK – квитанция на принятый сегмент;
- PSH – запрос на отправку сообщения без ожидания заполнения буфера;
- RST – запрос на восстановление соединения;
- SYN – сообщение используемое для синхронизации счетчиков переданных данных при установлении соединения;
- FIN - признак достижения передающей стороной последнего байта в потоке передаваемых данных
- Окно Контрольная сумма Указатель срочности
- Окно
- Контрольная сумма
- Указатель срочности
- Опции Заполнитель
- Опции
- Заполнитель
Программные средства межсетевого взаимодействия
- Сервер — это процесс, который ожидает подключения клиентов для обслуживания их запросов
- Сервер должен прослушивать соединение со стандартным именем
- Таковым в стеке TCP / IP является адрес интерфейса и номер порта
- Первый шаг установления соединения — привязка сокета протокола к его имени с помощью функции bind
- Второй - перевод сокета в режим прослушивания функцией listen
- Третий - принятие клиента функцией WSAA ccept
Программные средства межсетевого взаимодействия
- При использовании протокола IP устройствам назначается 32-разрядный IP -адрес 4 версии
- Для взаимодействия с сервером по TCP клиент должен указать IP -адрес сервера и номер порта службы
- Чтобы прослушивать входящие запросы клиента, сервер тоже должен указать IP -адрес и номер порта
- В Winsock IP -адрес и порт службы указываются в структуре SOCKADDR _ IN
Программные средства межсетевого взаимодействия
- Вспомогательная функция inet _ addr преобразует IP -адрес из точечной нотации в беззнаковое длинное число, в котором байты следуют в сетевом порядком следования
- Существуют два специальных адреса — INADDR _ ANY , который позволяет серверу слушать клиента через любой сетевой интерфейс на несущем компьютере, а также INADDR _ BROADCAST , который позволяет широковещательно рассылать дейтаграммы по сети или подсетям
Программные средства межсетевого взаимодействия
- Процессоры архитектуры x 86 представляют многобайтные числа от менее значимого (младшего) байта к более значимому (старшему)
- IP -адрес и номер порта хранятся в памяти именно так
- Это так называемый системный порядок
- При передаче их по сети стандарты протоколов требуют, чтобы многобайтные значения представлялись от старшего байта к младшему
- Это называется сетевым порядком
Программные средства межсетевого взаимодействия
- Две функции ( htonl и htons ) позволяют преобразовывать, соответственно, 4- и 2-байтовые числа из системного порядка в сетевой
- Две функции ( ntohl и ntohs ) решают обратную задачу, т.е. переставляют байты из сетевого порядка в системный
- На следующем слайде приведен фрагмент кода с использованием этих функций
Программные средства межсетевого взаимодействия
#include
// порт, инициализированный значением
INT PortNum = 5101;
// Структура с адресом
SOCKADDR_IN InetAddr;
// настойка структуры с адресом с указанием семейства адресов,
// IP-адресом 192.168.123.45 и номером порта, заданном в PortNum
InetAddr.sin_family = AF_INET;
// Вместо символьной (строковой) константы, приведенной здесь,
// нужно указать адрес буфера, в котором вероятно находится
// другой IP-адрес в десятично-точечной нотации
InetAddr.sin_addr.s_addr = inet_addr("192.168.123.45");
InetAddr.sin_port = htons(PortNum);
Программные средства межсетевого взаимодействия
- TCP- Сокет создается функцией WSASocket
#include
#include
SOCKET ServerSocket; // Серверный (слушающий) сокет
ServerSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP
, NULL, 0, 0 // неперекрываемый ввод-вывод
);
// Проверяем, удалось ли создать сокет
// Завершаем выполнение в случае ошибки
if (INVALID_SOCKET == ServerSocket)
{
printf("Ошибка создания сокета с кодом = %d\n", WSAGetLastError());
WSACleanup();
getchar();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- После создания сокета с конкретным протоколом его надо связать со стандартным адресом при помощи функции bind
#include
#include
InetAddr.sin_family = AF_INET;
InetAddr.sin_addr.s_addr = INADDR_ANY;
InetAddr.sin_port = htons (PortNum);
int BindingResult = bind(ServerSocket, (struct sockaddr *)& InetAddr
, sizeof (InetAddr)
);
if (SOCKET_ERROR == BindingResult)
{
printf("Ошибка bind() с кодом = %d.\n", WSAGetLastError());
getchar();
closesocket(ServerSocket);
WSACleanup();
return EXIT_FAILURE ;
}
Программные средства межсетевого взаимодействия
- Затем надо перевести сокет в режим прослушивания функцией listen
#include
#include
int ListenResult = listen(ServerSocket, SOMAXCONN);
if (SOCKET_ERROR == ListenResult)
{
printf("Ошибка listen() с кодом = %d.\n“
, WSAGetLastError()
);
closesocket(ServerSocket);
WSACleanup();
getchar();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- Теперь все готово к приему соединений клиентов, нужно только вызвать функцию WSAAccept
#include
#include
SOCKADDR_IN ClientAddr;
int ClientAddrSize = sizeof (ClientAddr);
SOCKET ClientSocket = WSAAccept(ServerSocket
, (struct sockaddr *)& ClientAddr
, &ClientAddrSize
, NULL, NULL
);
if (INVALID_SOCKET == ClientSocket)
{
printf("Ошибка WSAAccept() с кодом = %d.\n", WSAGetLastError());
closesocket(ServerSocket);
WSACleanup();
getchar();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- Для установления соединения также требуется три шага: создать сокет функцией WSAS ocket , разрешить имя сервера, инициировать соединение функцией WSAC onnect
#include
#include
InetAddr.sin_family = AF_INET;
InetAddr.sin_addr.s_addr = inet_addr("192.63.44.197");
InetAddr.sin_port = htons(PortNum);
int ConnectResult = WSAConnect(ServerSocket, (struct sockaddr *) &InetAddr
, sizeof(InetAddr), NULL, NULL, NULL, NULL
);
if (SOCKET_ERROR == ConnectResult)
{
printf("Ошибка WSAConnect () с кодом = %d.\n", WSAGetLastError());
closesocket(ServerSocket);
WSACleanup();
getchar();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- Большинство протоколов с установлением соединения являются потоковыми
- Однако при чтении-записи данных через потоковый сокет нет гарантии, что будет прочитан или записан весь запрошенный объем данных
- Допустим, надо отправить сообщение из буфера функцией WSA S end (см. фрагмент кода на следующем слайде)
Программные средства межсетевого взаимодействия
#include
#include
const char TestMessage[] = "Kukareku!!!";
DWORD SendBytes;
WSABUF DataBuf;
DataBuf.len = strlen(TestMessage) + 1;
DataBuf.buf = TestMessage;
int SendResult = WSASend(ServerSocket, &DataBuf, 1, &SendBytes, 0
, NULL, NULL);
if (SOCKET_ERROR == SendResult)
{
printf("Ошибка WSASend () с кодом = %d.\n", WSAGetLastError());
getchar();
shutdown(ServerSocket, SD_BOTH);
closesocket(ServerSocket);
WSACleanup();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- Функция WSARecv – это основной инструмент приема данных по сокету
- Функция возвращает 0 в случае успешного приема данны
- Пример использования этой функции приведен на следующем слайде
Программные средства межсетевого взаимодействия
#include
#include
const unsigned int BufferSize = 256;
char buffer[ BufferSize ] = "\0";
WSABUF DataBuf;
DataBuf.len = sizeof(buffer);
DataBuf.buf = buffer;
DWORD RecvBytes, Flags = 0;
int RecvResult = WSARecv(ClientSocket, &DataBuf, 1, &RecvBytes, &Flags, NULL, NULL);
if (SOCKET_ERROR == RecvResult)
{
printf("Ошибка WSARecv () с ошибкой = %d.\n", WSAGetLastError());
shutdown(ClientSocket, SD_BOTH);
shutdown(ServerSocket, SD_BOTH);
closesocket(ClientSocket);
closesocket(ServerSocket);
WSACleanup();
getchar();
exit( EXIT_FAILURE );
}
Программные средства межсетевого взаимодействия
- По окончании работы с сокетом необходимо закрыть соединение и освободить все ресурсы, связанные с дескриптором сокета, с помощью функции closesocket
- Рекомендуется перед ее вызовом завершить сеанс, уведомив получателя об этом, с помощью функции shutdown
- Примеры их использования приведены на предыдущем слайде
Программные средства межсетевого взаимодействия
- UDP- сокет создается функцией WSASocket
- Для пересылки используют функцию WSAS endTo , а для приема – WSAR ecvFrom
- При успешном выполнении WSAS endTo вернет 0, иначе – ошибку SOCKET _ ERROR
- Функция приема аналогична отправке, она также возвращает 0 в случае успеха
- Если сокет к этому времени был уже закрыт, то возвращаемым значением также является 0
- Если возникла ошибка – SOCKET _ ERROR
Программные средства межсетевого взаимодействия
#include
#include
#include
#pragma comment (lib, "ws2_32.lib")
...
SOCKADDR_IN InetAddr;
INT PortNum = 5101;
InetAddr.sin_family = AF_INET;
InetAddr.sin_addr.s_addr = INADDR_ANY;
InetAddr.sin_port = htons(PortNum);
SOCKET ServerSocket;
ServerSocket = WSASocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, NULL, 0, 0);
...
SOCKADDR_IN SenderAddr;
int SenderAddrSize = sizeof (SenderAddr);
Программные средства межсетевого взаимодействия
printf("Слушаю и принимаю дейтаграммы.\n");
WSABUF DataBuf;
char buffer[256]="\0";
DataBuf.len = sizeof (buffer);
DataBuf.buf = buffer;
DWORD RecvBytes, Flags = 0;
int RecvResult = WSARecvFrom(ServerSocket, &DataBuf, 1, &RecvBytes, &Flags
, (SOCKADDR *) &SenderAddr, &SenderAddrSize
, NULL, NULL
);
if (SOCKET_ERROR == RecvResult)
{
printf("Ошибка WSARecvFrom () с кодом = %d.\n", WSAGetLastError ());
getchar();
}
else
{
printf("От %s принято сообщение %s из %d байтов.\n“
, inet_ntoa(SenderAddr.sin_addr), DataBuf.buf, RecvBytes
);
}
...
Программные средства межсетевого взаимодействия
#include
#include
#include
#include
#pragma comment (lib, "ws2_32.lib")
...
SOCKET ServerSocket;
ServerSocket = WSASocket (AF_INET, SOCK_DGRAM, IPPROTO_UDP, NULL, 0, 0);
...
char TestMessage[] = "Kukareku!!!";
DWORD SendBytes;
WSABUF DataBuf;
DataBuf.len = strlen (TestMessage) + 1;
DataBuf.buf = TestMessage;
Программные средства межсетевого взаимодействия
SOCKADDR_IN receiver;
INT PortNum = 25101;
receiver.sin_family = AF_INET;
receiver.sin_addr.s_addr = inet_addr("192.3.4.5");
receiver.sin_port = htons (PortNum);
int SendResult = WSASendTo(ServerSocket, &DataBuf, 1, &SendBytes, 0
, (SOCKADDR*) &receiver, sizeof (receiver)
, NULL, NULL
);
if (SOCKET_ERROR == SendResult)
{
printf("Ошибка WSASendTo () с кодом = %d.\n", WSAGetLastError ());
getchar();
return EXIT_FAILURE;
}
printf("Послано %d байтов.\n", SendBytes);
...
Программные средства межсетевого взаимодействия
- Многоадресная рассылка позволяет отправлять данные от одного абонента сети множеству других, не создавая при этом большой нагрузки на сеть
- Данные передаются в сеть, только если их запрашивают процессы, выполняемые на рабочих станциях в этой сети
- Не все протоколы поддерживают многоадресную рассылку
- В WinSock 2 таких только два: IP и ATM
Программные средства межсетевого взаимодействия
- Многоадресная рассылка характеризуется: плоскостью управления и плоскостью данных
- Первая определяет членство в группах, а вторая отражает характер распространения данных среди членов сети
- Любая плоскость может быть корневой и равноправной
- В корневой плоскости управления есть особый участник многоадресной группы – корень c _ root , а остальные называются листами c _ leaf
Программные средства межсетевого взаимодействия
- Корень организует многоточечную группу, инициируя соединение с любым количеством листов
- Для группы существует только один корневой узел
- Такова плоскость управления у протокола ATM
- Равноправная плоскость управления позволяет соединяться с группой любому участнику, они все являются листами
- Каждый участник вправе присоединиться к многоточечной группе
- Такова плоскость управления у протокола IP
Программные средства межсетевого взаимодействия
- Плоскость данных может быть маршрутизируемой и немаршрутизируемой
- В маршрутизируемой есть участник d _ root , между ним и остальными участниками происходит передача данных, которые в этом случае являются d _ leaf
- Передача может быть одно- и двунаправленной, но данные, передаваемые от одного d _ leaf , будут получены на d _ root , а данные, которые переданы с d _ root , принимаются на всех d _ leaf
- У протокола ATM маршрутизируемая плоскость данных
Программные средства межсетевого взаимодействия
- В немаршрутизируемой плоскости данных все участники группы вправе отправить данные всем остальным членам группы, и все получатели могут отправить данные в обратном направлении
- Многоадресная рассылка в сетях IP не маршрутизируется в плоскости данных
- Многоадресная рассылка зависит от групповых адресов
Программные средства межсетевого взаимодействия
- Если несколько узлов сети хотят взаимодействовать путем многоадресной рассылки, они объединяются под групповым адресом
- Любая информация, отправляемая одним узлом, передается каждому члену группы, в том числе и самому отправителю
- Процесс присоединения группы многоадресной рассылки в сетях IP не сложен, каждый лист выполняет одинаковые шаги для присоединения
Программные средства межсетевого взаимодействия
- На первом шаге с помощью функции нужно WSAS ocket создать сокет семейства AF _ INET типа SOCK _ DGRAM
- Требуется также указать особые флаги для многоадресных сокетов
- Для IP-сокетов это такие флаги, как WSA_FLAG_MULTIPOINT_C_LEAF , WSA_FLAG_MULTIPOINT_D_LEAF , WSA_FLAG_OVERLAPPED и т.д.
Программные средства межсетевого взаимодействия
- На втором шаге нужно связать сокет с локальным портом, если необходимо получать данные от группы (функция bind )
- На третьем шаге для добавления своего адреса в группу нужно вызвать функцию WSAJoinLeaf с параметром JL_RECEIVER_ONLY
- Предположим надо присоединиться к группе с адресом 233.55.66.77 (см. следующий слайд)
Программные средства межсетевого взаимодействия
#include
#include
#include
#include
...
SOCKADDR_IN GroupAddr;
GroupAddr.sin_family = AF_INET;
GroupAddr.sin_port = htons(PortNum);
GroupAddr.sin_addr.s_addr = inet_addr("233.55.66.77");
SOCKET MultiSocket;
MultiSocket = WSAJoinLeaf(ReceiverSocket, (SOCKADDR *)&GroupAddr, sizeof (GroupAddr), NULL
, NULL, NULL, NULL, JL_RECEIVER_ONLY
);
if (INVALID_SOCKET == MultiSocket)
{
printf("WSAJoinLeaf() с кодом = %d.\n", WSAGetLastError ());
getchar();
closesocket(ReceiverSocket);
WSACleanup();
return EXIT_FAILURE;
}
Программные средства межсетевого взаимодействия
- Для выхода из группы достаточно всего лишь вызвать closesocket с параметром – сокетом , которые использовался для присоединения к группе
- Сокет-получатель, разумеется, также необходимо закрыть функцией closesocket
- Прием и передачу (на групповой адрес) можно осуществлять при помощи функций WSAR ecvFrom и WSAS endTo
Протоколы обмена маршрутной информацией стека TCP/IP
- Большинство протоколов маршрутизации, применяемых в современных сетях с коммутацией пакетов, ведут свое происхождение от сети Internet и ее предшественницы – ARPANET
- Чтобы понять их назначение и особенности, полезно сначала познакомиться со структурой сети Internet, которая наложила отпечаток на терминологию и типы протоколов
Протоколы обмена маршрутной информацией стека TCP/IP
- Интернет изначально строился как сеть, объединяющая большое количество существующих систем
- С самого начала в ее структуре выделяли магистральную сеть ( core backbone network ), а группы сетей и маршрутизаторов, присоединенных к магистрали, рассматривались как автономные системы ( autonomous systems )
- Магистральная сеть и каждая из автономных систем имели свое собственное административное управление и собственные протоколы маршрутизации
- Каждая сеть внутри АС должна быть доступна из Интернета
Протоколы обмена маршрутной информацией стека TCP/IP
- Маршрутизаторы внутри одной АС взаимодействуют, используя динамические протоколы маршрутизации
- Они относятся к классу так называемых протоколов IGP ( Interior Gateway Protocol , внутренний шлюзовой протокол )
- Их главной задачей является поддержка необходимой производительности
- Эти протоколы должны немедленно подстраиваться под изменения в сетевой топологии и находить маршрут с наименьшей стоимостью
- Некоторые протоколы этого класса: RIP, NLSP, OSPF, IGRP, EIGRP, IS-IS
Протоколы обмена маршрутной информацией стека TCP/IP
- Взаимодействие между маршрутизаторами различных АС требует дополнительного протокола, который называется EGP ( Exterior Gateway Protocol , внешний шлюзовой протокол )
- В нем должны быть предприняты меры предотвращения от сбоев в других АС
- Кроме того, корневой маршрутизатор для связи с другими маршрутизаторами АС должен поддерживать протоколы IGP и EGP, поскольку всю информацию о своей АС протокол EGP получает через протокол IGP
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол RIP ( Routing Information Protocol ) описан в документе RFC 1058 и относится к классу IGP
- Это один из старейших протоколов обмена маршрутной информацией, однако до сих пор чрезвычайно распространен в компьютерных сетях
- Преимуществом этого протокола является его простота, а недостатком – увеличение трафика за счет рассылки широковещательных сообщений
- В этом протоколе все сети имеют номера, а все маршрутизаторы – идентификаторы
Протоколы обмена маршрутной информацией стека TCP/IP
- В RIP широко используется понятие «вектор расстояний»
- Вектор расстояний – набор пар чисел, являющихся номерами сетей и расстояниями до них
- Маршрутизаторы с поддержкой RIP всегда выбирают маршрут с наименьшим числом переходов
Протоколы обмена маршрутной информацией стека TCP/IP
- Векторы расстояний распространяются маршрутизаторами по сети, и через несколько шагов каждый маршрутизатор имеет данные о достижимых для него сетях и о расстояниях до них
- Если связь с какой-либо сетью обрывается, то маршрутизатор отмечает этот факт тем, что присваивает элементу вектора, соответствующему расстоянию до этой сети, максимально возможное значение, которое имеет специальный смысл – «связи нет»
Протоколы обмена маршрутной информацией стека TCP/IP
- Таблица маршрутизации RIP содержит следующие поля:
- IP-адрес целевой сети количество переходов до целевой сети адрес первого маршрутизатора на пути к целевой сети идентификатор соседнего маршрутизатора, который является источником данной адресной информации в таблицы маршрутизации таймер для отслеживания времени, прошедшего с момента последнего обновления записи
- IP-адрес целевой сети
- количество переходов до целевой сети
- адрес первого маршрутизатора на пути к целевой сети
- идентификатор соседнего маршрутизатора, который является источником данной адресной информации в таблицы маршрутизации
- таймер для отслеживания времени, прошедшего с момента последнего обновления записи
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол RIP для передачи сообщений использует дейтаграммы UDP и протокольный порт 520
- Полное сообщение протокола RIP инкапсулируется в поле данных дейтаграммы, которая инкапсулируется в IP-дейтаграмму
Протоколы обмена маршрутной информацией стека TCP/IP
- Все сообщения протокола RIP состоят из заголовка фиксированной длины и следующей за ним таблицы маршрутизации передающего маршрутизатора
- В таблицу записывается список достижимых сетей
- Цифра 0 в заголовке означает, что это поле должно согласно спецификации быть нулевым (см. след. слайд)
Протоколы обмена маршрутной информацией стека TCP/IP
Команда (8 бит)
Версия (8 бит)
Идентификатор адресной схемы (16 бит)
0 (16 бит)
IP- адрес (32 бита)
0 (16 бит)
0 (32 бита)
0 (32 бита)
Количество переходов (32)
Протоколы обмена маршрутной информацией стека TCP/IP
Идентификатор адресной схемы (16)
0 (16)
IP- адрес (32)
0 (32 бита)
0 (32 бита)
Количество переходов (32 бита)
…
Идентификатор адресной схемы (16 бит)
0 (16 бит)
IP- адрес (32 бита)
0 (32 бита)
0 (32 бита)
Количество переходов (32 бита)
Протоколы обмена маршрутной информацией стека TCP/IP
- Часть сообщения (запись таблицы маршрутизации), начинающаяся с поля « Идентификатор адресной схемы » и заканчивающаяся полем « Количество переходов », может повторяться в сообщении до 25 раз
- Это позволяет переносить до 25 адресов, которые могут занимать до 500 байт
- Ограничение связано с тем, что максимальный размер сообщений составляет 521 байт, не считая заголовков IP и UDP
- Маршрутизатору может потребоваться передать несколько сообщений для рассылки всей таблицы маршрутизации своим соседям
Протоколы обмена маршрутной информацией стека TCP/IP
- До этого момента рассматривался протокол маршрутизации RIP версии 1 (RIP-1 IP)
- Существует версия RIP-2 IP, описанная в документе RFC 1388
- Эта версия поддерживает CIDR, аутентификацию, подсети, групповую передачу
- В таблице показан формат сообщений протокола RIP-2
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- В версии RIP-1 есть нулевые неиспользуемые поля, что позволяет задействовать их в версии 2
- Протокол RIP-2 IP наследует все поля первой версии и добавляет:
- « Домен маршрутизации » используется вместе с полем « Следующий переход » для совместной работы нескольких АС в едином домене маршрутизации « Маска подсети » - двоичное число, содержащее единицы в тех разрядах, которые относятся к РСП. Маска делит IP-адрес на номер подсети и номер устройства внутри этой подсети и позволяет выполнять маршрутизации в сформированной структуре подсетей; « Метка маршрута » служит для идентификации внешних маршрутов и задействуется в таких протоколах, как EGP или BGP
- « Домен маршрутизации » используется вместе с полем « Следующий переход » для совместной работы нескольких АС в едином домене маршрутизации
- « Маска подсети » - двоичное число, содержащее единицы в тех разрядах, которые относятся к РСП. Маска делит IP-адрес на номер подсети и номер устройства внутри этой подсети и позволяет выполнять маршрутизации в сформированной структуре подсетей;
- « Метка маршрута » служит для идентификации внешних маршрутов и задействуется в таких протоколах, как EGP или BGP
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол RIP-1 IP не поддерживает безопасность
- Любое устройство, посылающее сообщение UDP через порт 520, будет рассматриваться маршрутизатором как его сосед
- Это возлагает на администратора дополнительные задачи по управлению правилами: ему может понадобиться вручную настроить список авторизованных соседей
Протоколы обмена маршрутной информацией стека TCP/IP
- В то же время, протокол RIP-2 IP поддерживает аутентификацию
- Стандартом этого протокола допускается замена первой записи в сообщении на сегмент аутентификации
- Сообщение может содержать сегмент аутентификации и 24 записи из таблицы маршрутизации в стандартной форме RIP-2 IP
- Формат сегмента аутентификации имеет формат, представленный на след. слайде:
Протоколы обмена маршрутной информацией стека TCP/IP
- Поле «Идентификатор адресной схемы» равно 0xFFFFFF
- Затем указывается тип схемы аутентификации, а следующие 16 бит отводятся под данные аутентификации
- После получения сообщения маршрутизаторы проверяют сегмент аутентификации и будут игнорировать любые сообщения с некорректной аутентификацией
Протоколы обмена маршрутной информацией стека TCP/IP
- В документе RFC 1009 определяется использование разных масок подсетей в одной сети, состоящей из большого количества подсетей
- Так как РСП в различных подсетях имеют различную длину, говорят о масках подсети переменной длины
- Их поддерживают современные протоколы маршрутизации OSPF, IS-IS, RIP2-IP
- Сообщения этих протоколов переносят как адрес подсети, так и соответствующую ему маску
Протоколы обмена маршрутной информацией стека TCP/IP
- Если протокол не позволяет использовать маску подсети, то маршрутизатор будет предполагать, что должна использоваться маска подсети, присвоенная его локальному порту, либо выполнять поиск в статической таблице, содержащей информацию о масках подсетей
- Маски подсети переменной длины позволяют рекурсивно разбивать адресное пространство, что позволяет гибко настраивать всю сеть, и уменьшить объемы таблиц маршрутизации, поскольку маршрутизатор может включать информацию о всех своих сетях в одну запись сообщения об обновлении
Протоколы обмена маршрутной информацией стека TCP/IP
- Для поддержания маски подсети переменной длины требуется выполнение трех основных условий:
- протокол маршрутизации должен переносить информацию об РСП все маршрутизаторы должны поддерживатиь алгоритм передачи, основывающийся на правиле наибольшего совпадения адреса должны присваиваться в соответствии с существующей топологией
- протокол маршрутизации должен переносить информацию об РСП
- все маршрутизаторы должны поддерживатиь алгоритм передачи, основывающийся на правиле наибольшего совпадения
- адреса должны присваиваться в соответствии с существующей топологией
Протоколы обмена маршрутной информацией стека TCP/IP
- Правило наибольшего совпадения основывается на том факте, что маршрут в таблице маршрутизации с большим РСП определяет меньший набор получателей, чем тот же маршрут с коротким РСП
- Поэтому маршрутизатор должен выбирать маршрут с наибольшим РСП при передаче трафика
- Если адрес получателя равен 11.1.2.5 и в таблице маршрутизации три маршрута к этой сети с РСП 24, 16 и 8, то маршрутизатор выберет маршрут 1, так как его РСП совпадает с адресом получателя в большем числе бит
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- Спецификация протокола OSPF (Open Shortest Path First) описана в документе RFC 1247
- Он основан на алгоритме состояния канала, который должен вычислять кратчайший путь, по которому информация пройдет быстрее, чем по другим
- Маршрутизатор отправляет запросы всем соседним маршрутизаторам, находящимся с ним в одном домене маршрутизации, для выявления состояния каналов до них и далее от них
Протоколы обмена маршрутной информацией стека TCP/IP
- Состояние канала при этом характеризуется несколькими параметрами, которые называются метриками
- Ею может быть пропускная способность канала, его загрузка на текущий момент, задержка информации при ее прохождении по этому каналу и т.д.
- Обобщив полученные сведения, маршрутизатор сообщает их соседям
Протоколы обмена маршрутной информацией стека TCP/IP
- После этого строится орграф, который повторяет топологию домена маршрутизации
- Каждому ребру назначается метрика
- После построения графа используется алгоритм Э.Дийкстры, который по двум заданным узлам находит набор ребер с наименьшей стоимостью, т.е. выбирает оптимальный маршрут
- По совокупной информации получается таблица маршрутизации
Протоколы обмена маршрутной информацией стека TCP/IP
- Сообщения протокола OSPF передаются в IP-дейтаграммах с полем «Протокол», равным 89
- Протокол OSPF отвечает за IP-маршрутизацию и относится к классу IGP
- Он может заменить протокол маршрутизации RIP в больших и сложных сетях
- Протокол обладает большей скоростью сходимости, и это предотвращает возникновение петель
- При работе генерируется большой сетевой трафик
Протоколы обмена маршрутной информацией стека TCP/IP
- Информация, которой обмениваются маршрутизаторы, проходит процедуру аутентификации, т.е. в процессе маршрутизации участвуют только авторизованные маршрутизаторы
- Протокол использует групповую передачу вместо широковещательной
- Это исключает передачу маршрутной информации тем устройствам, которым она не нужна
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол OSPF поддерживает распределение нагрузки по маршрутам с одинаковыми стоимостями, а также маски подсети переменной длины
- Данные о масках передаются в сообщениях LSA ( объявления о состояниях канала )
- Таким образом маршрутизаторы получают эту информацию динамически, что позволяет рациональнее использовать адресное пространство
Протоколы обмена маршрутной информацией стека TCP/IP
- области маршрутизации
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол OSPF посылает информацию о состоянии каналов каждые 30 мин.
- При обнаружении изменения сетевой топологии протокол OSPF сразу же рассылают 75-байтовые сообщения
- В начале работы каждый маршрутизатор передает сообщения LSA на все порты
- Они позволяют однозначно идентифицировать передающий маршрутизатор и определить состояние всех его портов: IP-адрес, маску подсети, метрику, присвоенную каналу связи порта, и статус канала связи
Протоколы обмена маршрутной информацией стека TCP/IP
- Сообщение LSA передается во всем домене маршрутизации, поэтому маршрутизаторы обладают информацией о состоянии каналов других маршрутизаторов в домене
- Каждый маршрутизатор на основе сообщений LSA формирует БД состояния каналов LSDB
- Эта БД одинакова для всех маршрутизаторов в одном домене
- Алгоритм маршрутизации поддерживает синхронизацию этих БД
Протоколы обмена маршрутной информацией стека TCP/IP
- После того как все БД синхронизированы, каждый маршрутизатор начинает создавать свою таблицу маршрутизации
- Она базируется на информации из LSDB
- Непосредственно связанные маршрутизаторы – соседи
- Каждый маршрутизатор хранит информацию о состоянии соседей
- Маршрутизатор полагается на соседей и передает им IP-дейтаграммы только тогда, когда уверен в работоспособности соседей
Протоколы обмена маршрутной информацией стека TCP/IP
- После создания карты сетевой топологии маршрутизатор формирует дерево кратчайших путей по всем возможным получателям
- Это дерево строится таким образом, чтобы путь от корневого маршрутизатора до целевых сетей имел наименьшую стоимость
- После того как дерево построено, маршрутизаторы формируют локальные таблицы маршрутизации
Протоколы обмена маршрутной информацией стека TCP/IP
- Если маршрутизатор обнаружит изменения в состоянии одного из подключенных к нему каналов, он должен разослать сообщения LSA всем своим соседям, которые ретранслируют их далее по всему домену маршрутизации
- С момента посылки сообщения БД маршрутизаторов теряют синхронизацию и должны быть пересинхронизированы
- После выполнения синхронизации каждый маршрутизатор должен заново строить карту сетевой топологии, дерево кратчайших путей и таблицу маршрутизации
Протоколы обмена маршрутной информацией стека TCP/IP
- Недостатки протокола OSPF проявляются в очень больших сетях
- В распределенной сети с сотнями маршрутизаторов изменение состояния одного канала вызывает распространение тысяч сообщениях LSA через всю сеть
- LSDB в таких сетях достигает нескольких мегабайт
- Значительный объем вычислений предъявляет серьезные требования к аппаратным ресурсам маршрутизатора
Протоколы обмена маршрутной информацией стека TCP/IP
- Частично эти проблемы решаются введением понятия области маршрутизации , или области OSPF
- Большая сеть разбивается на несколько областей с независимой маршрутизацией
- В сети может существовать практически неограниченное число областей маршрутизации
- Маршрутизаторы из одной области не обмениваются информацией из другой области
- Это уменьшает объем служебного трафика и сокращает размер баз данных маршрутизаторов
Протоколы обмена маршрутной информацией стека TCP/IP
- Области связываются с помощью специально выделенных маршрутизаторов, которые должны содержать информацией из обеих областей
- Эти маршрутизаторы называются граничными маршрутизаторами областей ( Area Border Routers )
- Они работают как фильтры для сообщений маршрутизации, не выпуская их из области
Протоколы обмена маршрутной информацией стека TCP/IP
- Граничные маршрутизаторы взаимодействуют между собой, используя специальные сообщения LSA, которые содержат краткую информацию об IP-адресах, содержащихся в области
- Граничные маршрутизаторы сохраняют эти сообщения в специальной БД, которая используется для определения маршрута между областями ( inter-area )
- По понятным причинам граничные маршрутизаторы должны быть достаточно мощными
Протоколы обмена маршрутной информацией стека TCP/IP
- В протоколе OSPF введено понятие автономных систем маршрутизации, которые представляют собой домены маршрутизации, находящиеся под общим административным управлением и использующие единый протокол маршрутизации
- Маршрутизатор, соединяющий две АС, одна из которых использует не OSPF, называется пограничным маршрутизатором автономной системы – ASBR
Протоколы обмена маршрутной информацией стека TCP/IP
- Внешние маршруты обрабатываются в два этапа
- Сначала маршрутизатор выбирает оптимальный внешний маршрут Если таких маршрутов несколько, то выбирается маршрут, который имеет наименьшую стоимость внутреннего пути до ASBR
- Сначала маршрутизатор выбирает оптимальный внешний маршрут
- Если таких маршрутов несколько, то выбирается маршрут, который имеет наименьшую стоимость внутреннего пути до ASBR
- Протокол OSPF поддерживает настраиваемые метрики, предоставляя администратору возможность присвоить метрику, основываясь на разных характеристиках
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол OSPF способен работать в сетях следующих типов:
- Сети точка-точка для связи двух маршрутизаторов Широковещательные сети (Ethernet) Нешироковещательные сети со множественным доступом NBMA (FrameRelay или ATM)
- Сети точка-точка для связи двух маршрутизаторов
- Широковещательные сети (Ethernet)
- Нешироковещательные сети со множественным доступом NBMA (FrameRelay или ATM)
Протоколы обмена маршрутной информацией стека TCP/IP
- При включении маршрутизатору необходимо синхронизировать свою БД со всеми маршрутизаторами LAN
- Так как БД на всех маршрутизаторах одинакова, достаточно провести синхронизацию с одним из них
- Этот маршрутизатор называется назначенным маршрутизатором – DR, его «заместитель» называется резервным назначенным маршрутизатором - BDR
Протоколы обмена маршрутной информацией стека TCP/IP
- Они являются единственными маршрутизаторами, с которыми всякий новый маршрутизатор должен синхронизировать содержимое своей БД
- После этого новый маршрутизатор будет синхронизирован со всем маршрутизаторами данной сети
- Назначенный маршрутизатор делает объявления о сетевых связях, перечисляя своих соседей по подсети
- Остальные маршрутизаторы просто объявляют о своей связи с назначенным
Протоколы обмена маршрутной информацией стека TCP/IP
- BDR занимает место DR тогда, когда последний выходит из строя
- Достоинство этого метода в том, что после назначения DR сильно уменьшается количество передаваемой по сети маршрутной информации
- Протокол OSPF состоит из трех внутренних протоколов: Hello , Exchange и Flooding
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол Hello использует сообщения Hello
- Маршрутизаторы периодически обмениваются между собой этими сообщениями
- Сообщение Hello посылается на все порты маршрутизатора и содержит следующую информацию:
- приоритет маршрутизатора, который используется для выбора DR и BDR интервал между сообщениями Hello в секундах; интервал ожидания сообщения список маршрутизаторов, от которых недавно были получены сообщения Hello маршрутизаторы, которые в настоящий момент являются DR и BDR
- приоритет маршрутизатора, который используется для выбора DR и BDR
- интервал между сообщениями Hello в секундах;
- интервал ожидания сообщения
- список маршрутизаторов, от которых недавно были получены сообщения Hello
- маршрутизаторы, которые в настоящий момент являются DR и BDR
Протоколы обмена маршрутной информацией стека TCP/IP
- Наиболее важны интервал между сообщениями и интервал ожидания
- В сообщениях Hello маршрутизатор передает сведения о себе и говорит о том, кого он считает своими соседями
- Маршрутизаторы с разными рабочими параметрами игнорируют сообщения друг друга, поэтому маршрутизаторы с некорректными параметрами не влияют на остальные
Протоколы обмена маршрутной информацией стека TCP/IP
- Маршрутизаторы посылают сообщения Hello всем своим соседям хотя бы один раз за интервал времени Hello
- Если интервал ожидания истек, а сообщение Hello от соседа не пришло, то сосед считается неработоспособным, и рассылается объявление о сетевых каналах, чтобы произошел перерасчет маршрутов
- На следующем слайде показан формат сообщения Hello
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- Поле « Маска подсети » указывает маску подсети порта, через который посылается сообщение
- Интервалы Hello и Dead устанавливаются администратором
- Поле « Приоритет » используется при выборе DR и BDR
- Каждому маршрутизатору назначается приоритет 0..255
- Выбирается маршрутизатор с наибольшим приоритетом
Протоколы обмена маршрутной информацией стека TCP/IP
- Если он выходит из строя или отключается, то выбирается другой маршрутизатор с наибольшим приоритетом
- Он останется DR даже если старый DR снова заработает
- Маршрутизаторы с нулевым приоритетом никогда не будут выбраны DR
- В сетях « точка-точка » выбор DR не производится
Протоколы обмена маршрутной информацией стека TCP/IP
- Начальная синхронизация БД нового маршрутизатора и DR выполняется с помощью протокола Exchange
- Работу данного протокола можно разделить на два этапа:
- Определяются роли двух маршрутизаторов ( доминирующий и доминантный ) После этого происходит взаимный обмен БД с помощью пакетов описания базы данных DDP
- Определяются роли двух маршрутизаторов ( доминирующий и доминантный )
- После этого происходит взаимный обмен БД с помощью пакетов описания базы данных DDP
- После начальной синхронизации с помощью протокола Exchange ответственность за синхронизацию БД состояния каналов всех маршрутизаторов несет протокол Flooding
Протоколы обмена маршрутной информацией стека TCP/IP
- Для распространения по сети данных о состоянии каналов связи маршрутизаторы обмениваются сообщениями LSA, называемыми объявлениями о каналах сети и их состоянии NLA
- Маршрутизаторы обмениваются не только своими объявлениями, но и чужими объявлениями о каналах, получая полную информацию обо всех каналах
Протоколы обмена маршрутной информацией стека TCP/IP
- По этой информации строится ориентированный граф связей сети, одинаковый для всех маршрутизаторов
- Кроме информации о соседях в объявлениях перечисляются IP-подсети, с которыми маршрутизаторы связаны непосредственно
- Путь вычисляется не до подсети, а до подключенного к ней маршрутизатора
- Каждый из них имеет уникальный идентификатор, который передается в объявлении о состоянии каналов
Протоколы обмена маршрутной информацией стека TCP/IP
- Для обмена маршрутной информацией протокол OSPF использует групповую адресацию
- Для этого зарезервированы два IP-адреса класса D :
- 224.0.0.5 – все маршрутизаторы, работающие по протоколу OSPF должны поддерживать передачу и получение дейтаграмм по этому групповому адресу 224.0.0.6 – все DR и BDR должны поддерживать получение дейтаграмм с данным групповым адресом
- 224.0.0.5 – все маршрутизаторы, работающие по протоколу OSPF должны поддерживать передачу и получение дейтаграмм по этому групповому адресу
- 224.0.0.6 – все DR и BDR должны поддерживать получение дейтаграмм с данным групповым адресом
- В соответствии с правилами преобразования групповых IP-адресов в физические адреса эти адреса преобразуются в следующие:
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- Поля заголовка имеют следующие значения:
- « Версия » указывает на версию протокола OSPF « Тип » указывает на тип сообщения « Длина сообщения » - длина в байтах « Идентификатор маршрутизатора » - IP-адрес маршрутизатора « Идентификатор области » используется для указания области маршрутизации « Контрольная сумма » вычисляется для всего сообщения, кроме 8-байтового поля «Идентификатор алгоритма аутентификации» « Идентификатор алгоритма аутентификации » может принимать два значения: 0 – нет аутентификации; 1 – простая аутентификация
- « Версия » указывает на версию протокола OSPF
- « Тип » указывает на тип сообщения
- « Длина сообщения » - длина в байтах
- « Идентификатор маршрутизатора » - IP-адрес маршрутизатора
- « Идентификатор области » используется для указания области маршрутизации
- « Контрольная сумма » вычисляется для всего сообщения, кроме 8-байтового поля «Идентификатор алгоритма аутентификации»
- « Идентификатор алгоритма аутентификации » может принимать два значения: 0 – нет аутентификации; 1 – простая аутентификация
Протоколы обмена маршрутной информацией стека TCP/IP
- При простой аутентификации поле « Идентификатор алгоритма... » содержит пароль из 8 символов
- Можно задавать разные пароли для каждой сети
- На практике не существует сетей, в которых работает исключительно протокол OSPF
- Совместно с ним применяются протоколы BGP, EGP, RIP и протоколы производителей
Протоколы обмена маршрутной информацией стека TCP/IP
- Внутренний шлюзовой протокол маршрутизации IGRP разработан фирмой CISCO и принадлежит к классу IGP
- Он работает по алгоритму вектора расстояния, текущая реализация предназначена для сетей TCP/IP
- Этот протокол очень похож на RIP
- Таблица также формируется путем обмена маршрутной информацией
Протоколы обмена маршрутной информацией стека TCP/IP
- При запуске маршрутизатор содержит только информацию о напрямую подключенных к нему сетях
- Затем он получает от соседей информацию о других логических сетях
- Маршрутизатор ищет только один наиболее предпочтительный маршрут до получателя, т.е. маршрут с минимальной метрикой
- Протокол IGRP поддерживает распределение потока на несколько маршрутов, которые имеют одинаковую метрику
Протоколы обмена маршрутной информацией стека TCP/IP
- Время задержки Пропускная способность канала Загруженность канала Надежность канала
- Время задержки
- Пропускная способность канала
- Загруженность канала
- Надежность канала
Протоколы обмена маршрутной информацией стека TCP/IP
- Каждый маршрутизатор регулярно широковещательно рассылает свою таблицу маршрутизации своим соседям
- После получения этой информации маршрутизатор сравнивает полученную таблицу со своей
- Сравниваются маршруты из обеих таблиц
- Если новый маршрут имеет лучшую метрику, он может заменить существующий
- Это очень похоже на протокол RIP
Протоколы обмена маршрутной информацией стека TCP/IP
- обобщенная метрика указанный диапазон большая устойчивость
- обобщенная метрика
- указанный диапазон
- большая устойчивость
Протоколы обмена маршрутной информацией стека TCP/IP
Протоколы обмена маршрутной информацией стека TCP/IP
- K 1 , K 2 = const ;
- Это весовые коэффициенты пропускной способности и задержки
- Они зависят от типа передаваемой по сети информации (у интерактивного трафика – более низкая задержка, у файлов – широкая полоса пропускания)
- B e – эффективная пропускная способность, которая определяется как произведение полосы пропускания на загруженность канала; D c – время задержки, r – надежность, т.е. процент информации, успешно переданной следующему узлу
Протоколы обмена маршрутной информацией стека TCP/IP
- Маршрут с наименьшей обобщенной метрикой будет наиболее предпочтительным
- Если к одному получателю существует несколько маршрутов, то маршрутизатор может передавать информацию по всем этим маршрутам или их части
- Как именно будет происходить передача, зависит от обобщенной метрики каждого маршрута
Протоколы обмена маршрутной информацией стека TCP/IP
- Для достижения устойчивости в больших сетях протокол IGRP использует технологии Hold Down , Split Horizon , Triggered Update и Poison Reverse , которые разработаны для предотвращения обработки ошибочных маршрутов
- Алгоритмы Poison Reverse и Split Horizon предназначены для предупреждения образования петель между маршрутизаторами
Протоколы обмена маршрутной информацией стека TCP/IP
- Poison Reverse основывается на следующем правиле: если во время работы метрика увеличилась – это следствие образование петли, и данный маршрут должен быть удален из таблицы
- В протоколе IGRP сообщения об отмене маршрута отправляются, когда показатель увеличивается на 1,1 или более
- Triggered Update заставляет маршрутизатор рассылать информацию об изменениях, даже если информация не укладывается во временной интервал рассылок
- Он обычно составляет 90 сек.
Протоколы обмена маршрутной информацией стека TCP/IP
- Улучшенный внутренний шлюзовой протокол маршрутизации EIGRP объединяет достоинства алгоритма вектора расстояния и состояния канала
- Этот протокол представляется собой реализацию алгоритма распределенного обновления DUAL
- Алгоритм DUAL позволяет маршрутизатору восстанавливать работоспособность сразу же после изменения топологии
- В большинстве случаев маршрутизаторы, работающие по протоколу EIGRP, перестраиваются в соответствии с новой топологией меньше, чем за 1 сек.
Протоколы обмена маршрутной информацией стека TCP/IP
- EIGRP перенял алгоритм вектора расстояния от протокола IGRP и обладает основными возможностями протоколов, которые работают по алгоритму состояния канала типа OSPF
- Протокол поддерживает VLSM, а IGRP не поддерживает передачу информации о маске подсети
- Протокол EIGRP имеет четыре составляющих:
- обнаружение соседа надежный транспортный протокол алгоритм DUAL модуль, зависящий от протокола
- обнаружение соседа
- надежный транспортный протокол
- алгоритм DUAL
- модуль, зависящий от протокола
Протоколы обмена маршрутной информацией стека TCP/IP
- При обнаружении соседа маршрутизаторы динамически получают информацию о других маршрутизаторах, находящихся в сетях, подключенных к ним напрямую
- Они также должны определять, что их соседи недостижимы
- Это выполняется при низкой загрузке сети с помощью посылки пакетов Hello
- После получения пакета маршрутизатор считает соседа нормально функционирующим
- Затем соседи обмениваются маршрутной информацией
Протоколы обмена маршрутной информацией стека TCP/IP
- Надежный транспорт отвечает за гарантированную доставку сообщений протокола EIGRP своим соседям
- Например, может потребоваться послать сообщения Hello с подтверждением доставки
Протоколы обмена маршрутной информацией стека TCP/IP
- Алгоритм DUAL определяет путь передачи трафика
- Он отслеживает информацию о маршрутах, получаемую от соседей, и затем выбирает маршрут к « возможному наследнику »
- Наследник – это соседний маршрутизатор, который имеет наименьшую метрику до получателя и который не является часть петли маршрутизации
Протоколы обмена маршрутной информацией стека TCP/IP
- Модуль, зависящий от протокола, отвечает за взаимодействие с определенным протоколом сетевого уровня
- В частности, данный модуль отвечает за инкапсуляцию сообщений EIGRP в IP-дейтаграммы
- Для каждого модуля, зависящего от протокола, поддерживается своя таблица соседей
- Записи в этой таблице содержат информацию, требующуюся для надежной доставки, например, номер сообщения
- Этот номер используется для проверки того, что сообщения от соседа пришли в нужном порядке
Протоколы обмена маршрутной информацией стека TCP/IP
- Протокол EIGRP обеспечивает быструю сходимость благодаря применению модели «запрос-ответ», при которой сообщения посылаются только тем маршрутизаторам, на работу которых может повлиять изменение в сетевой топологии
- Протокол EIGRP может обеспечить меньшее время сходимости, чем IGRP, но настраивать его сложнее
- Для получения максимального эффекта от этого протокола требуется производительный маршрутизатор с большим объемом оперативной памяти
Протоколы обмена маршрутной информацией стека TCP/IP
- В документах RFC 1517-1520 представлена концепция бесклассовой междоменной маршрутизации CIDR
- Появление данной технологии было вызвано резким повышением объема трафика в Интернете и учащением возникновения сбоев, которые происходили из-за исчерпания ресурсов магистральных маршрутизаторов
- Внедрение данной технологии сократило объем таблицы у магистральных маршрутизаторов примерно в два раза
- Вторая причина внедрения технологии CIDR нехватка адресного пространства при расширении Интернета
Протоколы обмена маршрутной информацией стека TCP/IP
- Технология CIDR позволяет отойти от традиционной схемы классов IP-адресов и более эффективно описывать адресное пространство протокола IP версии 4
- CIDR позволяет объединять маршруты
- Одной записью в таблице маршрутизации можно описать сотни адресов
- С этой технологией появилось понятие обобщенного сетевого префикса
- Маршрутизаторы используют этот префикс для определения границ в IP-адресе между номером сети и номером устройства
Протоколы обмена маршрутной информацией стека TCP/IP
- Любая маршрутная информация в технологии CIDR рассылается с указанием обобщенного сетевого префикса
- Длина префикса в битах служит для определения числа старших битов, соответствующих номеру сети в записи таблицы маршрутизации
- Маршрутизаторы, поддерживающие технологию CIDR, не определяют класс, а пользуются информацией о префиксе, пришедшей с маршрутом
Протоколы обмена маршрутной информацией стека TCP/IP
- Технология CIDR может более эффективно использовать адресное пространство IP
- Обычно провайдеры выделяют своим клиентам адреса определенных классов, что приводит к избыточности
- При использовании CIDR провайдеры выделяют такие блоки из выделенного адресного пространства, которые точно отвечают требованиям клиента, оставляя открытой возможность расширения сети
Протоколы обмена маршрутной информацией стека TCP/IP
- Технология CIDR требует соблюдения трех основных условий:
- в служебных сообщениях должна передаваться информация об обобщенном сетевом префиксе; технология «наибольшего совпадения» должна поддерживаться всеми маршрутизаторами; для объединения маршрутов адреса должны присваиваться в соответствии с сетевой топологией
- в служебных сообщениях должна передаваться информация об обобщенном сетевом префиксе;
- технология «наибольшего совпадения» должна поддерживаться всеми маршрутизаторами;
- для объединения маршрутов адреса должны присваиваться в соответствии с сетевой топологией
- Технологии CIDR и VLSM позволяют делить адресное пространство на небольшие части подходящего размера
Протоколы обмена маршрутной информацией стека TCP/IP
- Новая шестая версия протокола IP была принята организацией IFTF в 1995 г.
- Она была описана в документе RFC 1752
- В настоящее время осуществляется постепенный переход к протоколу IPv6
- Существует несколько фрагментов Интернета, в которых поддерживаются обе версии IP
- Эти фрагменты объединены между собой и образуют так называемую « шестую магистраль » 6 bone
- Для того чтобы передать дейтаграммы IPv6 шестая магистраль инкапсулирует их в дейтаграмму IPv4 и передает их через те части Интернет, которые не поддерживают новую версию протокола
- Этот процесс называется туннелированием
- Документ RFC 1933 определяет четыре конфигурации туннелей между рабочими станциями и маршрутизаторами:
- маршрутизатор – маршрутизатор рабочая станция – маршрутизатор рабочие станции – маршрутизаторы маршрутизатор – рабочая станция
- маршрутизатор – маршрутизатор
- рабочая станция – маршрутизатор
- рабочие станции – маршрутизаторы
- маршрутизатор – рабочая станция
- использование двойных стеков протоколов
- IPv6/IPv4-узлами
- Маршрутизаторам может потребоваться дополнительная оперативная память, так как таблицы маршрутизации IPv6 больше по объему
- На рис. показано распределение уровней узла с двойным стеком
- Схема адресации IPv6 существенно отличается от схеме в IPv4
- Адреса отправителя и получателя задаются 128 битами
- Такая длина позволит на продолжительное время снять проблему дефицита адресов
- Основным механизмом, заложенным в схему адресации протокола IPv6, является введение иерархического разделения адресного пространства на уровни
- Используется пять уровней, включая два уровня идентификации провайдеров и три уровня идентификации абонентов
- Префикс определяет тип используемого адреса
- Например, адрес с идентификацией провайдера имеет префикс 010
- На рис. показан формат адреса с идентификацией провайдера
- Идентификатор организации
- Идентификатор провайдера Идентификатор абонента
- Такая структура упрощает маршрутизацию
- Поле « Идентификатор провайдера » сразу определяет сеть другого провайдера
- После определения сети провайдера маршрутизатор анализирует поле «Идентификатор абонента», которому передана информация
- Абонентом может выступать организация, которая может организовать несколько уровней иерархии в своей сети, по мере необходимости
- В протоколе IPv6 отменено разбиение на классы за счет использования технлогии CIDR, хотя она уже используется в IPv4
- Протокол IPv6 вводит несколько типов адресов:
- Индивидуальный адрес Unicast . Адрес определяет отдельное устройство в сети или порт маршрутизатора Групповой адрес набора узлов Multicast . В IPv6 нет широковещательных адресов. Эта адресация заменена поддержкой групповой передачи данных Адрес набора узлов Anycast . Этот тип используется для обеспечения прохождения своего трафика через маршрутизаторы отдельных провайдеров. В отличие от групповых адресов, такая дейтаграмма должна быть доставлена любому члену группы
- Индивидуальный адрес Unicast . Адрес определяет отдельное устройство в сети или порт маршрутизатора
- Групповой адрес набора узлов Multicast . В IPv6 нет широковещательных адресов. Эта адресация заменена поддержкой групповой передачи данных
- Адрес набора узлов Anycast . Этот тип используется для обеспечения прохождения своего трафика через маршрутизаторы отдельных провайдеров. В отличие от групповых адресов, такая дейтаграмма должна быть доставлена любому члену группы
- Основной заголовок дополнительный
- Следующий заголовок Протокол
- Поле « Лимит количества » введено для более эффективного определения времени жизни дейтаграммы
- Поле « Приоритет » позволяет отправителю задать приоритет своей дейтаграммы
- При этом значения 0..7 этого поля определяют трафик, которым маршрутизатор при необходимости может пренебречь, а значения 8..15 указывают на трафик, к которому эти меры принимать запрещено
- В протоколе IPv6 определены следующие типы дополнительных заголовков:
- Routing – полный маршрут(заголовок позволяет указать список IP-адресов, которые диктуют путь передачи); Fragmentation – содержит сведения о проведении фрагментации на конечных узлах сети Authentication – служит для идентификации конечных узлов и обеспечивает целостность дейтаграмм Encryption – служит для шифрования и дешифровки передаваемых данных
- Routing – полный маршрут(заголовок позволяет указать список IP-адресов, которые диктуют путь передачи);
- Fragmentation – содержит сведения о проведении фрагментации на конечных узлах сети
- Authentication – служит для идентификации конечных узлов и обеспечивает целостность дейтаграмм
- Encryption – служит для шифрования и дешифровки передаваемых данных
- В протоколе IPv6 определены следующие типы дополнительных заголовков (окончание):
- Hop-by-Hop Option – используется алгоритмом «переход за переходом» при обработке дейтаграмм ( Данный заголовок переносит дополнительные параметры, проверяемые промежуточными узлами. Он должен следовать первым после основного. Можно применять, например, для передачи управляющей или отладочной информации) Destination Option – содержит дополнительную информацию для узла назначения
- Hop-by-Hop Option – используется алгоритмом «переход за переходом» при обработке дейтаграмм ( Данный заголовок переносит дополнительные параметры, проверяемые промежуточными узлами. Он должен следовать первым после основного. Можно применять, например, для передачи управляющей или отладочной информации)
- Destination Option – содержит дополнительную информацию для узла назначения
- Каждый дополнительный заголовок содержит тип следующего за ним дополнительного заголовка, что позволяет создать цепочку заголовков, с основным впереди
- Основной заголовок не содержит дополнительных
- Поле « Следующий заголовок » указывает на тип следующего дополнительного заголовка
- Это продолжается до тех пор, пока в упомянутом поле очередного заголовка не встретится запись, что далее идет, например, заголовок протокола TCP
- http://tools.ietf.org/html/rfc791
- http://ru.wikipedia.org/wiki/IPv4
- http ://ru.wikipedia.org/wiki/IPv5
- http://www.iana.org/numbers/
- Протокол ICMP - http://www.citforum.ru/internet/tifamily/icmpspec.shtml
- Описание протокола ARP (Address Resolution Protocol) - http:// www.realcoding.net / articles / opisanie-protokola-arp-address-resolution-protocol.html
- Протокол UDP - http://kunegin.narod.ru/ref4/tcp/f12.htm
- Подробное описание протокола TCP - http://devoid.com.ua/c-builder/cppbuilder-network-programming/podrobnoe-opisanie-protocola-tcp.html
- Оптимизация работы протокола ТСР в распределенных сетях - http://www.osp.ru/text/print/302/144332.html
- RTP и RTCP: протоколы для IP-телефонии - http :// www.compress.ru /article.aspx?id=11931&part=index41ext1
- http ://ru.wikipedia.org/wiki/RIP2
- http://ru.wikipedia.org/wiki/OSPF
- http://ru.wikipedia.org/wiki/Border_Gateway_Protocol
- Enhanced Interior Gateway Routing Protocol (EIGRP) - http:// www.cisco.com / en /US/ tech /tk365/tk207/ tsd_technology_support_sub-protocol_home.html
- Технологии CIDR - Сеть - Каталог статей - Статьи World - http://nworldow.ru/publ/set/tekhnologii_cidr/49-1-0-1923
- Технология бесклассовой междоменной маршрутизации CIDR - http:// com-inform.narod.ru / ksptp /5_3_5_3.htm
- IPv6 — Википедия - http://ru.wikipedia.org/wiki/IPv6
- Российский Национальный IPv6 Форум. Протокол IPv6 и все что с ним связано - http://www.ipv6.ru/


Стек протоколов TCP/IP (1.46 MB)

