데이터 링크 계층이란..
데이터 전송을 담당하며, 오류 검츨, 정정, 흐름제어 등의 기능을 수행하는 OSI 7계층 중 2번째에 해당하는 계층이다.
핵심 기능
총 6가지로 물리주소 지정, 접근제어, 프레임관리, 오류제어, 흐름제어, 링크제어 관리 의 기능을 수행한다.
자세히 살펴보면
1. 물리주소 지정 : 송신/수신 측의 물리 주소를 헤어에 지정한다.
2. 접근제어 : 프레임을 전송하기 위해 물리계층으로 접근하는 제어한다.(프레임이란 데이터링크 게층에서 전송하는 데이터의 전송단위이다)
3. 프레임 관리 : 데이터를 보낼 때 프레임(트레일러 + 데이터 + 출발지 주소 + 도착지 주소)를 보내는 것이다.
4. 오류제어 : 전송장애가 발생하면 수신노드에서 오류를 탐지하고 복구하는 기능
5. 흐름제어 : 수신처리 속도를 고려하여 수신기가 송신기의 전송속도를 제어한다.
6.링크제어 관리 : 링크를 생성, 관리, 삭제하는 기능을 수행한다.(링크란 물리계층의 전송매체와 같은 역할을 수행한다.)
(추가.. 물리계층에서는 "신호"를 전송하고, 데이터 게층에서는 "프레임"을 전송한다.)
상세설명
오류제어란..
오류제어는 전송장애가 발생하면 수신노드에서 오류를 탐지하고 복구하는 기능이다.
오류는 주로 물리계층에서 발생하는 전송장애로 인해 발생하는데, 이는 송수신 노드의 장애, 전송매채의 장애,
저속 전송매체로 데이터를 빠른 속도로 무리하게 송신하는 경우에 발생한다.
이렇게 발생하는 오류를 해결하기 위해
1. 오류검출
2. 오류 발생 확인
3. 오류복구
총 3단계를 통해 오류제어를 수행한다.
오류의 유형에는 "Single bit error", "burst errors"있다.
Single bit error란 한비트의 오류가 발생하는 경우를 말한다.
burst errors란 반대로 한꺼번에 많은 에러가 발생하는 것을 말한다.
이제 오류 제어의 3단계 중 오류검출에 대해서 알아보면
오류를 검출하기 위해 "오류검출 코드"를 이용한다.
송신측에서 송신할 때 오리지널 데이터 + 오류검출코드 의 구조로 보내는 것이다.
수신측에서는 위에 구조로 받은 프레임에서 오리지널 데이터를 들어낸후 "오류검출함수"를 이용하여 추출한 결과값과
오류검출코드를 통해 받은 값을 비교하여
일치하면 오류발생 없음
불일치하면 오류발생 이라는 결과를 낸다.
이 오류 검출에는
1. Parity 비트 검출법
2. 2차원 parity비트 검출법
3. checksums 검출법
4. internet Checksums 검출법
5. CRC
이렇게 총 5가지의 방법이 존재한다.
Parity 비트 검출법
Parity 비트란 정보전달 과정에서 오류가 생겼는지 검사하기 위한 목적으로 주가하는 비트이다.
즉 오리지널 데이터 + 1비트(패리티 비트)의 구조로 보내게 된다.
1바이트 구조에서 7비트 + 패리트 비트(1비트)의 총 8비트의 크기이다.
패리트 비트 검출법은 짝수, 홀수 즉
Even 패리티 비트 : 짝수
Odd 패리트 비트 : 홀수
이렇게 2가지로 나뉘는데 추가적으로 붙게 되는 패리티 비트를 짝수 혹은 홀수로 할 것인지에 따라 결정한다.
Even 패리티 비트 검출법의 경우 각 비트의 값 중 1의 개수를 짝수로,
Odd 패리티 비트 검출법의 경우는 각 비트의 값 중 1의 개수를 홀수로 하는 것이다.
예시) 전송하고자 하는 값 = 120일 때 -> 8비트에 저장하면 1111000이다. 이때 짝수 패리티 비트를 적용하면
1의 개수가 짝수가 하는 짝수 패리티 비트에 경우 이미 1 + 1 + 1 + 1 + 0 + 0 + 0인 데이터 이므로 1이 4개 즉 짝수이다.
그러므로 마지막에 0이 와야한다. 즉 맨 뒤 패리티 비트는 0이다.
그러나...
2비트 이상 오류가 나면 성능 하락하는 문제점이 있다.
2차원 Parity 비트 검출법
위 사진처럼 문자의 비트를 2차원 배열형태로 구성하여 각 행과 열 마다 패리티 비트를 계산하는 방식이다.
하지만 검출을 못하게 되는 경우가 발생하기도 한다.
체크섬 검출법
데이터를 1바이트 단위로 XOR 하여 checksum을 생성하여 전송, 수신 후 받은 데이터들을 동일하게 XOR 하여 만든 것과 수신한 checksum 바이트를 비교/확인 하는 방법이다.
즉 4바이트의 데이터 "10100110 11001111 10101001 11110000"를 보낸다고 할 때,
10100110
11001111
10101001
11110000
---------------
00110000 를 추출하여 전송데이터 뒤에 체크섬 바이트로 추가하여 전송한다,
수신측에서는 다시 데이터를 같은 방식으로 체크섬을 추출하여 같이 전송받은 체크섬 바이트와 비교하여 오류를 검출한다.
이제 발생한 오류를 정정하는 방법을 알아보자
오류복구의 종류에는 전방향 오류정정, 역방향 오류 정정이 있다.
먼저 역방향 오류정정을 알아보면
1. Stop and wait ARQ
2. Go back n ARQ
3. Selective reject ARQ
가 있다.
1. Stop and wait ARQ
위 사진처럼 송신노드가 프레임을 보내면 수신노드에서 답변인 ACK를 보내줄 때까지
송신노드는 다시 프레임을 보내지 않는다.
2. Go Back n ARQ
위 사진을 보면 송신노드에서 계속해서 프레임을 보내고 있다.
수신노드는 받은 데이터에 대해서 ACK를 보내다가 특정 프레임에서 오류가 발생하면
NAK를 보내는데 이는 오류가 검출되었다는 의미이다.
그러자 송신노드는 오류가 발생한 프레임부터 다시 보내기 시작한다.
즉 Go Back n ARQ 방식은 계속에서 프레임을 보내고 오류가 발생한 프레임이 생기면
그 프레임부터 재전송하는 방식이다.
3.Selective Reject ARQ
Go Back n ARQ 방식과 약간의 차이점을 제외하면 비슷한 방식이다.
위에 방식은 오류가 난 프레임부터 재전송하는 방식이였다.
하지만 Selective Reject ARQ 방식은 오류가 난 프레임만 재전송하는 방식이다.
흐름제어
송신 노드와 수신 노드와의 데이터의 흐름을 제어하는 것을 말한다.
흐름제어의 원인은 송신 노드와 수신노드의 속도차이로 인해 발생한다.
둘의 처리성능이 다를 경우 송신노드가 너무 빨라 수신노드가 처리하기 벅차거나, 수신버퍼링이 늦어져 프레임이
분실되는 경우가 발생 할 수 있다. 따라서 흐름제어가 필요하다.
따라서 이를 해결할 방법으로 수신노드가 송신노드의 송신시점을 제어하여 처리 가능한 시점에 보내도록 한다.
흐름제어에는 2가지 방법이 있다
1. Stop Wait 흐름제어 기법 : 오류제어 방식 중 Stop and wait 방식과 동일함, 성능이 별로임
2. Sliding Window 흐름제어 기법이 있다.
Sliding Window 흐름제어 기법은 컴퓨터 네트워크에서 데이터의 전송 속도를 조절하고, 송신 측과 수신 측 간의 데이터 흐름을 효율적으로 관리하기 위해 사용되는 기법이다.
window size는 응답없이 보낼 수 있는 프레임의 최대 개수를 말한다.
송신측과 수신측은 이 윈도우 크기를 미리 합의 할 수 있는데, 송신측 이 크기에 따라 자유롭게 보낼 수 있다.
수신측은 송신측이 자유롭게 보낸 패킷을 수신하고 제일 마지막에 수신한 패킷의 번호를 담아 ACK를 다시 보낸다.
송신 측은 ACK를 받으면, 해당 데이터를 더 이상 유지할 필요가 없으므로 윈도우를 다음 위치로 이동(slide)한다.
또한 Sliding Windows 흐름제어 기법은 n-bit sequence counter 로 구현한다.
윈도우 볌위는 이에따라 0 ~ 2^n-1이 된다.
PiggyBacking 기법
전이중 전송방식에서 사용하는 기법으로
예를 들어 A와 B가 전이중 전송을 통해 통신할 때 A가 보낸 데이터를 수신한 B가 응답했음을 알리는
ACK를 보내고 그 후 A에게 보낼 데이터를 보내는 방식을 이용했다면
PiggyBacking 기법에서는 ACK를 보낼 때 내용을 같이 보내서 한번에 보낼 수 있도록 하는 방식이다.
위에서 줄기차게 나왔던 "프레임"이란 무엇일까?
프레임이란
데이터링크 계층에서 전송하는 데이터의 전송단위를 말한다.
프레임은 문자프레임, 비트프레임으로 나눌 수 있다.
문자 프레임 : 프레임의 시작(DLE, STX)과 끝(DLE, ETX)을 추가하여 프레임을 구별하는데
DLE + STX + DATA + DLE + ETX 의 구조로 경계를 구별한다.
하지만 이 경우 오리지널 데이터 안에 이미 DLEdhk ETX가 존재한다면 끝을 착각하는 문제가 발생한다.
이를 해결하기 위해 "문자 stuffing"이라는 개념이 등장하였다.
문자 stuffing :
위에 문제점을 해결 하기 위해서 문자 프레임 + 제어용 문자(DLE)를 추가하여 수신할 때 DLE가 두 개면 하나를 제거하는 방식으로 경계를 구별한다.
비트 프레임은 프레임 시작과 끝에 특정 비트패턴인 플레그(송신시 추가, 수신시 삭제)를 추가해서 시작과 끝을 구별한다.
플레그는 Flag이고 비트로 표현하면 01111110이다.
보내려는 오리지널 데이터가 011101100010011110001010011이면 시작과 끝에 플레그 비트를 붙여 경계를 구별한다.
마찬가지로 오리지널 데이터 안에 플레그 패턴이 존재하면 문제가 발생한다.
이를 해결하기 위해 "비트 stuffing"이라는 개념이 등장했다.
비트 stuffing
기존 비트프레임에 "제어용비트"를 추가하는 방식이다.
문제가 되는 오리지널 속 플레그패턴과 동일한 비트패턴에 1일 5개 연속된 후 0을 추가하는 것이다.
수신측은 오리지널 데이터에서 1이 5번 반복되면 0을 제거하여 원래 데이터로 복원하여 혼선을 해결하였다.
주소 및 링크제어 관리는 데이터링크 계층에서 통신하는 링크를 관리하는 방식에 대한 설명이다.
주소 및 링크 제어/관리하는 방식에는
1. 점대점 링크
2. 방송용 링크
3. 멀티트롭 링크가 잇다.
점대점 링크는 두 노드간의 구성이 1:1로 전송매체를 전용으로 사용하기 때문에 주소가 필요하지 않다.
방송용 링크는 두 노그 간의 구성이 1:N으로 전송매체를 공용으로 사용하여 매체에 있는 모든 노드가 수신노드가 될 수 있다.
멀티드롭 링크는 두 노드간의 구성이 1:N으로 전송메체를 공용으로 사용하고 물리적인 링크를 공유하기 때문에 주소가 필요하다
마스터 노드가 링크의 제어권을 통제가능하다.
'데이터통신' 카테고리의 다른 글
무선통신 - 블루투스 (0) | 2024.10.05 |
---|---|
무선통신 (0) | 2024.10.01 |
WAN에서의 데이터링크 계층 (1) | 2024.09.30 |
데이터 통신 (0) | 2024.09.23 |