Datagram Socket(UDP) vs Stream Socket(TCP) 핵심 개념 정리
소켓 프로그래밍에서 Datagram Socket과 Stream Socket은 네트워크 통신 방식의 두 가지 핵심적인 유형이라고 할 수 있는데요. 이번 글에서는 각 방식의 특징과 용도에 대해서 알아보겠습니다.
Datagram Socket (UDP)
특징
- 비연결성(Connectionless)
- 미리 연결 설정을 하지 않고 데이터를 즉시 전송한다.
- 비신뢰성(Unreliable)
- 데이터 전달을 보장하지 않으며, 손실 및 중복이 발생할 수 있다.
- 메시지 경계 유지(Message Boundary Preservation)
- 전송한 데이터 단위(패킷)가 그대로 유지된다.
- 고속 전송
- 오버헤드가 적어 실시간 스트리밍, 게임, DNS와 같은 빠른 응답이 중요한 서비스에 적합하다.
사용 예시
- 게임 서버
- 음성 및 영상 스트리밍
- DNS 쿼리
Stream Socket (TCP)
특징
- 연결 지향(Connection-oriented)
- 데이터를 전송하기 전에 연결을 설정하고 종료 시 연결을 해제한다.
- 신뢰성 보장(Reliable)
- 데이터의 손실, 중복, 순서 변경을 자동으로 처리하여 정확한 데이터 전달을 보장한다.
- 흐름 지향(Stream-based)
- 데이터 경계가 없으며 연속적인 데이터 스트림 형태로 전송된다.
- 오버헤드 존재
- 데이터의 신뢰성을 확보하기 위한 추가적인 확인과 재전송 과정으로 인해 속도가 상대적으로 느리다.
사용 예시
- 웹 브라우징(HTTP/HTTPS)
- 이메일 전송(SMTP)
- 파일 전송(FTP)
마치면서
두 방식을 정리하자면 다음과 같습니다.
- Datagram(UDP)
- 빠르지만 신뢰성이 낮고, 실시간성이 중요한 분야에서 선호된다.
- Stream(TCP)
- 신뢰성이 높지만 속도가 느리고, 데이터 정확성이 중요한 분야에서 선호된다.
곧 각각의 특성을 잘 이해하고, 개발하고자 하는 서비스의 목적과 요구사항에 따라 적절한 소켓 타입을 선택하는 것이 중요하다고 할 수 있습니다.
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] HTTP (요청/응답, 헤더, 메서드, 상태코드, HEAD 메서드) 핵심 정리 (0) | 2025.05.05 |
---|---|
[CS기초] CGI / WebServer / MIME Type 핵심 개념 정리 (0) | 2025.05.05 |
[CS기초] 파일 디스크립터(File Descriptor) 핵심 개념 정리 (0) | 2025.05.05 |
[CS기초] 프록시(Proxy) 핵심 개념 정리 (0) | 2025.05.04 |
[CS기초] 소켓 프로그래밍 핵심 개념 정리 (socket, connect, bind, listen, accept) (0) | 2025.05.04 |