본문으로 바로가기

ARP 캐시 테이블에 대하여

category ComputerScience/Network & Web 2022. 3. 29. 21:15

LAN동작을 이해하는데 핵심적인 ARP(Address Resolution Protocol) 기능을 정리해본다.

 

1. ARP 캐시 테이블의 원리

arp 실습을 위해 cmd창을 열어 간단한 명령어를 입력하였다.

 

1) arp -d  (이미 등록되어있는 arp 호스트 지워주기)

2) ping 8.8.8.8 (ping 명령으로 송수신 회선의 상태를 확인)

** 8.8.8.8은 Google사의 public DNS의 IP주소. 다른 임의의 주소를 입력해도 된다

 

명령 실행 결과

ping 명령을 입력했을때 OS는

 

1) 출발지 IP + 서브넷마스크, 목적지 IP + 서브넷마스크 정보를 조합한다.

 

2) 출발지의 networkID와 목적지의 networkID를 비교한다.

 

3.1) 두 networkID가 동일하다면 -> 같은 LAN 영역 (스위칭)

3.2) 두 networkID가 상이하다면 -> 다른 LAN 영역 (라우팅)

 

위 실습의 경우에는 3.2에 해당하므로

OS는 다른 LAN영역의 목적지로 데이터를 송신해야 하므로,

목적지 IP 주소를 라우터의 IP주소로 변경한다.

(3.1의 경우에는 따로 변경하지 않는다.)

 

❗ 여기서 문제가 발생

목적지의 IP주소는 알지만 MAC주소는 당장 모른다.

 

4) OS가 ARP 캐시 테이블에 접근하여 목적지의 MAC주소를 검색한다.

(스위칭이라면 실제 목적지의 MAC주소일 것이고, 라우팅이라면 목적지IP를 라우터의 주소로 바꾸었으니 라우터의 MAC주소)

 

5.1) 만약 ARP 캐시 테이블에 MAC 주소가 있다면 해당 주소를 가지고 목적지로 송신한다. (유니캐스트)

 

--------------------- 운좋은 첫번째 케이스는 여기서 LAN영역의 동작이 완료된다 (미션 클리어) -------------------------

 

불행하게도 MAC주소가 없으면 다음 과정을 이어간다.

 

5.2) 만약 ARP 캐시 테이블에 MAC 주소가 없다면 출발지 호스트(내PC)에서 브로드캐스트 ARP질의를 전송한다.

즉, 자신이 속한 LAN영역의 모든 호스트(networkID가 같은)를 대상으로 데이터를 전송하는 것이다.

 

왜 브로드캐스트를 하는 것일까? 원리에 의문이 든다면!

'목적지IP의 주인이 나다~ 싶으면 자진납세' 방식이라고 생각하니까 쉽게 이해되었다.

(비유가 와닿지 않더라도 그냥 내가 지어낸거라 어쩔 수 없다.)

 

누군지 모르겠으니 일단 현상수배 전단지를 쫙 뿌리면,

전단지를 받은 호스트들이 목적지IP에 적힌게 난지 아닌지 확인해서 자기가 맞으면 자진납세로 ARP 응답을 보낸다. (자기가 아니면 그냥 버린다)

 

이 경우 실제 보내고자 하는 데이터가 아니라 MAC 주소를 얻기 위한 ARP 요청 질의를 보내는 것이다.

(ARP 질의에는 ARP header개념이 따로 있는데 이것은 따로 정리하는게 좋을 것 같다)

 

6) 목적지 호스트가 ARP질의를 수신하면, 해당 질의를 송신한 호스트에게 자신의 MAC주소를 송신한다 (유니캐스트)

 

7) OS가 목적지의 MAC주소 데이터를 수신하고 이를 ARP 캐시 테이블에 반영한다.

 

8) 이제 ARP 캐시 테이블을 이용하여 진짜 보내고자 하는 데이터를 목적지 호스트로 전송한다. (유니캐스트)

 

--------------------- 드디어 두번째 케이스도 LAN영역의 동작이 완료된다 (미션 클리어) -------------------------

 

2) 결론

- ARP 질의응답 과정을 비유하자면?

'현상수배 뿌리고(질의) + 목적지IP의 주인이 나다~ 싶으면 자진납세(응답)' 방식

 

- ARP를 한마디로?

논리적인 주소(IP주소) -> 물리적인 주소(MAC주소)

 

 

** 막간을 이용한 용어정리

간혹 ARP영역이라는 용어를 마주칠 때가 있다. 용어 정리를 해두자.

ARP동작 자체가 같은 networkID를 가진 호스트를 대상으로 이루어지니까

LAN영역과 ARP영역은 사실상 동일하다고 본다.

LAN영역 == 같은 networkID 영역 == 스위칭 영역 == ARP영역

 

단지 용어를 만들때 LAN은 네트워크영역을 크기에 따라 분류하면서 나온 말이고,

ARP영역은 ARP개념에서 나온 용어이기 때문에

사전적 정의는 달라도 개념적으로는 같다.

반응형