Intro
TCP/UDP 프로토콜의 특징과 차이에 대해 알아보자
1. TCP/UDP 프로토콜 개요
- TCP와 UDP는 전송 계층 프로토콜이라는 점에서 다음과 같은 공통점이 있다.
- 포트 번호를 이용해 주소를 지정한다.
두 응용 프로그램이 TCP 또는 UDP를 이용해 통신하려면 반드시 포트 번호를 결정해야 한다. - 데이터 오류를 체크한다.
TCP와 UDP는 IP의 패킷 전송 기능을 기반으로 동작한다. 전송 중 여러 원인으로 오류가 발생할 수 있는데, IP는 프로토콜 동작에 필수적인 IP헤더에 대해서만 오류를 체크하고 데이터는 체크하지 않는다.
반면에 TCP와 UDP는 헤더는 물론이고 데이터에 대한 오류도 체크한다. - 위와 같은 공통점을 제외하면 TCP와 UDP는 상당히 다른 차이점이 있다.
TCP와 UDP의 차이점을 정리하면 다음과 같다.
TCP |
UDP |
|---|---|
| 연결형 프로토콜로 연결 설정 후 통신이 가능하다. | 비연결형 프로토콜로 연결 설정 없이 통신이 가능하다. |
| 신뢰성 있는 데이터 전송(데이터를 재전송 한다.) | 신뢰성 없는 데이터 전송(데이터를 재전송하지 않는다.) |
| 일대일 통신(unicast) | 일대일 통신(unicast) 일대다 통신(multicast, broadcast) |
| 데이터의 경계를 구분하지 않는다.(byte-stream 서비스) | 데이터의 경계를 구분한다.(datagram 서비스) |
1.1 TCP 프로토콜
- 서버는 먼저 실행하여 클라이언트가 연결하기를 기다린다.(listen)
- 클라이언트는 서버에 접속(connect) 하여 데이터를 보낸다(send)
- 서버는 클라이언트 접속을 수용하고(accept) 클라이언트가 보낸 메시지를 받아서(recv) 처리한다.
- 서버는 처리한 데이터를 클라이언트에 보낸다.(send)
- 클라이언트는 서버가 보낸 데이터를 받아서(recv) 처리한다.
- 데이터를 주고받는 과정을 모두 마치면 접속을 끊는다.(closesocket)
1.2 UDP 프로토콜
- 연결 설정을 하지 않으므로 connect() 함수를 사용하지 않는다.
- 프로토콜 수준에서 신뢰성 있는 데이터 전송을 보장하지 않으므로, 필요하다면 응용 프로그램 수준에서 신뢰성 있는 데이터 전송 기능을 구현해야 한다.
- 간단한 소켓 함수 호출 절차만 따르면 다자 간 통신을 쉽게 구현할 수 있다.
- TCP와 달리 응용 프로그램이 데이터 경계 구분을 위한 작업을 별도로 할 필요가 없다.
- TCP와 UDP의 차이점은 연결의 존재여부로부터 발생한다. 다음시간에는 네트워크에서의 연결개념에 대해 알아보겠다.