본문 바로가기

컴퓨터 과학

OSI 7계층 (데이터 링크계층)

물리 계층에선 케이블과 같은 전송매체를 통해 신호를 전달하는 기능만을 수행한다. 이제 그 상단에 정보가 정확하게 전달될 수 있도록 하는 기능이 필요하다. 데이터링크 계층에서 이러한 기능을 수행한다. 흐름 제어, 오류 제어, 주소 지정, 회선 규칙, 프레임 동기화, 데이터와 제어 신호의 구별 등이 있다.



흐름제어

데이터통신에서 수신 측에서 데이터를 받아 일시적으로 저장할 수 있는 공간이 있는데 이를 데이터 버퍼라고 한다. 만약 송신 측이 데이터를 보내는 속도가 수신 측이 처리하는 속도보다 빠르면 이 버퍼에 데이터가 쌓이는 오버플로 현상이 나타나서 데이터의 손실이 발생할 수 있다. 이를 조절하기 위해서 전송속도를 제어하는 것을 흐름 제어라고 한다.



흐름제어는 크게 2가지로 나뉘는데, 정지-대기 흐름 제어 방식과 슬라이딩 윈도우 흐름 제어 방식이 있다.


정지-대기 방식은 가장 간단한 방식으로 데이터 전송을 한 뒤에 잠시 멈췄다가 다시 전송하고 멈추고 이것을 반복하는 방식을 말한다. 송신 측 단말기에서 데이터를 보내면 수신 측으로부터 응답을 기다리는데 이 응답은 ACK라고 한다. 수신 측으로부터 ACK 응답을 오기 전까지 기다린다. 원리는 간단하다. 데이터를 받을 준비가 안 되어있으면 ACK 반응을 하지 않아 송신 측에 '아직 데이터를 받을 여유가 있지 않다'라고 알려주는 방식이다. 하지만 이 방식은 수신 측에서 받을 준비가 계속 안 되거나 빈번하게 이렇게 대기를 하면 데이터 전송 속도가 느리고 효율성이 떨어지는 단점이 있다.



슬라이딩 윈도우 방식은 수신 측에서 현재 사용할 수 있는 버퍼 공간만큼 한 번에 여러 개의 프레임을 전송하는 방식이다.

윈도우라는 것은 창문이라는 뜻인데 창문을 밀듯이 데이터에 순서를 붙여 보내는 모습이 마치 창문을 미는듯한 모습과 유사하여 붙여진 이름이다. 송신 측에서 보내지는 각 프레임은 순서 번호를 붙여서 수신 측으로 전송하고 수신 측에서는 다음에 받을 프레임의 순서 번호와 함께 응답 프레임을 송신함으로써 정상적으로 수신한 프레임을 송신 측에 알려 준다. 이 방식에서 윈도우는 여분의 버퍼를 말한다.

송신 측과 수신 측이 데이터를 서로 교환할 때는 각 단말기가 송신용과 수신용 두 개의 윈도우를 유지해야 하는데 이때는 피기백 기술을 이용한다. 피기백이랑 전송 채널 대역의 사용 효율을 높이기 위해 수신한 데이터에 대해 확인 응답 전문을 따로 보내지 않고, 상대편에게 데이터 전문에 확인 응답을 함께 실어 보내는 방법이다. 한쪽에서 송신용 데이터와 확인 응답 메시지를 함께 전송할 수 있다면 통신 용량을 절약할 수 있다. 만약 보낼 데이터는 없는데 확인 응답 메시지는 보내야 할 경우에는 별개의 다른 응답 메시지를 송신한다. 반대로 보낼 데이터는 있는데 새로운 확인 응답 메시지가 없을 경우에는 마지막에 보낸 확인 응답 메시지를 다시 한번 보낸다. 이것은 데이터 프레임에 확인 응답 프레임 번호에 해당하는 필드가 할당되어 있기 때문에 그 필드에는 어떤 값이라도 무조건 넣어서 보내야 한다.



오류 검출

