💡 핵심 인사이트
Go-Back-N (GBN) ARQ는 정지-대기의 답답함을 부수고, 슬라이딩 윈도우를 이용해 송신기가 수신기의 허락(ACK)을 기다리지 않고 N개의 프레임을 기관총처럼 연속해서 와다다다 쏘아버리는 방식입니다.
단, 중간에 3번 프레임이 깨지면, 그 뒤에 멀쩡히 도착한 4번, 5번까지 전부 휴지통에 버리고 에러 난 3번(N) 시점으로 통째로 돌아가(Go-Back) 3번부터 5번까지 무식하게 싹 다 다시 쏘는 비효율적인 재전송 기법입니다.
Ⅰ. GBN의 윈도우(Window) 크기와 기관총 발사
정지-대기는 윈도우 크기가 양쪽 다 1이었습니다. GBN은 송신 윈도우 크기만 N (예: 5), 수신 윈도우 크기는 여전히 1로 세팅합니다.
- 수신기는 오직 자기 코앞에 떨어지는 순서에 맞는 프레임 1개만 기다립니다(버퍼 1개).
- 송신기는 ACK를 안 받아도 버퍼에 있는 1, 2, 3, 4, 5번 프레임 5개를 파이프(네트워크) 안으로 한꺼번에 와다다다 밀어 넣습니다. 이렇게 파이프를 가득 채우므로 통신 속도가 미친 듯이 빨라집니다. (Pipeline 효과).
Ⅱ. 에러 발생과 무자비한 후퇴 (Go-Back-N)
속도는 좋았지만, 수신기 버퍼가 딱 '1'이라는 게 치명적입니다.
[상황의 재구성]
- 송신기가
0, 1, 2, 3, 4, 5프레임을 연달아 쐈습니다. - 수신기는
0, 1을 예쁘게 받고ACK 2(다음엔 2번 줘)를 보냈습니다. - 그런데
2번프레임이 날아오다 벼락을 맞아 깨졌습니다. - 그 사이 파이프를 타고 날아오던
3, 4, 5번프레임이 수신기에 도착합니다. - 수신기의 태도: 수신기는 윈도우 크기가 1이므로, 2번 자리가 비어있는데 3번이 먼저 오면 **"난 2번이 안 오면 3, 4, 5번은 안 받아!"**라며 완벽하고 멀쩡하게 도착한 3, 4, 5번 데이터를 가차 없이 쓰레기통에 폐기(Discard)해 버립니다. 그리고 송신기에게 계속
NAK 2(2번 깨졌어!)만 보냅니다. - 송신기의 태도: NAK를 받은 송신기는 눈물을 머금고, 에러가 발생한 지점인 2번(N)으로 되돌아가서(Go-Back), 그 뒤에 이미 보냈던
2, 3, 4, 5를 싹 다 새로 긁어서 재전송해야 합니다.
Ⅲ. GBN의 장단점
- 장점: 송신기가 쉬지 않고 쏠 수 있어 네트워크 효율이 올라갑니다. 무엇보다 수신기는 도착한 걸 순서대로 저장할 거대한 메모리(버퍼)가 전혀 필요 없고 오직 1칸만 있으면 되므로, 하드웨어 칩셋 가격이 극단적으로 저렴해집니다.
- 단점: 선로의 에러율이 높은 환경(무선망 등)에서는 한 번 에러가 날 때마다 수백 개의 멀쩡한 데이터가 동반 자살(폐기)해야 하므로, 재전송 트래픽이 폭발하여 네트워크 대역폭이 처참하게 박살 납니다.
📢 섹션 요약 비유: Go-Back-N은 선생님이 학생 5명을 한 줄로 묶어놓고 벌을 세우는 **'연대 책임'**입니다. 1번부터 5번 학생이 차례대로 숙제 검사를 맡는데, 2번 학생이 숙제를 안 해왔다면(에러), 선생님은 숙제를 완벽하게 다 해온 뒤의 3, 4, 5번 학생들까지 "네 앞사람이 안 해왔으니 너희들도 다 찢어!"라고 공책을 쓰레기통에 버려버립니다. 결국 2번부터 5번까지 전원이 집에 돌아가서 처음부터 다시 숙제를 해와야(Go-Back) 하는 끔찍한 연대 책임 룰입니다.