TCP와 UDP의 공통점
- 포트 번호를 이용하여 주소를 지정한다.
- 두 애플리케이션이 통신하기 위해 반드시 포트 번호를 결정해야 한다.
데이터 오류를 체크한다.
- IP가 제공하는 오류 체크 기능은 프로토콜 동작을 위해 반드시 필요한 부분에만 국한된다. 즉 IP헤더에 대한 오류는 체크하지만 데이터에 대한 오류는 체크하지 않는다.
반면, TCP와 UDP는 헤더와 데이터에 대한 오류를 체크한다.
TCP와 UDP의 차이점
TCP (Transmission Control Protocol)
- 연결형 (connnection-oriented) 프로토콜이며, 연결이 성공해야 통신이 가능하다.
- 데이터 경계를 구분하지 않는다. 바이트 스트림(byte-stream) 서비스
- 신뢰성 있는 데이터를 전송한다. 데이터의 순서 유지를 위해 각 바이트마다 번호를 부여한다. 데이터를 재전송한다.
- 1 대 1 통신(unicast)
- 전송속도가 느리다.
- 패킷관리가 필요없다.
특징
- 가상 회선 연결 방식, 연결형 서비스를 제공
- 높은 신뢰성(Sequence Number, Ack Number를 통한 신뢰성 보장)
- 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
- 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지)
- 전이중(Full-Duplex), 점대점(Point to Point) 서비스
UDP (User Datagram Protocol)
- 비연결형 (connectionless) 프로토콜이며, 연결 없이 통신이 가능하다.
- 데이터 경계를 구분한다. 데이터그램(datagram) 서비스
- 비신뢰적인 데이터를 전송한다. 데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
- 1 대 1 통신(unicast), 1 대 다 통신(broadcast), 다 대 다 통신(multicast)
- 전송속도가 빠르다.
- 패킷관리가 필요하다.
특징
- 비연결형(port만 확인하여 소켓을 식별하고 송수신)
- 패킷 오버헤드가 적어 네트워크 부하 감소
- 비신뢰성
- 오류검출(헤더에 오류 검출 필드를 포함하여 무결성 검사)
- TCP의 handshaking 같은 연결 설정이 없다
- DNS, NFS, SNMP, RIP 등 사용
3줄 요약
TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜이며, UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지는 않는다.
그렇기 때문에 UDP는 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용된다.