IGMP: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
наполнение категории по ен-вики (проверяйте и откатывайте, если что) с помощью AWB
Нет описания правки
Строка 11:
|Серверы = <!-- реализации стека TCP/IP в [[Microsoft Windows|Windows]], [[Linux]] и [[BSD]] -->
}}
'''IGMP''' ({{lang-en|Internet Group Management Protocol}} — протокол управления группами Интернета) - [[сетевой протокол|протокол]], используетсяуправления узлами[[multicast|групповой (multicast) передачей ]] данных в сетисетях, основаннойоснованных на протоколе [[IPv4Internet Protocol|протоколе IP]],. дляIGMP сообщения принадлежности киспользуется [[IP-группа|IP-группемаршрутизатор]]ами сетевыми [[маршрутизаторУзел сети|IP-узлами]]ам, адля такжеопределения выполнениячленства другихсетевых функцийустройств управленияв [[групповаяразличных маршрутизация|групповойгруппах маршрутизацией]]локальной сети.
 
Этот протокол является частью спецификации [[multicast|групповой передачи]] пакетов в [[Internet Protocol|IP-сетях]]. IGMP расположен выше [[Сетевой уровень|сетевого уровня]], хотя, по сути, действует не как [[Транспортный уровень|транспортный протокол]].<ref>[http://www.networksorcery.com/enp/protocol/igmp.htm Network Sorcery - IGMP]</ref> Он во многом аналогичен [[ICMP]] для [[unicast|односторонней передачи]]. IGMP может использоваться для поддержки [[Потоковое мультимедиа|потокового видео]] и [[Онлайн-игра|онлайн-игр]], для этих типов приложений он позволяет использовать сетевые ресурсы более эффективно. IGMP уязвим к некоторым атакам<ref>Spoofed [http://www.securityfocus.com/bid/5020/info IGMP report denial of service] vulnerability.</ref><ref>[http://support.microsoft.com/default.aspx?scid=kb;en-us;238329&sd=tech Fragmented IGMP packet] may promote "Denial of Service" attack.</ref><ref>[http://www.securemulticast.org/GSEC/gsec3_ietf53_SecureIGMP1.pdf#search=%22igmp%20attacks%22 IGMP Security Problem Statement and Requirements].</ref><ref>Microsoft Security Bulletin MS06-007: [http://www.microsoft.com/technet/security/Bulletin/MS06-007.mspx Vulnerability in TCP/IP Could Allow Denial of Service (913446)].</ref>, и файрволы обычно позволяют пользователю отключить этот протокол, если в нем нет необходимости.
IGMP версии 3 определён в RFC 3376. Предыдущие версии IGMP определены в RFC 2236 (версия 2) и RFC 1112 (версия 1).
 
IGMP используется только в сетях [[IPv4]], так как в [[IPv6]] групповая передача пакетов реализована по-другому.
См. также: [[IGMP snooping]] — функция [[Сетевой коммутатор|комутаторов]] [[Ethernet]], позволяющая оптимизировать работу локальной сети с учетом использования в ней IGMP.
 
== Архитектура ==
== История изменений ==
Сеть, предоставляющая услуги групповой передачи данных (например, видео) с использованием IGMP, может иметь следующую базовую архитектуру:
=== IGMP версии 2 ===
 
Версия 2 позволяет [[маршрутизатор]]у быстрее обнаружить, что членов какой-либо [[IP-группа|IP-группы]] больше нет.
[[Image:IGMP.png|550px|Пример архитектуры IGMP]]
 
IGMP используется клиентским компьютером и соседними [[свитч]]ами для соединения клиента и локального маршрутизатора, осуществляющего групповую передачу. Далее между локальным и удаленным маршрутизаторами используется протокол [[Protocol-Independent Multicast]] (PIM), с его помощью групповой трафик направляется от видеосервера к многочисленным клиентам групповой передачи.
 
== Стандарты ==
Согласно [[Request for Comments]] (RFC), документу сообщества [[Internet Engineering Task Force]] (IETF), существует три версии IGMP. IGMPv1 определен в [http://tools.ietf.org/html/rfc1112 RFC 1112], IGMPv2 - в [http://tools.ietf.org/html/rfc2236 RFC 2236] и IGMPv3 - в [http://tools.ietf.org/html/rfc3376 RFC 3376].
 
ВОсновным версииулучшением 3в былаIGMPv3 добавленаотносительно IGMPv2 является поддержка фильтрации адресов[[IP-адрес]]ов. С помощью этого механизма узел может сообщить, с каких адресов он хочет получать пакеты, а с каких нет.
 
== Реализация ==
Протокол IGMP реализован в виде серверной и клиентской частей, первая из которых выполняется на маршрутизаторе, вторая - в узле сети, получающем групповой трафик. Клиент посылает уведомление о принадлежности к какой-либо группе локальному маршрутизатору, в это время маршрутизатор находится в ожидании уведомлений и периодически рассылает клиентам запросы.
 
[[операционная система |Операционные системы]] [[FreeBSD]], [[Linux]] и [[Microsoft Windows | Windows]] поддерживают клиентскую часть протокола. В системе Linux IGMPv3 был добавлен в версии ядра 2.5. Для FreeBSD IGMPv3 был добавлен в версии 8.0.
 
Для реализации серверной части IGMP в Linux используются [[Демон (программа)|демоны]], например, [[mrouted]] может действовать как IGMP маршрутизатор. Существуют также целые программные комплексы (такие, как [[XORP]]), позволяющие превратить обычный компьютер в полнофункциональный маршрутизатор групповой передачи.
 
== Структура пакетов IGMPv3 ==
Определена стандартом [http://tools.ietf.org/html/rfc3376#section-4 RFC 3376].
 
===Запрос принадлежности (Membership Query Message)===
Запросы принадлежности рассылаются маршрутизаторами для того, чтобы для каждого узла определить его принадлежность к каким-либо группам (group membership state) и список источников информации, от которых данный узел хочет получать сообщения (reception state). Существует три типа таких запросов:
* Общие запросы (General Queries) позволяют получить полную информацию для каждого из узлов. Маршрутизатор периодически рассылает эти запросы всем системам, подключенным к его сети.
* Запросы с указанием группы (Group-Specific Queries) используются для определения состояния подписки для заданной группы узлов. Такие запросы рассылаются по соответствующему групповому адресу.
* Запросы с указанием группы и источника (Group-and-Source-Specific Queries) позволяет для каждого узла заданной группы определить, какие сообщения из всех, посылаемых заданными источниками, этот узел хочет получать.
 
{| class="wikitable" style="text-align: center;"
|-
! width="25px"|смещение в битах
! colspan="4" width="60px"|0-3
! colspan="1" width="15px"|4
! colspan="3" width="45px"|5-7
! colspan="8" width="120px"|8-15
! colspan="16" width="240px"|16-31
|-
! 0
| colspan="8"| Тип = 0x11
| colspan="8"| Код макс. ответа
| colspan="16"| Контрольная сумма
|-
! 32
| colspan="32"| Групповой адрес
|-
! 64
| colspan="4"| Resv
| colspan="1"| S
| colspan="3"| QRV
| colspan="8"| QQIC
| colspan="16"| Кол-во источников (N)
|-
! 96
| colspan="32"| Адрес источника [1]
|-
! 128
| colspan="32" bgcolor="#FFDDDD"| Адрес источника [2]
|-
!
| colspan="32" bgcolor="#FFDDDD"| . . .
|-
!
| colspan="32" bgcolor="#FFDDDD"| Адрес источника [N]
|}
 
; Код макс. ответа (Max Resp Code) : В этом поле указывается максимальное время (в 1/10 секунды) ожидания ответа, соответствующего данному запросу. Если значением является число, меньшее 128, оно используется напрямую. Если же значение больше или равно 128, оно интерпретируется как экспонента с мантиссой.
; Контрольная сумма (Checksum) : 16-битная контрольная сумма для всего IGMP-сообщения.
; Групповой адрес (Group Address) : Групповой адрес, используемый в запросах с указанием группы. При общем запросе это поле устанавливается равным нулю.
; Resv : Это поле зарезервировано, его следует обнулять при посылке и игнорировать при получении.
; Флаг S (Прекратить серверную обработку, Suppress Router-side Processing): Установка этого флага указывает всем маршрутизаторам, получившим данное сообщение, прекратить обновления по таймеру.
; QRV (Переменная надежности запрашивающего, Querier's Robustness Variable) : Когда это поле не равно нулю, оно содержит переменную надежности (Robustness Variable), значение которой используется посылающим устройством. Маршрутизаторы должны обновлять их переменные надежности в соответствии с последним полученным запросом, пока это поле ненулевое.
; QQIC (Код интервала запроса, Querier's Query Interval Code) : Значение этого поля указывает интервал между запросами (Query Interval), используемый запрашивающим. Если значением является число, меньшее 128, оно используется напрямую. Если же значение больше или равно 128, оно интерпретируется как экспонента с мантиссой.
; Количество источников (Number of Sources, N) : Поле определяет число адресов источников, присутствующих в этом запросе. Для общих запросов и запросов с указанием группы это значение равно нулю. Для запросов с указанием группы и источника это поле ненулевое, оно ограничено значением [[MTU]] сети.
; Адрес источника [i] (Source Address) : Эти поля представляют собой массив индивидуальных (не групповых) IP-адресов источников данных.
 
== См. также ==
*[[IGMP snooping]]
 
== Ссылки ==
* [http://www.networksorcery.com/enp/protocol/igmp.htm Network Sorcery - IGMP]
* [http://technet2.microsoft.com/WindowsServer/en/Library/fe09af2c-3deb-4c6c-a79f-35c6953a8c9d1033.mspx IPv4 Multicasting Tools and Settings on Microsoft TechNet]
* [http://www.commsdesign.com/article/printableArticle.jhtml?articleID=52200253 Different version and details on IGMP]
 
== Примечания ==
{{reflist}}
 
=== IGMP версии 3 ===
В версии 3 была добавлена поддержка фильтрации адресов. С помощью этого механизма узел может сообщить, с каких адресов он хочет получать пакеты, а с каких нет.
 
{{IPstack}}