데이터 링크 계층

**데이터 링크 계층**(Data link layer) 또는 **2계층**은 컴퓨터 망의 7계층 OSI 모형 중 두 번째 계층이다. 이 계층은 네트워크 세그먼트에 있는 노드들 사이에서 물리 계층을 통해 데이터를 전송하는 프로토콜 계층이다. 데이터 링크 계층은 네트워크 엔터티 간에 데이터를 전송하는 기능적, 절차적 수단을 제공하며, 물리 계층에서 발생할 수 있는 오류를 감지하고 가능하다면 수정하는 수단도 제공할 수 있다.

데이터 링크 계층은 동일한 네트워크 수준의 노드 간에 프레임의 로컬 전송과 관련이 있다. 이러한 프로토콜 데이터 단위를 데이터 링크 프레임이라고 부르며, 로컬 영역 네트워크의 경계를 넘지 않는다. 네트워크 간 라우팅 및 전역 주소 지정은 상위 계층 기능이며, 데이터 링크 프로토콜은 로컬 전송, 주소 지정 및 매체 중재에 집중할 수 있게 한다. 이러한 방식으로 데이터 링크 계층은 이웃 교통 경찰과 유사하다. 궁극적인 목적지에 대한 관심 없이 매체에 접근하려는 당사자들 간의 중재를 시도한다. 장치들이 동시에 매체를 사용하려고 하면 프레임 충돌이 발생한다. 데이터 링크 프로토콜은 장치들이 이러한 충돌을 감지하고 복구하는 방법, 그리고 이를 줄이거나 방지하는 메커니즘을 명시한다.

데이터 링크 프로토콜의 예로는 이더넷, IEEE 802.11 와이파이 프로토콜, ATM 및 프레임 릴레이가 있다. 인터넷 프로토콜 스위트 (TCP/IP)에서 데이터 링크 계층 기능은 설명 모델의 최하위 계층인 링크 계층 내에 포함되어 있으며, 물리적 인프라와 독립적이라고 가정된다.

## 기능
데이터 링크는 물리적 링크에 연결된 호스트 간의 데이터 프레임 전송을 제공한다. OSI 네트워크 아키텍처의 의미론 내에서 데이터 링크 계층의 프로토콜은 네트워크 계층의 서비스 요청에 응답하고, 물리 계층에 서비스 요청을 발행함으로써 기능을 수행한다. 이러한 전송은 신뢰적이거나 신뢰적이지 않을 수 있다. 많은 데이터 링크 프로토콜은 성공적인 프레임 수신 및 승인에 대한 확인을 가지고 있지 않으며, 일부 데이터 링크 프로토콜은 전송 오류에 대한 어떤 검사도 수행하지 않을 수 있다. 이러한 경우, 상위 프로토콜이 흐름 제어, 오류 검사, 확인 및 재전송을 제공해야 한다.

프레임 헤더에는 프레임을 시작한 장치와 수신 및 처리할 것으로 예상되는 장치를 나타내는 발신 및 목적지 주소가 포함된다. 네트워크 계층의 계층적이고 라우팅 가능한 주소와 달리, 계층 2 주소는 플랫(flat)하며, 이는 주소의 어떤 부분도 주소가 속한 논리적 또는 물리적 그룹을 식별하는 데 사용될 수 없음을 의미한다.

IEEE 802 근거리 통신망과 같은 일부 네트워크에서는 데이터 링크 계층이 매체 접근 제어 (MAC) 및 논리 링크 제어 (LLC) 서브계층으로 더 자세히 설명된다. 이는 IEEE 802.2 LLC 프로토콜이 이더넷, 토큰링, IEEE 802.11 등과 같은 모든 IEEE 802 MAC 계층뿐만 아니라 FDDI와 같은 일부 비-802 MAC 계층에서도 사용될 수 있음을 의미한다. HDLC와 같은 다른 데이터 링크 계층 프로토콜은 두 서브계층을 모두 포함하도록 명시되어 있지만, 시스코 HDLC와 같은 일부 다른 프로토콜은 HDLC의 저수준 프레이밍을 다른 LLC 계층과 결합하여 MAC 계층으로 사용한다. 고속(최대 1 기가비트/초) 근거리 통신망을 기존 가정 배선(전력선, 전화선 및 동축 케이블)을 사용하여 생성하는 방법을 제공하는 ITU-T G.hn 표준에서 데이터 링크 계층은 세 가지 서브계층(응용 프로토콜 수렴, 논리 링크 제어 및 매체 접근 제어)으로 나뉜다.

