반응형

윈도우 크기(n) = 4 시나리오: a2 응답 유실
| 초기 전송 [SB=P0] 상태: 데이터 전송 시작 직전. 확인 대기 중인 첫 번째 패킷은 0번이다 센더의 행동: P0,P1,P2,P3를 연속으로 보낸다 * 정확히 말하면 빠르게 차례대로 보낸다 * 윈도우 크기가 4이므로 4개의 패킷 동시에 발송 가능, 1개를 보내든 여러개를 보내든 그건 자유 * 보낼 때는 한꺼번에(연속으로) 쏘지만, '윈도우가 밀리는 것(슬라이딩)'은 원칙적으로 ACK를 하나씩 확인할 때마다 한 칸씩 일어난다 리시버의 행동: P0을 정상 수신하고, 확인 응답 a0을 센더에게 보낸다 결과: 센더가 a0을 수신 하고, 0번이 해결되었으므로 SB=P1로 업데이트 된다 슬라이딩: 윈도우가 P0,P1, P2, P3 에서 P1,P2,P3,P4으로 한칸 밀리며, 센더는 새 패킷 P4를 전송 한다 윈도우 슬라이딩 지속 [SB=P1] 상태: 현재 1번 패킷의 응답을 기다리고 있다 (SB=P1) * SB의 정의: "아직 확인 응답(ACK)을 받지 못한 패킷 중 가장 번호가 빠른 패킷" 리시버의 행동: P1을 정상 수신하고, 확인 응답 A1을 센더에게 보낸다 결과: 센더가 A1을 수신 하고, 1번이 해결 되었으므로 SB=P2로 업데이트 된다 슬라이딩: 윈도우가 P1,P2,P3,P4에서 P2,P3,P4,P5로 한 칸 밀리며, 센더는 새 패킷 P5를 전송 한다 현재 시점 요약: 센더는 P2,P3,P4,P5를 다 보냈고, 윈도우가 가득 차 있다. 이제 응답이 오기 전 까지 P6을 보낼 수 없다 A2 응답 사고발생 [SB=P2] 유지 리시버의 행동: P2를 정상 수신하고, 확인 응답 A2를 센더에게 보낸다 [사고 발생]: 네트워크 유실로 인해 A2가 센더에게 도착하지 않는다 결과: 센더는 A2를 받지 못했으므로 SB는 여전히 P2에 멈춰 있다 상태: 센더의 인도우는 P2,P3,P4,P5에서 더 이상 전진하지 못하는 정체 상태가 된다 후속 패킷 처리 및 누적 확인 (Cumulative ACK) 리시버의 행동: 센더가 이전에 보냈던 P3를 정상 수신한다 리시버의 판단: 현재 2번도 잘 받았고, 3번도 잘 왔으니 3번까지 모두 완벽하게 도착했다라고 판단한다 응답: 리시버는 누적 확인 원칙에 따라 A3를 센더에게 보낸다 윈도우 점프 및 복구 (SB=P4) 이벤트: 센더에게 리시버가 보낸 A3이 도착한다 센더의 판단: 기다리던 A2는 안 왔지만 A3이 왔다는 것은 그 앞의 P2까지 리시버가 완벽히 받았다는 증거라고 확신 한다 결과: 센더는 유실된 A2를 무시하고, A3 확인 직후 SB를 P4로 즉시 업데이트 한다 (2번, 3번 패킷이 동시 해결) 슬라이딩: 윈도우가 P4,P5,P6,P7로 크게 이동하여 전송 권한이 생긴다 최종 행동: 센더는 새롭게 윈도우에 들어온 P6,P7을 연속해서 전송하며 흐름을 재개 한다 하나의 과정을 보면 예시로 P0 <-> A0 이면 보내는거는 한꺼번에 보낼 수 있고(P0,P1,P2,P3), 다음 패킷(P5) 은 윈도우(4) 가 꽉 차서 기다리고 있고, 밀리는것은 원칙적으로 ack를 하나씩 확인할때마다 한칸씩 일어나게 된다 (SB=P1) |
정리된 전체 구조
| 단계 | 상태 (Status) | 핵심 포인트 |
💡 핵심 기술 포인트 요약
|

