학교에서 TCP는 신뢰성 있고 UDP는 빠른 대신 신뢰성 없다, 이렇게 배웠는데 솔직히 무슨 말인지 감이 잘 안 왔어요. 그냥 TCP가 안전하면 다 TCP 쓰면 되는 거 아닌가 싶었거든요.
최근에 간단한 채팅 서버를 만들어보다가 소켓 옵션 고르는 데서 막혔는데, 이 참에 둘 차이를 제대로 이해하고 싶어서 질문 올려요.
제가 지금 이해한 걸 정리해보면 이 정도예요.
TCP - 연결(3-way handshake) 맺고 시작, 순서 보장, 유실되면 재전송, 흐름/혼잡 제어
UDP - 연결 없이 그냥 쏨, 순서 보장 안 됨, 유실돼도 그만, 헤더 작고 가벼움
여기서 궁금한 게, UDP는 도착 보장이 안 된다면서 왜 실무에서 쓰이는 데가 있는 건가요? 데이터가 중간에 사라지면 그거 큰일 아닌가 싶은데, 실제로는 어떤 상황에서 UDP가 오히려 낫다고 판단하나요?
제가 검색해보니 영상 스트리밍이나 게임, DNS 같은 데서 UDP를 쓴다고 하던데, 그 이유가 재전송 기다리는 것보다 그냥 다음 데이터 받는 게 낫기 때문인 건지 궁금하고요. 반대로 웹이나 파일 전송은 무조건 TCP인 이유도 같이 알고 싶어요.
초보라서 개념이 뒤죽박죽인데, 실무 감각으로 "이럴 땐 이거 써라" 정도만 짚어주셔도 정말 도움 될 것 같습니다. 감사합니다.