2 소개 ¶
3 캐스팅 개론 ¶
3.1 유니 캐스팅 ¶
3.2 브로드 캐스팅 ¶
이더넷카드는 전 세계에서 유일한 48bit의 고유번호를 가지고 있으며 이 정보와 IP주소를 맵핑 시킴으로써 주변의 호스트 정보를 알 수 있게 된다. 라우터는 처음 부팅시 주변 호스트의 물리적 주소와 IP주소를 알아내야 하는데 이때 사용되는 프로토콜이 arp이며, 모든 주변 호스트에 대한 정보를 알아야 되므로 arp 요청을 브로드 캐스팅 하게 된다.
3.3 멀티 캐스팅 ¶
4.1 인터넷(IP) 프로토콜차원에서 본 멀티 캐스팅 ¶
4.2 IGMP 프로토콜을 이용한 멀티캐스팅 데이터 수신 ¶
Type | 설명 |
1 | Create Group Request |
2 | Create Group Reply |
3 | Join Group Request |
4 | Join Group Reply |
5 | Leave Group Request |
6 | Leave Group Reply |
7 | Confirm Group Request |
8 | Confirm Group Reply |
Create Group Request를 이용하면 멀티캐스팅 그룹생성을 요청할수 있는데, 그룹을 생성시킬 때 Code값을 명시함으로써 Public 혹은 Private로 그룹의 성격을 결정할 수 있다.
Code | 설명 |
0 | Public |
1 | Private |
호스트가 Create Group Request를 이용해서 그룹의 생성을 요청하면 요청을 받은 호스트나 라우터는 다음과 같은 응답을 보내게 된다.
Code | 설명 |
0 | Request Granted |
1 | Request denied, no resources |
2 | Request denied, invalid code |
3 | Request denied, invalid group address |
4 | Request denied, invalid access key |
5 – 255 | Request pending |
IGMP checksum은 IGMP헤더에 포함된 메시지를 체크하기 위해서 사용되는 값이다. IGMP메시지를 받은 측에서는 checksum값과 IGMP헤더의 메시지와 비교하는 방식으로 잡음등으로 인한 패킷손실이 있었는지를 검사하게 된다.
192.168.1.50 225.100.1.5 192.168.1.51 225.100.1.5 192.168.1.52 225.100.1.5 192.168.1.85 225.100.2.5
멀티캐스팅 라우터 테이블이 위와 같다고 할때 225.100.1.5에서의 멀티캐스팅 데이터는 50, 51, 52로 전송되고 225.100.2.5에서의 멀티캐스팅 데이터는 85로 전송될 것이다.
5 인터넷(IP)환경에서의 멀티 캐스팅 ¶
5.1 인터넷에서의 멀티 캐스팅기술 적용의 어려움 ¶
5.2 그럼 멀티캐스팅은 적어도 당분간 쓸모 없는 기술인가 ? ¶
5.2.1 MBone망 ¶

