> For the complete documentation index, see [llms.txt](https://kde6260.gitbook.io/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kde6260.gitbook.io/dev/network/datalink.md).

# DataLink 계층

Physical 계층 위에 있는 DataLink 계층에 대해 알아보자

### DataLink layer

* 맨 아래 계층인 Physical 계층 위에서 동작하는 계층으로, **MAC주소**로 단말들을 식별한다.
* LAN(Local Area Network) 내에서 단말 간 통신이 이뤄진다.
* [**Ethernet 프로토콜**](https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%8D%94%EB%84%B7#%EC%9E%90%EC%A3%BC_%EC%93%B0%EC%9D%B4%EB%8A%94_%EC%9D%B4%EB%8D%94%EB%84%B7_%EB%B0%A9%EC%8B%9D)로 단말 간 통신이 이뤄진다.&#x20;
* Ethernet 프로토콜의 데이터 송/수신 단위: **프레임(Frame)**
* **스위치(Switch)**&#xB77C;는 장치가 Ethernet 프로토콜로 송/수신 되는 데이터를 중개한다.

### DataLink 계층의 데이터 통신 단위 - 프레임(Frame)

![프레임의 구성](https://1792721125-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo8iAG2zHsS2e9mIAqX%2F-LuzqlPospFmg5AEVSrR%2F-LuzsHCHtDO_B7wD86hY%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202019-12-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.10.02.png?alt=media\&token=1621a515-c859-4a8a-b9f0-e3673bc246a5)

| 이름                        | 역할                                                                         |
| ------------------------- | -------------------------------------------------------------------------- |
| Preamable(전문)             | 새로운 이더넷 프레임의 시작을 구분한다.                                                     |
| Destination MAC           | 종착 단말의 MAC 주소                                                              |
| Source MAC                | 시작 단말의 MAC 주소                                                              |
| Payload                   | 전송되는 데이터의 실제 내용. 바로 위 계층인 Network layer의 IP헤더가 DataLink 계층의 payload에 포함된다. |
| Frame Check Sequence(FCS) | 수신 단말에서 수신 도중 에러가 있을 경우 이를 식별한다.                                           |
| Interpacket gap           | 수신 단말에서 프레임 수신을 종료하는 데까지 필요한 시간을 명시한다.                                     |

인터넷으로 데이터를 내보낼 때에는 destination MAC 주소를 [라우터](https://kde6260.gitbook.io/dev/network/network#router)의 MAC 주소로 설정한다.

### MAC(Media Access Control)주소

* DataLink 계층의 Ethernet 프로토콜에서 단말을 식별하기 위해 부여되는 주소.
* 하드웨어(기기)에 부여된다.
* Ethernet 하드웨어 주소라고도 불린다.
* 48비트(6바이트)로 구성되고, 각 바이트는 16진수로 이뤄진다. ( = 1 octet)
* 앞에서 세번째까지의 octet은 OUI(Organizationally Unique Identifier, 주소를 발행한 조직을 식별하는 것)로 쓰인다.

![](https://1792721125-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo8iAG2zHsS2e9mIAqX%2F-Luzhx0-K9tZ6wxZhXQ2%2F-Luzp_OY3kfTVj5a96Bx%2F58911.jpg?alt=media\&token=e416d34d-f9aa-4046-9aec-00aa22587258)

### **단말 간 프레임이 전달될 때** - uni/multi/broadcast

#### unicast

* 하나의 단말에서 LAN내부에 있는 다른 하나의 단말로 Ethernet 프레임이 전달된다.
* 이더넷 프레임에 종착 단말의 MAC주소를 명시할 때 1번째 옥텟의 LSB(Least Significant Bit)가 0일 경우, 유니캐스트로 전송되어야 함을 뜻한다.

#### multicast

* 하나의 단말에서 LAN내부에 있는 여러 단말로 Ethernet 프레임이 전달된다.
* 이더넷 프레임에 종착 단말의 MAC주소를 명시할 때 1번째 옥텟의 LSB(Least Significant Bit)가 1일 경우, 멀티캐스트로 전송되어야 함을 뜻한다.

#### broadcast

* 하나의 단말에서 LAN내부에 있는 모든 단말에게 Ethernet 프레임이 전달된다.
* 이더넷 프레임에 종착 단말들의 MAC주소를 명시할 때 MAC주소가 `FF.FF.FF.FF.FF.FF`인 경우, 브로드캐스트로 전송되어야 함을 뜻한다.

이미지 출처: [udacity.com](https://udacity.com)
