Interview Question

[Interview Question] TCP와 UDP의 차이를 설명해보세요.

sagecode 2025. 9. 2. 17:33

애플리케이션에서 데이터를 생성한 후 TCP 소켓을 통해 TCP 계층에 데이터를 넘깁니다. 그 후 TCP는 데이터를 세그먼트 단위로 쪼개서 헤더를 붙인 다음 IP계층에 넘깁니다.

 

또 다른 컴퓨터의 IP 계층이 세그먼트를 받으면 TCP로 넘기고 그 후 순서대로 TCP는 재조립, 손실된 데이터는 재전송 요청, 중복을 제거합니다. 그 후 복구한 데이터를 해당 포트의 애플리케이션에 넘깁니다.

 

UDP의 경우 애플리케이션에서 데이터를 UDP 소켓을 통해 UDP 계층에 전달을 받게되면 UDP는 메시지에 간단한 헤더(길이, 포트)정도만 붙여 데이터그램을 만들어 IP계층으로 넘깁니다.

 

또 다른 컴퓨터의 IP 계층이 그 데이터그램을 받게되면 UDP로 넘기고 헤더에 써있는 포트로 그대로 애플리케이션으로 전송하게 됩니다. 만약 손실이나 꼬임이 발생하게 되면 UDP에서 넘어온 데이터는 애플리케이션 계층에서 알아서 해결해야 합니다.

 

TCP는 신뢰성을 보장하는 전송 계층 프로토콜이다. 데이터를 세그먼트로 나누어 보내고, 수신 측에서 순서를 보장하며 손실된 데이터는 재전송한다. 흐름 제어와 혼잡 제어도 지원해 네트워크 상황에 맞게 전송량을 조절한다. 덕분에 데이터가 정확하게 도착하지만, 연결 과정과 확인 응답, 재전송 때문에 속도가 느리고 오버헤드가 크다. 따라서 웹, 이메일, 파일 전송처럼 데이터 무결성이 중요한 서비스에 사용된다.

 

UDP는 단순성과 속도를 추구하는 전송 계층 프로토콜이다. 데이터그램 단위로 바로 전송하며, 순서 보장이나 재전송은 하지 않는다. 오버헤드가 적어 빠르지만 신뢰성은 애플리케이션이 직접 처리해야 한다. 이 때문에 실시간 스트리밍, 화상 통화, 온라인 게임처럼 빠른 전송이 중요한 서비스에 적합하다.