네트워크

[네트워크] 멀티캐스트, 브로드캐스트

양원준 2022. 11. 29. 14:27
728x90


멀티캐스트

  • 멀티캐스트 서버는 특정 멀티캐스트 그룹을 대상으로 데이터를 1회 전송
  • 1회 전송해도 그룹에 속하는 클라이언트는 모두 데이터를 수신
  • 멀티캐스트 그룹의 수는 IP 주소 범위 내에서 얼마든지 추가 가능
  • 데이터를 수신하려면 해당 그룹에 가입하면됨
  • 멀티캐스트는 연결의 개념이 존재하지 않기 때문에 UDP 소켓이 기반임

 

 

TTL(time to live)

  • 패킷을 얼마나 멀리 보낼것인가
  • 정수로 표현, 라우터를 하나 거칠 때마다 1씩 감소
  • TTL이 0되면 해당 패킷은 소멸

 

send_sock(socket(PF_INET, SOCK_DRAAM, 0);
setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, *, * );

 

위는 멀티 캐스트 설정

TTL 설정 : IPPROTO_IP

옵션 이름 : IP_MULTICAT_TTL

 

setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, * , * );

 

멀티 캐스트 그룹 가입

 

struct ip_mreq{
	struct in_addr imr_multiaddr;
    	struct in_addr imr_interface;
}

 

가입한 멀티 캐스트 그룹은 구조체로 표현

 

 

 

sender에서는 특정 멀티캐스트 그룹을 향해 파일에 저장된 데이터 전송

 

 

 

receiver가 멀티캐스트 그룹에 가입을 하는 순간 데이터 수신

 

 

 

 

브로드캐스트

  • 동일한 네트워크 내에 존재하는 호스트에게 데이터 전송
  • 데이터 전송 대상은 호스트가 아닌 네트워크
  • udp 소켓 기반
  • ip에서 네트워크 주소를 제외한 호스트 주소를 모두 1로 해서 전송하면, 해당 네트워크로 데이터가 전송 -> directed 브로드캐스트
  • 255.255.255.255로 데이터를 전송하면, 전송한 호스트가 속한 네트워크로 데이터가 전송 -> local 브로드캐스트

 

 

 

send_sock=socket(PF_INET, SOCK_DGRAM, 0);
setsocket(send_sock, SOL_SOCEKT, SO_BROADCAST, *, *);

 

브로드캐스트 설정

브로드캐스트가 가능하려면, SO_BROADCAT 옵션정보를 1로 변경해야한다

 

 

 

브로드캐스트 sender, 일반적 udp 프로그램과 차이가 없음

 

 

브로드캐스트 receiver, 마찬가지로 일반적 udp receiver와 동일

 

 

 

브로드캐스트와 멀티캐스트의 차이

 

브로드캐스트 -> 모든 네트워크에 데이터 전송

멀티캐스트 -> 특정 가입 호스트에만 데이터 전송

 

 

 

 

728x90