6 멀티캐스트 소켓 프로그래밍 ¶
- 멀티캐스트 주소를 이용해서 채널에 가입하고
- 채널에 가입하고 탈퇴하기 위한 채널 제어
를 위한 두 가지 사항만 염두에 두고 프로그램을 개발하면 된다.
6.1 멀티캐스트 그룹 가입 ¶
- IP_MULTICAST_LOOP : 데이터를 호스트로 루프백 시킬 것인지를 결정한다. 예를들어 멀티캐스트 채널로 자신이 전송한 메시지를 보고 싶다면 활성화 시켜야 한다.
- IP_MULTICAST_TTL : 멀티캐스트 데이터를 서브네트워크에서만 확인할 거라면, TTL을 1로 해서 외부로 나가지 않도록 한다.
- IP_MULTICAST_IF :
- IP_ADD_MEMBERSHIP : 어떤 멀티캐스트 그룹에 참가할지를 알려주기 위해서 사용한다. 멀티캐스트 그룹에 참가한 프로세스로 메시지가 전달된다.
- IP_DROP_MEMBERSHIP : 어떤 멀티캐스트 그룹에서 탈퇴하기를 위해서 사용한다.
IP_ADD_MEMBERSHIP를 이용해서 멀티캐스트 그룹에 참가시킬려면 ip_mreq 구조체에, 멀티캐스트 그룹관련 정보를 채워서 setsockopt의 옵션값으로 넘겨야 한다.
struct ip_mreq { struct in_addr imr_multiaddr; struct in_addr imr_interface; }
- imr_multiaddr : 참가할 그룹의 멀티캐스트 주소.
- imr_interface : 통신에 참가할 인터페이스 주소. 일반적으로 모든 인터페이스 주소에 대해서 참가하므로 INADDR_ANY를 사용하면 된다.
예를들어서 멀티캐스트 채널 “239.1.1.1”에 참가하고 싶다면, 다음과 같이 setsockopt를 사용하면 된다.
struct ip_mreq mreq; mreq.imr_multiaddr = inet_addr("239.1.1.1"); setsockopt(sock_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))
7.1 IPv6 멀티 캐스트 주소 영역 ¶
FF01:0:0:0:0:0:0:1 All Nodes Address [RFC2373] FF01:0:0:0:0:0:0:2 All Routers Address [RFC2373]
FF02:0:0:0:0:0:0:1 All Nodes Address [RFC2373] FF02:0:0:0:0:0:0:2 All Routers Address [RFC2373] FF02:0:0:0:0:0:0:3 Unassigned [JBP] FF02:0:0:0:0:0:0:4 DVMRP Routers [RFC1075,JBP] FF02:0:0:0:0:0:0:5 OSPFIGP [RFC2328,Moy] FF02:0:0:0:0:0:0:6 OSPFIGP Designated Routers [RFC2328,Moy] FF02:0:0:0:0:0:0:7 ST Routers [RFC1190,KS14] FF02:0:0:0:0:0:0:8 ST Hosts [RFC1190,KS14] FF02:0:0:0:0:0:0:9 RIP Routers [RFC2080] FF02:0:0:0:0:0:0:A EIGRP Routers [Farinacci] FF02:0:0:0:0:0:0:B Mobile-Agents [Bill Simpson] FF02:0:0:0:0:0:0:C SSDP [Kostic] FF02:0:0:0:0:0:0:D All PIM Routers [Farinacci] FF02:0:0:0:0:0:0:E RSVP-ENCAPSULATION [Braden] FF02:0:0:0:0:0:1:1 Link Name [Harrington] FF02:0:0:0:0:0:1:2 All-dhcp-agents [RFC3315] FF02:0:0:0:0:1:FFXX:XXXX Solicited-Node Address [RFC2373]
FF05:0:0:0:0:0:0:2 All Routers Address [RFC2373] FF05:0:0:0:0:0:1:3 All-dhcp-servers [RFC3315] FF05:0:0:0:0:0:1:4 Deprecated (2003-03-12) FF0X:0:0:0:0:0:1:1000 Service Location, Version 2 [RFC3111] -FF0X:0:0:0:0:0:1:13FF
FF0X:0:0:0:0:0:0:0 Reserved Multicast Address [RFC2373] FF0X:0:0:0:0:0:0:C SSDP [Kostic] FF0X:0:0:0:0:0:0:100 VMTP Managers Group [RFC1045,DRC3] FF0X:0:0:0:0:0:0:101 Network Time Protocol (NTP) [RFC1119,DLM1] FF0X:0:0:0:0:0:0:102 SGI-Dogfight [AXC] FF0X:0:0:0:0:0:0:103 Rwhod [SXD] FF0X:0:0:0:0:0:0:104 VNP [DRC3] FF0X:0:0:0:0:0:0:105 Artificial Horizons - Aviator [BXF] FF0X:0:0:0:0:0:0:106 NSS - Name Service Server [BXS2] FF0X:0:0:0:0:0:0:107 AUDIONEWS - Audio News Multicast [MXF2] FF0X:0:0:0:0:0:0:108 SUN NIS+ Information Service [CXM3] FF0X:0:0:0:0:0:0:109 MTP Multicast Transport Protocol [SXA] FF0X:0:0:0:0:0:0:10A IETF-1-LOW-AUDIO [SC3] FF0X:0:0:0:0:0:0:10B IETF-1-AUDIO [SC3] FF0X:0:0:0:0:0:0:10C IETF-1-VIDEO [SC3] FF0X:0:0:0:0:0:0:10D IETF-2-LOW-AUDIO [SC3] FF0X:0:0:0:0:0:0:10E IETF-2-AUDIO [SC3] FF0X:0:0:0:0:0:0:10F IETF-2-VIDEO [SC3] FF0X:0:0:0:0:0:0:110 MUSIC-SERVICE [Guido van Rossum] FF0X:0:0:0:0:0:0:111 SEANET-TELEMETRY [Andrew Maffei] FF0X:0:0:0:0:0:0:112 SEANET-IMAGE [Andrew Maffei] FF0X:0:0:0:0:0:0:113 MLOADD [Braden] FF0X:0:0:0:0:0:0:114 any private experiment [JBP] FF0X:0:0:0:0:0:0:115 DVMRP on MOSPF [Moy] FF0X:0:0:0:0:0:0:116 SVRLOC [Guttman] FF0X:0:0:0:0:0:0:117 XINGTV <hgxing@aol.com> FF0X:0:0:0:0:0:0:118 microsoft-ds <arnoldm@microsoft.com> FF0X:0:0:0:0:0:0:119 nbc-pro <bloomer@birch.crd.ge.com> FF0X:0:0:0:0:0:0:11A nbc-pfn <bloomer@birch.crd.ge.com> FF0X:0:0:0:0:0:0:11B lmsc-calren-1 [Uang] FF0X:0:0:0:0:0:0:11C lmsc-calren-2 [Uang] FF0X:0:0:0:0:0:0:11D lmsc-calren-3 [Uang] FF0X:0:0:0:0:0:0:11E lmsc-calren-4 [Uang] FF0X:0:0:0:0:0:0:11F ampr-info [Janssen] FF0X:0:0:0:0:0:0:120 mtrace [Casner] FF0X:0:0:0:0:0:0:121 RSVP-encap-1 [Braden] FF0X:0:0:0:0:0:0:122 RSVP-encap-2 [Braden] FF0X:0:0:0:0:0:0:123 SVRLOC-DA [Guttman] FF0X:0:0:0:0:0:0:124 rln-server [Kean] FF0X:0:0:0:0:0:0:125 proshare-mc [Lewis] FF0X:0:0:0:0:0:0:126 dantz [Yackle] FF0X:0:0:0:0:0:0:127 cisco-rp-announce [Farinacci] FF0X:0:0:0:0:0:0:128 cisco-rp-discovery [Farinacci] FF0X:0:0:0:0:0:0:129 gatekeeper [Toga] FF0X:0:0:0:0:0:0:12A iberiagames [Marocho] FF0X:0:0:0:0:0:0:12B X Display [McKernan] FF0X:0:0:0:0:0:0:201 "rwho" Group (BSD) (unofficial) [JBP] FF0X:0:0:0:0:0:0:202 SUN RPC PMAPPROC_CALLIT [BXE1] FF0X:0:0:0:0:0:0:300 Mbus/Ipv6 [RFC3259] FF0X:0:0:0:0:0:2:0000 -FF0X:0:0:0:0:0:2:7FFD Multimedia Conference Calls [SC3] FF0X:0:0:0:0:0:2:7FFE SAPv1 Announcements [SC3] FF0X:0:0:0:0:0:2:7FFF SAPv0 Announcements (deprecated) [SC3] FF0X:0:0:0:0:0:2:8000 -FF0X:0:0:0:0:0:2:FFFF SAP Dynamic Assignments [SC3]
멀티캐스팅의 특성에 맞게 멀티미디어와 관려된 많은 서비스들이 존재하고 있음을 알 수 있다. 멀티미디어 서비스 외에도 NIS, NTP, NSS와 같이 동일한 정보를 여러개의 서버로 배포하는 인터넷 서비스를 위한 주소영역도 예약되어 있음을 확인할 수 있다. X Display를 위한 서비스가 있는게 개인적으로 유독 눈에 띈다.