TCP vs UDP 언제 사용하고, TCP가 HTTP와 어떻게 연관되는가
Source: Dev.to
TCP와 UDP는 무엇인가요? (높은 수준)
TCP (Transmission Control Protocol)
- 신뢰성 있는, 연결 지향 네트워크 프로토콜.
- 3단계 핸드셰이크를 사용해 연결을 설정한다.
- 데이터가 손실이나 손상 없이 목적지에 도달함을 보장한다.
- 패킷의 순서를 유지하고 필요 시 손실된 패킷을 재전송한다.
- 이러한 검사 때문에 TCP는 UDP보다 느리지만 매우 신뢰성이 높다.
UDP (User Datagram Protocol)
- 빠른, 비연결성 네트워크 프로토콜.
- 연결을 설정하거나 도착 여부를 확인하지 않고 패킷을 전송한다.
- 전달, 순서 보장 또는 손실된 데이터의 재전송을 보장하지 않는다.
- 이 때문에 UDP는 훨씬 빠르지만 신뢰성은 낮다.
일반적인 사용 사례
- TCP: 채팅 애플리케이션, 메신저, 이메일, 파일 다운로드, 웹 브라우징(HTTP/HTTPS).
- UDP: 영상 통화, 실시간 스트리밍, 온라인 게임, 음성 통화.
TCP와 UDP의 주요 차이점
| Feature | TCP | UDP |
|---|---|---|
| Connection type | 연결 지향 | 비연결성 |
| Handshake | 3단계 핸드셰이크 필요 | 핸드셰이크 없음 |
| Reliability | 전달 보장(재전송) | 보장 없음, 재전송 없음 |
| Packet ordering | 순서 유지 | 순서가 뒤섞일 수 있음 |
| Speed | 오버헤드 때문에 느림 | 빠름 |
| Error checking | 있음(체크섬, 재전송) | 최소(체크섬만) |
| Typical applications | 채팅, 이메일, 다운로드, 웹 브라우징 | 스트리밍, 게임, VoIP |
언제 TCP를 사용해야 할까
데이터 정확성이 속도보다 중요하고 데이터 손실이 허용되지 않을 때 TCP를 사용한다.
- 데이터가 정확하고 순서대로 전달되어야 함.
- 예시:
- 중요한 이메일 전송.
- 파일 다운로드.
- 메시지 무결성이 중요한 채팅 또는 메신저.
데이터가 손상되지 않도록 하는 것이 보장된다면 약간의 지연은 감수할 수 있다.
언제 UDP를 사용해야 할까
속도가 중요하고 가끔 데이터 손실이 허용되는 경우, 특히 실시간 통신에 UDP를 사용한다.
- 낮은 지연 시간이 완벽한 신뢰성보다 중요함.
- 예시:
- 영상 통화.
- 실시간 스트리밍.
- 온라인 게임.
몇 개의 패킷이 손실되더라도 재전송을 기다리기보다 계속 진행하는 것이 더 낫다.
HTTP란 무엇이며 어디에 위치하는가
HTTP (HyperText Transfer Protocol) 은 다음을 정의한다:
- 어떤 데이터를 요청하는지.
- 어떤 데이터를 반환하는지.
데이터를 안전하게 전달하는 방법은 정의하지 않는다; 그 책임은 전송 계층(TCP 또는 UDP)에 있다.
HTTP 요청/응답 예시
GET / HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
Content-Type: text/html
...HTML content...
브라우저가 HTTP 요청을 보내고, 서버가 이를 처리한 뒤 요청된 리소스를 포함한 HTTP 응답을 반환한다.
HTTP와 TCP의 관계
- HTTP는 TCP 위에 존재하며, 웹 데이터를 신뢰성 있게 전달하기 위해 TCP를 사용한다.
- HTTP는 통신 규칙(요청/응답 형식)만 정의한다.
- 신뢰성, 순서 보장, 재전송은 TCP가 담당한다.
따라서 전통적인 HTTP는 웹 페이지가 정확하고 완전한 데이터를 필요로 하기 때문에 TCP를 선택한다. UDP는 빠르지만 신뢰성이 부족해 대부분의 HTTP 트래픽에는 적합하지 않다.
요약
- TCP: 신뢰성 있고 순서가 보장되며 느림 – 정확성이 중요한 데이터에 이상적.
- UDP: 빠르고 순서가 보장되지 않으며 신뢰성이 낮음 – 속도가 중요한 실시간 미디어에 이상적.
- HTTP: 신뢰성이 필요하므로 전송 프로토콜로 TCP를 사용한다.