Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
UDP와 TCP의 차이 본문
반응형
- 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
반응형