[네트워크] 9. 연결 계층 서비스 (Link Layer Services)1

ERror.ASER·2021년 6월 8일
0

네트워크

목록 보기
12/14

Link Layer Services

• Node : 네트워크의 호스트나 라우터 같은 것들
• Link : 노드를 직접 연결해주는, 물리적인 연결 등. Wired, wireless 두가지가 있음.
• Frame : 링크 레이어(2계층) 에 생성되는 패킷. 다른 계층의 패킷과의 측별한 차이는 없음.
(트랜스포트 레이어(4계층)에서 만드는 패킷을 세그먼트, 네트워크 레이어(3계층)에서 만드는 패킷을 데이터 그램.)
• 링크 레이어의 역할
서로 연결 되어 있는 노드 사이에서 데이터 그램을 전달해주는 역할.
• 링크 레이어의 기능
◼ Packet collision handling
◼ Bit error handling



⚫ 링크레이어의 서비스 ◼ Framing, link access
◆ 위의 계층에 있는 데이터 그램을 전달 받아서 앞에는 헤더, 뒤에는 트레일러를 붙여서 프레임을 만든다.
◆ Channel access : 노드간 다 대 다 연결을 할 때 채널을 공유하게 되는데, 누가 전송을 하고 누가 기다릴 것인지를 결정하는 기술. ◆ MAC 주소를 부여 받고 이 주소를 가지고 데이터를 주고 받음.
◼ Flow control
◆ 링크 레이어에서의 flow control은 직접적인 연결을 하고 있는 두 노드 사이에서 데이터를 너무 빨리 보내지 않도록 조절하는 것.
◼ Error detection
◆ 링크를 통해서 데이터를 보낼 때, 비트에러가 발생할 수 있는데, 이를 검사함.
◼ Error correction
◆ 에러가 난 상황, 에러 패킷의 형태를 보고 원데이터를 추정해서 복구, 복원함. 모든 링크 레이어에서 지원하는 것은 아니고, 특정 기술에 한 함.
Sending side 에서는 framing, flow control을 제공함. Error checking bit를 추가함. Receiving side에서는 에러 검사, flow control를 제공함.

Error Detection & Correction

• 에러 감지 및 수정하는 데에 있어 대부분의 알고리즘이 Redundancy를 이용.
• 즉, redundant한 부가적인 정보를 붙여가지고 전송 함. 그러나 완벽하게 감지하고 수정할 수는 없음.
• 링크 레이어 에서는 Datagram에다가 원 데이터를 담은 뒤에 EDC (Error Detection and Correction bit) 를 덧붙여서 전송.
• 정확성을 높이려면 EDC를 더 많이 붙이면 되지만, 데이터 전송에서 오버헤드가 크게 발생.
• 그러므로 trade-off를 생각해서 잘 결정해야 함.

Parity check

• 보내는쪽과받는쪽에서약속을해서1의개수가짝수가or홀수가되도록함. 홀수면 odd parity, 짝수면 even parity
• Ex) 만약 odd parity를 사용한다고 가정했을 때, 원데이터 에 1이 짝수개만큼 들어있으면 그 데이터에 parity bit로 1을 추가해서 보내고, 원데이터에 1이 홀수개만큼 들어있으면 parity bit로 0을 붙여서 보낸다
• 그러나 에러가 두 비트 이상이 동시에 발생했을 때는 감지하지 못해서 2차원 parity bit 방식도 제안되었 다

CRC (Cyclic Redundancy Check)

• 가장 널리 쓰이고 있음. 실제로 이더넷에서 사용하는 기술.
• 이것도 역시 원데이터 뒤에 CRC 비트를 붙이는 방식이다.
• Sender 와 Receiver 사이에 G라는 약속된 코드가 있다. CRC비트의 길이가 r비트라고 했을 때, G는 r+1비 트의 크기를 가진다.
• 그리고 데이터를 보내거나 받을 때, CRC비트를 포함한 데이터의 전체길이를 G 로 나누어서 딱 나누어 떨 어진다면 에러가 없다고 판단한다.
• 이더넷이나 와이파이에서도 사용 된다.

CRC (Cyclic Redundancy Check) – sender

CRC (Cyclic Redundancy Check) – Receiver

FEC (Forward Error Correction) or channel coding

• 에러를실제로수정할수있었으면좋겠다싶어서나온기술. 데이터를 전달 받은 Receiver가 수정을 함.
• FEC에서 전송하는 데이터의 형태를 코드워드(codeword)라고 한다.
• 데이터의 길이를 k, 코드워드의 길이를 n이라고 할 때, (n-k)만큼의 parity bit가 데이터 뒤에 붙는 형태이
다.
• N은 k보다 크거나 같다.
redundancy : (n-k)/k, code rate : k/n 으로 구할 수 있다.

FEC (Forward Error Correction) – Hamming code

• FEC에서 가장 간단하고 많이 쓰이는 기술이 hamming code.

• 5bit 의 2진수면 32가지의 경우의 수가 있는데 왜 00000, 00111, 11001, 11110만 사용하는지?
• 두 개의 코드워드 사이의 비트 차이를 Hamming distance라고 한다.
• 각 코드워드 간 distance는 최소 3(최대 4)이다. 코드워드간 Distance가 서로 짧다면, 한 비트짜리 에러가 발생했 을 때, 이를 감지하지 못할 수 있다.
• 한 비트만 에러가 난다면 수정이 가능해지고, 두 비트만 에러가 난다면 감지가 가능해지고, 세 비트짜리 에러는 감지하지 못한다.
• 더 큰 비트 차이의 에러를 감지하고 싶다면 그만큼 codeword를 늘리면 된다.

FEC (Forward Error Correction) – Convolutional code

• 통화 같은 연속적인 데이터는 모아놨다가 블록단위로 코드워드를 만들어 보내기 어렵다. 그래서 고안된 것.
• Convolutional code는 매 비트 마다 전송하는 코드워드가 생긴다.
• 이전 데이터의 히스토리가 현재 비트를 전송하려는 코드로 변경시키는데 영향을 준다.

profile
지우의 블로그

0개의 댓글