ARP 캐시 테이블
▶ ARP(Address Resolution Protocol)
IP 주소와 MAC 주소 사이를 연결해주는 ARP는 LAN 동작을 이해하는데 아주 중요한 내용이다.
먼저 명령 프롬프트 창에서 arp -d 명령어를 입력한 뒤, ping 8.8.8.8 을 입력해본다.
ping 명령어는 출발지 호스트와 목적지 호스트 사이에서 회선의 연결 상태나 목적지 운영체제의 동장 여부 등을 점검하기 위해서 사용한다. 이후 arp -a 명령어를 입력하면 라우터가 사용하는 IP 주소와 MAC주소가 대응 관계를 이루고 있음을 확인할 수 있다. 이처럼 IP 주소와 MAC 주소의 대응 관계를 저장한 Table을 ARP 캐시 테이블이라 한다. 이러한 대응 관계는 도메인 네임과 IP 주소의 대응 관계를 관리하는 DNS 서비스 기능과 유사하다. ARP 캐시 테이블은 스위치나 라우터 같은 장비에서도 볼 수 있다. 따라서, LAN 동작 이해에 필요한 핵심적인 Table이다.
만약, ping 8.8.8.8 명령어를 입력하면, 컴퓨터 운영체제는 어떤 작업을 수행할까? 운영체제는 자기가 사용하는 서브넷 마스크 255.255.255.0을 갖고 출발지 IP 주소와 목적지 IP 주소를 각각 192.168.0.13 255.255.255.0과 8.8.8.8 255.255.255.0으로 설정한 뒤, 출발지 네트워크 ID와 목적지 네트워크 ID를 비교한다. 서로 다른 네트워크 ID를 가지고 있으므로, 목적지로 데이터를 전송하기 위해 운영체제는 목적지 IP 주소를 라우터의 IP 주소로 변경한다. 다시 말해, 목적지를 8.8.8.8에서 192.168.0.1 과 같이 바꾼다.
이제 기본 게이트웨이에 해당하는 목적지 맥 주소를 알아야 한다. 그래야 출발지 호스트와 동일한 LAN 영역에 위치한 게이트웨이까지 스위칭 통신 할 수 있기 때문이다. 하지만, 현재 출발지 호스트에서는 목적지 맥 주소를 모른다. 출발지 호스트는 자기와 동일한 네트워크 ID를 사용하는 모든 호스트, 다시말해 자기가 속한 LAN 영역 전체를 대상으로 192.168.0.1 번에 대응하는 맥 주소를 구하기 위해 ARP 질의를 브로드캐스트 방식을 이용해 전송한다. 브로드캐스트(broadcast) 방식은 자신과 동일한 네트워크 ID를 사용하는 모든 호스트에게 데이터를 전송한다.
출발지 호스트가 속한 LAN 영역의 모든 호스트는 출발지 호스트로부터 ARP 브로드캐스트 질의를 받고, 이 중에서 192.168.0.1번을 사용하는 게이트웨이가 자신에 대한 맥 주소를 192.168.0.13번에서 요청한다는 사실을 알기에 자신의 맥 주소를 유니캐스트 방식으로 전송한다. 유니캐스트(Unicast)방식은 브로드캐스트 방식과는 반대로 특정한 호스트에게 데이터를 전송한다.
목적지 호스트로부터 응답받은 출발지 호스트가 자신의 ARP 캐시 테이블에 이러한 내용을 반영하면 MAC 주소를 구할 수 있다. 이처럼 ARP 캐시 테이블에 목적지 맥 주소가 올라오면 운영체제에서는 ARP 캐시 테이블을 참조해 핑 데이터를 유니캐스트 방식에 따라 게이트웨이까지 전송한다. 이후부터는 게이트웨이가 IP 주소에 기반한 라우팅 통신을 통해 전송한다.
위의 ARP 요청과 응답 과정을 정리하면 다음과 같다.
1. 운영체제는 출발지 서브넷 마스크를 기준으로 출발지 네트워크 ID와 목적지 네트워크 ID를 비교해 목적지가 스위칭 통신의 대상인지, 라우팅 통신의 대상인지 판단한다.
2. 운영체제는 ARP 캐시 테이블에 접근해 목적지 맥 주소를 검색한다. 목적지가 스위칭 통신의 대상이면 실제 목적지 IP 주소에 해당하는 맥 주소를 ARP 캐시 테이블에서 검색하고, 목적지가 라우팅 통신의 대상이면 라우터 IP 주소에 해당하는 맥 주소를 ARP 캐시 테이블에서 검색한다.
3. ARP 캐시 테이블에 목적지 맥 주소가 있다면 운영체제는 곧바로 해당 맥 주소를 참조해 목적지까지 유니캐스트 방식으로 전송한다. 만약 목적지 맥 주소가 없다면, 운영체제는 자신이 속한 LAN 영역 전체를 대상으로 ARP 브로드캐스트 질의를 전송한다.
4. 출발지 호스트와 동일한 LAN 영역에 속한 목적지 호스트는 ARP 유니캐스트 응답을 출발지 호스트에 전송한다.
5. 운영체제는 ARP 유니캐스트 응답을 통해 획득한 목적지 맥 주소를 ARP 캐시 테이블에 반영한다.
6. 운영체제는 사용자가 전송하고자 하는 실제 데이터를 ARP 캐시 테이블에 기반해 목적지 호스트로 유니캐스트 방식에 따라 전송한다.
ARP 요청과 응답을 정확히 이해하기 위해선 ARP 헤더를 알아야하나, 추후에 자세히 알아보도록 하자.
또한, ARP 요청과 응답이 일어나는 공간을 ARP 영역이라고 한다. ARP 영역 자체가 곧 LAN 영역 자체를 의미한다. 이것은 LAN 영역에 대한 또 다른 차원의 개념에 해당한다. 네트워크 ID, 스위칭, ARP 영역을 기반으로 LAN 영역을 정의하면. 다음과 같을 것이다.
관점 | 정의 |
네트워크 ID | 동일한 네트워크 ID를 공유하는 공간 |
스위칭 | 맥 주소에 기반해 내부 통신이 가능한 공간 |
ARP 영역 | 단일한 ARP 영역을 생성하는 공간 |
참고로 데비안 운영체제에서 ARP 캐시 테이블과 관련한 명령어는 arp -? 로 확인해볼 수 있다.
단순히 ARP 캐시 테이블을 보고 싶다면, cat /proc/net/arp 와 같이 입력해서 볼 수 있다.
출처 : 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e - 오동진 지음