TCP vs UDP

TCP는 연결된 바이트 스트림, UDP는 독립 데이터그램이다

TCP와 UDP의 차이는 “빠르다/느리다”가 아니라 상태를 누가 책임지는가입니다. TCP는 연결과 순서를 프로토콜이 관리하고, UDP는 애플리케이션이 필요한 책임을 직접 설계합니다.

TCP 하나의 연결 안에서 순서 있는 바이트를 보낸다
소켓클라이언트마다 connected socket
경계메시지 경계 없음, 프레이밍 필요
보장순서, 재전송, 흐름/혼잡 제어
UDP 각 datagram이 독립된 한 번의 전송 단위다
소켓하나의 서버 소켓이 여러 주소를 받음
경계sendto 한 번이 recvfrom 한 단위
보장순서, 도착, 중복 제거는 애플리케이션 책임
질문
TCP 선택
UDP 선택
손실 처리
프로토콜 재전송에 맡김
timeout, retry, idempotency 직접 설계
메시지 경계
길이 prefix나 delimiter 필요
데이터그램 경계가 유지되지만 버퍼 작으면 잘림
다중 클라이언트
연결별 fd와 상태 관리
발신자 주소로 클라이언트 구분

DNS 짧은 질의/응답은 UDP에 잘 맞는다 응답이 크거나 잘리면 TCP 재시도를 둡니다.

chat 순서와 연결 상태가 중요하면 TCP가 편하다 대신 메시지 경계는 애플리케이션이 복원해야 합니다.

realtime 늦은 데이터가 가치 없으면 UDP 설계를 고려한다 게임, 음성, QUIC처럼 필요한 보장을 위 계층에서 선택합니다.