GARP인줄 모르고 방화벽에서는 unsolicited arp라고해서 GARP인줄 몰랐는데 Unsolicited와 Gratutious가 같은 뜻이었다.
GARP의 가장 큰 특징은 바로 Sender의 IP와 Target의 IP가 동일하다는 점이다.
그렇다면 왜 호스트는 Source와 Target이 동일한 ARP를 보낼까?
1. 자신이 아닌 다른 호스트가 응답한다면 이는 동일한 네트워크에 자신과 동일한 IP를 가지는 호스트가 있다는 것이다.
2. 만약에 자신의 MAC주소가 변경되었다면, 동일한 네트워크에 있는 호스트들에게 이를 알려주기 위해서이다.
이번 테스트의 목적은 GARP가 제대로 동작하는지에 대해서 알아보는 것이었다. 따라서 두 개의 방화벽에서 동일한 IP에 대한 GARP를 보냈을 때, 다른 호스트에서 ARP 테이블이 바뀌는 것을 확인하는 것이었다.
이렇게 네트워크를 설정한 다음에, 172.16.49.2에서 ARP Broadcast(GARP)를 보내면 172.16.49.10의 ARP 테이블에서는 172.16.49.2에 대한 MAC Address가 172.16.49.2의 MAC Address로 바뀌어야 한다.
1. 172.16.49.2에서 172.16.49.6에 대한 GARP를 Broadcast한다. 즉, 172.16.49.6의 MAC 주소는 나야!!이렇게 Broadcast하는 것이다. 
2. 이를 받은 호스트(윈도우)에서 172.16.49.6에 대한 MAC주소를 바꾼다.
172.16.49.6에 대한 새로운 MAC주소를 저장했는데 알고보니 이게 172.16.49.6의 MAC주소이다. 왜냐하면 사실은 172.16.49.2가 GARP Broadcast 했기 때문이다. 하지만 내가 헷갈린 부분이 있다. 바로, 브라우저로 접속해 있던 172.16.49.6에 대한 연결과 호스트(윈도우)에서 172.16.49.6에 대한 SSH연결은 유지가 되고 있었다. 내가 생각한 것은 MAC주소가 바뀌면서 172.16.49.6의 MAC주소로 가던 패킷이 이제 172.16.49.2로 가기에 연결이 끊어진다고 생각하였다. 하지만 연결은 계속 유지되었다. 이 원리가 이해가 되지 않아서 질문을 드렸고 답은 바로 "세션"이었다. 이미 SSH와 브라우저는 세션이 연결된 상태였기 때문에 MAC주소가 바뀌어도 이전 MAC주소로 패킷이 간다. 따라서 연결이 끊기지 않는다.
그렇다면 핵심은 새로운 세션은??? 즉 여기서 새로운 세션을 생성하면 어떻게 될까??
<172.16.49.6 으로 접속했지만 172.16.49.2 으로 접속해있다.> 즉 새로운 세션은 새로운 MAC 주소로 간다. 결국 이러한 원리로 ARP Spoofing이 일어난다. 근데 여기서 또 중요한 점은 이렇게 가능한 이유는 172.16.49.2가 같은 대역에 있어서 그렇다. 다른 대역이라면 MAC주소를 보지 않고 Routing table에 의해서 IP주소를 보기 때문이다. 당연히 ping test도 172.16.49.2로 패킷이 이동한다.
여기서 만약에 172.16.49.6에서 172.16.49.10으로 패킷을 보내면 어떻게 될까? 결과는 보내진다! 하지만 delay가 존재한다. 왜냐하면 ARP에 의해서 다시 172.16.49.10에 대한 MAC주소를 원래대로 바꾸기 때문이다.
결국 ARP Spoofing이 지속되기 위해서는 victim에서 나가는 패킷도 바꿔야 한다.