MAC 주소(Media Access Control Address)는 우리 컴퓨터나 스마트폰에 들어있는 네트워크 카드(랜 카드 또는 Wi-Fi 카드)마다 부여된, 세상에 단 하나뿐인
고유한 물리적 주소
입니다.
마치 우리 각자의 주민등록번호처럼, 네트워크 장비를 만들 때부터 제조사에서 할당하는 번호라고 생각할 수 있습니다.
IP 주소가 OSI 7계층 중 3계층(네트워크 계층)에서 사용되는 논리적인 주소라면, MAC 주소는 2계층(데이터 링크 계층)에서 사용됩니다.
같은 네트워크, 예를 들어 우리 집 공유기에 연결된 여러 장치들끼리 통신할 때 바로 이 MAC 주소를 사용해서 서로를 구분하고 데이터를 정확히 전달합니다.
MAC 주소는 총 48비트(bit)로 이루어져 있으며, 보통 16진수 12자리로 표현됩니다.
두 자리씩 끊어서 콜론(:)이나 하이픈(-)으로 구분합니다.
예시
: 00:1A:2B:3C:4D:5E 또는 00-1A-2B-3C-4D-5E
이 48비트 중 앞쪽 24비트는 OUI(Organizational Unique Identifier)라고 해서 네트워크 카드를 만든 제조사를 나타내는 코드이고, 뒤쪽 24비트는 제조사에서 각 장비에 할당하는 고유한 일련번호입니다.
덕분에 전 세계의 모든 MAC 주소는 중복되지 않을 수 있습니다.
컴퓨터 A가 같은 네트워크에 있는 모든 장치들에게 "IP 주소가 192.168.0.10인 컴퓨터는 MAC 주소가 뭐예요?" 하고
방송(브로드캐스트)
합니다.
이 요청 메시지에는 컴퓨터 A 자신의 IP 주소와 MAC 주소, 그리고 알고 싶은 컴퓨터 B의 IP 주소가 들어있습니다.
ARP 응답 (ARP Reply)
네트워크에 있는 모든 장치가 이 요청을 받지만, 오직 IP 주소가 192.168.0.10인 컴퓨터 B만이 "제 MAC 주소는 AA:BB:CC:DD:EE:FF입니다." 라고 컴퓨터 A에게만
직접(유니캐스트)
응답합니다.
ARP 캐시 테이블 저장
컴퓨터 A는 컴퓨터 B로부터 받은 MAC 주소 정보를 자신의
ARP 캐시 테이블
이라는 곳에 저장해 둡니다.
이렇게 하면 다음에 또 컴퓨터 B에게 데이터를 보낼 때는 다시 ARP 요청을 하지 않고 캐시에 저장된 MAC 주소를 바로 사용할 수 있어 효율적입니다.
ARP 프로토콜
우리가 사용하는 컴퓨터 운영체제(윈도우, 리눅스, macOS 등)에는 이 ARP 캐시 테이블을 확인하는 명령어가 있습니다. 예를 들어, 윈도우의 명령 프롬프트(cmd)나 리눅스/macOS의 터미널에서 arp -a 명령어를 입력하면 현재 ARP 캐시에 저장된 IP 주소와 MAC 주소 목록을 볼 수 있습니다.
오늘은 우리 바로 옆에 있는 장비와 통신하기 위한 고유 식별자인 MAC 주소와, IP 주소를 이용해 이 MAC 주소를 알아내는 ARP 프로토콜에 대해 배웠습니다.
MAC 주소는 하드웨어에 부여된 변경 불가능한 주소이며, ARP는 같은 네트워크 내에서 IP 주소만 아는 상대방의 MAC 주소를 물어보는 과정임을 알게 되었습니다.
또한, ARP 프로토콜의 취약점을 이용한 ARP 스푸핑 공격의 위험성과 기본적인 대응 방안에 대해서도 살펴보았습니다.
이처럼 네트워크 세상에서는 편리한 기능만큼이나 보안도 매우 중요하다는 것을 항상 기억해야 합니다.
다음 시간에는 신뢰성 있는 데이터 전송을 책임지는 TCP와 빠른 속도가 중요한 UDP 프로토콜에 대해 자세히 알아보겠습니다.