코드 위의 하루 (A Day on the Code)

🌐 데이터 통신 기말 총정리 | TCP의 세계, 연결과 흐름의 기술 본문

🍚전공이 밥 먹여준다믄/📙 데이터 통신

🌐 데이터 통신 기말 총정리 | TCP의 세계, 연결과 흐름의 기술

code.with.siyeon 2025. 6. 28. 19:42

이번 포스트는 데이터 통신 기말고사 범위전송 계층(TCP 중심) 내용을 정리한 기록입니다.
교수님의 PDF 강의자료와 수업 내용을 바탕으로 핵심 이론, 흐름도, 암기 포인트를 한눈에 정리해봤어요.


✅ 1. 전송 계층의 역할

  • 종단 간 (end-to-end) 통신 제공
  • 오류 제어, 흐름 제어, 혼잡 제어, 세그먼트화 등 담당
  • 주요 프로토콜:
    • TCP: 연결지향, 신뢰성 보장
    • UDP: 비연결성, 빠르지만 신뢰성 없음

✅ 2. TCP 연결 관리 (3-way / 4-way handshake)

📌 3-way handshake (연결 수립)

  1. 클라이언트 → 서버 : SYN
  2. 서버 → 클라이언트 : SYN + ACK
  3. 클라이언트 → 서버 : ACK

🔁 연결 성립 후 데이터 전송 가능

📌 4-way handshake (연결 종료)

  1. 클라이언트 → 서버 : FIN
  2. 서버 → 클라이언트 : ACK
  3. 서버 → 클라이언트 : FIN
  4. 클라이언트 → 서버 : ACK

⏱️ 마지막 ACK 후 TIME_WAIT 상태 유지 필요 (지연된 패킷 처리)


✅ 3. 흐름 제어 (Flow Control)

🧩 목적

  • 수신자가 처리 가능한 만큼만 전송 → 오버플로 방지

💡 슬라이딩 윈도우 방식

  • 윈도우 크기만큼 연속 전송 가능
  • ACK 받으면 윈도우 슬라이드

📌 Window Scaling

  • 수신 윈도우 크기를 확장하기 위한 옵션 (기본 최대 65,535B → 확장 가능)

✅ 4. 혼잡 제어 (Congestion Control)

📌 목적

  • 네트워크 내 혼잡으로 인한 패킷 손실 방지

📊 TCP 혼잡 제어 알고리즘

단계 설명
Slow Start 처음엔 cwnd = 1, 매 RTT마다 2배 증가 (지수적으로)
Congestion Avoidance 임계점 도달 후에는 선형 증가 (1씩 증가)
Fast Retransmit 중복 ACK 3개 → 손실 판단 후 재전송
Fast Recovery 손실 발생 시 cwnd 줄이고 → 다시 선형 증가
 

📌 관련 변수:

  • cwnd (혼잡 윈도우)
  • ssthresh (임계점)

✅ 5. 오류 제어 (Error Control)

📌 목적

  • 손상/유실된 데이터 감지 & 복구

📌 방식

방식 설명
Stop-and-Wait 하나 보내고 ACK 기다림. 단순하지만 느림
Go-Back-N 연속 전송 가능. 오류 발생 시 해당 이후 모든 프레임 재전송
Selective Repeat 오류 프레임만 골라서 재전송 → 가장 효율적
 

🔍 시험에서 FSM 그림, 슬라이딩 창 개념 자주 출제


✅ 6. 신뢰성 있는 전송을 위한 프로토콜: rdt 2.x ~ 3.0

버전 특징
rdt 2.0 NAK 추가, 오류 감지 가능 (ACK/NAK 기반)
rdt 2.1 ACK/NAK + 시퀀스 번호
rdt 2.2 NAK 제거, 중복 ACK으로 오류 검출
rdt 3.0 손실 고려 → 타이머 추가, 재전송 가능
 

🧠 시험 대비 핵심 암기 정리

개념 핵심 포인트
3-way handshake SYN → SYN+ACK → ACK
4-way handshake FIN/ACK → FIN → ACK + TIME_WAIT
흐름 제어 슬라이딩 윈도우, 수신자가 조절
혼잡 제어 cwnd, ssthresh / 느릴 땐 선형, 급할 땐 지수
오류 제어 Go-Back-N vs Selective Repeat 구분
rdt 3.0 timeout 발생 시 재전송 (손실까지 고려)
 

📘 마무리

이번 기말은 TCP 연결/종료, 오류 및 혼잡 제어를 깊게 이해하면 80%는 잡은 거예요.
FSM 흐름이나 슬라이딩 윈도우처럼 시간 순서와 변화량을 파악하는 문제가 자주 출제되니
흐름도와 시퀀스 번호를 손으로 그려보며 연습하면 훨씬 이해가 잘 됩니다!

시험 직전엔 이 포스트만 봐도 정리될 수 있게 구성했으니 꼭 복습해보세요 💪