TCP SACK vs Cumulative ACK

곽태욱·2024년 11월 15일

Selective ACK (SACK)와 Cumulative ACK는 네트워크 프로토콜, 특히 TCP에서 패킷 전달 상태를 확인하기 위한 방법으로 사용되지만, 작동 방식과 목적에 차이가 있음

1. Cumulative ACK (누적 ACK)

  • 동작 방식:
    • 가장 마지막으로 순서대로 도착한 데이터까지의 범위를 ACK 번호로 알려줌
    • 예를 들어, 데이터 패킷이 1, 2, 3, 4, 5번 순서로 전송되었고, 1~3번 패킷이 도착했다면, ACK는 4를 보냄. 이는 "1, 2, 3번까지 제대로 받았고, 4번 이후부터는 다시 보내라"는 뜻
  • 단점:
    • 중간에 누락된 패킷이 있다면 해당 누락된 패킷 이후의 모든 데이터는 재전송이 필요
    • 예: 1, 2, (3 손실), 4, 5 도착 → ACK는 여전히 3만 보내며 3번 이후의 데이터를 다시 요청

2. Selective ACK (선택적 ACK, SACK)

  • 동작 방식:

    • TCP 옵션으로 구현되며, 누락된 패킷을 제외하고 어떤 데이터가 도착했는지 세부적으로 알려줌.
    • 예를 들어, 패킷 1, 2, 4, 5번이 도착하고 3번이 손실되었다면, SACK 옵션을 통해 "1-2번과 4-5번이 도착했다"고 보고함
    • 송신자는 3번 패킷만 재전송하면 됨
  • 장점:

    • 효율적인 데이터 전송. 누락된 패킷만 재전송하면 되므로 대역폭을 절약. 특히 대용량 데이터 전송에서 성능이 크게 향상.
  • 단점:

    • 추가 메타데이터가 전송되어 헤더 크기가 약간 증가.

주요 차이점 비교

특징Cumulative ACKSelective ACK (SACK)
정보 전달 방식마지막으로 연속된 데이터까지만 보고정확히 어떤 데이터가 도착했는지 보고
효율성손실된 데이터 이후 모두 재전송손실된 데이터만 재전송
복잡도간단상대적으로 복잡
헤더 크기작음SACK 옵션으로 헤더 크기 증가

언제 사용되나?

  • Cumulative ACK: 일반적인 TCP 연결에서는 기본적으로 사용. 간단한 구현과 적은 오버헤드가 필요할 때 적합
  • Selective ACK: 데이터 손실이 빈번하거나 대역폭이 중요한 환경에서 주로 사용. 예: 고속 네트워크, 위성 통신

TCP 연결에서 SACK 옵션은 필요에 따라 활성화할 수 있으며, 이를 통해 Cumulative ACK의 단점을 보완함

profile
이유와 방법을 알려주는 메모장 겸 블로그 (Frontend, AI, 경제, 책)

0개의 댓글