5. 캐스트

박은서's avatar
Feb 09, 2026
5. 캐스트
💡
하나의 송신자가 데이터를 누구에게 보내는가에 따라 구분되는 전송 방식
notion image

1. 유니캐스트 (Unicast)

1️⃣ 개념

  • 1 : 1 통신
  • 한 송신자가 특정한 하나의 수신자에게만 데이터를 전송

2️⃣ 특징

  • 가장 기본적인 통신 방식
  • 목적지 IP 주소가 단일 호스트
  • 다른 호스트는 데이터 수신 불가
  • 트래픽 제어와 보안에 유리

3️⃣ 예시

  • 웹 브라우징 (클라이언트 ↔ 웹 서버)
  • SSH, FTP
  • 이메일 전송
  • 대부분의 TCP 통신

4️⃣ 필기

notion image

2. 브로드캐스트 (Broadcast)

1️⃣ 개념

  • 1 : N 통신
  • 한 송신자가 같은 네트워크에 있는 모든 호스트에게 데이터 전송
    • 대상이 정해져 있지 않고 모든 호스트에게 데이터 전송. 호스트 측에서 필터링 가능

2️⃣ 특징

  • 목적지 주소: 브로드캐스트 주소
    • IPv4 예: 255.255.255.255
  • 네트워크 전체에 패킷 확산
  • 트래픽 과다 및 보안 이슈 발생 가능
  • 라우터를 넘어가지 않음 (로컬 네트워크 한정)

3️⃣ 예시

  • ARP 요청
    • → “이 IP 주소 누구야?”
  • DHCP Discover
    • → “IP 주소 줄 수 있는 서버 있어?”
  • 네트워크 장비 탐색

4️⃣ 필기

notion image

5️⃣ 실습

1) Server

package com.mtcoding.ex09; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.concurrent.CopyOnWriteArrayList; class ClientThread implements Runnable{ Socket socket; PrintWriter sender; Scanner receiver; public ClientThread(Socket socket, PrintWriter sender, Scanner receiver) { this.socket = socket; this.sender = sender; this.receiver = receiver; } @Override public void run() { // 새로운 스레드 대기중 while(true){ System.out.println("[server] 새로운 메시지 수신 대기중----------------"); String msg = receiver.nextLine(); for (ClientThread t : ChatServer.boxes){ t.sender.println(msg); System.out.println("[server] 새로운 메시지 전체 브로드캐스팅----------------"); } } } } public class ChatServer { static List<ClientThread> boxes = new CopyOnWriteArrayList<>(); public static void main(String[] args) { try { // 1. 초기화 ServerSocket ss = new ServerSocket(10000); while(true){ Socket socket = ss.accept(); // main 스레드 대기 System.out.println("[server] 클라이언트연결됨--------"); PrintWriter sender = new PrintWriter(socket.getOutputStream(), true); Scanner receiver = new Scanner(socket.getInputStream()); ClientThread t1 = new ClientThread(socket, sender, receiver); boxes.add(t1); new Thread(t1).start(); System.out.println("[server] 클라이언트 Socket, Buffer 2개, Thread 생성되서 Box 담김-------"); } } catch (Exception e) { System.out.println("서버 오류 : "+e.getMessage()); } } }

2) Client

package com.mtcoding.ex09; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class ChatClient { public static void main(String[] args) { try { Socket socket = new Socket("localhost", 10000); System.out.println("[client] 서버와 소켓이 연결되었음 -----------------"); Scanner keyboard = new Scanner(System.in); Scanner receiver = new Scanner(socket.getInputStream()); PrintWriter sender = new PrintWriter(socket.getOutputStream(), true); // 1. 송신 스레드 new Thread(() -> { while(true){ System.out.println("[client] 쓰기 스레드 키보드 입력 대기중--------"); String msg = keyboard.nextLine(); sender.println(msg); } }).start(); // 2. 읽기 스레드 new Thread(() -> { while(true){ System.out.println("[client] 읽기 스레드 다른 사람 메시지 수신 대기중--------"); String msg = receiver.nextLine(); System.out.println(msg); } }).start(); } catch (Exception e) { System.out.println("클라이언트 오류 : "+e.getMessage()); } } }

3) Server 결과

notion image

4) Client1 결과

notion image

5) Client2 결과

notion image

3. 멀티 캐스트 (Multicast)

1️⃣ 개념

  • 1 : 그룹 통신
  • 한 송신자가 특정 그룹에 속한 호스트들에게만 데이터 전송

2️⃣ 특징

  • 수신자는 멀티캐스트 그룹에 가입해야 수신 가능
  • 필요 없는 호스트는 트래픽을 받지 않음
  • 브로드캐스트보다 효율적
  • 주로 UDP 기반
  • IPv4 멀티캐스트 주소 범위
    • 224.0.0.0 ~ 239.255.255.255

3️⃣ 예시

  • IPTV, 실시간 스트리밍
  • 온라인 강의 생중계
  • 화상 회의
  • 주식 시세 실시간 전송

4️⃣ 필기

notion image

4. 비교표

구분
유니캐스트
브로드캐스트
멀티캐스트
통신 방식
1 : 1
1 : 전체
1 : 그룹
수신 대상
특정 호스트
동일 네트워크 전체
그룹에 가입한 호스트
트래픽 효율
낮음
높음
라우터 통과
가능
불가
가능(설정 필요)
대표 예
웹, 이메일
ARP, DHCP
IPTV, 스트리밍
Share article