## 서브계층
데이터 링크 계층은 종종 논리 링크 제어 (LLC)와 매체 접근 제어 (MAC)의 두 서브계층으로 나뉜다.

### 논리 링크 제어 서브계층
최상위 서브계층인 LLC는 데이터 링크 계층 상위에서 실행되는 프로토콜을 다중화하며, 선택적으로 흐름 제어, 확인 및 오류 알림을 제공한다. LLC는 데이터 링크의 주소 지정 및 제어를 제공한다. 이는 전송 매체를 통해 스테이션을 주소 지정하고 발신 및 수신 기계 간에 교환되는 데이터를 제어하는 데 사용될 메커니즘을 지정한다.

### 매체 접근 제어 서브계층
MAC은 특정 시점에 누가 매체에 접근할 수 있는지 결정하는 서브계층을 의미할 수 있다(예: CSMA/CD). 다른 경우에는 MAC 주소를 기반으로 전달되는 프레임 구조를 의미하기도 한다.

매체 접근 제어는 일반적으로 분산형과 중앙 집중형의 두 가지 형태가 있다. 이 둘은 사람들 간의 통신과 비교될 수 있다. 사람들이 말하는 네트워크, 즉 대화에서 그들은 각자 무작위로 일정 시간을 멈춘 다음 다시 말하려고 시도하며, 효과적으로 "아니요, 먼저 말씀하세요"라고 말하는 길고 정교한 게임을 벌인다.

매체 접근 제어 서브계층은 또한 프레임 동기화를 수행하는데, 이는 전송 비트스트림에서 각 데이터 프레임의 시작과 끝을 결정한다. 여기에는 시간 기반 감지, 문자 계수, 바이트 스터핑, 비트 스터핑 등 여러 방법 중 하나가 포함된다.
* 시간 기반 접근 방식은 프레임 사이에 지정된 양의 시간을 예상한다.
* 문자 계수는 프레임 헤더에 남아 있는 문자의 수를 추적한다. 그러나 이 방법은 이 필드가 손상될 경우 쉽게 방해받는다.
* 바이트 스터핑은 DLE STX와 같은 특수 바이트 시퀀스로 프레임을 시작하고 DLE ETX로 끝낸다. DLE (바이트 값 0x10)의 출현은 다른 DLE로 이스케이프되어야 한다. 시작 및 정지 마크는 수신기에서 감지되어 삽입된 DLE 문자뿐만 아니라 제거된다.
* 비슷하게, 비트 스터핑은 이러한 시작 및 끝 마크를 특수 비트 패턴(예: 0, 6개의 1 비트, 그리고 0)으로 구성된 플래그로 대체한다. 전송될 데이터에서 이 비트 패턴의 발생은 비트를 삽입함으로써 방지된다. 플래그가 01111110인 예시를 사용하면, 데이터 스트림에서 5개의 연속된 1 뒤에 0이 삽입된다. 플래그와 삽입된 0은 수신 끝에서 제거된다. 이는 임의로 긴 프레임과 수신자에 대한 쉬운 동기화를 가능하게 한다. 삽입된 비트는 다음 데이터 비트가 0이더라도 추가되며, 이는 동기 시퀀스로 오인될 수 없으므로 수신기가 스터핑된 비트와 일반 비트를 명확하게 구별할 수 있다.

