sctp tcp 3,4 way handshake

agnusdei·2024년 11월 28일
0

Network

목록 보기
63/419

질문: SCTP 연결 및 종료 과정을 클라이언트와 서버 관계로 다시 자세히 설명해주세요.

답변

SCTP(Stream Control Transmission Protocol)는 TCP와 달리 4-Way Handshake를 사용하여 연결을 설정하고 종료합니다. 이 과정에서 클라이언트와 서버가 주고받는 메시지(Chunk)를 단계별로 설명하겠습니다.


1. SCTP 연결 설정 (4-Way Handshake)

핵심 메시지(Chunks)

  1. INIT: 클라이언트가 서버에게 연결 요청을 보냄.
  2. INIT ACK: 서버가 연결 요청을 승인하며 응답 보냄.
  3. COOKIE ECHO: 클라이언트가 서버로부터 받은 쿠키를 반환함.
  4. COOKIE ACK: 서버가 클라이언트의 쿠키 반환을 확인하고 연결 설정 완료.

과정 (클라이언트와 서버 간 메시지 흐름)

  1. 클라이언트 → 서버: INIT

    • 클라이언트가 연결을 시작하기 위해 서버로 INIT Chunk를 보냅니다.
    • 이 메시지에는 클라이언트의 Initiate Tag(연결 식별 값)와 Receiver Window Credit(수신 윈도우 크기) 정보가 포함됩니다.
    • 상태 전환:
      • 클라이언트: CLOSEDCOOKIE_WAIT
  2. 서버 → 클라이언트: INIT ACK

    • 서버는 INIT 메시지를 수신하고, 클라이언트에게 INIT ACK Chunk를 보냅니다.
    • INIT ACK에는 서버의 Initiate Tag와 클라이언트를 검증하기 위한 쿠키(Cookie)가 포함됩니다.
    • 상태 전환:
      • 서버: CLOSEDINIT_ACK_SENT
  3. 클라이언트 → 서버: COOKIE ECHO

    • 클라이언트는 서버로부터 받은 쿠키를 COOKIE ECHO Chunk에 담아 다시 서버로 전송합니다.
    • 이 과정에서 클라이언트는 자신이 인증된 연결 요청자임을 서버에 증명합니다.
    • 상태 전환:
      • 클라이언트: COOKIE_WAITCOOKIE_ECHOED
  4. 서버 → 클라이언트: COOKIE ACK

    • 서버는 클라이언트의 쿠키를 검증한 후, COOKIE ACK Chunk를 클라이언트에게 전송합니다.
    • 이로써 SCTP 연결이 설정됩니다.
    • 상태 전환:
      • 서버: INIT_ACK_SENTESTABLISHED
      • 클라이언트: COOKIE_ECHOEDESTABLISHED

2. SCTP 연결 종료 (4-Way Termination)

핵심 메시지(Chunks)

  1. SHUTDOWN: 클라이언트가 서버에게 연결 종료 요청을 보냄.
  2. SHUTDOWN ACK: 서버가 클라이언트의 요청을 확인하고 응답을 보냄.
  3. SHUTDOWN COMPLETE: 클라이언트가 종료 완료 메시지를 보내며 연결 종료.

과정 (클라이언트와 서버 간 메시지 흐름)

  1. 클라이언트 → 서버: SHUTDOWN

    • 클라이언트가 연결 종료를 요청하며 서버로 SHUTDOWN Chunk를 보냅니다.
    • 상태 전환:
      • 클라이언트: ESTABLISHEDSHUTDOWN_SENT
  2. 서버 → 클라이언트: SHUTDOWN ACK

    • 서버는 클라이언트로부터 SHUTDOWN 요청을 수신하고, 데이터를 모두 전송한 뒤 SHUTDOWN ACK Chunk를 보냅니다.
    • 상태 전환:
      • 서버: ESTABLISHEDSHUTDOWN_ACK_SENT
  3. 클라이언트 → 서버: SHUTDOWN COMPLETE

    • 클라이언트는 서버의 SHUTDOWN ACK를 확인한 뒤, 연결 종료 완료를 알리는 SHUTDOWN COMPLETE Chunk를 전송합니다.
    • 상태 전환:
      • 클라이언트: SHUTDOWN_SENTCLOSED
      • 서버: SHUTDOWN_ACK_SENTCLOSED

3. SCTP 메시지의 비트 구성

SCTP는 메시지 단위를 Chunk로 정의하며, 각 Chunk는 아래와 같은 구조를 가집니다.

1) SCTP 헤더 (공통 부분)

필드길이 (비트)설명
Source Port16송신 측 포트 번호
Destination Port16수신 측 포트 번호
Verification Tag32연결 무결성을 보장하는 태그 값
Checksum32데이터 오류를 검증하는 체크섬

2) Chunk 구조

필드길이 (비트)설명
Chunk Type8Chunk의 종류 (INIT, COOKIE 등)
Chunk Flags8특정 Chunk 동작을 나타내는 플래그
Chunk Length16Chunk의 총 길이
Chunk Value가변Chunk에 담긴 데이터 (쿠키, 태그 등)

4. 연결 설정 및 종료 원리

  1. 쿠키 기반 인증

    • 서버는 INIT ACK 단계에서 클라이언트로 쿠키를 전송합니다.
    • 클라이언트는 COOKIE ECHO 단계에서 쿠키를 반환하며 자신이 신뢰 가능한 요청자임을 증명합니다.
    • 이는 SYN 플러딩 공격을 방지하기 위한 설계입니다.
  2. Verification Tag

    • 클라이언트와 서버는 각자의 Verification Tag를 생성하여 메시지를 주고받습니다.
    • 이 태그는 연결의 유효성을 검증하며, 잘못된 태그를 가진 패킷은 폐기됩니다.
  3. 4-Way Handshake와 종료

    • TCP의 3-Way Handshake와 달리 4단계를 거쳐 연결을 설정합니다.
    • 종료 역시 4단계를 통해 데이터가 모두 전송된 후 연결이 종료됩니다.

5. TCP와 SCTP 비교

항목SCTPTCP
연결 설정 방식4-Way Handshake3-Way Handshake
연결 종료 방식4-Way Termination4-Way Termination
SYN 플러딩 방지쿠키 기반 인증 활용미흡
데이터 스트림멀티스트리밍 지원단일 스트리밍

SCTP는 TCP와 유사하지만 멀티스트리밍, 멀티호밍, 쿠키 인증 등 고유의 강력한 기능을 제공합니다.

0개의 댓글