TCP
인터넷에서 데이터를 신뢰성 있게 순서대로 전달하기 위한 전송 계층 프로토콜입니다.
핵심 특징
- 연결 지향: 데이터 전송 전에 먼저 연결을 수립
- 신뢰성 보장: 데이터가 손실되면 재전송
- 순서 보장: 보낸 순서대로 도착
- 흐름 제어: 수신자가 감당할 수 있는 속도로 전송
- 혼잡 제어: 네트워크 상황에 따라 전송량 조절
3-Way Handshake (연결 수립)
클라이언트 서버
│ │
│──── SYN ────────────▶│ "연결하고 싶어"
│ │
│◀──── SYN + ACK ──────│ "알겠어, 나도 준비됐어"
│ │
│──── ACK ────────────▶│ "확인, 시작하자"
│ │
└──────── 연결 완료 ────┘
4-Way Handshake (연결 종료)
클라이언트 서버
│──── FIN ────────────▶│ "끊을게"
│◀──── ACK ────────────│ "알겠어"
│◀──── FIN ────────────│ "나도 끊을게"
│──── ACK ────────────▶│ "확인"
TCP vs UDP
| 항목 | TCP | UDP |
|---|---|---|
| 연결 | 연결 수립 필요 | 연결 없음 |
| 신뢰성 | 보장 | 보장 안 함 |
| 순서 | 보장 | 보장 안 함 |
| 속도 | 상대적으로 느림 | 빠름 |
| 사용 예 | HTTP, 이메일, 파일 전송 | 스트리밍, 게임, DNS |
언제 TCP를 쓰나?
- 데이터가 정확히 전달되어야 할 때
- 웹 브라우징(HTTP/HTTPS)
- 파일 다운로드
- 이메일