쯔이's Dev

UDP와 TCP의 차이 본문

카테고리 없음

UDP와 TCP의 차이

jjhim531 2025. 3. 5. 23:45
반응형

 

  • Stream은 "데이터가 흘러가는 통로"
  • Socket은 "데이터가 드나드는 출입구
  • Stream은 Socket 안에서만 존재해요.
  • Packet은 Socket 안에 있는 게 아니라, Socket을 통해 주고받는 독립된 데이터 덩어리!
  • UDP에서도 DatagramSocket (소켓)이 필요하지만, Stream은 필요 없음!

>> Socket이 없다면 Stream도 사용할 수 없어요!

Stream의 종류 — InputStream과 OutputStream

 

Stream 종류 역할 예시
InputStream 데이터를 읽어들이는 통로 socket.getInputStream() → 서버에서 데이터를 받음
OutputStream 데이터를 내보내는 통로 socket.getOutputStream() → 서버로 데이터를 보냄

 

Socket 안에서 Stream이 동작하는 예시 — TCP의 경우

// 소켓 생성 (출입구)
Socket socket = new Socket("localhost", 3000);  // 

// 데이터 전송 (Stream 사용)
OutputStream os = socket.getOutputStream();  //  내보내기
os.write("Hello".getBytes());                // 데이터 보내기

// 데이터 수신 (Stream 사용)
InputStream is = socket.getInputStream();    //  받아오기
byte[] data = new byte[1024];
is.read(data);                              // 데이터 읽기

 

그럼 UDP는 왜 Stream이 필요 없을까?

 UDP는 패킷 단위로 전송 — 스트림 필요 없음!

  • UDP는:
    • 패킷(DatagramPacket) 단위로 데이터를 주고받음. 
    • 연결 없이 데이터를 전송 → Stream이 필요 없음. 
    • DatagramSocket만으로 데이터 주고받기 가능. 

특징:

  • TCP는 스트림으로 데이터를 주고받아야 함. 
  • UDP는 패킷으로 전송하므로 스트림이 필요 없음! 

 

UDP에서 DatagramSocket만 쓰는 이유 — 패킷 단위로 전송!

 
// UDP 소켓 생성 (출입구 역할)
DatagramSocket socket = new DatagramSocket(); 

// 데이터 전송 (패킷 단위)
byte[] data = "Hello".getBytes();             
DatagramPacket packet = new DatagramPacket(data, data.length, inet, port);
socket.send(packet);                          // 패킷 전송

 

Stream이 필요한 상황 vs 필요 없는 상황

상황 Stream 필요 여부 이유
TCP (연결형 통신)  필요 연결을 유지하며 데이터를 주고받기 때문.
UDP (비연결형 통신)  불필요 연결 없이 패킷 단위로 전송하기 때문.

특징:

  • TCP는 연결을 유지하므로 Stream 필수! 
  • UDP는 연결 없이 패킷 전송 → Stream 불필요! 

 

UDP와 TCP

 

특징 TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
연결 방식 연결형 프로토콜 (3-way handshake 필요) 비연결형 프로토콜 (핸드셰이크 없음)
데이터 전송 순서 보장 보장  보장 안 함
데이터 손실 복구  재전송 기능 재전송 없음
속도 상대적으로 느림 빠름
주로 사용하는 곳 파일 전송, 웹 통신 (HTTP, HTTPS) 동영상 스트리밍, 게임, 실시간 채팅

특징:

  • TCP는 신뢰성 있지만 느림 → 연결 필요.
  • UDP는 빠르지만 신뢰성 낮음 → 연결 불필요! 

 

소켓의 진짜 의미 — 출입구(통로)로 이해하자! 

특징 설명
소켓의 역할 데이터가 지나갈 수 있는 통로를 만드는 것!
소켓의 구성 요소 IP 주소 + 포트 번호 + 프로토콜(TCP/UDP)
소켓의 종류 TCP → Socket
 UDP → DatagramSocket
데이터 전송 방식 TCP → 스트림(연속된 바이트)
UDP → 패킷(데이터 조각)
728x90
반응형