본문 바로가기

OSI 7계층/[LAYER 3] 네트워크 계층

MAC주소와 IP주소의 연결고리 ARP

우리는 일상생활에서 주소를 가지고 택배를 보내기도, 받기도, 편지를 쓰기도, 받기도 합니다.

이처럼 일상생활에서 주소가 쓰이듯이 인터넷 즉 네트워크 상에서도 주소를 사용해서 서로 통신을 합니다.

이전 글에서 네트워크에서 사용되는 주소를 다루었습니다.

기억나시죠? MAC주소와 IP주소!

(기억이 안나신다면 앞에 글을 다시 봐주세요..)

 

그럼 MAC주소가 무엇인지... IP주소가 무엇인지 대충은 알겠는데 이것으로 어떻게?? 통신을 한다는 것인지? 이번에는 이 두개의 주소를 가지고 어떻게 통신을 하는 것인지 다루어 보도록 하겠습니다.

 

MAC 주소와 IP주소를 매칭 시키기 위해서는 ARP프로토콜을 사용하는데 그래서 이번 글은  ARP를 얘기해 보려고 합니다.

 

1. ARP란 무엇인가?

ARP(Address Resolution Protocol)로 쉽게 생각하면 내가 알고 있는 상대방의 주소는 IP뿐인데... 이 IP주소에 매칭되는 MAC주소를 찾는게 ARP입니다.



 

2. ARP 패킷의 구조는 어떻게 생겼을까?

 

 

ARP 패킷의 구조입니다. 여러가지 알 수 없는 항목들이 많은데 우리는 이중에서 몇가지에만 집중할 것입니다.

ARP패킷의 목적은 내가 알고 있는 IP주소의 MAC주소를 찾는 것이라는 것을 꼭 기억해야 합니다. 각 항목들의 의미는 아래와 같습니다.

 

1. 출발지 MAC 주소, 목적지 MAC 주소

송신지 MAC주소는 AA(생략)인데 이거 모든 애들한테 전달해줘!

여기서 모든 애들한테 전달해줘라고 했기 때문에 목적지 MAC 주소에는 브로드캐스트 주소인 FF:FF:FF:FF:FF:FF로 채워지게 됩니다.

 

2. 송신지 MAC 주소, 송신지 IP 주소

야!! 나 MAC주소는 AA이고 IP주소는 1.1.1.1인데!!

 

3. 수신지 MAC 주소, 수신지 IP 주소

너 1.1.1.2 맞지?? 너 MAC 주소가 뭐지??

 

다른 항목들에 대해서는 우리가 다 외울 수 없을 뿐더러 정확히 위의 항목 3가지에

대해서 ARP가 저러한 의미를 담고 있구나라고 생각하시면 됩니다.



 

3. 통신방식 


MAC주소가 AA, IP주소가 1.1.1.1인 PC와 MAC주소가 CC, IP주소가 1.1.1.3인 PC가 서로 통신하기 전에 ARP를 주고 받는 통신 과정입니다.

(PC A와 PC B라고 지칭)

 

 

1) PC A는 PC C의 MAC주소를 알아내기 위해 ARP패킷을 준비



2) ARP를 모든 호스트들에게 전달하기 위해 목적지 MAC주소를 브로드캐스트 주소FF:FF:FF:FF:FF:FF로 설정


 

3) ARP패킷을 전달받은 스위치는 목적지 MAC주소가 FF:::FF인 것을 확인 후 모든 호스트에 전달



4) 각 호스트 들은 자신에게 온 패킷의 목적지 MAC주소를 보고 자신에게 온것이 맞는지 확인 



5) ARP 패킷을 확인해 본 결과 PC B의 경우 자신의 MAC주소를 묻는 것이 아니기 때문에 패킷 DROP

PC C의 경우 자신의 MAC주소를 물어보는 ARP패킷이라는 것을 확인 


 

 6) PC C는 자신의 MAC주소를 알려주기 위해 ARP 패킷 생성



7) PC A가 물어봤으므로 목적지 MAC 주소를 PC A의 MAC주소로 설정



 8) 패킷을 전달받은 스위치는 PC A에게 패킷 전달

 

 

9) PC A는 목적지 MAC주소를 확인하여 자신에게 온 패킷인지 확인



10) 자신에게 온 패킷을 확인 후 ARP 패킷 확인 PC C의 MAC주소를 확인


 



4. ARP Table


이렇게 ARP 프로토콜을 이용하여 각 장비들은 서로의 MAC주소와 IP주소를 매칭시키는 작업을 하고 이를 ARP테이블에 기록해 둡니다.

 

 

여러분의 PC에는 어떤 IP의 MAC주소가 학습되어 있나요? 확인을 위해 CMD창을 열고 arp -a라는 명령어를 처보세요 그럼 여러분의 PC에 학습되어 있는 MAC주소를 확인 할 수 있습니다.