2014-02-05 3 views
1

요즘에는 멀티 캐스트를 즐기고 있습니다. 이해가 안가는 이상한 일들이 생깁니다.ping에 응답이 없습니다. 224.0.0.1

채팅 멀티 캐스트 클라이언트를 만들고 모든 것이 정상적으로 작동하는 것처럼 보입니다. 그 후 나는 리눅스 문서를 읽고 224.0.0.1에 ping을하면 일부 멀티 캐스트 그룹에 가입 한 모든 노드로부터 응답을 리턴해야한다는 것을 알아 냈다. 나는 XP와 win7 머신에서 그걸 시도했다. 행동은 둘 다 동일합니다. 내 의뢰인이 내가 정의한 그룹에 합류 한 것 같습니다 (224.0.19.1). 224.0.0.1 그룹에 가입하지 않습니다. 와이어 샤크에서

: 어떤 소스 여기

그리고 대한 [소스 IP] 224.0.0.22 된 IGMPv3 54 회원 보고서/가입 그룹 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 주소에 대한 참조가 없음을 알 수 있습니다. 물론 두 컴퓨터 모두에서 방화벽을 해제했습니다.

이제 질문입니다.이 기능은 Windows에서 지원하지 않습니까? .NET에서 지원되지 않습니까? 뭔가를 구현하는 것을 잊었습니까? 나는 어떤 도움을 주셔서 감사합니다. 고맙습니다.

답변

0

멀티 캐스트 주소는 개별 컴퓨터에 할당되지 않으므로 은 핑할 수 없습니다. 멀티 캐스트 주소는 개별 " "이 "구독"하는 "그룹"입니다.

+0

사실입니다. 하지만 224.0.0.1은 특별한 유형의 그룹입니다 : "224.0.0.1은 all-hosts 그룹입니다.이 그룹에 ping을 실행하면 모든 멀티 캐스트 가능 호스트가 시작시 해당 그룹에 가입해야하므로 네트워크의 모든 멀티 캐스트 가능 호스트가 응답해야합니다 멀티 캐스트가 가능한 인터페이스 다. " http://www.tldp.org/HOWTO/Multicast-HOWTO-2.html – Gico

2

나는이 문제에 대한 조사에 시간을 할애하여 배운 것을 나누기로 결정했습니다.

일부 멀티 캐스트 그룹에 바인드하면 참조 카운트가 증가합니다. 224.0.0.1에 대한 참조는이 그룹에 바인드 할 수 없으므로 항상 0입니다 (적어도 win7은 아님).

Windows에서 멀티 캐스트 핑이 비활성화 된 것으로 보입니다. 그 답을 찾지 못했지만 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을 실행하면 모든 노드가 구성원 보고서를 받게됩니다. 이 도구는 실제로 224.0.0.1 주소에 IGMP 일반 쿼리를 전송하고, 그 후 모든 노드에서 응답 얻을 : 그것은 어떤 멀티 캐스트 주소에서 수신 않다면 노드는 응답

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 

합니다. 승리 노드는 IGMP 요청을 수신 할 수있는 한 224.0.0.1 그룹에 참여할 수 있습니다. IGMPLevel 레지스트리 값을 0으로 설정하면이 기능을 비활성화 할 수 있습니다.

그 자체로 모든 질문을 설명했습니다. 유일한 문제는 여전히 나를 귀찮게하는 것입니다. 멀티 캐스팅 핑이 Windows에서 지원되지 않는다는 공식 문서를 찾지 못했기 때문입니다. Ping 요청을 보낼 수 있지만 목록을 완전히, 아니라 에코 보낼 수 없습니다.