MAC주소는 한 인터페이스에서 다른 인터페이스로 프레임을 가져오기 위해 지역적으로 사용하는 주소이다.
IEEE(Institute of Electrical and Electronics Engineers)에서 관리하며, 라우터에서 라우터까지만 사용되는, hop-by-hop 링크 주소이다.
MAC주소는 48비트와 16진수 표기법을 사용하며, 만약 장치가 IPv6를 지원한다면 64비트를 사용한다.
1A-2F-BB-76-09-AD와 같은 표기법을 사용하며, 각 자리는 4비트로 8x6 = 48비트를 구성한다.
LAN의 어댑터는 전역적으로 고유하다.
이렇게 각각의 MAC주소를 가지고 있어 데이터들이 목적지를 보고 이동할 수 있도록 한다.
그렇다면, 대표적 주소 체계 IP주소와 MAC주소는 어떻게 다를까?
MAC주소는 hop-by-hop links, IP주소는 end-to-end hosts 주소 체계라는 점이 다르다.
포워딩과 라우팅의 차이처럼, MAC주소는 노드 간 링크 하나마다 식별할 수 있는 주소이며, flat구조로 컴퓨터가 가는 곳마다 변경되지 않는다.
IP주소는 전체적으로 설정된 주소로 종단 간 데이터 전송을 위해 필요하다. 계층 구조이며, 연결된 서브넷에 따라 다를 수 있다.(로컬 ip주소를 사용하기 때문에)
이 구조를 보면 더욱 더 잘 이해할 수 있을텐데, A에서 G까지 데이터를 보내기 위한 과정을 살펴보자.
A에서 목적지를 설정할 때, G의 IP주소를 입력하고, 링크 간 전송이 이루어져야 하기 때문에 G로 가기 위한 다음 노드인 B의 MAC주소를 헤더에 입력한다. 그래서 A에서 B로 갈 때는 MAC주소를 사용하고 B에 도착했을 때는 라우팅 알고리즘을 사용해 G로 가기 위한 다음 라우터인 C로 보내기 위해 G의 IP주소는 놔둔 채로 C의 MAC주소를 입력해 전송한다.
이렇듯, IP주소는 고정시키고 MAC주소는 라우터를 이동하면서 변경해준다. 한 단계씩 MAC주소를 사용해 라우터를 이동하면서 최종적으로 목적지에 도달한다.
다른 라우터의 MAC주소는 어떻게 알 수 있을까?
MAC Frame Transmission을 이용하는데, 동일 서브넷 내에서 A가 B에게 데이터를 전송하고자 할 때, 특수한 주소를 사용해 broadcast하여 B를 찾는다.
B가 프레임을 받으면 상위 계층으로 전송하고, 관련된 라우터가 아닌 C가 프레임을 받으면 무시한다.