네트워크/개념

[NW] #8. Broadcast, Multicast, Unicast

코딩하는상후니 2022. 10. 6. 16:22

 

 


 

 

 

 
네트워크 통신에 있어서,
해당 데이터를 몇 명에게 전달할 것인가는 중요한 사안이다.
왜냐하면 결국 효율 때문이다.
 
 
보통의 통신에서는 서로 일대일로 데이터를 주고 받겠다.
 
하지만 경우에 따라서,
해당 데이터를 연결된 곳 모두에게 전달해야할 상황도 생길 것이다.
 
이 때, 각각 수신자에게 일일이 목적지를 써가며 데이터를 N 번 보내느냐
동시에 1번 통보해서 보내느냐에 따라서 네트워크 트래픽이 달라진다.
 
 
또 해당 데이터를 선택된 몇몇에게만 전달해야할 상황도 존재하는데,
이 때는 어떤 방법이 효과적일까.
 
 
이러한 상황들에서 쓸 수 있는 방식들을 알아보자.
 
 
 
 
 
 
 
 
 

* 유니캐스트 ( Unicast )

 

 

 

 
 
=> 출발지와 목적지가 분명한 경우를 유니캐스트 전송이라고 한다.
 
보통 각각 Ehternet Header, IP Header 에서 출발지, 목적지 주소를 붙이고
1 : 1 통신의 형태로 데이터를 전송하는 것을 말한다.
 
 
 
=> 목적지 주소가 자신이 아니라면 해당 Ethernet 헤더를 버리고
목적지를 복사하고 출발지를 자신의 것으로 정의 후,
프레임 형태로 해당 라우터에서 연결된 라우터로 보내지게 된다.
 
 
 
=> 목적지가 정해져 있어서 해당 위치에 데이터를 송신해야하기 때문에
전송 비용이 높다.
 
 
 
 
 
 

* 유니캐스트 플러딩

 
 

 

 

 
어떤 종단 ( End-point, User ) 와 라우터가 통신할 때,
라우터는 해당 '목적지의 정보를 어떤 테이블' 에 저장을 하게 된다.
 
 
이 테이블에는
어떤 일정 기간을 가지고 목적지 정보를 테이블에 기입하는데
 
만약 해당 테이블에 목적지 정보가 없다면,
해당 라우터는 '라우팅 알고리즘' 을 사용해 연결된 모든 곳에 전달한다.
 
 
오늘날 사용되는 대표적 두 가지 라우팅 알고리즘
'플러딩 / 브로드캐스트' 를 사용한다.
 
 
데이터를 뿌려줌으로써 홍수가 난 듯한 느낌을 주는 이 현상을
'플러딩 ( Flooding )' 이라고 한다.
이는 '매우 간단한 라우팅 알고리즘' 이다.
 
 
 
즉,
 
유니캐스트 방식으로 통신하면서 거치는 라우터의 목적지 테이블에
 
해당 패킷의 목적지 주소를 모른다면 ( 혹은 목적지 테이블이 가득 차 있다면 )
 
모든 패킷을 모든 호스트에게 Flooding 를 하게 된다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 

* 브로드캐스트  /  플러딩 차이

 
 
 
 
이 둘의 결정적 차이는 '동시에  /  중복 전송' 이다.
 
플러딩은 데이터를 모든 곳에 동시에 보내지 않는다.
 
반면, 브로드캐스트는 모든 링크된 곳에 동시에 보낸다.
 
 
 
또,
 
플러딩은 동일한 패킷을 하나의 링크에 여러 번 전송될 수 있지만,
 
브로드캐스트는 모든 링크에 한 번만 데이터가 전송된다.
 
브로드캐스트는 '특별한 주소 ( MAC Address 를 1로 채우거나 HostID 를 1로 채우는 )' 를 사용해 전송됨.
 
그렇다고 플러딩이 연결된 모든 곳에 데이터 전송이 되지 않는 것은 아님.
 
 
 
 
결국,
 
Flooding 은 나갈 수 있는 엣지를 통해 데이터를 전송하기 때문에
 
네트워크 모든 노드에 도달하게 되어있음.
 
 
 
 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 

* 브로드캐스트 ( Broadcast )

 

 

 

 
 
=> 그림에서 보듯이, 연결되어있는 모든 곳에 패킷을 전송하는 방식이다.
 
 
 
만약,
브로드캐스트 형태의 통신이라면
해당 IP 주소의 Host ID , MAC 주소모두 비트 1로 채워진다.
 
ex)
IP  :  192.168.1.255
MAC  :  0xFFFFFFFFFFFF ( 48bit )
 
 
 
 
=> 대표적으로 'ARP ( Address Resolution Protocol, ARP )' 링크 에서 쓰인다.
 
( 차후 ARP 에 대해 다룰 것. )
 
 
 
 
=> 또한,
브로드캐스트에서 중요한 것은 '최소화' 이다.
 
 
이전에 알아봤던 CSMA/CD 방식은 Ethernet 에서 쓰는 통신 방식이다.
 
간단히 요약하면,
데이터를 전기 신호로 주고 받는데
양쪽에서 동시에 전기 신호를 쏘게 되면 충돌이 발생하게 된다.
이를 예방하기 위해서 충돌을 감지해 해당 신호를 멈춤으로써 충돌을 최소화하는 방식이다.
그로 인해, 약간의 부하가 따른다.
 
 
 
만약 브로드캐스트가 빈번하게 되면 충돌이 발생할 여지가 커지고
충돌 감지로 인해 데이터들이 멈춰있는 시간이 증가되며
그것이 해당 노드에게 불필요한 데이터라면 매우 낭비일 것이다.
 
 
 
 
 
 
 
 
 
 
 
 

* 멀티캐스트 ( Multicast )

 

 

 

 

 

 

 

 
 
 
=> L2 스위치 기준으로 보았을 때, Broadcast 방식과 유사하다.
 
=> 일반적으로 'UDP ( User Datagram Protocol ) 방식' 을 사용.
 
 
기존의 TCP/IP 방식에서는,
데이터의 송신자가 수신자의 IP 주소를
패킷 헤더에 표시해 패킷을 전송하게 되는데
 
 
 
멀티캐스트에서 사용하는 UDP 방식은
헤더에 수신자 주소를 쓰는 대신,
수신자가 해당하는 그룹 주소를 표시해 패킷을 전송한다.
 
 
 
 
멀티 캐스트를 사용하는 예시로는 IPTV 방송, 유튜브 방송 등... 이 있겠다.
 
 
 
 
 
 
멀티 캐스트는 라우터가 멀티 캐스트에 관한 프로토콜을 지원해야지만
사용 가능한 단점이 있다.
 
멀티 캐스트에 관한 프로토콜 중 하나가 'IGMP' 이다.
 
 
 
 
 
 

* IGMP ( Internet Group Management Protocol )

 
 
 
 
* IGMP 메시지 종류
 
1. Membership Query ( 라우터 -> 호스트 )
=> 멤버십 질의 메시지를 통해 응답을 기다리고
반응이 없다면 호스트를 그룹에서 탈퇴시킴.
 
 
2. Membership Report ( 호스트 -> 라우터 )
=> 해당 그룹에 가입하고자 하는 요청 보고.
 
 
3. Leave Report ( 호스트 -> 라우터 )
=> 그룹 탈퇴 메시지.

 

 

 

 

 

 

 

 


 

참고 자료