TCP 기초
TCP의 정의와 특징
- 연결지향 프로토콜
- 신뢰성 보장 메커니즘
- 전이중 통신(Full-Duplex)
- 바이트 스트림 서비스
TCP 헤더 구조
2.1 TCP 헤더 분석
- 20바이트 기본 헤더 구조
- 각 필드별 상세 설명
- Source/Destination Port
- Sequence Number
- Acknowledgment Number
- Window Size
- Checksum
- Urgent Pointer
2.2 TCP 플래그 (Control Bits)
- SYN, ACK, FIN, RST, PSH, URG
- 각 플래그의 의미와 사용 시점
3장. TCP 연결 관리
3.1 3-Way Handshake
- 연결 설정 과정 상세 분석
- SYN → SYN+ACK → ACK
- 각 단계별 상태 변화
- 실패 시나리오와 대응
3.2 4-Way Handshake
- 연결 종료 과정
- FIN → ACK → FIN → ACK
- TIME_WAIT 상태의 의미
- 비정상 종료 (RST)
3.3 TCP 상태 다이어그램
- 11가지 TCP 상태 완벽 정리
- LISTEN, SYN_SENT, ESTABLISHED 등
- 상태 전환 조건과 시나리오
4장. TCP 신뢰성 보장 메커니즘
4.1 순서 보장 (Sequence Number)
- 시퀀스 번호 동작 원리
- 순서가 바뀐 패킷 처리
- 32비트 시퀀스 공간 관리
4.2 오류 검출과 복구
- Checksum을 통한 오류 검출
- 재전송 메커니즘
- 타임아웃과 RTT 계산
4.3 중복 제거
5장. TCP 흐름 제어 (Flow Control)
5.1 윈도우 기반 흐름 제어
- Sliding Window 프로토콜
- Receive Window 크기 조절
- Zero Window와 Window Probe
5.2 버퍼 관리
6장. TCP 혼잡 제어 (Congestion Control)
6.1 혼잡 제어 알고리즘
- Slow Start: 지수적 증가
- Congestion Avoidance: 선형 증가
- Fast Retransmit: 빠른 재전송
- Fast Recovery: 빠른 회복
6.2 혼잡 윈도우 (cwnd) 관리
- cwnd vs rwnd 차이점
- 혼잡 발생 감지 방법
- Additive Increase Multiplicative Decrease (AIMD)
6.3 최신 혼잡 제어 알고리즘
- TCP Reno, NewReno
- TCP Cubic (Linux 기본)
- TCP BBR (Google)
7장. TCP 성능 최적화
7.1 TCP 튜닝 파라미터
- 윈도우 크기 조정
- 버퍼 크기 최적화
- Nagle 알고리즘
- Delayed ACK
7.2 고속 네트워크 환경 대응
- TCP Window Scaling
- Selective ACK (SACK)
- TCP Timestamps
8장. TCP 실무 분석
8.1 패킷 캡처 분석
- Wireshark를 이용한 TCP 분석
- 실제 트래픽 패턴 해석
- 성능 병목 지점 찾기
8.2 일반적인 TCP 문제들
- Connection Timeout
- Packet Loss 대응
- 대역폭 지연 곱 (BDP) 계산
8.3 애플리케이션별 TCP 특성
- HTTP/HTTPS
- 데이터베이스 연결
- 실시간 스트리밍
9장. TCP 보안
9.1 TCP 공격 유형
- SYN Flooding
- TCP Hijacking
- Sequence Number 예측 공격
9.2 보안 대책
- SYN Cookies
- Random Sequence Number
- 방화벽과 IDS 연동
10장. 차세대 TCP
10.1 TCP 확장
- Multipath TCP (MPTCP)
- TCP Fast Open (TFO)
- TCP Mobile
10.2 QUIC과 UDP 기반 프로토콜
- HTTP/3과 QUIC
- TCP vs QUIC 비교
- 미래 전망
부록
A. TCP RFC 문서 정리
B. Linux TCP 설정 명령어 모음
C. 프로그래밍 언어별 TCP 소켓 예제
D. TCP 관련 도구 및 유틸리티
📝 학습 팁
- 각 장마다 Wireshark 실습 포함
- 이론 → 실습 → 문제해결 순서로 학습
- 네트워크 시뮬레이터로 시나리오 테스트
- 실제 서비스 환경에서의 TCP 동작 관찰