컴퓨터 과학/네트워크

전송 계층 핵심 정리 — TCP 집중 가이드

Data Jun 2025. 10. 4. 10:52

인터넷에서 안정적인 데이터 전송을 책임지는 전송 계층의 대표 프로토콜이 TCP(Transmission Control Protocol) 입니다.
여기서는 TCP와 비교되는 UDP, TCP 세그먼트 구조, 연결 수립(3-way handshake), 연결 종료(4-step close), 그리고 MSS/MTU·시퀀스·ACK 등을 간단명료하게 정리합니다

 

1. TCP vs UDP 한눈에

  • TCP (연결형, 신뢰성 보장)
    연결 수립 → 데이터 전송(재전송/흐름 제어/혼잡 제어) → 연결 종료
    (응용: HTTP, SSH, SMTP 등)
  • UDP (비연결형, 빠름)
    연결 수립 과정 없음. 레이턴시가 중요하고 약간의 손실을 허용하는 서비스에 적합 (예: 실시간 스트리밍, DNS 쿼리 등).

 

2. TCP 통신 단계 (개념)

  • 연결 수립 (Three-way handshake): 양쪽이 초기 시퀀스 번호(ISN)를 교환하고 연결을 시작할 준비를 마침.
  • 데이터 송수신: 세그먼트를 보내고, 수신확인은 ACK로 처리. 재전송/흐름·혼잡 제어 수행.
  • 연결 종료: 각 쪽이 FIN을 보내고 ACK를 주고받아 연결을 정상 종료.

 

3. Three-way handshake (쓰리 웨이 핸드셰이크) 

간단한 시퀀스 다이어그램으로 보겠습니다.

호스트 A                           호스트 B
 (ISN = x)                          (ISN = y)
  A -> B : [SYN, seq=x]    --->    (A: 연결 시작)
  A <- B : [SYN+ACK, seq=y, ack=x+1]  (B: 확인 + 자신의 SYN)
  A -> B : [ACK, ack=y+1]    --->    (A: 최종 확인)
=> 연결 수립 완료
  • 1단계: A가 SYN(초기 시퀀스 번호 x) 보냄
  • 2단계: B는 SYN+ACK(자기 ISN y, A의 seq에 대한 ack=x+1)으로 응답
  • 3단계: A는 ACK(ack=y+1) 전송 → 양쪽 모두 연결 수립

핵심: SYN/ACK/ACK의 조합으로 서로 “연결 준비”와 “초기 시퀀스 번호”를 맞춥니다.

 

4. 연결 종료 (정상 종료 흐름)

TCP는 각 방향의 전송 종료를 개별적으로 처리합니다. 일반적인 흐름(4단계):

호스트 A                       호스트 B
A -> B : [FIN, seq=fa]   --->   (A: 더 보낼 데이터 없음. 종료 요청)
A <- B : [ACK, ack=fa+1] <---   (B: 확인)
A <- B : [FIN, seq=fb]   <---   (B: 자신도 종료 요청)
A -> B : [ACK, ack=fb+1] --->   (A: 확인)
=> 연결 종료 (양방향 FIN/ACK 교환으로 닫힘)

 

  • 액티브 클로즈: 종료를 시작한 쪽(먼저 FIN 보낸 쪽)
  • 패시브 클로즈: 종료 수락하는 쪽

 

 

정리하면

 

TCP는 연결 지향으로, 연결 수립(3-way handshake) → 데이터 전송(시퀀스, ACK, 윈도우) → 연결 종료(FIN/ACK 절차) 과정을 거쳐 신뢰성을 보장합니다.