1. 데이터를 전송하는 두 가지 철학
인터넷으로 데이터를 보낼 때 기본이 되는 두 가지 프로토콜이 있습니다. 하나는 데이터가 반드시 정확하게 도착하는 것을 보장하는 TCP, 다른 하나는 정확성보다 속도를 우선하는 UDP입니다.
어떤 프로토콜을 선택하느냐에 따라 서비스의 특성이 완전히 달라집니다. 개발자라면 두 프로토콜의 차이를 이해하고 적절한 상황에 선택할 수 있어야 합니다.
2. TCP의 동작 방식 – 신뢰성 우선
**TCP(Transmission Control Protocol)**는 데이터가 순서대로, 빠짐없이, 정확하게 전달되는 것을 보장합니다.
택배 서비스에 비유하면 이렇습니다. 물건을 보낼 때 추적 번호를 부여하고, 중간에 분실되면 재발송하며, 수령 확인까지 받는 방식입니다. 확실하지만 과정이 복잡하고 시간이 더 걸립니다.
TCP가 신뢰성을 보장하는 방법은 다음과 같습니다. 데이터를 보내면 수신측이 받았다는 확인(ACK)을 돌려보냅니다. 일정 시간 내에 확인이 없으면 데이터를 재전송합니다. 데이터가 분할되어 전송돼도 순서대로 재조립합니다. 네트워크가 혼잡하면 전송 속도를 자동으로 조절합니다.
3. UDP의 동작 방식 – 속도 우선
**UDP(User Datagram Protocol)**는 연결 설정 없이 데이터를 바로 전송합니다. 도착 여부를 확인하지 않고 재전송도 하지 않습니다.
전단지 배포에 비유하면 이렇습니다. 행인들에게 전단지를 뿌립니다. 누가 받았는지, 읽었는지 확인하지 않습니다. 빠르고 간단하지만 일부는 받지 못할 수 있습니다.
UDP는 TCP보다 헤더 크기가 작고 연결 설정 과정이 없어 오버헤드가 훨씬 적습니다. 덕분에 매우 빠르게 데이터를 전송할 수 있습니다.
4. TCP와 UDP 핵심 차이 한눈에 보기
| 항목 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 후 통신 (3-way 핸드셰이크) | 연결 없이 바로 전송 |
| 신뢰성 | 보장 (손실 시 재전송) | 보장 안 함 |
| 순서 보장 | 보장 | 보장 안 함 |
| 속도 | 상대적으로 느림 | 빠름 |
| 헤더 크기 | 20바이트 이상 | 8바이트 |
| 주요 사용처 | 웹, 이메일, 파일 전송 | 스트리밍, 게임, DNS |
5. 3-way 핸드셰이크로 이해하는 TCP 연결
TCP는 데이터를 보내기 전에 반드시 연결을 수립합니다. 이 과정을 3-way 핸드셰이크라고 합니다.
1단계 (SYN): 클라이언트가 서버에 “연결 요청”을 보냅니다.
2단계 (SYN-ACK): 서버가 “연결 수락, 나도 확인해줘”를 응답합니다.
3단계 (ACK): 클라이언트가 “확인했어, 이제 통신 시작”을 보냅니다.
이 세 단계가 완료된 후에야 실제 데이터 전송이 시작됩니다. 연결을 끊을 때는 4단계를 거치는 4-way 핸드셰이크가 발생합니다.
이 과정 덕분에 TCP는 신뢰성이 높지만, UDP보다 연결 수립에 시간이 더 걸립니다.
6. 실제 서비스에서 어떤 프로토콜을 쓰는가?
TCP를 사용하는 서비스
웹 브라우저(HTTP/HTTPS)는 웹 페이지가 완전하게 표시되어야 하므로 TCP를 사용합니다. 이메일(SMTP, IMAP)은 한 글자도 누락되면 안 됩니다. SSH 원격 접속은 명령어가 정확하게 전달되어야 합니다. 파일 전송(FTP)은 파일이 온전히 도착해야 합니다.
UDP를 사용하는 서비스
유튜브, 넷플릭스 스트리밍은 몇 프레임이 누락되어도 전체 경험에 큰 영향이 없습니다. 재전송을 기다리는 것보다 약간 품질이 낮아도 끊김 없이 재생하는 것이 낫습니다. 온라인 게임은 최신 위치 정보가 중요하지, 과거 정보를 재전송받는 것은 의미가 없습니다. DNS 쿼리는 요청이 짧고 빠른 응답이 중요합니다.
7. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- TCP는 신뢰성을 보장하는 연결형 프로토콜로 데이터 손실 시 재전송합니다.
- UDP는 속도를 우선하는 비연결형 프로토콜로 데이터 전달을 보장하지 않습니다.
- 정확성이 중요하면 TCP, 속도가 중요하면 UDP를 선택합니다.
- TCP 연결 수립에는 3-way 핸드셰이크 과정이 필요합니다.
다음 글에서는 로드 밸런서가 무엇인지, 트래픽을 여러 서버에 분산하는 원리를 알아보겠습니다.