Windows 소켓을 사용하는 MLD 및 IGMP
Windows 소켓을 사용하면 IPv6의 MLD(멀티캐스트 수신기 검색)와 소켓 옵션 및 IOCTL을 사용하여 멀티캐스트 애플리케이션에 대해 IPv4의 IGMP(인터넷 그룹 관리 프로토콜)를 사용할 수 있습니다. 이 페이지에서는 멀티캐스트 프로그래밍을 사용하도록 설정하는 소켓 옵션을 설명하고 사용하는 방법을 설명합니다. 각 소켓 옵션에 대한 정의는 소켓 옵션 페이지를 참조하세요.
멀티캐스트 프로그래밍에 IOCTL을 사용하는 방법에 대한 자세한 내용은 이 섹션의 뒷부분에 있는 최종 상태 기반 멀티캐스트 프로그래밍을 참조하세요.
Windows Vista 이상에서는 IPv6 및 IPv4 주소를 지원하는 멀티캐스트 프로그래밍에 소켓 옵션 집합을 사용할 수 있습니다. 이러한 소켓 옵션은 IP에 구애받지 않으며 IPv6 및 IPv4 모두에서 사용할 수 있습니다. IPv6에서 이러한 소켓 옵션은 MLDv2를 사용합니다. IPv4에서 이러한 소켓 옵션은 IGMPv3을 사용합니다. 이러한 IP 독립적 옵션은 Windows Vista 이상에서 멀티캐스트 프로그래밍을 위한 기본 소켓 옵션입니다. Windows 소켓은 다음 소켓 옵션을 사용합니다.
소켓 옵션 | 인수 형식 |
---|---|
MCAST_BLOCK_SOURCE | GROUP_SOURCE_REQ 구조체 |
MCAST_JOIN_GROUP | GROUP_REQ 구조체 |
MCAST_JOIN_SOURCE_GROUP | GROUP_SOURCE_REQ 구조체 |
MCAST_LEAVE_GROUP | GROUP_REQ 구조체 |
MCAST_LEAVE_SOURCE_GROUP | GROUP_SOURCE_REQ 구조체 |
MCAST_UNBLOCK_SOURCE | GROUP_SOURCE_REQ 구조체 |
소켓 옵션 집합은 IPv6 주소만 지원하는 멀티캐스트 프로그래밍에 사용할 수 있습니다. 이러한 소켓 옵션은 MLDv1 또는 MLDv2를 사용합니다. 사용되는 MLD 버전은 Windows 버전에 따라 달라집니다. MLDv2는 Windows Vista 이상에서 지원됩니다. Windows 소켓은 다음 소켓 옵션을 사용합니다.
소켓 옵션 | 인수 형식 |
---|---|
IPV6_ADD_MEMBERSHIP | ipv6_mreq 구조체 |
IPV6_DROP_MEMBERSHIP | ipv6_mreq 구조체 |
소켓 옵션 집합은 IPv4 주소만 지원하는 멀티캐스트 프로그래밍에 사용할 수 있습니다. 이러한 소켓 옵션은 IGMPv3 또는 IGMPv2를 사용합니다. 사용되는 IGMP 버전은 Windows 버전에 따라 달라집니다. IGMPv3은 Windows Vista 이상에서 지원됩니다. Windows 소켓은 다음 소켓 옵션을 사용합니다.
소켓 옵션 | 인수 형식 |
---|---|
IP_ADD_MEMBERSHIP | ip_mreq 구조체 |
IP_ADD_SOURCE_MEMBERSHIP | ip_mreq_source 구조체 |
IP_BLOCK_SOURCE | ip_mreq_source 구조체 |
IP_DROP_MEMBERSHIP | ip_mreq 구조체 |
IP_DROP_SOURCE_MEMBERSHIP | ip_mreq_source 구조체 |
IP_UNBLOCK_SOURCE | ip_mreq_source 구조체 |
IGMPv3을 사용할 수 있는 경우 라우터가 필터링을 처리할 수 있으므로 IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP 및 IP_UNBLOCK_SOURCE 옵션이 보다 효율적으로 처리됩니다. IGMPv2만 사용할 수 있는 경우 호스트는 필터링을 처리해야 합니다.
대부분의 애플리케이션이 떨어질 가능성이 있는 두 가지 범주, 즉 모든 소스 및 제어 소스가 있습니다.
- 모든 원본 애플리케이션은 기본적으로 모든 원본을 허용하므로 필요에 따라 개별 원본을 해제할 수 있습니다. 모든 원본 애플리케이션의 예로는 모든 받는 사람이 참여할 수 있는 화상 회의 통화가 있습니다.
- 제어 소스 애플리케이션은 원본을 인터넷 라디오 방송국 또는 주목할 만한 이벤트의 브로드캐스트와 같은 지정된 목록으로 제한합니다. 소켓 옵션을 사용하는 프로세스는 각각 약간 다릅니다.
Windows Vista 이상에서는 모든 원본 애플리케이션에 다음 단계가 적용됩니다.
- MCAST_JOIN_GROUP 사용하여 그룹에 가입합니다.
- 필요한 경우 MCAST_BLOCK_SOURCE 사용하여 지정된 원본을 끕니다.
- 필요한 경우 MCAST_UNBLOCK_SOURCE 사용하여 차단된 원본을 다시 허용합니다.
- MCAST_LEAVE_GROUP 사용하여 그룹을 둡니다.
Windows Vista 이상에서는 제어된 원본 애플리케이션에 다음 단계가 적용됩니다.
- MCAST_JOIN_SOURCE_GROUP 사용하여 각 그룹/원본 쌍에 조인합니다.
- 모든 원본에서 동일한 그룹 주소를 사용하는 경우 MCAST_LEAVE_SOURCE_GROUP 사용하여 각 그룹/원본을 나가거나 MCAST_LEAVE_GROUP 사용하여 모든 원본을 그대로 둡니다.
모든 원본 애플리케이션에는 다음 단계가 적용됩니다.
- IP_ADD_MEMBERSHIP 사용하여 그룹에 가입합니다(IPv6용 IPV6_ADD_MEMBERSHIP).
- 필요한 경우 IP_BLOCK_SOURCE 사용하여 지정된 원본을 끕니다.
- 필요한 경우 IP_UNBLOCK_SOURCE 사용하여 차단된 원본을 다시 허용합니다.
- IP_DROP_MEMBERSHIP 사용하여 그룹을 둡니다(IPv6의 경우 IPV6_DROP_MEMBERSHIP).
제어된 원본 애플리케이션에는 다음 단계가 적용됩니다.
- IP_ADD_SOURCE_MEMBERSHIP 사용하여 각 그룹/원본 쌍을 조인합니다.
- 모든 원본에서 동일한 그룹 주소를 사용하는 경우 IP_DROP_SOURCE_MEMBERSHIP 사용하여 각 그룹/원본을 나가거나 IP_DROP_MEMBERSHIP 사용하여 모든 원본을 그대로 둡니다.
이러한 소켓 옵션이 설정된 순서에는 관련 규칙이 있습니다. 멀티캐스트 소켓 옵션에 대한 정보 및 문제 해결 정보는 멀티캐스트 소켓 옵션 동작을 참조하세요.