ARP(Address Resolution Protocol)

Louie·2022년 9월 4일
0
  • 이더넷이나 무선 LAN으로 통신을 하려면 프레임의 헤더에 송/수신지의 MAC 어드레스를 넣어줘야 하는데 어떻게 MAC 어드레스를 알 수 있을까?
  • ARP를 사용하면 IP 어드레스를 가지고 MAC 어드레스를 알아낼 수 있다.

ARP 동작 방식

  • 요청 패킷에 수신 측의 IP 주소를 담고 네트워크 전체에 브로드캐스트한다.
  • 요청을 받은 호스트의 IP 주소가 패킷에 담긴 수신 측의 IP 주소와 같다면 해당 호스트는 응답으로 자신의 MAC 어드레스를 보낸다.
    image

ARP 테이블

  • 브로드캐스트는 해당 네트워크의 모든 장비들에게 프레임을 보내기 때문에 네트워크가 혼잡해질 가능성이 높다.

  • ARP는 ARP 테이블을 사용해서 브로드캐스트 요청을 최소화한다. 아래는 ARP 테이블을 포함한 ARP의 동작 방식이다.

  • 브로드캐스트 요청을 보내기 전에 요청할 IP 주소에 대한 정보가 ARP 테이블에 존재하는지 확인한다.

  • 만약 ARP 테이블에 해당 IP 주소에 대한 정보가 존재한다면 브로드캐스트 요청을 보내지 않고 IP 주소에 매핑된 MAC 어드레스를 바로 반환한다.

  • ARP 테이블에 해당 IP 주소가 존재하지 않다면 브로드캐스트를 통해 원하는 장비의 MAC 어드레스를 얻어오고 얻어온 정보를 ARP 테이블에도 등록한다.

  • ARP 테이블은 아래의 표와 같이 IP 주소와 그에 매핑되는 MAC 주소, 그리고 해당 정보를 저장하는 유효시간을 담아두고 있다. (일종의 캐싱이라고 봐도 될 것 같다.)

    IP addressMAC addressTTL(유효기간)

프록시 ARP

  • 프록시 ARP는 호스트 대신 라우터가 ARP의 요청에 응답한다.
  • ARP 요청은 같은 네트워크 내에 있는 호스트들에게만 브로드캐스팅 되기 때문에 수신지의 IP 주소가 서브넷 마스크와 다르다면 ARP 요청이 제대로 전달되지 않는다.
  • 위와 같은 상황에서 라우터가 프록시 ARP를 통해 자신의 MAC 어드레스를 대신 응답한다.

도착지가 LAN인 경우의 요청 과정

사전 시나리오

  • 요청을 보내는 컴퓨터 A, 요청을 받는 컴퓨터 B가 있다.
  • 컴퓨터 A는 컴퓨터 B의 IP 주소를 알고 있다고 가정한다.
  • 컴퓨터 A의 요청이 B까지 도착하려면 라우터 A와 B를 거치게 된다.
  • 요약 : 컴퓨터 A → 라우터 A → 라우터 B → 컴퓨터 B

요청 과정

  • 컴퓨터 A는 ARP를 통해서 도착지의 MAC 주소를 얻는다.

    • 이때 도착지의 네트워크가 다르기 때문에 컴퓨터 A는 프록시 ARP를 통해 라우터 A의 MAC 어드레스를 응답받는다.
  • ARP를 통해 MAC 주소를 얻어왔다면 컴퓨터 A는 해당 프레임을 라우터 A에게 전달한다.

    출발지 IP도착지 IP출발지 MAC도착지 MAC
    컴퓨터 A컴퓨터 B컴퓨터 A라우터 A
  • 프레임을 받은 라우터 A도 자신의 네트워크가 도착지의 네트워크와 다르기 때문에 컴퓨터 A와 유사하게 프록시 ARP를 통해 라우터 B의 MAC 어드레스를 반환받고 해당 프레임을 라우터 B에게 전달한다.

    출발지 IP도착지 IP출발지 MAC도착지 MAC
    컴퓨터 A컴퓨터 B라우터 A라우터 B
  • 프레임을 받은 라우터 B는 도착지의 네트워크와 자신의 네트워크가 같기 때문에 도착지에 대한 ARP 요청을 보내면 드디어 컴퓨터 B의 MAC 어드레스를 응답받게 된다.

  • 이후에는 라우터 B가 컴퓨터 B에게 무사히 프레임을 보내게 된다.

    출발지 IP도착지 IP출발지 MAC도착지 MAC
    컴퓨터 A컴퓨터 B라우터 B컴퓨터 B
  • 이 과정에서 패킷 헤더의 IP 주소는 변하지 않지만 프레임 헤더의 MAC 어드레스는 여러 2계층 장비에 걸쳐서 도착지까지 전달되기 때문에 변한다는 점을 기억하자

참고 자료

profile
백엔드 개발자를 준비하고 있는 Louie입니다.

0개의 댓글