데이터 통신 #6
데이터 링크1
- 개요
- DLC - 프레임 짜기
- DLC - 오류 제어
개요
데이터 링크층에서의 통신은 노드-대–노드간 통신이다. 인터넷에서 데이터 통신은 LAN과 WAN 같은 네트워크와 네트워크를 연결하는 라우터로 이루어진다.
이런 통신에서 일반적으로 두 종단 호스트와 라우터를 노드(node)라고 하고, 그 사이의 네트워크를 링크(link)라고 한다.
링크는 아래 2가지의 유형을 갖는다.
- 점-대-점 링크(point to point) : 서로 연결된 2개의 장치(단말)가 전용으로 링크를 이용하는 것 ex. 가정집 전화
- 브로드캐스트 링크(broadcast link) : 여러 장치 쌍들이 공유되는 링크 ex. 휴대폰 전화 (‘공기’라는 링크가 여러 사용자와 공유됨)
링크 계층은 기능을 이해하기 쉽도록 2가지 부계층으로 분리한다. 
- DLC(Data Link Control) : 데이터 링크 제어, 점-대-점과 브로드캐스트 링크에 관한 내용을 모두 다룸
- MAC(Media Access Control) : 매체 접근 제어, 브로드캐스트와 관련된 특별한 사항을 다룸
DLC - 프레임 짜기
데이터 링크 제어 기능은 크게 프레임 짜기와 오류 제어가 있다.
- Framing
- 비트들을 프레임 안에 넣고 다른 프레임과 구분
- 프레임 짜기를 통해 송신자와 수신자 주소를 추가해 발신지와 목적지로 가는 메시지를 분리함
- 프레임 크기
- 고정 길이 프레임 : 경계가 필요없음(프레임 크기를 경계로 사용하기 때문이다). ATM에서 주로 셀(cell)이라는 이름으로 사용
- 가변 길이 프레임 : 프레임이 끝나는 곳과 다음 프레임이 시작하는 곳을 지정해야 하는 길이가 가변적인 프레임, 문자 중심 프로토콜과 비트 중심 프로토콜이 있음
문자 중심 프로토콜
- 데이터 : 부호화 시스템의 8비트 문자
- 헤더 : 발신지, 목적지 주소 & 제어 정보 (k * 8비트)
- 트레일러 : 오류 검출 및 정정 (k * 8비트)
- Flag : 프레임과 다음 프레임을 구별하는 기준 (8비트)
- 텍스트 교환에 유리
- 문자열 통신에 들어가지 않는 비트를 Flag로 사용해 프레임들을 구별한다.
- 그래프, 오디오, 영상 등이 데이터에 담기면서 Flag 패턴이 데이터 정보 자체에 들어가는 문제가 발생
바이트 채우기
- Flag와 동일한 비트를 가진 내용이 데이터에 들어있을 때 Flag와 내용을 구분하기 위해 사용
- 데이터 부분에 ‘특별한 바이트’ 를 추가해 넣는 기술
- 이런 바이트를 ‘ESC (탈출문자)’ 라고 부르며, ESC는 미리 정해진 비트 패턴을 가짐
- 수신자는 ESC 문자를 받으면 데이터에서 그 부분을 제거하고 다음 문자를 플래그가 아닌 데이터로 인식함
- 바이트 채우기로도 완벽하게 플래그와 데이터 오인 문제를 해결하지 못해서 비트 중심 프로토콜을 사용하는 추세
비트 중심 프로토콜
- 헤더와 프레임을 서로 분리하는 구분자(플래그) 사용
- 플래그는 대부분 8비트 패턴(01111110) 사용
- 문자 중심 프로토콜과 똑같은 문제가 발생하고, 이를 해결하기 위해 비트 채우기&빼기를 사용
비트 채우기&빼기
- 문자 중심 프로토콜과 다르게 플래그와 동일한 패턴을 만나면 뒤에 바이트를 추가하는 방식으로 작동하지 않는다.
- 비트 채우기 : ‘0’ 1개와 ‘1’ 5개를 연속으로 만나면 그 다음에 무조건 비트 ‘0’을 채워넣음. 즉 011111 뒤에는 무조건 0이 온다.
- 비트 빼기 : 수신자는 0+11111을 만나면 그 다음에 있는 0을 제거하고 데이터를 읽음.
DLC - 오류 제어
데이터에서 비트가 변경되는 오류
- 오류 제어의 구성
- 중복
- 오류를 검출하기 위해 데이터 이외에 ‘추가 비트’를 보낸다.
- 추가 비트(중복 비트)는 송신자가 일정 규칙에 의해 추가하며, 수신자는 이를 통해 오류를 찾고 정정한 후 제거한다.
- 검출
- 오류가 생겼는지 알아내는 것
- 오류를 수정할 수 있는지와 오류가 얼마나 발생했는지는 별개의 문제
- 정정
- 정확하게 어디서 몇 비트가 잘못 되었는지 알아내 수정하는 과정
- 중복
- 부호화
- 실제 데이터에서 ‘어떤 관계’ 를 이용해 중복 비트를 만들고 제거하는 것
- ‘블록 부호화’ 와 ‘컨볼루션 부호화’ 가 있음 ( 블록 부호화만 다룬다 )
블록 부호화
- 메시지를 먼저 ‘k비트의 블록’ 으로 나눈다. 이것을 ‘데이터 워드’라고 한다.
- 각 블록에 r비트의 중복 비트를 추가한다. 총 길이는 n = k + r 이 된다.
- 이렇게 만들어진 n비트를 ‘코드 워드’ 라고 한다.
- 데이터워드는 k비트를 사용하므로 총 2^k의 데이터 워드를 만들 수 있다.
- 코드워드는 n비트를 사용하므로 총 2^n의 코드 워드를 만들 수 있다.
- 동일한 데이터워드는 동일한 코드 워드로 부호화 된다. ( 일대일 대응 )
- 따라서 2^n – 2^k 개의 코드 워드는 만들어 질 수 없다.
- 만들어 질 수 없는 코드 워드를 받은 수신자는 ‘오류’ 라고 판단한다.
- 수신자는 유효 코드워드(만들어질 수 있는 코드워드)에서는 데이터를 추출하고 유효하지 않은 코드워드는 버린다.
- 어떤 데이터워드가 오류로 인해 잘못된 코드워드로 변경되었는데, 잘못 변경된 코드워드 또한 유효 코드워드라면, 수신자는 오류를 발견할 수 없다.
- 해밍 거리
- 두 개의 같은 크기의 코드 워드 간에 차이가 나는 비트의 개수
- 차이가 나는 비트의 수는 두 코드 워드를 XOR 연산해서 나오는 1의 개수로 확인
- 최소 해밍 거리 : 모든 코드워드 쌍들을 XOR 연산해서 나온 해밍거리 중 최소값, 최소 해밍 거리 = 최대 오류 검출 가능 수 + 1 의 관계를 갖는다.
- 선형 블록 코드
- 두 개의 유효한 코드워드에 대해 XOR 연산을 하면 다른 유효 코드워드를 생성하는 코드
- 두 개의 유효한 코드워드에 대해 XOR 연산을 하면 다른 유효 코드워드를 생성하는 코드
패리티 검사 코드
- K 비트 데이터워드에 한 비트를 추가해 N = K + 1 비트 코드워드를 만드는 것
- 추가되는 비트를 포함해서 전체 코드워드의 1의 개수는 짝수개가 되어야 함
- 최소 해밍 거리는 2 이다.
- 단일 비트 오류 검출 코드
- 1의 개수가 짝수개가 아니면 오류가 발생한 것
- 신드롬(Syndorme) : 코드워드 checker에서 만든 비트, 1의 개수가 짝수개면 0, 홀수개면 1을 생성한다.
- 신드롬이 0이면 데이터 워드가 만들어지고 1이면 코드 워드가 오류가 발생했다고 판단해서 버려진다.(1의 개수가 짝수여야 하므로)
- 순환 코드
- 선형 블록 코드의 성질과 순환성 성질을 모두 만족하는 코드워드
- 순환성 : 코드워드를 한 칸씩 왼쪽으로 밀어서 얻는 코드가 다시 코드워드가 되는 구조
- 밀린 비트는 사라지는 것이 아니라 오른쪽 끝으로 붙음
순환 중복 검사(CRC : cyclic redundancy check)
- 순환 코드의 성질을 이용한 오류 검출
- Sender(송신자)는 데이터 워드에 부호기(Generator)를 이용해 코드워드를 생성한다
- Receiver(수신자)는 코드워드를 받으면 복호기(Checker)를 이용해 데이터 워드를 추출한다.
순환 중복 검사(CRC : cyclic redundancy check) - 부호기
- 먼저 데이터워드 끝에 추가적으로 0비트를 채운다. 이 때 0비트의 개수는 부호기의 Divisor에 따라 미리 결정되있는 값이다.
- 부호기에 미리 정해진 Divisor로 코드워드를 나눈다. 이 때 나눗셈은 XOR 연산으로 진행된다.
- XOR 연산을 한 결과에 맨 앞자리가 0인 경우 다음 XOR 연산은 ‘0000’ 으로 진행
- 최종적으로 남은 나머지가 데이터 워드에 붙여져서 코드워드가 생성됨
순환 중복 검사(CRC : cyclic redundancy check) - 복호기
- 나머지를 데이터워드에 붙였기 때문에 복호기에서 부호기의 Divisor로 다시 나눠주면 나눠 떨어져야 함(나눗셈의 특성)
- 따라서 신드롬이 0 이면 데이터코드를 추출하고, 0이 아니면 버려짐(잘못된 코드워드임)
- a의 경우 신드롬이 0이므로 올바른 코드워드이고, b는 신드롬이 0이 아니므로 오류가 발생한 코드워드로 판단해 버려짐
- 순환 코드의 장점
- 단일 비트, 두 비트, 홀수 비트, 폭주 오류 검사에 우수한 성능
- 구현이 쉽고, 속도가 빠름 ( XOR 연산은 비트 연산이라 속도가 매우 빠르다 )
- 위 장점에 따라 LAN,WAN 등 많은 네트워크에서 사용되는 오류 제어 방법임.
- 검사합 : 모든 길이의 메시지에 적용할 수 있는 오류 검출 방법
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.










