📌 이 포스팅에서는 OSI 7계층 중 데이터 링크 계층(DataLink Layer)에 대해 정리하였습니다.
🔥 데이터 링크 계층의 역할과 이더넷
🔥 MAC 주소와 프레이밍
🔥 스위치 구조
🔥 데이터가 케이블에서 충돌하지 않는 구조
✔️ 데이터 링크 계층은 여러 네트워크 장비 간에 신호를 주고 받기 위해 이더넷(Ethernet)이란 규칙이 활용되는 계층으로, 랜에서 데이터를 정상적으로 주고 받기 위해 필요한 계층이다.
✔️ 규칙이 필요한 이유 중 하나는 허브에 연결된 여러 대의 PC가 동시에 데이터를 보내면 서로 충돌이 발생할 수 있는데, 이 때 이더넷이 여러대의 PC의 전송 흐름을 제어하기 떄문에 충돌이 발생하지 않도록 역할을 한다.
✔️ 이를 이더넷은 CSMA/CD 방식이라하는데, 여기서 CSMA란 데이터를 보내려는 목적지 PC에 데이터가 흐르고 있는지 파악하고 흐르지 않는다면 데이털르 전송하는 규칙이다. 또한 충돌이 발생하는지 확인하는 규칙을 CD라고 한다.
✔️ 하지만, 현재는 CSMA/CD 방식이 비효율적이다는 이유로 사용하지 않고, 스위치라는 네트워크 장비를 이용한다.
✔️ 또한 데이터 링크 계층에서는 여러 데이터를 앞 뒤에 구분자(이더넷 헤더, 트레일러)를 붙여 전송함으로써 데이터를 상대측에서 식별할 수 있도록 프레이밍 작업이 이뤄진다.
✔️ MAC 주소는 랜카드를 제조할 때 지정되기 때문에 "물리 주소"라고도 불리며, 전 세계에서 고유한 번호가 할당된다.
✔️ MAC 주소는 48비트 숫자로 구성되어 있는데 앞 쪽 24비트는 랜 카드를 만든 제조사 번호이고, 뒤 쪽 24비트는 제조사가 랜 카드에 붙인 일련 번호의 조합이다.
✔️ OSI 모델에서는 L6 계층에 해당하는 데이터 링크 계층, TCT/IP 모델에서는 네트워크 계층에서 이더넷 헤드와 트레일러를 붙이는데, 이 이더넷 헤드에는 목적지의 MAC주소(6바이트) + 목적지 MAC주소(6바이트) + 유형(2바이트)"로 구성되어 있다.
✔️ 트레일러는 데이터 뒤에 붙는 꼬리 부분으로 FCS(Frame Check Sequence)라고도 하는데, 데이터 전송 도중 오류가 발생하는지 확인하는 용도로 사용한다.
✔️ 이처럼 데이터 링크 계층에서 이더넷 헤더와 트레일러를 붙여 프레임을 만들고, 이 프레임이 송신 측 PC에서 물리 계층으로 보내면, 물리 계층에서 전기 신호로 변환하여 네트워크로 진입하게 된다.
✔️ 반대로 수신측 PC의 데이터 링크 계층에서 역캡슐화를 통해 이더넷 헤더와 트레일러를 해제시키고, 이더넷 헤더에 포함된 MAC주소를 확인 후, 자신의 MAC주소와 일치하면 데이터를 상위 계층으로 전송하지만 일치하지 않는다면 바로 폐기시킨다.
✔️ 스위치는 데이터 링크 계층에서 동작하고, 레이어 2스위칭 또는 스위칭 허브(허브와 비슷하게 생김)라 불린다.
✔️ 스위치는 내부에는 MAC 주소 테이블(MAC Address Table)이 존재하고, 여기서 스위치의 port번호와 해당 port에 연결되어 있는 PC의 MAC 주소가 매핑되어 있다. 이에 브릿지 테이블이라고도 불린다.
✔️ 송신측 PC에서 프레임밍을 통해 데이터를 전송하게 될 때 스위치를 거치게 되는데, 이 때 MAC 주소 테이블에 스위치의 port번호와 해당 기기의 Mac주소가 매핑된다. 이 과정을 MAC 주소 학습 기능이라 부른다.
✔️ 이에 스위치의 MAC 주소 테이블에 수신측 MAC주소와 port가 매핑되어있다면 다른 연결된 port로는 데이터가 전달되지 않는다.
✔️ 다만, 프레임의 저장된 기기의 MAC주소와 port번호가 MAC 주소 테이블에 매핑되있지 않다면 모든 연결된 port의 PC로 데이터가 전달된다. 이를 플러딩(flooding, 홍수) 한다.
✔️ 케이블의 구조적 측면에 있어 데이터의 송수신을 동시에 하는 전이중 통신 방식과 회선 하나로 송신과 수신을 번갈아가하면 반이중 통신 방식이 있다.
✔️ 이에 전이중 통신 방식을 데이터를 동시에 전송해도 충돌이 발생하지 않지만, 반이중 통신 방식은 데이터를 동시에 전송하면 충돌이 발생한다.
✔️ 예를 들어, 휴대폰으로 통신을하는 것은 전이중 통신 방식이고, 무전기로 통신하는게 반이중 통신 방식이라 생각할 수 있다.
✔️ PC 2대를 랜케이블(크로스 케이블)로 직접 연결하면 전이중 방식으로 통신하지만, 허브를 통해 연결하면 반이중 방식으로 통신하기 때문에 충돌 발생한다. 반면, 스위치는 전이중 방식으로 통신하기 때문에 동신의 데이터를 전송해도 충돌이 일어나지 않는다.
✔️ 뿐만아니라, 충돌이 발생할 때 영향을 미치는 범위를 충돌 도메인(collision domain)이라 하는데, 허브 방식은 한 곳에서 충돌이 발생해도 연결된 모드 PC에 영향을 미친다.
✔️ 하지만, 스위치는 연결된 모든 PC에서 충돌에 대한 영향을 미치지 않고, 충돌 범위가 작기 때문에 통신 효율이 높다.