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 ACK | Selective ACK (SACK) |
|---|
| 정보 전달 방식 | 마지막으로 연속된 데이터까지만 보고 | 정확히 어떤 데이터가 도착했는지 보고 |
| 효율성 | 손실된 데이터 이후 모두 재전송 | 손실된 데이터만 재전송 |
| 복잡도 | 간단 | 상대적으로 복잡 |
| 헤더 크기 | 작음 | SACK 옵션으로 헤더 크기 증가 |
언제 사용되나?
- Cumulative ACK: 일반적인 TCP 연결에서는 기본적으로 사용. 간단한 구현과 적은 오버헤드가 필요할 때 적합
- Selective ACK: 데이터 손실이 빈번하거나 대역폭이 중요한 환경에서 주로 사용. 예: 고속 네트워크, 위성 통신
TCP 연결에서 SACK 옵션은 필요에 따라 활성화할 수 있으며, 이를 통해 Cumulative ACK의 단점을 보완함