개념
Unicast란?
- 1개의 발신자 , 1개의 수신자
- 원투원(one to one) 전달
- 예를 들면 네트워크에서 10.1.2.0 ip를 가지는 디바이스가 20.12.4.2 ip를 가지는 디바이스에게 데이터 패킷을 전송하고 싶으면, unicast
- 네트워크를 통한 데이터 전송의 보편적인 방식이다.
Broadcast란?
- 1개의 발신자와 전체의 수신자
- 원투올(one to all) 전송 기법
- braodcast 2가지로 나눌 수 있음
- 제한적인 브로드캐스팅 (limited broadcasting)
- "같은 네트워크망"에 있는 디바이스들 모두에게 데이터패킷을 전송하는 방법
이게 가능하려면 ip의 모든 bit를 1로 설정해야 한다. (255.255.255.255 - limited broadcast address라고 부름)
- 직접적인 브로드캐스팅 (Direct Broadcasting)
- "다른 네트워크망"에 있는 디바이스들 모두에게 데이터 패킷을 전송하는 방법
이게 가능하려면 ip의 host 부분의 비트가 1이어야 한다. (x.x.x.255 - direct broadcast address라고 부름)
- Direct broadcastring 모드는 대부분 tv에서 사용된다
- 컴퓨터 네트워크에서 이 클래스의 중요한 프로코콜은 ARP(Address Resolution Protocol)이다. ARP는 기본 통신을 위해 필요한 ip들을 물리적 주소로 예약해놓는다.
Multicast란?
- N개의 발신자와 n개의 수신자
- 엔투엔(n to n)전송 기법
- 멀티캐스트는 유니캐스트와 브로드캐스트의 중간 성격
- 멀티캐스트는 보통 ip멀티캐스트 형태로 구현된다.
- Ip멀티캐스트에서 구현은 보통 ip라우팅 단게에서 구현되고, 이 때 라우터는 데이터그램을 멀티캐스트 대상 주소로 보내기 위한 최적의 전송 경로를 생성한다.
- 즉, 1개의 발신자가 여러 패킷 복사본을 동시에 n개의 수신자에게 보내는 것이 아니다.
발신자가 하나의 패킷을 보내면, 라우터에서 이것의 복사본을 여러 곳에 보내는 방식이다.
tcp, udp와 멀티캐스트 개념
다수의 클라이언트에게 동일한 데이터를 전송하는 일조차 서버와 네트워크의 트래픽 측면에서는 매우 부정적
- tcp의 경우 : 클라이언트 수만큼 소켓연결을 유지해야 함
- udp의 경우: 클라이언트 수만큼 데이터 전송이 필요
=> 이러한 상황에서의 해결책으로 멀티캐스트라는 기술이 존재
멀티캐스트
- Udp를 기반으로 함
- 멀티캐스트 서버는 특정 멀티캐스트 그룹을 대상으로 데이터를 "딱 한 번" 전송
- 딱 한 번 전송하더라도 그룹에 속하는 클라이언트는 모두 데이터를 수신
- 멀티캐스트 그룹의 수는 ip주소 범위 내에서 얼마든지 추가 가능
- 특정 멀티캐스트 그룹으로 전송되는 데이터를 수신하려면 해당 그룹에 가입하면 됨. (멀티캐스트 그룹이란? 클래스 D(244.0.0.0~239.255.255.255.255)를 의미)
- 멀티캐스트 패킷의 형태가 u에 패킷과 동일
멀티캐스트 UDP 코드 구현
- SOCK_DGRAM 타입의 소켓이 생성
- sending
INET, SOCK_DGRAM
Ip address : 255.1.1.1
Port: 55555
Setsockopt() IP_MULTICAST_LOOP -> 내가 보내는 나의 데이터그램을 받지 않도록
Setsockopt() IP_MULTICAST_IF -> 멀티캐스트 데이터그래임이 보내는 로컬 인터페이스를 정의?
Sendto() : 특정 ip 그룹에 데이터그램을 전송
- receiving
INET, SOCK_DGRAM
Setsockopt() SO_REUSEADDR -> 같은 로컬 포트 번호를 가진 데이터 그램을 받을 수 있도록
Bind() -> 로컬 포트 번호를 지정함. 여기 예제에서 ip 주소는 INADDR_ANY로 설정해서 멀티캐스트 그룹에 있는 데이터그램을 받음
Setsockopt() IP_ADD_MEMBERSHIP -> 데이터그램을 받는 멀티캐스트 그룹에 조인함. 이 예제에서 멀티캐스트 그룹(255.1.1.1)이 로컬 9.5.1.1인터페이스에 조인함
출처 :
Difference between Unicast, Broadcast and Multicast in Computer Network - GeeksforGeeks
https://www.ibm.com/docs/en/i/7.2?topic=designs-examples-using-multicasting-af-inet
https://novice-programmer-story.tistory.com/30