본문 바로가기

분류대기

Socket, 멀티 캐스트 & 브로드 캐스트

[1. 개요]

멀티 캐스트(Multicast) 통신에서 데이터 전송은 특정 그룹에 등록되어 있는 다수의 호스트를 대상으로 한다.

즉, 한번에 전송으로 다수의 호스트가 이를 수신 할 수 있다는 것이다.

 

이러한 멀티 캐스트 통신은 UDP 를 기반으로 하며, 라우터의 도움이 필요하다.

  • 라우터가 패킷을 복사하여 다수의 호스트에 이를 전달.
  • 라우터가 멀티 캐스트를 지원하지 않을 수 도 있다.

특정 그룹은 클래스 D 에 속하는 IP 주소를 대상으로 한다.

  • 224.0.0.0 ~ 239.255.255.255

브로드 캐스트(Broadcast) 통신 역시 UDP 를 기반으로하며, 멀티 캐스트와 유사하나, 전송 범위에서 그 차이가 있다.

  • 동일 네트워크에 속해있는 호스트로 그 대상이 제한된다.

또한, 브로드 캐스트 통신이라 하더라도 IP 주소 형태에 따라 두가지 형태로 구분된다.

  • Directed Broadcast
    # IP 의 호스트 주소를 전부 1로 설정 (ex, 네트워크 주소가 192.168.0 이면, 192.168.0.255)
    # A 네트워크에서, B 네트워크의 모든 호스트로 전송
  • Local Broadcast
    # 특별하게 예약 된 IP 주소, 255.255.255.255 를 사용
    # 외부 네트워크로 전달되지 않음. 같은 subnet 내 에서만

[2. 멀티 캐스트 사용]

Sender

  • UDP 소켓 open
  • TTL 설정
    # setsockopt
    # IPPROTO_IP /  IP_MULTICAST_TTL
  • sendto() 를 이용하여 전송
    # 멀티 캐스트 그룹으로 전송

Receiver

  • UDP 소켓 open
  • 멀티 캐스트 그룹으로 join
    # setsockopt
    # IPPROTO_IP / IP_ADD_MEMBERSHIP
    # struct ip_mreq;
  • recvfrom() 을 이용하여 수신

[3. 브로드 캐스트 사용]

Sender

  • setsockopt
    # SOL_SOCKET / SO_BROADCAST
  • sendto

Receiver

  • recvfrom

'분류대기' 카테고리의 다른 글