TCP
TCP란?
TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 전송 계층(Transport Layer) 프로토콜입니다.
TCP는 인터넷에서 데이터가 정확하게 전달되도록 도와주는 핵심 프로토콜 중 하나입니다.
TCP의 주요 특징
- 연결 지향적(Connection-Oriented)
- 데이터를 전송하기 전, 통신을 위한 3-way Handshake 과정을 통해 연결을 설정합니다.
- 연결이 설정되면 양쪽이 데이터를 주고받을 수 있습니다.
- 신뢰성 있는 전송
- 데이터 순서 보장: 데이터 패킷이 올바른 순서대로 도착하도록 관리합니다.
- 데이터 손실 복구: 손실된 패킷이 있으면 재전송합니다.
- 중복 방지: 중복된 패킷은 버립니다.
- 흐름 제어(Flow Control)
- 수신자가 처리할 수 있는 만큼만 데이터를 전송하도록 조절합니다.
- 혼잡 제어(Congestion Control)
- 네트워크 혼잡 상태를 감지하고 전송 속도를 조절하여 네트워크 과부하를 방지합니다.
TCP의 주요 기능과 동작 원리
연결 설정: 3-Way Handshake
TCP는 통신을 시작하기 위해 3단계 연결 설정 절차를 사용합니다.
- SYN: 클라이언트 → 서버에 연결 요청 (SYN 전송).
- SYN-ACK: 서버 → 클라이언트에게 요청 수락 응답 (SYN과 ACK 전송).
- ACK: 클라이언트 → 서버에 응답 확인 (ACK 전송).
결과: 양쪽이 서로 데이터를 주고받을 준비가 완료됩니다.
데이터 전송
- 데이터 패킷 전송:
TCP는 데이터를 세그먼트(segment) 단위로 나누어 전송합니다. - 순서 번호(Sequence Number):
각 세그먼트에는 순서 번호가 부여되어 데이터의 순서를 보장합니다. - 확인 응답(ACK):
수신자는 데이터 수신 후, 다음에 기대하는 순서 번호를 ACK로 응답합니다. - 타이머와 재전송:
송신자는 특정 시간 안에 ACK를 받지 못하면, 해당 세그먼트를 재전송합니다.
연결 종료: 4-Way Handshake
연결 종료를 위해 TCP는 4단계 종료 절차를 사용합니다.
- FIN: 클라이언트 → 서버에 연결 종료 요청 (FIN 전송).
- ACK: 서버 → 클라이언트에게 종료 요청 수락 (ACK 전송).
- FIN: 서버 → 클라이언트에게 종료 요청 (FIN 전송).
- ACK: 클라이언트 → 서버에게 종료 수락 (ACK 전송).
결과: 양쪽 모두 데이터 전송이 종료되고 연결이 닫힙니다.
TCP의 주요 기능 심화
흐름 제어 (Flow Control)
- 수신 윈도우(Window Size):
수신자가 처리 가능한 버퍼의 크기를 수신 윈도우로 알려줍니다. - 슬라이딩 윈도우(Sliding Window):
송신자는 수신 윈도우 크기만큼 데이터를 전송합니다.
혼잡 제어 (Congestion Control)
네트워크 혼잡을 방지하기 위해 TCP는 다음과 같은 알고리즘을 사용합니다:
- Slow Start:
- 전송 속도를 낮게 시작하고 점진적으로 증가시킵니다.
- Congestion Avoidance:
- 혼잡이 감지되면, 전송 속도를 천천히 증가시킵니다.
- Fast Retransmit & Fast Recovery:
- 패킷 손실이 감지되면, 손실된 패킷을 재전송하고 혼잡 상태를 빠르게 회복합니다.
TCP와 UDP의 비교
| 구분 | TCP | UDP | |———————|————————————|———————————-| | 연결 방식 | 연결 지향(Connection-Oriented) | 비연결(Connectionless) | | 신뢰성 | 신뢰성 보장 | 신뢰성 없음 | | 데이터 순서 보장 | 보장 | 보장하지 않음 | | 속도 | 상대적으로 느림 | 빠름 | | 사용 사례 | 파일 전송(FTP), 웹 통신(HTTP) 등 | 실시간 스트리밍, VoIP, DNS 등 |
6. TCP의 장단점
장점
- 신뢰성 있는 데이터 전송.
- 데이터의 순서 보장 및 재전송 기능 제공.
- 흐름 제어 및 혼잡 제어를 통한 네트워크 안정성 확보.
단점
- 연결 설정 및 종료로 인한 오버헤드 발생.
- 데이터 전송 속도가 상대적으로 느림.
- 실시간 전송에는 부적합.
TCP의 활용
TCP는 데이터의 신뢰성과 순서를 보장하는 중요한 프로토콜입니다. 이를 통해 인터넷과 같은 불안정한 네트워크에서도 정확하고 안정적으로 데이터를 전송할 수 있습니다. 다만 오버헤드가 크기 때문에 실시간성이 필요한 경우에는 UDP와 같은 다른 프로토콜이 사용됩니다.
참고 자료
- RFC 793 - TCP 프로토콜 명세
- 컴퓨터 네트워킹: 톱다운 접근법, James Kurose & Keith Ross.
- TCP/IP Illustrated, W. Richard Stevens.