본문 바로가기

Study/Tips

ARP테이블


title: "ARP테이블"
last_modified_at: 2019-02-22


ARP 테이블

ARP 테이블: IP주소 - MAC주소를 매칭해주는 테이블. DNS처럼!

cmd에 ①arp -dping 8.8.8.8을 치면 ping[^1]시간/접속정보 등이 나온다.

cmd에 ①arp-a를 치면 arp 캐시 테이블을 볼 수 있다. IP주소-MAC주소가 대응된 테이블이 나온다.

Ping

ping: TCP/IP환경에서 목적지 호스트가 잘 작동/응답하는지 점검하는 기능

ping 명령어를 입력했을 때, 내 컴퓨터에서 목적지까지 찾아가는 과정은 다음과 같다:

목적지 호스트 찾아가기

  1. 서브넷 마스크 이용, 네트워크 ID 찾음
  2. 출발지 Network ID와 도착지 Network ID 비교
    1. [출발지 네트워크ID ≠ 도착지 네트워크 ID] 인 경우 ⇒ 라우터 이용
    2. [출발지 네트워크ID = 도착지 네트워크 ID] 인 경우 ⇒ 스위치 이용
  3. 데이터 보내기
1. 라우터를 찾아가는 경우

출발지와 도착지의 네트워크 ID가 다르다 == 다른 네트워크에 있다 == 다른 LAN영역에 있다!

따라서, 다른 랜과 연결해주는 라우터를 찾아간다. 어떻게? 목적지 IP대신 라우터의 IP를 들고서.

라우터와 내 컴퓨터는 동일 LAN 영역 안에 있다. 그렇다면 스위칭을 통해 라우터로 찾아가면 된다. 스위칭을 하려면 MAC주소가 필요한데, 지금 라우터의 MAC주소를 모른다면? (=ARP캐시 테이블이 비어 있다면?) 캐시 테이블부터 채우게 된다.

라우터의 MAC주소 얻기

나는 라우터의 MAC주소를 모른다. 따라서 나와 같은 스위치에 물린 모든 호스트에 질의를 보낸다[^Broadcast]. 그러면 질의를 받은 라우터가 나에게 맥 주소를 알려준다.[^Unicast] 이렇게 나는 라우터의 MAC주소를 얻어 ARP캐시 테이블을 채운다.

라우팅하기

이제 라우터의 맥주소를 얻었으니 내 컴퓨터에서 라우터로 스위칭 할 수 있다. 데이터를 라우터로 보내주면, 그 이후부터는 라우팅을 통해 목적지에 도달할 것이다.

2. 스위치를 찾아가는 경우

출발지와 도착지의 네트워크 ID가 다르다 == 같은 네트워크에 있다 == 같은 LAN영역에 있다!

같은 LAN영역 안에 있으므로 스위칭을 이용한 내부통신이 가능하다.

1번에서 라우터를 찾아낸 방식과 같이, 목적지 IP를 이용하여 목적지 호스트의 MAC주소를 알아낸다. 이번에는 라우터를 거칠 필요 없이 바로 목적지로 스위칭하면 될 것이다.

정리

데이터 송수신 위치 찾기

  1. 출발지 - 도착지 네트워크 ID 얻고 비교하기
  2. 목적지 위치 알아내기
    1. if(목적지≠도착지) : 다른 네트워크에 있다 == 라우팅이 필요하다
      1. 라우터의 MAC주소를 알아낸다. (브로드캐스트 & 유니캐스트 방식으로)
      2. 라우터까지 데이터를 보낸다 (스위칭, MAC이용)
      3. 라우터가 목적지까지 데이터를 보낸다(라우팅, IP이용)
    2. if(목적지==도착지): 같은 네트워크에 있다 == 스위칭한다 == 라우팅이 필요 없다
      1. 도착지의 MAC주소를 알아낸다. (브로드캐스트 & 유니캐스트 방식으로)
      2. 도착지로 데이터를 보낸다 (스위칭, MAC이용)

이 모든 일들은 운영체제가 알아서 한다.

그리고 이렇게 ARP요청&응답이 일어나는 공간을 ARP 영역이라고 한다. 이 ARP는 동일 네트워크 ID를 공유하는 범위 내에서 일어나므로 LAN영역과도 같다.

즉, LAN영역 == 동일 네트워크 ID == 내부통신 가능 영역(by MAC) == 단일 ARP영역

참고

해킹 입문자를 위한 TCP/IP 이론과 보안(오동진)

정보통신기술용어해설(http://www.ktword.co.kr/)

정보통신용어사전(http://terms.tta.or.kr/mobile/main.do)


[^1]: 출발지-목적지 사이 데이터 교환이 잘 이루어지는지 회선 상태를 점검하는 기능