컴퓨터 과학/네트워크

TCP의 핵심: 세그먼트와 통신 흐름

Data Jun 2025. 10. 4. 10:45

인터넷에서 신뢰성 있는 통신을 책임지는 전송계층의 대표 프로토콜이 TCP입니다. 여기서는 TCP가 데이터를 어떻게 나누어 보내는지(세그먼트), 헤더 주요 필드(시퀀스·ACK·플래그·윈도우 등), 그리고 통신 단계(연결 수립 → 데이터 전송 → 연결 종료)를 간단히 정리합니다.

 

 

1. TCP vs UDP 

  • TCP: 연결형, 신뢰성 보장(재전송·흐름제어·혼잡제어)
  • UDP: 비연결형, 신뢰성은 적지만 빠름(스트리밍, DNS 등에서 사용)

 

2. 세그먼트(segment)란?

  • 전송계층(TCP)의 PDU(Protocol Data Unit) 입니다.
  • 애플리케이션 데이터에 TCP 헤더를 붙인 단위가 세그먼트로, 이 세그먼트는 IP 헤더가 붙어 패킷이 되고, 이더넷 헤더가 붙어 프레임이 됩니다.
애플리케이션 데이터
  ↓ (TCP 헤더 추가)
[TCP 세그먼트]
  ↓ (IP 헤더 추가)
[IP 패킷]
  ↓ (데이터링크 헤더 추가)
[프레임]

 

3. MSS (Maximum Segment Size)

  • MSS: TCP로 보낼 수 있는 최대 페이로드(데이터) 크기.
  • 보통 **MTU(예: 이더넷 1500B)**에서 IP/TCP 헤더 길이를 뺀 값이 MSS(예: 1460B).
  • 큰 데이터는 MSS 기준으로 잘려 여러 세그먼트로 전송됩니다.

 

4. TCP 세그먼트 주요 필드 

  • 출발/목적 포트: 애플리케이션(프로세스)를 구분
  • 순서 번호(Sequence Number): 해당 세그먼트의 첫 바이트 번호(바이트 단위) — 재조립/정렬용
  • 확인 응답 번호(Acknowledgment Number): 수신자가 다음에 기대하는 바이트 번호(수신 확인)
  • 제어 비트(Flags): ACK, SYN, FIN, RST, PSH 등 — 상태/제어 정보
  • 윈도우(Window): 수신자가 한 번에 받을 수 있는 여유 공간(흐름제어)
  • 체크섬(Checksum), 옵션(예: MSS, 타임스탬프)

 

5. 순서 번호와 ACK 

  • 송신은 임의의 **초기 순서번호(ISN)**를 정하고 바이트마다 번호를 붙입니다.
  • 예: ISN = 100
    • 세그먼트 A: 500 바이트 → 순서번호 100
    • 세그먼트 B: 다음 500 바이트 → 순서번호 600
    • 세그먼트 C: 다음 500 바이트 → 순서번호 1100
[세그먼트 A] 100 ~ 599
[세그먼트 B] 600 ~ 1099
[세그먼트 C] 1100 ~ 1599

수신자는 마지막으로 정상 수신된 바이트 다음 번호(예: 8001)를 ACK로 보내며, 송신자는 그 ACK를 보고 재전송 여부를 결정합니다.

 

6. 제어 비트(플래그)의 의미

  • SYN: 연결 수립 요청 (3-way handshake에서 사용)
  • ACK: 수신 확인(확인 응답 번호가 유효할 때)
  • FIN: 연결 종료 요청
  • RST: 비정상적 연결 초기화(리셋)
  • 기타: PSH, URG, CWR, ECE 등

 

 

정리하면

  • 세그먼트 = TCP의 PDU. 세그먼트는 시퀀스 번호·ACK·플래그·윈도우 등으로 구성되어 신뢰성 있는 전송을 가능하게 한다.
  • MSS로 나누어 보내고, 수신 확인(ACK)으로 손실을 복구한다.
  • TCP는 연결 수립 → 데이터 전송 → 연결 종료의 단계로 동작하며, 이 과정에서 재전송·흐름·혼잡 제어가 핵심 역할을 한다.