프로그래밍/네트워크
TCP vs UDP
YERIEL
2022. 2. 14. 15:47
TCP (Transmission Control Protocol)
TCP란, 전송 제어 프로토콜. 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜. 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종. 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약
- 연결형 서비스로 가상 회선 방식 제공
- 3-way handshaking과정을 통해 연결 설정 (목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해 세션을 수립하는 과정)
- 4-way handshaking을 통해 연결 해제
- 높은 신뢰성 보장
- 흐름 제어 및 혼잡 제어
- UDP보다 속도가 느림
- 전이중(Full-Duplex, 전송이 양방향으로 동시에 일어날 수 있음), 점대점(Point to Point, 각 연결이 정확히 2개의 종단점을 가지고 있음) 방식
- 서버소켓은 연결만을 담당
- 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다형 서비스로 가상 회선 방식 제공
- 서버와 클라이언트는 1대1로 연결
- 스트림 전송으로 전송 데이터의 크기 무제한
- 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능 낮음
- Streaming 서비스에 불리 (손실된 경우 재전송 요청을 하므로)
- HTTP, Email, File transfer에서 사용
UDP (User Datagram Protocol)
UDP란, 사용자 데이터그램 프로토콜. 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종. 데이터를 데이터그램 단위로 처리하는 프로토콜. 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약
- 비연결형 서비스로 데이터그램 방식 제공
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음
- UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
- 낮은 신뢰성
- TCP보다 속도 빠름
- 네트워크 부하 적음
- 패킷에 순서 부여나 재조립등의 기능을 처리하지 않음
- 연속성이 중요한 서비스에 사용 (ex. Streaming 서비스)
- UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 소켓 대신 IP를 기반으로 데이터를 전송한다.
- 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
- 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
- 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
- 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.
- DNS, Broadcasting (도메인, 실시간 동영상 서비스) 에서 사용
네트워크 종류 | TCP | UDP |
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
스트림 방식 | 바이트 스트림 | 메시지 스트림 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
패킷 | TCP packet : Segment | UDP packet : Datagram |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있음 |
수신 여부 확인 | 수신 여부 확인 | 수신 여부 확인하지 않음 |
통신 방식 | 1:1 통신 | 1:1 OR 1:N OR N:N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
사용 예시 | HTTP, Email, File transfer | DNS, Broadcasting, Streaming |