TCP (Transmission Control Protocol) 기초
TCP (전송 제어 프로토콜)는 인터넷 프로토콜(IP) 위에서 동작하며, 두 호스트(장치) 간에 신뢰할 수 있는 데이터 통신을 보장하는 연결 지향(Connection-Oriented) 프로토콜입니다.
인터넷상에서 데이터의 정확성과 순서가 매우 중요할 때 (예: 웹 브라우징, 파일 전송, 이메일) 사용됩니다.
1. TCP의 핵심 원리: 신뢰성 확보
TCP의 가장 중요한 역할은 데이터 손실이나 순서 뒤바뀜 없이 정확하게 데이터를 전송하는 것입니다. 이를 위해 다음 메커니즘을 사용합니다.
① 3-Way Handshake (연결 설정)
데이터를 전송하기 전에 클라이언트와 서버가 서로 통신 준비가 되었음을 확인하는 3단계 과정입니다.
- SYN (Synchronize): 클라이언트가 서버에 연결 요청(나 시작할 준비가 됐어).
- SYN-ACK (Acknowledge): 서버가 요청 수락 및 자신의 연결 요청(나도 준비됐고, 너한테도 요청할게).
- ACK: 클라이언트가 서버의 요청을 최종 수락(알았어, 이제 시작하자).
- 결과: 통신할 준비가 된 가상 회선(Virtual Circuit)이 설정됩니다.
② 데이터 전송 및 확인응답 (ACK)
데이터를 보낼 때마다 수신자가 잘 받았다는 확인 응답(ACK)을 보냅니다. ACK가 일정 시간 내에 오지 않으면 재전송하여 데이터 손실을 방지합니다.
③ 순서 번호 (Sequence Number)
데이터 패킷에 순서 번호를 부여하여, 패킷이 순서가 뒤바뀌어 도착해도 원래의 순서대로 재조립할 수 있습니다.
2. TCP의 주요 특징
| 특징 | 설명 |
|---|---|
| 연결 지향 (Connection-Oriented) | 통신 전에 3-Way Handshake를 통해 논리적인 연결을 먼저 설정하고 통신을 시작합니다. |
| 신뢰성 (Reliable) | 데이터 손실, 손상, 중복, 순서 바뀜 없이 정확하게 전송됨을 보장합니다. |
| 흐름 제어 (Flow Control) | 수신자의 처리 속도보다 데이터 전송 속도가 빠를 경우, 송신 속도를 조절하여 버퍼 오버플로우를 방지합니다. |
| 혼잡 제어 (Congestion Control) | 네트워크 자체가 혼잡할 경우, 데이터 전송 속도를 늦춰 네트워크 마비를 예방합니다. |
| 전이중 통신 (Full-Duplex) | 데이터를 동시에 양방향으로 주고받을 수 있습니다. |
3. TCP의 한계
신뢰성을 확보하는 과정(핸드셰이크, 확인응답, 재전송 등) 때문에 UDP에 비해 속도가 느리고 오버헤드가 크다는 단점이 있습니다.