1. TCP (Transmission Control Protocol)
"꼼꼼하고 책임감 있는 택배 기사님"
TCP는 연결을 확인하고, 데이터가 잘 갔는지 끝까지 책임지는 방식입니다.
- 연결 지향 (3-Way Handshake): 데이터를 보내기 전에 "나 보낼 건데 준비됐어?"라고 물어보고 수락하면 보냅니다.
- 신뢰성 보장: 데이터가 중간에 유실되면 재전송을 요청합니다. 순서가 바뀌면 다시 조립해주죠.
- 흐름/혼잡 제어: 받는 쪽이 너무 바쁘면 천천히 보내고, 네트워크가 막히면 속도를 조절합니다.
- 사용 예시: 웹 쇼핑(HTTP/HTTPS), 이메일, 파일 전송(FTP). (데이터가 1비트라도 틀리면 안 되는 서비스들)
2. UDP (User Datagram Protocol)
"일단 던지고 보는 투수"
UDP는 상대방이 받든 말든, 연결 확인도 안 하고 그냥 빛의 속도로 데이터를 쏴버립니다.
- 비연결형: "준비됐어?" 안 물어봅니다. 그냥 바로 던집니다.
- 신뢰성 낮음: 데이터가 가다가 사라져도 재전송 안 합니다. 순서가 바뀌어도 신경 안 씁니다.
- 속도 최우선: 확인 과정이 없으니 TCP보다 훨씬 빠르고 가볍습니다.
- 사용 예시: 실시간 영상 스트리밍(유튜브 라이브), 온라인 게임, 보이스톡(VoIP). (약간 화면이 깨지더라도 끊기지 않는 게 중요한 서비스들)
3. 기수님을 위한 핵심 비교표
| 특징 | TCP | UDP |
|---|
| 비유 | 등기 우편 (수령 확인 필수) | 일반 전단지 배포 (뿌리고 끝) |
| 속도 | 상대적으로 느림 (확인 절차 때문) | 매우 빠름 |
| 데이터 순서 | 보낸 순서대로 도착 보장 | 순서가 바뀔 수 있음 |
| 헤더 크기 | 20~60 바이트 (정보가 많음) | 8 바이트 (매우 가볍고 단순) |
4. 캡슐화 관점에서의 차이
기수님이 아까 공부한 캡슐화 과정에서:
- TCP를 선택하면: L4 헤더에 '순서 번호(Sequence Number)'와 '확인 번호(Acknowledgement)' 같은 복잡한 정보가 담깁니다. (역캡슐화 때 이걸로 순서를 맞추죠.)
- UDP를 선택하면: L4 헤더에 '포트 번호'랑 '길이' 정도만 딱 적고 끝납니다. 그래서 역캡슐화 속도가 광속입니다.