중지 및 대기 ARQ
Stop-and-wait ARQ교대 비트 프로토콜이라고도 하는 Stop-and-wait ARQ는 통신에서 연결된 두 장치 사이에 정보를 전송하는 방법이다. 패킷이 손실되어 정보가 손실되지 않도록 하고 패킷이 정확한 순서로 수신되도록 한다. 가장 간단한 자동 반복 요청(ARQ) 메커니즘이다. 정지 및 대기 ARQ 송신자는 한 번에 하나의 프레임을 송신한다. 두 경우 모두 송신 및 수신 윈도우 크기가 동일한 일반 슬라이딩 윈도우 프로토콜의 특별한 경우다. 각 프레임을 전송한 후, 송신자는 승인(ACK) 신호를 수신할 때까지 더 이상의 프레임을 전송하지 않는다. 유효한 프레임을 수신한 후, 수신기는 ACK를 송신한다. ACK가 시간 초과로 알려진 특정 시간 전에 송신자에게 도달하지 않으면 송신자는 동일한 프레임을 다시 송신한다. 각 프레임 전송 후 타임아웃 카운트다운이 재설정된다. 위의 행동은 Stop-and-Wait의 기본적인 예다. 그러나 실제 구현은 설계의 특정 문제를 다루기 위해 다양하다.
일반적으로 송신기는 각 프레임의 끝에 중복성 검사 번호를 추가한다. 수신기는 중복 확인 번호를 사용하여 손상 가능성을 점검한다. 수신기가 프레임이 좋은 것을 보면 ACK를 송신한다. 수신자가 프레임이 손상된 것을 확인한 경우 수신자는 이를 무시하고 ACK를 보내지 않는다. 이는 프레임의 손상이 단순히 손상된 것이 아니라 프레임이 완전히 손실된 것으로 간주한다.
한 가지 문제는 수신기가 보낸 ACK가 손상되거나 분실된 경우다. 이 경우 송신자는 ACK를 받지 않고 타임아웃한 후 프레임을 다시 송신한다. 이제 수신기는 동일한 프레임의 복사본 2개를 가지고 있으며, 두 번째 프레임이 중복된 프레임인지 아니면 동일한 DATA를 전달하는 시퀀스의 다음 프레임인지 알 수 없다.
또 다른 문제는 송신 매체의 지연 시간이 너무 길어서 프레임이 수신기에 도달하기 전에 송신자의 타임아웃이 소진되는 경우다. 이 경우 송신자는 동일한 패킷을 재전송한다. 결국 수신기는 동일한 프레임의 복사본 두 개를 받고, 각각에 대해 ACK를 보낸다. 단일 ACK를 기다리는 송신자는 두 개의 ACK를 수신하는데, 이는 시퀀스에서 두 번째 ACK가 다음 프레임을 위한 것이라고 가정할 경우 문제가 발생할 수 있다.
이러한 문제를 방지하기 위해 가장 일반적인 해결책은 프레임 헤더에 1비트 시퀀스 번호를 정의하는 것이다. 이 시퀀스 번호는 후속 프레임에서 교체된다(0부터 1까지). 수신기가 ACK를 송신할 때, 그것은 예상되는 다음 패킷의 시퀀스 번호를 포함한다. 이렇게 하면 수신기는 프레임 시퀀스 번호가 번갈아 나오는지 확인하여 중복 프레임을 검출할 수 있다. 후속 두 프레임의 시퀀스 번호가 같은 경우 중복되며, 두 번째 프레임이 폐기된다. 마찬가지로, 두 개의 후속 ACK가 동일한 시퀀스 번호를 참조할 경우 동일한 프레임을 승인하는 것이다.
정지 대기 ARQ는 다른 ARQ에 비해 비효율적이며, ACK와 데이터를 성공적으로 수신할 경우 패킷 사이의 시간이 전송 시간의 2배(반전 시간은 0일 수 있다고 가정)이기 때문이다. 채널의 처리량은 그것이 될 수 있는 것의 일부분이다. 이 문제를 해결하려면 시퀀스 번호가 큰 패킷을 한 번에 두 개 이상 보내고 한 세트에 ACK를 한 개씩 사용할 수 있다. 이것은 Go-Back-N ARQ와 Selective Repeat ARQ에서 수행된다.
참고 항목
참조
- Tanenbaum, Andrew S, Computer Networks, 4부작. ISBN0-13-066102-3