TCP (흐름제어혼잡제어)
기술노트
📡 TCP (Transmission Control Protocol)
TCP는 인터넷상에서 데이터를 정확하고 안정적으로 전송하기 위해 사용하는 프로토콜입니다. 인터넷에서 데이터를 주고받는 데 필수적인 역할을 하며, 주로 웹페이지 보기, 이메일 보내기 등에서 사용됩니다.
🔍 TCP 개요
TCP는 데이터를 보내기 전에 반드시 연결을 설정하는 방식으로, 데이터의 신뢰성을 보장합니다.
- 연결 지향적: 데이터 전송 전 연결 설정
 - 신뢰성: 데이터 손실과 오류 최소화
 - 전송 계층: OSI 모델의 4계층에 위치
 
⚙️ TCP 주요 특징
1. 연결 설정과 종료
- 연결 설정 (3-way Handshake)
 
- 송신자 → 수신자: 연결 요청(SYN)
 - 수신자 → 송신자: 연결 승인(SYN-ACK)
 - 송신자 → 수신자: 연결 확인(ACK)
 
- 연결 종료 (4-way Handshake)
 
- 송신자 → 수신자: 종료 요청(FIN)
 - 수신자 → 송신자: 종료 확인(ACK)
 - 수신자 → 송신자: 종료 요청(FIN)
 - 송신자 → 수신자: 종료 확인(ACK)
 
2. 신뢰성 보장
- 순서 보장: 데이터가 전송된 순서대로 도착
 - 오류 감지: 데이터 오류 발생 시 자동 재전송
 - 중복 방지: 중복된 데이터를 제거
 
3. 흐름제어
- 수신자의 처리 능력에 맞춰 데이터를 전송
 - 슬라이딩 윈도우 방식을 사용해 효율적 전송
 
4. 혼잡제어
- 네트워크가 과부하되지 않게 데이터 전송 속도 조절
 - 주요 알고리즘: Slow Start, AIMD, Fast Retransmit, Fast Recovery
 
5. 전이중 통신
- 동시에 양방향으로 데이터 전송 가능
 
📋 TCP 헤더 구조 (주요 필드)
- Source Port: 송신 포트 번호
 - Destination Port: 수신 포트 번호
 - Sequence Number: 데이터 순서 번호
 - Acknowledgment Number: 다음 예상 데이터 번호
 - Window Size: 수신자 버퍼 크기(RWND)
 - Checksum: 데이터 오류 확인
 
⚡ TCP vs UDP 비교
| 특성 | TCP | UDP | 
|---|---|---|
| 연결 여부 | 연결 지향 | 연결 없음 | 
| 신뢰성 | 높음 | 낮음 | 
| 속도 | 상대적으로 느림 | 빠름 | 
| 흐름제어, 혼잡제어 | 지원 | 미지원 | 
| 활용 예시 | 웹, 이메일, 파일 전송 | 영상 스트리밍, DNS | 
🚀 TCP 장점과 단점
장점
- 신뢰성 높은 데이터 전송
 - 데이터 전송 순서 보장
 - 네트워크 혼잡 방지
 
단점
- 상대적으로 속도가 느림
 - 연결 설정과 관리로 인한 부하
 
💼 TCP 활용 분야
- 웹 브라우징 (HTTP/HTTPS)
 - 이메일 (SMTP, POP3)
 - 파일 전송 (FTP, SFTP)
 - 원격 접속 (SSH, Telnet)