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

컴퓨터 네트워크 16장 - 데이터 링크 계층 프로토콜의 기초 -

by ChocoPeanut 2017. 4. 22.

컴퓨터 네트워크 16

- 데이터 링크 계층 프로토콜의 기초 -

 

데이터 링크 계층에서 두 호스트가 통신하려면 일대일 형식의 점대점방식으로 연결해야한다. 이러한 형태는 직접 연결된 형태이므로 호스트 주소가 필요가 없다. 하지만 하나의 호스트가 다수의 호스트와 연결된 비대칭 형태인 멀티 드롭의 형태를 가질 경우 호스트 주소의 개념이 필요하게 된다. 여러 수신 호스트 중에서 프레임의 목적지 호스트를 지칭해줄 수 있는 도구가 필요하기 때문이다.


데이터 링크 계층에서 사용하는 데이터의 단위는 프레임이다. 프레임에는 3가지의 종류가 존재한다.


우선 정보 프레임(I 프레임 : Information Frame)은 상위 계층이 전송 요구한 데이터를 송신하는 용도로 사용된다. 순서번호, 송수신 호스트 정보 등이 포함되어 있다.


긍정 응답 프레임(ACK 프레임 : Positive Acknowledgement)은 전송 데이터가 올바르게 도착했음을 회신하는 용도로 사용되며 데이터를 수신한 호스트가 데이터를 송신한 호스트에 전송하는 프레임이다.


부정 응답 프레임(NAK 프레임 : Negative Acknowledgment)은 전송 데이터가 깨져서 도착했음을 회신하는 용도로 사용된다. 데이터를 수신한 호스트가 데이터를 송신한 호스트에게 전송하며 데이터를 송신한 호스트는 원래의 데이터를 재전송하여 오류를 복구시킨다.


긍정 응답, 부정 응답 프레임 모두 회신하고자 하는 정보 프레임 순서 번호를 포함하고 있어 제대로 도착한 프레임과 오류가 발생한 프레임을 순서 번호를 통해 판단할 수 있다.


위의 세 가지 프레임을 이용해 데이터 링크 계층의 전송 프로토콜을 작성할 수 있다. 데이터 링크 계층의 프로토콜을 설계하기 위해서는 오류 제어, 흐름 제어, 양방향/단방향 전송 방식과 관련된 내용이 다루어진다.


먼저 가장 단순한 구조인 오류, 흐름 제어가 없는 프로토콜을 살펴보자. 단방향 통신으로 송신 호스트에서 수신 호스트 한쪽으로만 데이터가 전송되며 전송 오류가 발생하지 않아 오류 제어가 필요가 없고 무한개의 수신 버퍼를 가지고 있어 흐름 제어 또한 필요가 없다고 가정한다. 이러한 프로토콜은 송신 호스트는 원하는 만큼 자유롭게 프레임을 전송할 수 있고 오류 제어와 흐름제어가 필요가 없어 순서번호 또한 필요가 없어진다



이제는 버퍼가 유한하다는 가정을 넣어보자. 버퍼가 유한해지면 수신 호스트에서 일시적으로 보관할 수 있는 프레임의 개수가 제한된다는 것을 의미한다. 따라서 버퍼 용량의 부족에 따라 프레임 분실 오류가 발생할 확률이 있다. 그러면 흐름제어의 기능이 필요하다. 이전 프레임을 잘 받았다는 긍정 응답 기능과 수신 호스트가 송신 호스트의 전송 시점을 지정하기 위한 ACK 프레임이 필요하다. 하나의 프레임 전송 후 응답 대기를 하는 방식을 정지-대기 방식이라고 한다. 하지만 이 방식은 전송 효율이 떨어지므로 잘 사용하지 않는다.



다음으로는 오류가 발생할 수 있다는 가정을 넣어보자. 단방향 통신으로 한쪽 방향으로만 데이터를 전송하지만 전송 매체 오류가 발생이 가능하다. 따라서 오류 제어가 필요하게 된다. 프레임에 발생할 수 있는 오류는 프레임 분실 오류와 프레임 변형 오류가 있다. 프레임 분실 오류는 송신한 프레임이 수신 호스트에 도착하지 못하는 경우이고 프레임 변형 오류는 송신한 프레임이 도착은 하였으나 변형이 된 오류를 말한다.



위와 같은 상황을 다시 두 가지의 경우로 나누어 이해해보자. 바로 NAK 프레임이 존재하는 가 아닌가로 나눌 수 있다. NAK 프레임이 없으면 정보 프레임이 분실 되었을 경우 송신 호스트의 타임아웃 기능으로 오류를 복구한다. ACK 프레임이 분실되는 경우도 타임아웃 기능으로 오류 복구를 할 수 있다. 타임아웃 기능은 정보 프레임을 전송한 후에 특정 시간이 지날 때까지 수신 호스트의 ACK 프레임을 회신 받지 못하면 송신 호스트는 프레임 분실이 발생한 것으로 간주해 재전송을 한다. 재전송 과정은 순서번호를 이용해 적절한 프레임을 다시 송신하는 것이다.


만약 정보 프레임이 변형되면 어떻게 될 것인가? NAK가 없기 때문에 수신 호스트는 긍정 응답을 보내지 않으므로 프레임이 분실된 것과 같이 타임아웃 기능을 이용하여 재전송하게 된다.


NAK가 있는 경우를 살펴보면 정보 프레임 분실이 되는 경우는 NAK가 없는 경우와 같다. 프레임 자체가 수신 호스트에 도착을 하지 않았기 때문에 수신 호스트는 오류를 알아차릴 수 없어 응답을 보낼 수 없게 된다. 그러면 타임아웃 기능에 의해 재전송된다. 그런데 정보 프레임 변형 오류가 발생하면 상황이 달라진다. NAK가 없을 경우는 프레임을 무시하여 타임아웃 기능을 사용하였으나 NAK 프레임이 있으면 이를 이용해 송신 호스트에 정보 프레임이 변형되었다는 사실을 알려 조금 더 효율적으로 오류를 처리할 수 있다