공부일지/개인학습

MAC 주소와 ARP

박수빈98 2025. 4. 10. 11:27

네트워크 통신은 IP로만 이뤄지는게 아니었다!

실제 데이터를 주고 받기 위해서는 실제 물리적 주소인 MAC 주소를 알아야 한다.
이 MAC 주소를 알아내는 방법인 ARP에 대해서도 알아보자


MAC 주소란?

 

정의

  • MAC(Media Access Control) 주소는 네트워크 장비의 물리적 주소
  • 네트워크 카드(NIC)에 내장되어 있고, 6바이트
  • 보통 16진수로 표현함
  • ex) AA:BB:CC:DD:EE:FF AA 이 하나가 4+4 = 8 bit * 6 -> 48 bit

 

특징

  • 전 세계에서 유일
  • L2 계층에서 사용됨
  • 스위치가 장비 식별할 때 사용

 

 

MAC 주소의 필요성

왜 IP와 포트번호로만 통신할 수 없을까?

IP는 어떤 컴퓨터로 보낼지, 포트번호는 그 컴퓨터 내에 어떤 프로세스에 보낼지를 식별해주는 것

보낼 프로세스까지는 알았지만 그래서 실제 어디로 보내면 되는지는 모른다.

이걸 알기위해 ARP를 통해 MAC 주소를 알아온다.

 

다음으로 실제 통신을 위해 MAC 주소를 알아내는 ARP에 대해 알아보자

 

 


ARP란?

 

정의

  • Adress Resolution Protocol -> 주소 해결 프로토콜
  • IP 주소로 MAC 주소를 알아내는 프로토콜
  • L3 -> L2 로 이동 시킴

동작 방식

  1. 192.168.0.20:80으로 패킷을 보내고자 함(L3)
  2. ARP 테이블에 MAC주소가 캐싱된게 있나 확인 있다면 바로 사용 없다면 계속
  3. 브로드캐스트 주소로 ARP Request를 보냄 -> 서브넷 내 모든 NIC(Network Interface Card)에게(스위치의 역할)
  4. 운영체제는 각 NIC가 해당 IP가 대상 IP인지 확인
  5. MAC 주소를 응답(유니캐스트)
  6. MAC 주소를 이용해 프레임 구성(L2) -> 이제 전송의 책임은 스위치가
  7. 선택된 NIC가 비트 흐름/무선 전파/ 광신호 등 물리적 신호로 프레임 전송(L1)

 


 

실습

실습환경

Host ip 10.128.0.19

VMware / Rocky8 minimum

VM vmnet0 ip: 10.128.0.66

 

명령어:

  • ip neigh: ARP 테이블 확인
  • ping: 목적지로 패킷보내고 받기 -> ARP 테이블에 자동으로 캐싱됨
  • ip neigh flush all -> 테이블 비우기

 



여기서 host ip 는 지워지지만 다시 확인 전에 어떠한 작업들로 또 캐싱된 모습이다.

 

 

 

마무리

 

실제로 데이터를 주고받기 위해서는 물리적인 목적지, 즉 MAC 주소가 반드시 필요하며, 이를 해결해주는 프로토콜이 ARP이다.

OSI 계층에서 각 계층을 넘나들때 이러한 방식들이 있을 탠데 이번엔 L3(ip) 계층에서 L2(데이터 링크) 계층으로 이동하는 과정에서 필수적으로 사용되는 MAC주소와 ARP 에 대해 공부했다.

각계층에서 내려올 때는 캡슐화, 올라갈 땐 디캡술화를 통해 주고 받는 아주 정교한 과정 중 하나를 공부했다.


이후 다른 계층에서의 전환도 포스팅 해 봐야겠다.