본문 바로가기
SWE/네트워크

Unicast / Broadcast / Multicast

by S나라라2 2022. 9. 13.
반응형

개념

 

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

 

반응형