[Network] TCP 데이터 송수신
3줄 요약
TCP는 오류 제어, 흐름 제어, 혼잡 제어를 통해 신뢰성 있는 데이터 전송을 보장
ARQ 기반 재전송과 슬라이딩 윈도우를 활용한 흐름 제어, AIMD 기반 혼잡 제어 알고리즘 사용
혼잡 제어는 RTT와 ACK 패턴을 바탕으로 전송 속도를 동적으로 조절함
💻 컴퓨터 네트워크 시리즈
이 시리즈는 『혼자 공부하는 네트워크』 (강민철 저)
+ 인프런 강의를 기반으로 개인적으로 복습 및 정리한 기록입니다.
⚠️ 오류 제어 (Error Control)
TCP는 전송 도중 발생하는 오류를 재전송 기법(ARQ)으로 제어
- 중복된 ACK 수신 또는 타임아웃 → 재전송
- ARQ (Automatic Repeat Request) 기반
🔁 ARQ 방식
- Stop-and-Wait ARQ
- 확인 응답 전까지 새 메시지 전송 ❌
- 장점: 단순, 신뢰성 높음 / 단점: 전송 효율 낮음
- Go-Back-N ARQ
- 파이프라이닝 적용
- 오류 발생 시 해당 세그먼트부터 전부 재전송
- 누적 확인 응답(Cumulative ACK)
- Selective Repeat ARQ
- 개별 재전송 방식
- 문제 발생한 세그먼트만 다시 전송
- 개별 확인 응답(Selective ACK) → 현재 가장 널리 사용
⚡ Fast Retransmit
- 동일한 ACK 3회 수신 시 타이머 만료 전이라도 즉시 재전송
- 지연 시간 감소
📏 흐름 제어 (Flow Control)
수신 호스트의 처리 능력에 맞게 송신 속도를 조절하는 기능
📌 슬라이딩 윈도우 (Sliding Window)
- 수신 윈도우: 수신 측이 TCP 헤더에 명시해 송신 측에 전달
- 송신 윈도우: 수신 윈도우 기반으로 계산
- 송신자는 윈도우 범위 내에서만 데이터 전송 가능
→ 수신자가 처리 가능한 만큼만 데이터를 보내도록 제어
🌐 혼잡 제어 (Congestion Control)
네트워크 혼잡 상황에 따라 송신 속도를 조절하는 기능
- 혼잡 윈도우(Congestion Window, cwnd): 송신자가 계산
- 수신 윈도우 ≠ 혼잡 윈도우 → 최종 전송 가능량 =
min(cwnd, rwnd)
🧠 혼잡 제어 알고리즘
AIMD (Additive Increase, Multiplicative Decrease)
- RTT마다 혼잡 윈도우 1씩 선형 증가
- 혼잡 감지 시 → 윈도우 절반 감소
- 혼잡 윈도우는 톱니 형태로 변화
Slow Start (느린 시작)
- 초기 혼잡 윈도우 = 1 MSS
- ACK 수신마다 윈도우 1 증가 → RTT마다 지수적 증가
- 임계치 도달 시 → 혼잡 회피로 전환
Congestion Avoidance (혼잡 회피)
- RTT마다 혼잡 윈도우 1씩 선형 증가
Fast Recovery
- 중복 ACK 3회 수신 시 → 빠르게 재전송
- 혼잡 회피로 바로 전환 (느린 시작 생략)
📡 ECN (Explicit Congestion Notification)
- 중간 라우터가 혼잡 여부를 알려줌
- IP/TCP 헤더에 ECN 비트가 설정되어 있을 경우 혼잡 알림 가능
✅ 마무리 정리
TCP는 단순한 전송이 아닌 오류·흐름·혼잡 제어를 종합적으로 처리하며
정확하고 안정적인 데이터 전송 가능
실제 네트워크 성능에 큰 영향을 주는 요소이므로 깊이 있게 이해할 필요가 있음
📚 참고 자료
- 『혼자 공부하는 네트워크』 - 강민철 저
- 인프런 강의 - 혼자 공부하는 네트워크 기반 강의
읽어주셔서 감사합니다 🙌
내용이 도움이 되었거나, 틀린 부분이 있다면 댓글이나 GitHub Issue로 알려주세요 😊
This post is licensed under CC BY 4.0 by the author.