## 서비스
데이터 링크 계층이 제공하는 서비스는 다음과 같다.
* 네트워크 계층 데이터 패킷을 프레임으로 캡슐화
* 프레임 동기화
* 논리 링크 제어 (LLC) 서브계층에서:
** 오류 제어 (자동 재전송 요청, ARQ), 일부 전송 계층 프로토콜이 제공하는 ARQ, 물리 계층에서 제공하는 전방 오류 정정 (FEC) 기술, 그리고 네트워크 계층을 포함한 모든 계층에서 제공하는 오류 감지 및 패킷 취소 외에. 데이터 링크 계층 오류 제어(즉, 오류 패킷 재전송)는 무선 네트워크와 V.42 전화 네트워크 모뎀에서 제공되지만, 짧은 전선에서는 비트 오류가 매우 드물기 때문에 이더넷과 같은 LAN 프로토콜에서는 제공되지 않는다. 이 경우 오류 감지 및 오류 패킷 취소만 제공된다.
** 흐름 제어, 전송 계층에서 제공하는 것 외에. 데이터 링크 계층 흐름 제어는 이더넷과 같은 LAN 프로토콜에서는 사용되지 않지만, 모뎀 및 무선 네트워크에서는 사용된다.
* 매체 접근 제어 (MAC) 서브계층에서:
** 채널 접근 제어를 위한 다중 접근 방식, 예를 들어 이더넷 버스 네트워크 및 허브 네트워크에서 충돌 감지 및 재전송을 위한 CSMA/CD 프로토콜, 또는 무선 네트워크에서 충돌 회피를 위한 CSMA/CA 프로토콜.
** 물리적 주소 지정 (MAC 주소 지정)
** 랜 스위칭 (패킷 교환 포함), MAC 필터링, 신장 트리 프로토콜 (STP), 최단 경로 브리징 (SPB) 및 TRILL (수많은 링크의 투명한 상호 연결) 포함
** 데이터 패킷 대기열 또는 스케줄링
** 저장 후 전달 스위칭 또는 컷스루 스위칭
** QoS 제어
** 가상 LAN (VLAN)

## 오류 감지 및 정정
프레이밍 외에도 데이터 링크 계층은 전송 오류를 감지하고 복구할 수 있다. 수신기가 전송 오류를 감지하려면 발신자가 전송된 프레임에 오류 감지 코드로 중복 정보를 추가해야 한다. 수신기가 프레임을 얻으면 수신된 오류 감지 코드가 재계산된 오류 감지 코드와 일치하는지 확인한다.

오류 감지 코드는 총 비트 수 의 각 문자열에 해당하는  (중복 비트 양)을 계산하는 함수로 정의될 수 있다. 가장 간단한 오류 감지 코드는 패리티 비트이며, 이는 수신기가 전송된  비트 중 단일 비트에 영향을 미친 전송 오류를 감지할 수 있게 한다. 여러 개의 플립된 비트가 있는 경우 확인 방법이 수신기 측에서 이를 감지하지 못할 수도 있다. 패리티 오류 감지보다 더 고급 방법이 존재하며 더 높은 품질 등급과 기능을 제공한다.

메타데이터를 사용하여 이것이 어떻게 작동하는지 간단한 예시는 "HELLO"라는 단어를 전송하는 것이다. 각 글자를 알파벳에서의 위치로 인코딩한다. 따라서 A는 1로, B는 2로 인코딩되고, 오른쪽 표에 표시된 것처럼 계속된다. 결과 숫자를 더하면 8 + 5 + 12 + 12 + 15 = 52가 되고, 5 + 2 = 7은 메타데이터를 계산한다. 마지막으로 "8 5 12 12 15 7" 숫자 시퀀스가 전송되며, 전송 오류가 없으면 수신자는 이를 수신한다. 수신자는 수신된 마지막 숫자가 오류 감지 메타데이터이고 그 이전의 모든 데이터는 메시지임을 알고 있으므로, 수신자는 위의 계산을 다시 하고 메타데이터가 일치하면 데이터가 오류 없이 수신되었다고 결론 내릴 수 있다. 그러나 수신자가 "7 5 12 12 15 7" 시퀀스(첫 번째 요소가 일부 오류로 변경됨)를 보면, 7 + 5 + 12 + 12 + 15 = 51 및 5 + 1 = 6을 계산하여 확인을 실행할 수 있으며, 6이 7과 같지 않으므로 수신된 데이터를 결함이 있다고 폐기한다.

