“멀티미디어 데이터의 실시간 전송”과 같이, 다수의 사용자에게 동일한 서비스를 제공해야 할 경우, TCP의 경우 수천, 수만개의 소캣을 생성해야 하고, UDP의 경우 수천 수만개의 전송해야 하는 경우, 서버와 네트워크 트래픽 측면에서 매우 부정적이다.
- 멀티캐스트 서버는 특정 멀티캐스트 그룹을 대상으로 딱 한번 데이터를 전송하더라도 그룹에 속하는 모든 클라이언트가 데이터를 수신한다.
- 멀티캐스트 그룹의 수는 IP주소 범위 내에서 얼마든지 추가가 가능하다.
- 특정 멀티캐스트 그룹으로 전송되는 데이터를 수신하려면 해당 그룹에 가입하면 된다.
멀티캐스트 방식의 데이터 전송은 UDP를 기반으로 한다.
차이점은, UDP의 목적지는 하나지만, 멀티케스트 방식은 특정 그룹에 등록된 다수의 호스트가 된다.
멀티캐스트 그룹이란 클래스 D 에 속하는 IP주소 (224.0.0.0 ~ 239.255.255.255)를
멀티캐스트 패킷은 그 형태가 UDP 패킷과 동일하
다 . 다만 일반적인 UDP 패킷과 달리 하나의 패킷만 네트워크상에 띄워 놓으면 라우터들은 이 패킷을 복
사해서 다수의 호스트에 이 를 전달한다.
TTL이란
Time to Live의 약자로써 ‘패킷을 얼마나 멀리
전달할 것인개를 결정하는 주 요소가 된다. TTL은 정수로 표현되며
이 값은 라우터를 하나 거칠 때마
다 1 씩 감소한다. 그리고 이 값이 0 이 되면 패것은 더 이상 전달되지 못하고 소멸된다.
소켓의 옵션설정을 통해 이뤄진다.
멀티캐스트 기반에서는 서버, 클라이언트라는 표현을 대신해서 전송자(Sender), 수신자(Receiver)라는 표현을 사용한다.
Sender
int send_sock;
int time_live = 64;
...
send_sock = socket(PF_INET, SOCK_DGRAM, 0);
setsockiopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (void*)&time_live, sizeof(time_live);
...
Receiver