윈도우 크기(n) = 4 시나리오: P2 패킷 소실
| 1단계: 초기 전송[SB=0] 상태: 데이터 전송 시작 직전, 확인 대기 중인 첫 번째 패킷은 0번이다 센더의 행동: 윈도우 내의 모든 패킷 P0,P1,P2,P3을 연속해서 전송한다 리시버의 행동: P0을 정상 수신하고, 확인 응답 A0을 센더에게 보낸다 결과: 센더가 A0을 수신하고, 0번이 해결되었으므로 SB=P1으로 업데이트 된다 슬라이딩: 윈도우가 P0,P1,P2,P3에서 P1,P2,P3,P4으로 한 칸 밀리며, 센더는 새 패킷 P4를 전송 한다 2단계: 윈도우 슬라이딩 지속[SB=P1] 상태: 현재 1번 패킷의 응답을 기다리고 있다 -- * 0번은 해결되었고 1번 패킷 기다림 [SB=P1] 리시버의 행동: P1을 정상 수신하고, 확인 응답 A1을 센더에게 보낸다 결과: 센더가 A1을 수신하고, 1번이 해결되었으므로 SB=P2로 업데이트 된다 슬라이딩: 윈도우가 P1,P2,P3,P4에서 P2,P3,P4,P5로 한 칸 밀리며 새 패킷 P5를 전송 한다 현재 시점 요약: 센더는 P2,P3,P4,P5를 모두 보냈고, 윈도우 가 가득 차 있다. 이제 응답이 오기 전까지 P6를 보낼 수 없다 3단계: 패킷 유실 사고 발생 [SB=P2] 유지 이벤트: 센더가 보낸 패킷 P2 자체가 네트워크에서 유실되어 리시버에게 도달하지 못한다 센더 상태: P2를 보낼 때 작동시킨 타이머가 돌아가기 시작하며 응답을 기다린다 결과: 센더는 A2를 받지 못했으므로 SB는 여전히 P2에 멈춰 있다 정체: 윈도우는 P2,P3,P4,P5에서 정체 상태가 된다 4단계: 수신 거부 및 폐기(리시버의 행동) 이벤트: 리시버에게 P2는 오지 않고, 뒤따라오던 P3,P4,P5가 도착한다 리시버의 판단: 리시버는 현재 P2를 기다리는 중인데 3,4,5번이 오자 순서가 틀렸다고 판단한다 리시버의 행동: GBN 규칙에 따라 도착한 P3,P4,P5를 모두 폐기하고 저장하지 않는다 응답: 리시버는 패킷이 올 때마다 "난 아직 P1까지만 제대로 받았다라는 의미로 A1을 반복해서 보낸다 * 이 응답은 센더의 SB를 움직이지 못한다 5단계: 타임아웃 발생 이벤트: 센더가 설정한 타이머 시간이 만료 된다 센더의 판단: P2에 문제가 생겨서 응답이 안온다고 생각하고, P2부터 그 뒤에 보냈던 것들을 다 다시 보낸다고 판단한다 결과: 센더는 윈도우 내에 있는 P2,P3,P4,P5를 처음부터 차례대로 전송한다 ---> 이것이 Go-Back-N의 핵심 6단계: 정상화 및 전송 재개 [SB=P3] 이벤트: 다시 보낸 P2가 리시버에게 정상적으로 도착한다 리시버의 행동: 기다리던 P2가 왔으므로 수신을 완료하고 확인 응답 A2를 센더에게 보낸다 최종결과: 센더가 A2를 수신하는 순간 SB=P3으로 업데이트 되며, 멈춰있던 윈도우가 P3,P4,P5,P6으로 밀리면서 새 패킷 P6를 전송하기 시작한다 |
'Infra & Security Eng > Network & Security' 카테고리의 다른 글
| 네트워크 하위 계층의 모든 것: Ethernet 프레임, IP 헤더 분석, 그리고 ARP 동작 (0) | 2026.03.09 |
|---|---|
| TCP 개념 정리 (seq, ack, 재전송, 흐름 제어, 혼잡 제어) (0) | 2026.02.19 |
| rdt 3.0 완벽 정리: 타이머(Timer)를 활용한 패킷 유실 해결과 신뢰적 전송의 완성 (0) | 2026.02.11 |
| rdt 2.2 완벽 정리: NAK 없는 신뢰적 데이터 전송과 중복 ACK 메커니즘 (0) | 2026.02.11 |
| rdt 2.1 완벽 정리: Sequence Number를 활용한 ACK/NAK 오류 제어와 Sender-Receiver 메커니즘 (0) | 2026.02.11 |