더 정교한 오류 감지 및 정정 알고리즘은 데이터의 여러 전송 오류가 서로 상쇄되어 감지되지 않을 위험을 줄이도록 설계되었다. 올바른 바이트가 수신되었지만 순서가 잘못된 경우에도 감지할 수 있는 알고리즘은 순환 중복 검사 또는 CRC이다. 이 알고리즘은 데이터 링크 계층에서 자주 사용된다.

## 프로토콜 예시

* ARCnet
* ATM
* 시스코 디스커버리 프로토콜 (CDP)
* CAN
* 이코넷
* 이더넷
* 이더넷 자동 보호 스위칭 (EAPS)
* 파이버 분산형 데이터 인터페이스 (FDDI)
* 프레임 릴레이
* 고급 데이터 연결 제어 (HDLC)
* IEEE 802.2 (IEEE 802 MAC 계층에 LLC 기능 제공)
* IEEE 802.11 무선랜
* I²C
* 래티스넷
* 링크 계층 탐색 프로토콜 (LLDP)
* 로컬톡
* MIL-STD-1553
* 다중 프로토콜 레이블 스위칭 (MPLS)
* 노텔 디스커버리 프로토콜 (NDP)
* 점대점 프로토콜 (PPP)
* 프로피버스
* 스페이스와이어
* 직렬 회선 인터넷 프로토콜 (SLIP) (구식)
* 스플릿 멀티링크 트렁킹 (SMLT)
* IEEE 802.1aq - 최단 경로 브리징
* 신장 트리 프로토콜
* 스타랜
* 토큰링
* TRILL (수많은 링크의 투명한 상호 연결)
* 단방향 링크 감지 (UDLD)
* UNI/O
* 1-Wire
* 대부분의 직렬 통신 형태(예: USB, PCI 익스프레스)

## TCP/IP 모형과의 관계

인터넷 프로토콜 스위트 (TCP/IP)에서 OSI의 데이터 링크 계층 기능은 최하위 계층인 링크 계층에 포함된다. TCP/IP 링크 계층은 호스트가 연결된 링크의 운영 범위를 가지며, 링크 상의 호스트를 찾고 데이터 프레임을 링크로 전송하기 위한 하드웨어(MAC) 주소를 얻는 지점까지 하드웨어 문제에만 관심을 기울인다. 링크 계층 기능은 RFC 1122에 설명되어 있으며 OSI의 데이터 링크 계층과는 다르게 정의되며 로컬 링크에 영향을 미치는 모든 방법을 포함한다.

TCP/IP 모델은 네트워크를 위한 하향식 종합 설계 참조가 아니다. 이 모델은 인터넷 작동에 필요한 TCP/IP의 인터넷워킹 프로토콜 스위트 설계에 필요한 논리적 그룹과 기능 범위를 설명하기 위해 만들어졌다. 일반적으로 OSI와 TCP/IP 모델의 직접적 또는 엄격한 비교는 피해야 하는데, TCP/IP의 계층화는 주요 설계 기준이 아니며 일반적으로 "해롭다"(RFC 3439)고 간주되기 때문이다. 특히 TCP/IP는 OSI 프로토콜에 귀속되는 엄격한 계층적 캡슐화 요구 사항을 지시하지 않는다.

## 같이 보기
* 
* ODI
* NDIS
* SANA-II – 표준 아미가 네트워킹 아키텍처, 버전 2

## 각주

* 
* 

## 외부 링크
* 
* 데이터링크 계층 시뮬레이션, C#로 작성됨
* 데이터링크 계층, Part 2: 오류 감지 및 정정

분류:링크 프로토콜
분류:OSI 모형