데이터 링크 계층에서 데이터의 신뢰성을 보장하는 방법 1

 

데이터 링크 계층

 

 

데이터 링크 계층은 물리적으로 오류가 발생할 수 있는 물리 통신 채널을 논리적으로 오류가 없는 완전한 통신채널로 바꿔서 망 계층에 제공한다.

 

데이터의 전달을 위한 주소체계를 제공하며, 데이터의 오류 검출, 흐름 제어, 프레임 동기화 등을 통해 신뢰성 있는 데이터 전송을 보장한다. 

 

더보기

프레임 동기화는 데이터그램을 프레임 단위로 나눈 후, 각 프레임에 헤더와 트레일러를 추가하여 전송한다.

 

FCS(Frame Check Sequence)를 사용하여 전송 중 발생한 오류를 검출하고, 필요 시 재전송을 요청하여 오류를 검출하거나 수정할 수 있다.

 

송수신 간 데이터 처리 속도의 차이를 조절하는 것으로 흐름을 제어하여 데이터 손실을 방지한다.

 

 

 

 

 

이에 해당하는 주요 프로토콜에 이더넷(Ethernet), PPP(Point-to-Point Protocol), HDLC(High-Level Data Link Control) 등이 있다.

 

 

 

이더넷은 LAN에서 사용되는 프로토콜이며, 데이터 프레임을 정의하고 전송한다.

MAC 주소를 사용하여 데이터의 출발지와 목적지를 식별하고, 프레임 단위로 데이터를 전송한다.

 

 

PPP는 스마트 폰에서 사용하는 프로토콜로, 두 자점 간의 직접적인 연결을 통해 데이터를 전송한다.

다중 프로토콜을 지원하며, 링크 설정, 유지, 종료 절차가 있다.

 

 

HDLC는 비트 지향 프로토콜이고, 데이터 링크 계층에서 데이터의 흐름과 프레임 동기화, 오류를 제어한다.

 

 

 

 


 

 

 

 

 

Line Discipline

 

Line Discipline은 통신 시스템에서 데이터를 송수신하는 동안 각 장치가 언제 전송을 시작하고 누가 전송할 차례인지를 결정하는 규칙이다.

 

이 계층은 신뢰성 있는 데이터 전달을 보장하기 위한 2가지 Line Discipline 방식이 있다.

 

 

 

1. 질의/응답(Enquiry/Acknowledgment, ENQ/ACK)

동등한 두 장치(peer-to-peer)간의 통신에서 사용된다.

한 장치가 송신 준비를 마치면, 질의(ENQ) 신호를 보내고, 상대 장치가 준비되었을 경우 응답(ACK) 신호로 응답한다.

 

이 방식은 장치간의 상호 협력을 통해 통신 순서를 결정하고 충돌을 방지한다.

 

 

 

 

2. 폴링/선택(Poll/Select)

주-종(primary-secondary) 구조의 통신에서 사용된다.

주 장치(primary)가 폴링(polling)을 통해 종 장치(secondary)에 전송 권한을 묻고, 주 장치가 특정 종 장치에게 선택(select) 신호를 보내 데이터를 전송하거나 요청할 수 있다.

 

주 장치가 통신을 통제하며, 종 장치는 폴링이나 선택 신호가 있을때만 데이터를 전송할 수 있다.

 

 

 

 

이러한 방식들을 통해서 통신의 흐름을 관리하고, 충돌을 방지하여 신뢰성 있는 데이터 전송을 보장할 수 있다.

 

 

 

 

 

 

질의 응답 point to point link

 

 

ENQ/ACK Line Discipline은 동등한 두 장치(peer-to-peer) 간의 통신에서 사용된다.

이 방식은 두 장치 사이에 전용 링크가 있을 때 적용되며, 데이터 전송이 시작될 수 있는 조건을 확인하고 송수신 간의 동기화를 유지하는데 사용된다.

 

이 경우 다른 장치의 간섭이 없기 때문에, 오직 의도된 수신장치만 전송된 데이터를 받을 수 있다. 

 

 

 

위 그림에서 송신 수신 장치는 다음과 같은 역할을 한다.

질의(ENQ): 송신 장치는 데이터 전송을 시작하기 전에 수신장치가 준비되었는지 확인하기 위해 ENQ 신호를 보낸다.

응답(ACK): 수신 장치가 전송 준비가 완료되면 ACK 신호를 통해 응답한다.

응답을 받은 송신 장치는 데이터 전송을 시작한다.

 

 

 

전용 링크 덕분에 네트워크 내 다른 장치와의 혼선이 없으며, 두 장치가 독립적으로 통신을 관리할 수 있다.

이러한 방식은 주로 전송속도가 느리거나, 통신 신뢰도가 중요한 상황에서 많이 사용된다.

 

 

 

 

 

 

point to multipoints 방식 poll / select 

 

 

Poll/Select 방식은 주(primary) 장치와 종속(secondary)장치들이 있는 네트워크 토폴로지에서 사용되는 Line Discipline이다.

 

