본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 11장 - 오류 제어 및 흐름 제어 -

by ChocoPeanut 2017. 4. 17.

컴퓨터 네트워크 11

- 오류 제어 및 흐름 제어 -

 

오류 제어는 호스트 간의 데이터 전송이 일어날 때 데이터의 오류에 관련된 제어를 하는 역할을 한다. 데이터 링크 계층 프로토콜에서 주로 기능을 수행한다다음의 질문들을 통해 오류 제어에 대해 알아보자.


송신 측은 수신 측이 정상적으로 수신하였다는 사실을 어떻게 알 수 있겠는가?

이는 응답 메커니즘에 의해 알 수 있다. 긍정 응답을 할 경우 제대로 받았다는 것을 알 수 있다.


전송한 데이터가 중간에 손실된 경우는 어떻게 알 수 있는가?

이와 같은 경우에 수신 측에서 이를 판단할 방법은 없다. 그렇다면 송신 측에서 이를 판단해야한다. 송신 측에서 타이머를 설정하여 주어진 시간 동안에 긍정 응답이 오지 않을 경우 손실로 판단하는 것이다. 긍정 응답 회신이 없으면 타임아웃 기능을 동작시켜 데이터 프레임을 재전송한다.


수신 측에서 전송 과정 중에 변형이 일어났는지 어떻게 확인할 수 있는가?

순수한 데이터만 보내준다면 수신 측에서 판단할 방법이 없다. 그래서 송신 측에서 데이터와 함께 변형 여부를 판단할 수 있는 제어 정보를 덧붙여 전송을 보내준다.


수신 측에서 데이터가 변형되었다는 사실을 인지했을 때 대응 방법으로 무엇이 있는가?

먼저 부정 응답이 있다. 긍정 응답과 다르게 변형 되었다는 사실을 송신 호스트에게 응답으로 보내준다. 그러면 송신 응답에서 재전송을 통해 데이터가 전송된다. 다른 방법으로는 무대응이 있다. 데이터 변형에 대해 응답을 하지 않으면 앞의 데이터 분실과 같게 타임아웃에 의해 데이터를 재전송한다. 부정 응답을 할 경우 무대응 보다 빠른 재전송이 가능하겠으나 부정 응답에 대한 정보를 만들어야하고 송신 호스트에서 이를 해석해야하는 과정이 필요하므로 복잡해 질 수 있다. 무대응은 반드시 타임아웃까지 기다려야 하므로 시간이 오래 걸린다.


정상 응답이 손실되는 경우는 어떤 상황이 벌어질 것인가?

송신 측에서는 타임아웃이 되어 데이터의 손실로 간주되며 데이터 재전송이 일어날 것이다. 이럴 경우 수신 호스트에 다시 데이터가 들어오게 되는데 수신 측에서는 새로운 데이터인지 중복되어 들어온 데이터인지 구분할 수 있는 방법이 없다. 따라서 새로 데이터가 들어온 것으로 인지를 하여 중복 수신이 발생하게 된다. 따라서 이를 구분할 수 있는 방법이 필요하다. 그런 방법이 바로 순서번호이다. 송신 호스트가 데이터를 전송할 때 순서번호를 붙여 보내게 되므로 수신 호스트는 데이터를 고유한 순서번호에 따라 구별할 수 있다.

 

흐름 제어는 오류 제어와 함께 데이터 링크 계층에서 제공되며 데이터 프레임의 전송 속도를 조절하는 역할을 한다. 송신 측에서 하나의 데이터를 보내고 이에 대한 응답을 받아야만 다음 데이터를 보내는 방식이라면 흐름 제어는 불필요하다. 하지만 이런 방식은 매우 비효율적이다. 그래서 송신 측에서는 앞서 보낸 데이터에 대한 응답이 오지 않더라도 더 많은 데이터를 보낼 수 있는 방식을 취한다. 따라서 전송 데이터의 속도를 조절하는 흐름 제어의 기능이 필요하다.

송신 호스트는 수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 전송을 한다. 수신 호스트는 바로 처리가 어려운 경우 버퍼를 이용하여 데이터를 저장한다. 하지만 저장할 공간이 없을 경우 데이터 손실이 발생할 수 있다. 따라서 흐름 제어에 의해 다음에 수신할 프레임의 전송 시점을 송신 호스트에게 통지하는 방식을 취한다. 또 응답을 받지 않고도 전송할 수 있는 데이터의 양도 송신 호스트에게 통지한다.