오류는 전기 신호가 단말기에서 단말기로 전달될 때 예측하지 못한 간섭과 잡음, 신호 손실로 인해 원래의 데이터 비트가 바뀌어서 전달되는 현상을 말한다. 오류를 검출하는 방법으로 동일한 데이터 단위를 두 번 전송하는 방법이 있다.

송신 측에서 데이터를 두 번 보냈는데 만약 그 부분에 오류가 있다고 하면 해당하는 두 데이터의 비트 단위가 서로 다르기 때문에 수신 측에서는 이 부분에서 오류가 났다는 걸 쉽게 알 수가 있다. 하지만 같은 데이터를 2번 보낸다는 것은 그만큼 자원 사용을 2배로 사용한다는 말이 된다. 이 방법을 보완한 방식으로 데이터 프레임 끝에 오류 검출 코드라는 것을 추가하여 전송하는 방식이 있다. 이 방법은 수신 측에서 이 코드를 검사함으로써 오류 오류 발생 여부를 알 수 있게 된다. 오류 검출 코드는 원래 데이터 비트들의 함수로 계산이 되고. 수신 측에서는 같은 데이터 값을 가지고 함수를 계산해서 송신 측에서 보낼 때 주어진 결괏값과 계산이 일치하지 않으면 오류가 발생한 것으로 판단하는 것이다.

오류의 종류로는 단일 비트 오류, 폭주 오류, 다중 비트 오류 등이 있다. 단일 비트 오류는 데이터의 한 비트만 바뀌어서 전달되는 경우를 말하고 다중 비트는 2개 이상의 비트가 바뀌어서 전달되는 오류를 말한다. 폭주 오류는 2개 이상의 비트가 연속적으로 틀리게 전달되는 경우를 말한다.



오류 제어

데이터를 전송하는 도중 발생하는 오류의 종류로는 프레임 손실과 프레임 손상 등이 있다.

프레임 손실은 전송 도중에 몇몇 프레임이 도착하지 않아서 손실된 상태로 데이터가 전달되는 경우를 말하며 프레임 손상은 프레임은 손실 없이 왔지만 프레임 내의 데이터에 오류가 생긴 현상을 말한다.



오류 제어 동작으로는 다음과 같은 동작들이 있다.

확인 응답(ACK) : 송신 측이 보낸 데이터를 정상적으로 잘 받았음 메시지를 보낸다.

부정 응답(NCK) : 송신 측이 보낸 데이터가 손실되었거나 데이트 프레임 중에 오류가 검출되었음을 송신 측으로 다시 피드백 메시지를 보낸다.

오류 검출 : 전송 도중에 발생한 오류를 수신 측에서 검출한다.

타임아웃 후 재전송 : 정해진 시간 내에 수신 측에서 어떠한 응답 메시지도 없으면 데이트 프레임을 재전송한다.



경우에 따라서 ACK나 NCK 메시지 자체가 손실되는 경우도 있다. "은행"이라는 데이터를 보내서 수신 측에 정상적으로 도착을 했고 수신 측이 ACK 메시지를 보냈는데 어떤 변수로 인해 ACK 메시지가 중간에 손실되면 송신 측에서는 중간에서 "은행"이라는 데이터가 손실되었다고 생각하고 재전송을 할 것이다. 그렇다면 수신 측은 데이터를 잘 받았고 ACK도 보냈는데 같은 메시지가 온 것을 보고 자신이 보낸 ACK 메시지가 중간에서 손실됐다고 판단하고 재전송받은 "은행" 데이터는 폐기하고 ACK 메시지를 다시 재전송하면 이러한 오류도 방지할 수 있다.

반응형

'컴퓨터 과학' 카테고리의 다른 글

OSI 7계층(전송 계층)  (0) 2024.01.26
OSI 7계층 (네트워크 계층)  (0) 2024.01.26
OSI 7계층 (물리계층)  (0) 2024.01.24
네트워크와 프로토콜 (3)  (0) 2024.01.23
네트워크와 프로토콜 (2)  (1) 2024.01.23