공부일지/개인학습
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 로 이동 시킴
동작 방식
- 192.168.0.20:80으로 패킷을 보내고자 함(L3)
- ARP 테이블에 MAC주소가 캐싱된게 있나 확인 있다면 바로 사용 없다면 계속
- 브로드캐스트 주소로 ARP Request를 보냄 -> 서브넷 내 모든 NIC(Network Interface Card)에게(스위치의 역할)
- 운영체제는 각 NIC가 해당 IP가 대상 IP인지 확인
- MAC 주소를 응답(유니캐스트)
- MAC 주소를 이용해 프레임 구성(L2) -> 이제 전송의 책임은 스위치가
- 선택된 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 에 대해 공부했다.
각계층에서 내려올 때는 캡슐화, 올라갈 땐 디캡술화를 통해 주고 받는 아주 정교한 과정 중 하나를 공부했다.
이후 다른 계층에서의 전환도 포스팅 해 봐야겠다.