NAK(Negative Acknowledgment)와 ACK(Acknowledgment)는 네트워크 통신에서 데이터 전송의 신뢰성을 보장하기 위한 메커니즘입니다. 특히 멀티캐스트 환경에서 이 두 방식은 다음과 같은 특징과 차이점을 가집니다:
### ACK (Acknowledgment)
- **정의**: 수신자가 데이터를 성공적으로 받았음을 송신자에게 알리는 확인 메시지
- **작동 방식**:
1. 송신자가 데이터 전송
2. 각 수신자가 데이터 수신 후 ACK 메시지 전송
3. 송신자는 모든 수신자로부터 ACK를 받아야 전송 완료로 간주
- **멀티캐스트에서의 문제점**:
1. **ACK 폭풍**: 다수의 수신자가 동시에 ACK를 보내면서 네트워크 혼잡 발생
2. **확장성 제한**: 수신자 수가 증가할수록 송신자가 처리해야 할 ACK 수도 증가
3. **지연 시간 증가**: 모든 수신자의 ACK를 기다려야 하므로 전체 지연 시간 증가
### NAK (Negative Acknowledgment)
- **정의**: 수신자가 데이터를 받지 못했거나 손실된 경우에만 송신자에게 알리는 메시지
- **작동 방식**:
1. 송신자가 데이터 전송
2. 수신자는 데이터 손실 발견 시에만 NAK 메시지 전송
3. 송신자는 NAK를 받은 데이터만 재전송
- **멀티캐스트에서의 장점**:
1. **네트워크 부하 감소**: 문제가 있는 경우에만 메시지 전송
2. **확장성 향상**: 수신자 수가 증가해도 네트워크 부하 크게 증가하지 않음
3. **빠른 복구**: 문제 발생 즉시 재전송 요청 가능
### NVI의 NAK 최적화
NVI는 NAK 방식을 채택하면서 다음과 같은 최적화를 수행했습니다:
1. **NAK 트리거 간격 단축**: 2밀리초로 설정하여 빠른 손실 감지
2. **손실 감지 주기**: 10밀리초마다 손실 감지 메커니즘 작동
3. **유연한 지연 설정**: 네트워크 상태에 따라 최대 16밀리초까지 조정 가능
### 비교 표
| 특징 | ACK | NAK |
|-----|-----|-----|
| 메시지 발생 조건 | 데이터 수신 성공 시 항상 | 데이터 손실 발생 시에만 |
| 네트워크 부하 | 높음 (모든 수신에 대해 응답) | 낮음 (문제 발생 시에만 응답) |
| 확장성 | 제한적 (수신자 수에 비례하여 부하 증가) | 우수 (수신자 수와 관계없이 일정한 부하) |
| 복구 속도 | 상대적으로 느림 | 빠름 (즉시 재전송 요청 가능) |
| 멀티캐스트 적합성 | 낮음 | 높음 |
이러한 특성 때문에 NVI를 포함한 대부분의 현대적인 멀티캐스트 시스템은 NAK 방식을 선호합니다. NAK 방식은 네트워크 효율성과 확장성을 제공하면서도 신뢰성 있는 데이터 전송을 가능하게 합니다.