충남대학교 컴퓨터공학과 김상하 교수님의 "컴퓨터 네트워크" 강의를 필기한 내용입니다.

다소 잘못된 내용과 구어적 표현 이 포함되어 있을 수 있습니다.

Proxy ARP

  • 얘는 수신지가 같은 네트워크 상에 없어 라우터를 통해 다른 네트워크로 가야되는 경우에 사용하는 ARP이다
  • Proxy라는 것은 다른 네트워크에 있는 수신자에게 패킷을 전달해주는 역할을 하는 중간매개정도로 생각하면 된다
  • 라우팅이랑 프록시랑 뭔차인지 좀 헷갈리긴 하는데 약간 생각해보면
  • 라우팅이라는 것은 다른 네트워크와의 연결을 위해 라우팅 테이블이 있고 패킷이 들어왔을때 라우팅 테이블을 통해 다음에는 어디로 보내야되는지 결정하는 역할이라면
  • 프록시는 라우팅과는 달리 패킷을 받은다음에 다음의 경로를 지정하는 것이 아닌 자신한테 연결되어있는 노드인지를 확인해 연결되어있는 노드라면 받아들이고 아니라면 기각하는 방식 - 여러개의 노드들을 대변하는 하나의 노드인 셈
  • 말단노드가 아닌 중단노드라는 점에서 라우터와 비슷하긴 하지만 경로를 설정해 전달해주는 것이 아닌 자신한테 연결되어있는 노드들에 대해서만 패킷을 받아 전달해주는 차이점이 있는듯
  • 따라서 프록시에 연결되어있는 노드들은 프록시를 통해 간접적으로 네트워크에 연결되어있는 셈 - 중앙 허브에서 이 각각의 노드로 직접적으로 패킷을 보내지는 못한다
  • 쨋든 이러한 프록시 기능을 제공하는 노드를 Proxy agent라고 하고 이놈이 패킷을 받아 자신에게 연결된 노드에게 대신 전달해주는 역할을 하게 된다

Proxy ARP의 과정

%E1%84%89%E1%85%B5%E1%86%AF%E1%84%89%E1%85%B3%E1%86%B803%20-%20Proxy%20ARP%208703ad94bd8a4c90acb6f5eef4ef03e7/image1.png

  • 일단 위처럼 구조가 되어있다고 해보자
  • 실습수업에서는 약간 한 노드에서 패킷을 보내면 저 위에있는놈이 받아 각자에게 뿌려주는 방식으로 설명하긴했는데 어쨋든
  • 만약 168.188.129.1에서 168.188.129.130으로 패킷을 보내고 싶다고 해보자
  • 그리고 168.188.129.130은 네트워크에 직접적으로 연결되어있지 않고 168.188.129.3을 프록시로 하여 간접적으로 연결되어 있음

%E1%84%89%E1%85%B5%E1%86%AF%E1%84%89%E1%85%B3%E1%86%B803%20-%20Proxy%20ARP%208703ad94bd8a4c90acb6f5eef4ef03e7/image2.png

  • 프록시를 통해 네트워크에 연결하는 것은 위의 그림처럼 구현해볼 수 있다
  • 위의 그림에서 Proxy ARP Entry를 보면 일단 Interface0은 129.130의 노드 이름인 것이고
  • 그다음의 168.188.129.130은 당연히 프록시를 통해 연결된 노드의 IP주소겠지
  • 근데 이상한 것은 그 다음에 나오는 MAC주소는 프록시를 통해 연결된 노드(129.130)의 MAC주소가 아니라 프록시(129.3)의 MAC주소이다
    • 이건 왜냐하면 129.130으로 보내기 위해서는 129.3으로 보내야 하기 때문에 저렇게 되어 있는 것
    • 실제로는 129.130의 MAC주소는 08:00:20:81:28:BE가 아니지만 129.130을 129.3이 대변하고있기 때문에 논리적으로는 129.130의 MAC주소가 129.3의 MAC주소인 08:00:20:81:28:BE 인 것이나 다름 없다는 소리다 - 여기로 보내면 무조건 129.130으로 전달되기 때문에

%E1%84%89%E1%85%B5%E1%86%AF%E1%84%89%E1%85%B3%E1%86%B803%20-%20Proxy%20ARP%208703ad94bd8a4c90acb6f5eef4ef03e7/image3.png

  • 쨋든 129.1에서 129.130으로 보내기 위해 위와 같은 구조로 ARP를 보내게 된다
    • 수신 MAC주소를 broadcast로 하고 129.1의 IP와 MAC을 송신지로 넣고, 129.130의 IP를 수신지로 넣은 다음에 129.130의 MAC주소는 모르기 때문에 위 그림에 보면 ????으로 되어있다
  • 129.1이 보낸 ARP가 129.3에 도달하면 129.3은 자신에 연결된 노드들을 Proxy ARP Entry를 통해 확인해 129.130이 자신한테 연결되어있다는 것을 확인한다

%E1%84%89%E1%85%B5%E1%86%AF%E1%84%89%E1%85%B3%E1%86%B803%20-%20Proxy%20ARP%208703ad94bd8a4c90acb6f5eef4ef03e7/image4.png

  • 확인한 후에는 129.1이 자신한테 보내야 하기 때문에 자신의 MAC주소를 넣되 자신이 129.130을 대변하고 있기 때문에 129.130은 그대로 냅두고 송수신 주소를 Swapping한 후, Opcode를 2로 바꿔서 ARP Reply를 보내게 된다
  • ARP Reply를 129.1이 받은 다음에는 뭐 패킷 보내고 받고 알아서 하겠지