이 방식은 주-종 통신 구조에서 주 장치가 통신을 제어하며, 종속 장치들은 주 장치의 지시에 따라 통신에 참여한다.

 

 

 

주 장치는 종속 장치들에게 데이터 송신 기회를 부여하기 위해 Poll(폴링)신호를 보낸다.

종속 장치는 이 신호를 받으면 준비된 데이터를 주 장치에게 보낸다.

 

 

반대로, 주 장치가 특정 종속 장치에게 데이터를 전송하기 위한 선택(select)신호를 보낼수도 있다.

종속 장치는 이 선택 신호를 받으면 주 장치로부터 데이터를 받기위한 준비를 한다.

 

 

이런 과정을 통해서 통신 충돌을 방지하고, 효율적으로 네트워크를 관리할 수 있다.

주 장치가 통신을 제어하므로, 데이터가 중복 전송되거나 충돌할 위험이 줄어든다.

 

하지만, 종속 장치들은 주 장치의 명령을 기다려야 하므로 통신 지연이 발생할 수 있다.

 

 

Poll/Select 방식은 다수의 장치가 연결된 네트워크에서 효율적인 통신 제어를 위해 사용된다.

 

 

 

 

 


 

 

 

 

제어흐름 flow control

 

데이터의 무결성과 신뢰성을 보장하기 위해

수신측의 버퍼가 넘치지 않도록 전송 속도를 조절하는 두 가지 방식이 있다.

 

 

 

X-ON/X-OFF (Stop-and-Wait) 방식

 

 

수신측 버퍼의 상태를 제어하기 위해, 전송중인 장비가 제어문자를 사용하여 전송을 중지하거나 다시 시작한다.

예를들어, Control-S(X-OFF)는 전송을 일시중지하고, Control-Q(X-ON)는 전송을 재개한다.

 

 

Receive-Ready (RR) / Receive-Not-Ready (RNR)는 수신측의 상태를 나타내며, 수신측이 데이터를 받을 준비가 되었는지 아닌지를 알리는 신호다.

RR은 수신 준비가 되었음을, RNR은 수신 준비가 안되었음을 나타낸다.

 

 

 

 

 

 

Sliding Window 방식

 

 

수신측으로부터의 응답없이 여러개의 프레임을 한번에 전송할 수 있는 방식이다.

이 방법은 전파 지연이 길어질 때 링크 효율을 개선할 수 있다.

 

 

Window Size를 통해 최대 전송가능한 프레임 수를 제한하며, 이 값은 수신측의 버퍼 크기와 네트워크 조건에 따라 설정된다.

 

Window의 크기는 응답없이 보낼 수 있는 최대 패킷 수를 의미한다.

 

 

 

위 그림에서

Lower Window Edge는 송신측에서 현재 전송 가능한 프레임의 시작점을 나타내고,

Upper Window Edge는 송신측에서 전송 완료 및 수신 확인을 기다리는 프레임의 끝 점을 나타낸다.

 

 

 

송신측이 Lower Window Edge 부터 Upper Window Edge까지의 프레임을 전송하면

전송이 완료된 후 Lower Window Edge를 한 칸 앞으로 이동시킨다.

 

 

수신측이 프레임을 정상적으로 수신하면, ACK (Acknowledgement)를 송신측으로 전송하고,

수신된 ACK에 따라 Upper Window Edge를 앞으로 이동시킨다.

이로써 송신측의 윈도우는 수신된 ACK의 번호로부터 (수신측으로부터) 수신완료를 ACK받은 윈도우 크기만큼 이동하게 된다. 

 

 

 

 

송신측은 데이터 전송이 시작되기 전에 최대 윈도우 크기만큼의 버퍼를 준비해서 버퍼에 프레임을 저장하고, Lower Window Edge가 앞으로 이동할 때 마다 새 프레임을 준비해야 한다.

 

수신측은 정상적으로 수신된 프레임에 대해 ACK를 전송하여 받을 버퍼가 있음을 알리고, 이로인해 송신측의 Upper Window Edge가 이동하여 새로운 프레임을 전송할 수 있게 한다.

 

 

 

 

 

 

 

 

이 그림은 슬라이딩 윈도우 프로토콜의 동작을 시각화한 것이다.

송신자와 수신자는 각각 일정 크기의 윈도우를 설정한다.

 

 

 

송신자는 윈도우 크기만큼의 데이터를 전송한다.

예를들어, F0부터 F6까지의 프레임을 전송한다.

 

수신자는 데이터를 받으면 각 프레임에 대해 ACK(확인응답)를 송신자에게 보낸다.

예를들어, ACK3는 세 번째 프레임을 잘 받았다는 의미다.

 

 

송신자는 수신자로부터 ACK를 받으면 자신의 윈도우를 오른쪽으로 이동시키고, 새로운 데이터를 전송한다.

예를들어, ACK3를 받으면 F3 이후의 데이터를 전송할 준비를 한다.

만약 일정 시간내에 ACK를 받지 못하면, 송신자는 해당 프레임을 재전송한다.