2014-02-05 4 views
1

В данный момент я играю в многоадресной рассылке, и я сталкиваюсь с некоторыми странными вещами, которые я не понимаю.Нет ответа на ping 224.0.0.1

Я создаю чат многоадресных клиентов, и все, кажется, работает нормально. После этого я прочитал некоторую документацию по Linux и выяснил, что, отправив сообщение 224.0.0.1, я должен вернуть мне ответ со всех узлов, которые присоединились к некоторой группе многоадресной рассылки. Я пробовал это на xp и на win7 машине. Поведение одинаково для обоих из них. Кажется, что мой клиент присоединился только к группе, которую я определил (224.0.19.1). Он не входит в группу 224.0.0.1.

С Wireshark: [IP-адрес источника] 224.0.0.22 IGMPv3 54 Membership Report/Join группа 224.0.19.1 для любых источников

А вот как я установил мой сокет:

 IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port)); 

     m_socket.Bind(ipep); 

     IPAddress ip = IPAddress.Parse(mcastGroup); 

     m_socket.SetSocketOption(
      SocketOptionLevel.IP, SocketOptionName.AddMembership, 
      new MulticastOption(ip, IPAddress.Any)); 

Тогда я проверено в Netsh:

C:\Users\user1>netsh interface ip show joins 

Interface 1: Loopback Pseudo-Interface 1 

Scope  References Last Address 
---------- ---------- ---- --------------------------------- 
0     2 Yes 239.255.255.250 

Interface 11: LAN 

Scope  References Last Address 
---------- ---------- ---- --------------------------------- 
0     0 Yes 224.0.0.1 
0     1 Yes 224.0.0.252 
0     1 Yes 224.0.19.1 
0     1 Yes 230.230.230.230 
0     2 Yes 239.255.255.250 

Interface 15: Local Area Connection* 9 

Scope  References Last Address 
---------- ---------- ---- --------------------------------- 
0     0 Yes 224.0.0.1 

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

Вопрос теперь: Это что-то не поддерживается окнами? Не поддерживается .NET? Я забыл что-то реализовать? Буду признателен за любую помощь. Thanx.

ответ

0

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

+0

Это правда. Но 224.0.0.1 - это особый тип группы: «224.0.0.1 - это группа всех хостов. Если вы выполните ping из этой группы, все хосты, поддерживающие многоадресную рассылку в сети, должны ответить, так как каждый хост, поддерживающий многоадресную рассылку, должен присоединиться к этой группе при запуске на всех его интерфейсах с поддержкой многоадресной передачи ». http://www.tldp.org/HOWTO/Multicast-HOWTO-2.html – Gico

2

Я потратил некоторое время на расследование этой проблемы, и я решил поделиться тем, что узнал.

Как только вы привязаны к какой-либо группе многоадресной рассылки, счетчик ссылок увеличивается. Ссылки на 224.0.0.1 всегда равны 0, так как невозможно связать в эту группу (по крайней мере, не на win7).

Кажется, что многоадресный пинг отключен на окнах. Я не нашел ответа на это, но я узнал, что мой принтер HP отвечает на ping 224.0.0.1.

D:\tools>ping 224.0.0.1 

Pinging 224.0.0.1 with 32 bytes of data: 
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64 
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64 
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64 
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64 

Есть еще одна возможность проверить, пользуется ли кто-нибудь многоадресный адрес и в какой группе они находятся. Запустив igmpquery tool, вы получите отчет о членстве всеми узлами. Инструмент фактически посылает общий запрос IGMP на 224.0.0.1 адрес, и после этого получить ответ от всех узлов:

Source    Destination   Protocol Length Info 
10.11.72.28   224.0.0.1    IGMPv2 60  Membership Query, general 
10.11.72.12   224.0.0.252   IGMPv2 60  Membership Report group 224.0.0.252 
10.11.72.12   239.255.255.250  IGMPv2 60  Membership Report group 239.255.255.250 
10.11.72.28   224.0.19.1   IGMPv2 46  Membership Report group 224.0.19.1 
10.11.72.254   224.0.0.2    IGMPv2 60  Membership Report group 224.0.0.2 
10.11.72.103   224.0.0.251   IGMPv1 60  Membership Report 

узел будет реагировать только тогда, когда он слушает на какой адрес многоадресной передачи. Узел win может присоединиться к группе 224.0.0.1, если он способен принимать запросы IGMP. Это можно отключить, установив значение реестра IGMPLevel на 0.

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

Смежные вопросы