본문 바로가기

Computer Science/네트워크

[네트워크] 오류 제어 기법

정지 대기 (Stop and Wait) ARQ

데이터링크 계층에서의 오류제어 기법은 주로 오류검출 (error detection) 과정과 재전송 (retransmission) 과정을 포함

 

ARQ(Automatic Repeat Request) : 데이터 전송 프레임이 손상되었거나 분실되었을 재전송이 수행되는 재전송 과정

 

정지 대기 흐름제어’ →‘정지 대기 ARQ’ 구현

 

슬라이딩 윈도우 흐름제어’ -> GBn (Go Back n ARQ)’ - 1,2,3,4,5 보냈는대 3번이 잘못됬다. 3번부터 다시 보낸다. 잘못된 것부터 다시 보내라.

 

또는 SR (Selective Repeat 또는 SelectiveReject) ARQ’ 형태로 구현 - 3번이 잘못되면 3번만 다시 보내라. 4,5 가지고 있다가 3번을 다시 붙힌다.

 

GBn ARQ

정지 대기 ARQ 재전송 절차

 

전송 스테이션은 전송한 프레임의 ACK 를받을때까지 프레임의 복사본을 유지

 

식별을 위해 데이터 프레임과 ACK 프레임은 각각0, 1 값으로 번호 부여

 

보내고 확인받고 보내고 확인 받고 하기 때문에 메세지가 필요가 없다. 바로 프레임과 구분되면 된다. 그래서 0,1 구분한다.

 

만약 프레임에서 오류제어가 발견되면 NAK프레임이 반환되고 , 이에 따라 전송 측은 복사 해두었던 동일한 프레임을 재전송

 

전송장치에는 타이머가 있어서 주어진 시간내에 ACK 오지 않으면 재전송(전송측에서 보낸 것이 분실이 되었을 )

내가 전송한 것이 타이머가 때까지 안올때 다시보낸다.

 

데이터 프레임이 분실 (lost data) 경우의 절차

타이머가 끝나면 타임아웃이 되고 다시 보낸다.

 

 

ACK 프레임이 분실 (lost 경우에 대한 절차

ACK 안올 전송 측에서 다시 보낸다.

송신 측에서 내가 보낸 ACK 잘못됬구나 라고 생각하고 오는 것을 폐기한다.

 

 

 

 

 

GBn ARQ 기법의 동작

슬라이딩 윈도우와 같은 매커니즘이다.

프레임 3 손상된 경우를 가정

여러 사이즈를 한꺼번에 보낸다. 0,1,2,3,4,5 한꺼번에 간다.

ACK3 '이제 3 받을 차례야' 라고 알리는

 

ACK번호는 방금 받은 번호를 있고, 내가 앞으로 받기를 희망하는 번호를 있다.

3번을 받았는데 오류가 나서 다시 보내달라고 NAK3 보냈다.

잘못된 3번부터 다시보낸다.

 

잘못된 것부터 다시 받을 때까지 온것은 폐기한다.

 

 

프레임 3 에서 오류가 발견되기 전에 6 개의 프레임이 전송됨

 

수신 측은 ACK 3 반환하여 , 전송 측에 프레임 0, 1, 2 도착했다고 알려줌

 

프레임 3 손상되었기 때문에 곧바로 NAK 3 전송되고 , 이후의 프레임 4, 5 폐기

 

이때 전송 측에서는 NAK 3 수신하여 , 프레임 3 잘못되었음을 알고 프레임 3, 4, 5 같은일련의 프레임을 재전송함

 

GBn ARQ 에서 데이터 프레임이 분실된 경우

프레임 2 분실되어 수신 측에서 NAK 2 반환하고 , 이에 따라 프레임 2~4 같이 연속적으로 전송됨

 

ACK 프레임이 분실된 경우

수신 측에서 보낸 ACK 3 분실되어 , 전송 측에서는 프레임 0~2 같이 연속적으로 프레임이 재전송됨

보낼 타이머를 킨다.

ACK3으로 3 보내달라는 메세지를 보냈는데 전송 측에서 못받았다 그러면 처음부터 다시 보낸다. 수신측은 이미 있는 데이터니깐 폐기할 것이다.

 

 

 

SR ARQ 오류제어 기법의 특성

SR ARQ : 손상되거나 잃어버린 프레임만 재전송하는 방법

전송측면에 있어서는 효율이 제일 좋은 방식이다. 그런데 제어구조가 복합하게 것이다.

수신 스테이션은 어긋난 순서로 도착한 프레임을 다시 정렬하며 , 재전송 프레임이 도착해서 정렬될 때까지 프레임들을 저장할 버퍼를 필요로

전송 스테이션은 정렬 과정을 통해 재전송을 해야 하는 프레임을 선택하고 , 선택된 프레임만을 재전송함

 

 

 

오류제어 기법의 특성 비교

 

 

 

 

 

AB 스테이션간에 프레임을 보내는 것이다.

SW ARQ

프레임의 길이만큼 링크에 올려놓기 까지 전송 시간이 필요하다.

프레임이 경사만큼 A에서  B 까지 전파되는 시간이 필요하다.

 

B 가서 오류가 있나 없나 확인하고 ACK프레임을 만들어서 다시 A 보낸다.

ACK1 여기서 ACK 1 받을 차례다 라고 알리는 것이다.

 

다음에는 0번받을 차례라고 알린다.

그런데 0 프레임이 분실되었다.

 

타이머를 켜고 타임아웃이 되면 다시 보낸다.

 

이번에는 ACK0 잘못된다. 타이머가 타임아웃되면 프레임을 다시보낸다. 송신측은 오다 잘못됬는지 가자 잘못됫는지 모르니깐 그냥 보낸다.

 

 

GBN ARQ

프레임을 한번에 보낸다.

 

RR4 4번을 받을 차례야 라고 알려준다. 근데 5번을 받고나서 안다. 3번은 왔는데 5번이 왔내? 라고 생각해서 4번이 분실되었다라고 확인한다.

 

뒤에 온것을 모두 삭제하고 RRJ4 보내서 4번부터 다시보낸다.

 

RR7 분실됬다. 타이머가 타임아웃됬다 6번을 받았다는 이야기(=RR7보내기) 없다.

 

RR7 안와서 송신측에서 RR 보낸다. Poll bit 보내서 지금 몇번 비트 받을 차례니? 하고 묻는 것이다.

 

 

SR ARQ

SREJ 4 = 4번만 다시보내라

 

728x90