데이터링크 계층(링크 계층)은 OSI7 계층 하단에서 2번째에 위치하며 데이터의 단위는 FRAME이다. 1계층인 물리 계층의 역할은 Node to Node 즉 바로 옆에 있는 Node 끼리 간의 전기적 신호를 보내는 것이라면, 링크계층에선 Node to Node인건 동일하지만 물리 계층에서 하지 않았던 오류 검출과 신뢰성을 더하는 역할을 맡는다. 물리 계층은 단순 전기신호이기에 오류가 잦을 수 있다는 특징이 있다.
따라서 데이터링크 계층에서 이야기 해볼 내용은 링크 계층에서 제공하는 서비스와 Multiple Access 프로토콜 그리고 링크 계층을 대표하는 프로토콜인 이더넷과 ARP, 링크 계층 장비 스위치에 대해 이해해보도록 하자.
링크 계층이 제공하는 서비스는 크게 네 가지라고 말할 수 있다.
1. 프레이밍[Framing]
일단 프레이밍을 말하기 이전에 하나의 메시지가 생성되어 전달되는 과정을 간략하게 설명하면, 가장 윗단계인 Application 계층에서 메시지를 생성한다. 그리고 이 Application이 그 하위 계층(Presentation)에 이 메시지를 전달한다. 그러면 그 하위 계층은 이 메시지를 계속해서 하위계층에 보내다가 데이터링크 계층까지 해당 메시지가 도착한다. 그러면 데이터링크 계층에서도 이 메시지를 물리계층에게 보내줘야 하는데, 이 때 '메시지'가 온 모양 그대로 보내는 것이 아니라 물리 계층에서 받아보기 편한 방식으로 메시지를 변경해줘야 한다. 이때 해당 메시지를 링크 계층의 형태로 쪼개는 것을 '프레이밍'이라고 한다. 데이터링크 계층의 단위는 FRAME이라 앞서 말했다. 즉, 메시지를 짤라서 FRMAE 단위로 만들겠다는 뜻이 된다.
정리하자면, 데이터링크 계층에 메시지가 도착하면 데이터링크 계층은 이를 캡슐화 시켜서 FRMAE 단위로 쪼갠 후, 쪼개진 각 FRAME마다 데이터링크 계층에서 식별할 수 있는 헤더를 추가한다. 이때는 IP 주소 뿐만이 아닌 데이터의 MAC 주소까지 헤더에 추가된다.
반대로, 물리계층을 통해 해당 프레임을 전달받은 수신자[Receiever]측에선 해당 프레임에 대해 오류가 없는지 검사한 후, 프레임 달려있는 헤더를 버린 후, 데이터그램(네트워크 단위)로 만들어 네트워크 계층으로 전달한다.
즉, 링크 계층이 알아볼 수 있도록 데이터그램을 짜르고 헤더를 붙이고, 받았을 땐 헤더를 짜른 후 데이터그램을 추출해내는 그 과정을 프레이밍이라고 한다.
2. 흐름제어 [Flow Control]
송신자[Sender]와 수신자[Receiever]가 통신할 때 Receiever에게 메시지가 전달된 후 CPU는 해당 메시지를 처리해야 한다. 그러나 만약 CPU가 메시지 한 개를 처리하는 속도가 Sender가 Receiever에게 메시지 하나를 보내는 속도보다 빠르면 어떻게 될까? Receiever 입장에서는 처리해야 하는 메시지가 차곡 차곡 우편함[버퍼]에 쌓일 것이다. 그러나 만약 이 버퍼에 메시지가 쌓이고 쌓이다 보면 어떻게 될까? 버퍼 오버플로우가 발생해서 메시지 손실이 일어날 수 있다. 따라서 Sender와 Receiever 간에 통신 속도를 맞춰주는 것이 굉장히 중요하고 이 업무를 흐름제어라고 칭한다. 가장 대표적인 방식은 Window sliding 이 있다. 추후에 배워보자.
3. 에러 검출 및 정정 [Err Dectection & Correction]
Sender와 Receiever의 통신은 가장 맨 아랫 단계에서 일어난다. 즉, 물리 계층의 Bit를 주고 받는 것으로 일어나는데 이 Bit는 전기적 신호이기 때문에 외부적 요소로 오류가 일어나기 쉽다. 따라서 수신 받은 Bit 중 에러가 있었는지를 감지하고 존재했다면 재전송하거나 스스로 에러를 정정해야하는 기능을 수행한다.
4. 반 이중 통신 및 이중 통신 [Half Duplex & Full Duplex]
반 이중 통신에서 노드는 서로 메시지를 보낼 수 있지만, 하나의 링크에서 두 노드가 동시에 같은 시간에 메시지를 전송할 수는 없다. 이를 통제하는 기능을 수행해야 한다.
'전공 > 네트워크' 카테고리의 다른 글
데이터 링크 - ARP 동작 과정 (0) | 2020.10.18 |
---|---|
데이터 링크- 대표 프로토콜(HDLC, 이더넷, X.25) (0) | 2020.10.18 |
데이터 링크- Multiple Access Protocols(MAC) #3. Taking Turns (0) | 2020.10.16 |
데이터 링크- Multiple Access Protocols(MAC) #2. Random Access (0) | 2020.10.16 |
데이터 링크- Multiple Access Protocols(MAC) #1. Channel Partition (0) | 2020.10.16 |