Network 환경에서 Computer와 Server가 데이터를 주고받기 위해서는 통신 규칙이 필요합니다.
이러한 통신 규칙을 Protocol이라고 하며, Internet 환경에서 가장 많이 사용되는 Protocol이 TCP와 UDP입니다.
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 모두 Transport Layer에서 동작하지만 데이터 전달 방식과 안정성에서 큰 차이가 있습니다.
기본 구조:
Client↓Transport Layer↓TCP / UDP Protocol↓Network↓Server
TCP는 정확한 데이터 전달을 중요하게 생각하는 연결 기반 Protocol이고, UDP는 빠른 전송 속도를 우선하는 비연결 기반 Protocol입니다.
| 구성 요소 | 역할 |
|---|---|
| TCP | 신뢰성 있는 데이터 전달 |
| UDP | 빠른 데이터 전송 |
| Port | Application 구분 |
| Packet | 데이터 전송 단위 |
| Socket | Network 통신 Endpoint |
TCP와 UDP 구조를 이해하면 Web Server, Cloud Network, Kubernetes, Application 통신 구조를 이해하는 데 도움이 됩니다.
TCP란?
TCP는 Transmission Control Protocol의 약자로 안정적인 데이터 전달을 목적으로 하는 Transport Layer Protocol입니다.
TCP는 데이터를 보내기 전에 먼저 연결을 생성합니다.
구조:
Client↓TCP Connection 생성↓Data Transfer↓Connection 종료↓Server
TCP는 데이터가 정확하게 도착했는지 확인하는 기능을 제공합니다.
UDP란?
UDP는 User Datagram Protocol의 약자로 빠른 데이터 전달을 목적으로 하는 Protocol입니다.
UDP는 연결 생성 과정 없이 바로 데이터를 전송합니다.
구조:
Client↓UDP Packet 전송↓Server
속도는 빠르지만 데이터 전달 보장은 TCP보다 낮습니다.
TCP와 UDP가 필요한 이유
Application마다 요구하는 통신 방식이 다릅니다.
예:
Web Service↓정확한 데이터 필요↓TCP 사용Streaming↓빠른 전달 필요↓UDP 사용
서비스 목적에 따라 적절한 Protocol을 선택합니다.
TCP 동작 원리
TCP는 Connection 기반 통신을 사용합니다.
대표적인 과정이 3-Way Handshake입니다.
구조:
Client↓SYN↓Server↓SYN + ACK↓Client↓ACK↓Connection Established
연결이 완료된 후 데이터를 전송합니다.
TCP 3-Way Handshake
SYN 단계
Client가 Server에게 연결 요청을 보냅니다.
Client → ServerSYN
SYN ACK 단계
Server가 연결 요청을 확인하고 응답합니다.
Server → ClientSYN + ACK
ACK 단계
Client가 최종 확인 응답을 보냅니다.
Client → ServerACK
이후 TCP 통신이 시작됩니다.
TCP 데이터 전달 방식
TCP는 데이터 신뢰성을 보장하기 위해 여러 기능을 제공합니다.
주요 기능:
Sequence Number
데이터 순서를 관리합니다.
ACK
데이터 정상 수신 여부를 확인합니다.
Retransmission
손실된 Packet을 다시 전송합니다.
Flow Control
수신자가 처리 가능한 데이터 양을 조절합니다.
UDP 동작 원리
UDP는 Connection 과정 없이 데이터를 전송합니다.
구조:
Application↓UDP Datagram↓Network↓Destination
특징:
- 빠른 전송
- 낮은 지연 시간
- 단순 구조
TCP와 UDP 차이
| 구분 | TCP | UDP |
|---|---|---|
| 연결 방식 | Connection 기반 | 비연결 |
| 속도 | 느림 | 빠름 |
| 신뢰성 | 높음 | 낮음 |
| 순서 보장 | 지원 | 미지원 |
| 재전송 | 지원 | 미지원 |
| 사용 환경 | Web, Database | Streaming, Game |
TCP 사용 사례
TCP는 정확성이 중요한 서비스에서 사용됩니다.
대표:
HTTP / HTTPS
Web Browser와 Web Server 통신:
Client↓TCP 443↓HTTPS Server
SSH
원격 Server 접속:
Client↓TCP 22↓SSH Server
FTP
파일 전송:
Client↓TCP 21↓FTP Server
UDP 사용 사례
UDP는 빠른 응답이 필요한 환경에서 사용됩니다.
대표:
DNS
DNS Query는 UDP 기반으로 동작합니다.
Client↓UDP 53↓DNS Server
Streaming
Video Streaming은 빠른 전달을 위해 UDP를 활용합니다.
Online Game
실시간 위치 정보 전달에 사용됩니다.
TCP/IP Architecture에서 위치
TCP와 UDP는 Transport Layer에 위치합니다.
구조:
Application Layer↓Transport Layer↓TCP / UDP↓Internet Layer↓Network Interface
Application이 Network를 통해 데이터를 전달할 수 있도록 연결합니다.
Port와 TCP/UDP 관계
Port는 Application을 구분하는 번호입니다.
구조:
IP Address+Port Number↓Application Connection
예:
| 서비스 | Protocol | Port |
|---|---|---|
| HTTP | TCP | 80 |
| HTTPS | TCP | 443 |
| SSH | TCP | 22 |
| DNS | UDP | 53 |
Socket과 TCP/UDP
Socket은 Network 통신 Endpoint입니다.
구조:
IP Address+Port+Protocol↓Socket
Application은 Socket을 통해 데이터를 주고받습니다.
TCP 장애 분석 방법
TCP 문제 발생 시 확인:
Connection 실패↓Port 확인↓Firewall 확인↓TCP 상태 확인↓Application 확인
확인 명령:
ss -ant
상태:
- LISTEN
- ESTABLISHED
- TIME_WAIT
- CLOSE_WAIT
UDP 장애 분석 방법
UDP는 Connection 상태가 없기 때문에 Packet 흐름 확인이 중요합니다.
확인:
tcpdump
분석:
- Packet 전달 여부
- Firewall 차단
- Response 확인
TCP와 UDP 그리고 Cloud Architecture
Cloud 환경에서도 TCP와 UDP는 중요합니다.
구조:
User↓Load Balancer↓Application Server↓Database
서비스 특성에 따라 Protocol을 선택합니다.
Kubernetes에서 TCP와 UDP
Kubernetes Service도 TCP와 UDP를 지원합니다.
구조:
Pod↓Service↓Network Traffic
예:
- Web Application → TCP
- DNS Service → UDP
TCP와 UDP Best Practice
권장:
- 서비스 특성에 맞는 Protocol 선택
- Port 관리 문서화
- Network Monitoring 구성
- Firewall 정책 관리
- Packet 분석 활용
안정적인 Network Architecture를 구축할 수 있습니다.
TCP와 UDP 장점
| Protocol | 장점 |
|---|---|
| TCP | 높은 신뢰성 |
| UDP | 빠른 전송 속도 |
자주 묻는 질문
TCP가 UDP보다 항상 좋은가요?
아닙니다.
정확한 데이터 전달이 필요한 경우 TCP가 적합하고 빠른 응답이 필요한 경우 UDP가 적합합니다.
DNS는 왜 UDP를 사용하나요?
DNS Query는 짧은 요청과 빠른 응답이 중요하기 때문에 UDP를 주로 사용합니다.
게임은 왜 UDP를 사용하나요?
실시간 반응성이 중요하기 때문에 일부 게임에서는 UDP를 사용합니다.
마무리
TCP와 UDP는 Internet Network 통신의 핵심 Protocol입니다.
TCP는 안정성과 정확성을 제공하고 UDP는 빠른 데이터 전달을 제공합니다.
| 구성 요소 | TCP | UDP |
|---|---|---|
| 연결 | 필요 | 없음 |
| 속도 | 보통 | 빠름 |
| 신뢰성 | 높음 | 낮음 |
| 대표 사용 | Web, SSH | DNS, Streaming |
TCP와 UDP 구조를 이해하면 Linux Server, Cloud Network, Kubernetes, Application Architecture까지 연결되는 전체 통신 구조를 이해할 수 있습니다.