2010-06-18 4 views
21

나는 내 문제에 어떻게 접근해야할지 잘 모르겠습니다. 원격 패킷을 수신하고 처리하는 원격 컴퓨터에서 실행되는 서비스가 있습니다. 나는이 패킷을 원하는 사람에게 재전송 할 수 있기를 바란다. (아무도 할 수 없지만, 일반적으로 하나의 기계가 될 수 있지만, 더 많을 수도있다.)인터넷을 통한 UDP 멀티 캐스트?

나는 UDP 멀티 캐스팅이 이상적이라고 생각했다. 서비스는 멀티 캐스트 그룹에 전송할 수 있으며 등록 된 수신자 수 또는 등록자가없는 경우에도 상관이 없습니다.

그러나 인터넷을 통해 액세스 할 수 있기를 원하며 내가 수집 한 정보는 UDP 멀티 캐스팅에서 거의 불가능합니다. 이것을 달성하기 위해 사용할 수있는 다른 방법이 있습니까?

관련이 있다면 내 고객과 서비스 모두 C#으로 작성됩니다.

답변

20

일반적으로 멀티 캐스트 패킷이 라우팅되지 않기 때문에이 작업을 수행 할 수 없습니다.

이 문제를 해결할 수있는 몇 가지 기술이 있지만 (DVMRP, MOSPF 및 기타) 서버와 클라이언트간에 모든 라우터를 구성하거나 터널을 만들어야합니다. 멀티 캐스트를 지원하는 백본 네트워크 (Abilene, Mbone)가 있지만 대학 등에서 가장 관심있는 네트워크입니다. 일반 소비자의 인터넷에는 멀티 캐스트가 없습니다.

불행히도 지점 간 통신이 필요합니다. 그러나 당신은 좋은 회사, 인터넷, 라디오 및 TV 모두에서 동일한 데이터를 여러 번 전송하면서 점대 점을 사용합니다. 엄청난 대역폭 낭비.

+2

Mbone은 오래 전에 해제되었지만 IPv6에서는 멀티 캐스트를 요구하고 일부 ISP에는 독일과 영국과 같은 DVB에 IPv4 멀티 캐스트가 있습니다. –

+3

많은 서비스가 로컬로 멀티 캐스팅하기 위해 UDP 또는 PGM을 사용합니다. 인터넷을 통해 원격 사이트와 같은 다른 사이트를 연결해야하는 경우 TCP 터널을 사용할 수 있습니다. TCP 터널은 로컬 UDP를 수신하고 다시 브로드 캐스트되는 다른 쪽 경로로 트래픽을 라우팅합니다. 이것은 두 사무실 등을 연결하는 데 유용합니다. 여기 UDP에 대한 도움이 필요한 경우 자습서가 있습니다. http://jarloo.com/code/networking/c-udp-multicasting-tutorial/ – Kelly

11

선호하는 방법은 오버레이 멀티 캐스트를 사용하는 것입니다. 즉, 피어간에 TCP 링크를 사용하고 그 위에 멀티 캐스트 의미론을 구현하는 것입니다.

많은 IPv4 라우터가 멀티 캐스트를 지원하지 않거나 비활성화되어 있습니다. IPv6은 멀티 캐스트 및 브로드 캐스트 의미론이 제거되도록 요구됩니다.