공통점
- 네트워크 계층 중 전송 계층(Transport layer)에서 사용된다.
- 데이터 전달 담당
TCP (Transmission Control Protocol)
인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- 인터넷 환경에서 기본으로 사용된다.
- 일반적으로 TCP와 IP가 함께 사용된다.
- TCP: 패킷 추적, 관리
- IP: 데이터 배달
특징
- 높은 신뢰성 > 낮은 연결성
- 연결형 서비스로 가상 회선 방식 제공
- 발신자와 수신자를 연결해서 패킷을 전송하기 위한 논리적인 경로를 배정한다.
- 3-way handshaking 으로 연결을 설정하고, 4-way handshaking으로 해제한다.
- 정확한 전송을 보장하기 위해 세션을 수립하는 과정
- 패킷에 번호(순서)를 부여해서 목적지에서 분실 확인을 하고 재조립한다.
- 전송 순서 보장
- 흐름 제어, 혼잡 제어
- UDP보다 느린 속도
- 전이중(Full-Duplex), 점대점(Point to Point) 방식
- ex> 파일 전송
TCP 서버
- 서버와 클라이언트가 1:1로 연결된다.
- 서버 소켓은 연결만을 담당하고, 클라이언트 소켓은 데이터의 송수신에 사용된다.
- 스트림 전송으로 전송 데이터의 크기가 무제한이다.
- 패킷에 대한 응답을 해야하기 때문에 시간 지연과 CPU 소모로 성능이 낮다.
UDP (User Datagram Protocol)
데이터를 데이터그램 단위로 처리하는 프로토콜
특징
- 비연결형 서비스로 데이터그램 방식 제공
- 연결을 위해 할당되는 논리적인 경로가 없다.
- 연결을 설정하고 해제하는 과정이 없다.
- 각 패킷은 다른 경로로 전송되고, 서로 독립적인 관계를 지닌다.
- 낮은 신뢰성 < 높은 연속성
- 전송 순서를 신경쓰지 않음
- 흐름, 혼잡 제어 X
- TCP보다 속도가 빠르다.
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- ex> 실시간 streaming 서비스
UDP 서버
- connect 함수가 불필요하기 때문에 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 소켓 대신 IP를 기반으로 데이터를 전송한다.
- 서버와 클라이언트는 1:1, 1:N, N:M 으로 연결될 수 있다.
- 데이터그램의 크기는 65535바이트, 크기가 크면 잘라서 보낸다.
출처