컴퓨터네트워크

[컴퓨터 네트워크] Link layer - Introduction, Error Detection & Correction

ima9ine4 2024. 7. 9. 00:56
728x90

# 컴네 10일차 - 1

Link layer - Introduction

이제 2계층, Link layer를 배운다. 우리가 컴퓨터 네트워크 과목에서 다룰 마지막 계층이다. physical layer(물리 계층)는 하드웨어쪽이므로 우리가 소프트웨어적으로 배우지 않는다.

Link layer에서는 내가 전달하고자 하는 데이터를 어떻게 다음 노드에 전달할 것인지가 핵심이다. 

Link layer에서의 services로는 framing, link access, reliable delivery between adjacent nodes가 있다. framing은 데이터그램에 헤더와 트레일러를 추가해 프레임으로 캡슐화하는 것이다.
또한 flow control, error detection, error correction, 링크 종류에 따라 half-duplex and full-duplex까지 제공한다.

link layer는 모든 호스트마다 adapter에서 구현된다. 어댑터 사이에서는 아래 그림과 같이 통신한다.

보내는 쪽에서는 데이터그램을 프레임으로 캡슐화(framing)한다. 에러를 체크하는 비트와 flow control 기능 등을 추가한다. 
받는 쪽에서는 에러를 탐지하고 flow control 기능이 있다. 데이터그램을 추출하고 상위 계층으로 보낸다. 

 

Link layer - Error Detection & Correction

link layer에서는 error detection을 할 수 있다. 이 역할을 해주는 비트를 EDC(Error Detection and Correction Bit)라고 한다. D는 Data이다. 

EDC를 보내는 방법으로는 Parity checking이 있다. parity는 동등성을 의미하는 단어로 parity bit는 정보 전달 과정에서 오류가 발생했는지 감지하기 위해 추가된 비트이다. single bit parity로는 에러를 탐지하는 것만 가능하지만 two-dimensional bit parity로는 정확히 어떤 비트에서 에러가 났는지 알아낼 수 있어 correction까지 해줄 수 있다.

또 다른 방법으로는 CRC(Cyclic redundancy check)가 있다. 아래 그림에서 D는 데이터, G는 비트 생성 패턴, R은 CRC비트이다.
D를 G로 XOR 나누기를 했을 때의 나머지가 R이다. 구한 R을 함께 보내주면 받는 쪽에서 다시 XOR연산을 하고, R이 0이면 에러가 없다고 판단한다.

아래는 예제이다.

D를 CRC의 크기 r bit 만큼 shift연산하고 이를 G로 나누면 R을 구할 수 있다.
이렇게 구한 R과 함께 데이터를 receiver로 보낸다. receiver쪽에서는 (D*2^r XOR R)을 G로 나누었을 때 나머지가 0이어야 에러가 없는 것이다.

728x90
반응형