ARP란
통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 된다.
이때 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)이다.
상대방의 MAC 주소를 알아내려면 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC 주소를 질의해야 한다.
ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 통해 자신의 MAC 주소를 응답한다.
이 작업이 완료되면 출발지, 목적지 둘 다 상대방에 대한 MAC 주소를 학습하고 이후 패킷이 정상적으로 인캡슐레이션 되어 상대방에게 전달될 수 있다.
이때 패킷을 보낼 때마다 ARP 브로드캐스트를 수행하면 네트워크 통신의 효율성이 저하되므로 메모리에 이 정보(ARP 테이블)를 저장하고 사용한다. 성능 유지를 위해 ARP 테이블을 오래 유지하는 것이 좋지만 논리 주소는 언제든지 바뀔 수 있으므로 일정 시간 통신이 없으면 이 테이블은 삭제된다.
이런 점이 단점으로 다가올 수 있는데 해커들이 다량의 ARP 요청을 보내면 네트워크 장비가 무력될 수 있다.
이런 공격에 대응하기 위해 아래와 같은 방법을 사용한다.
- ARP 요청이 들어오면 필터링, 천천히 처리
- ARP 테이블을 수동으로만 갱신
ARP 동작
ARP 패킷은 위 표의 송신자 하드웨어 MAC 주소, 송신자 IP 프로토콜 주소, 대상자 MAC 주소, 대상자 IP 프로토콜 주소 4개의 필드가 중요하게 사용된다.
아래는 이 4개의 필드를 이용해 어떻게 동작하는지 예제로 보여준다.
서버 A에서 서버 B로 ping을 보내려고 할 때, 서버 A에서는 3 계층의 IP 주소까지 캡슐화할 수 있지만 목적지 MAC 주소를 모르기 때문에 패킷을 정상적으로 만들 수 없다.
이때 서버 A는 ARP 요청을 네트워크에 브로드캐스트 한다. 이때 2 계층 헤더 필드의 출발지는 자신의 MAC, 도착지는 브로드캐스트로 채우고
ARP 프로토콜 필드의 전송자 MAC과 IP 주소는 자신의 주소, 대상자 IP 주소는 1.1.1.2를 대상자 MAC 주소는 00으로 채워 네트워크에 뿌린다.
2계층 목적지 주소가 브로드캐스트 이므로 모든 단말에 ARP 패킷이 보내지고 모든 단말은 ARP 프로토콜 내용을 확인해 본인이 아니면 ARP 패킷을 버린다.
서버 B는 본인이 맞기 때문에 ARP 요청을 처리하고 그에 대한 요청을 보낸다. 이때 송신자와 수신자의 위치가 바뀐다.
서버 B는 수신하면서 서버 A의 IP, MAC 주소를 알고 있기 때문에 모든 ARP 필드를 채워서 응답할 수 있다.
응답을 보낼 때는 브로드캐스트가 아닌 유니캐스트로 보낸다.
서버 A는 서버 B로부터 ARP 응답을 받아 자신의 ARP 캐시 테이블을 갱신합니다. 이 ARP 캐시 테이블은 정해진 시간 동안 서버 B와의 통신이 없을 때까지 유지됩니다. 해당 시간 안에 통신이 다시 이루어지면 그 시간은 초기화된다.
ARP 캐시 테이블이 갱신된 후에는 상대방의 MAC 주소를 알고 있으므로 도착지 MAC 필드를 완성해 ping 패킷을 보낼 수 있다.
GARP
GARP는 Gratuitous ARP의 약자로 대상자 IP 필드에 자신의 IP 주소를 채워 ARP 요청을 보낸다
ARP는 상대방의 MAC 주소를 알아내기 위해 사용되지만 GARP는 자신의 IP와 MAC 주소를 알릴 목적으로 사용된다.
그러므로 GARP의 목적지 MAC 주소는 브로드캐스트 MAC 주소를 사용한다.
위 그림과 같은 패킷을 네트워크에 브로드캐스트 한다.
GARP를 이용해 동일 네트워크에 자신의 IP, MAC 주소를 알려주는 이유는 3가지이다.
- IP 주소 충돌 감지
- 상대방(동일 서브넷 상의 다른)의 ARP 테이블 갱신
- HA(고가용성) 용도의 클러스터링, VRRP, HSRP : 스위치 장비의 MAC 테이블 갱신
<참고>VRRP(Virtual Router Redundancy Protocol), HSRP(Hot Standby Router Protocol)
FHRP(First Hop Redundancy Protocol)의 일종으로 디폴트 게이트웨이에 장애가 발생할 경우, 해당 네트워크에 속한 단말이 외부 네트워크로 통신할 수 없는 문제를 해결하기 위해 개발되었다.
RARP
Reverse ARP의 줄임말로 말 그대로 반대로 동작하는 ARP인데 GARP처럼 ARP 프로토콜 구조는 같지만 필드에 들어가는 내용이 다르고 원래 목적과 반대로 사용된다.
IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용한다.
RARP는 과거에 네트워크 호스트의 주소 할당에 사용되었지만 제한된 기능으로 인해 BOOTP와 DHCP로 대체되어 사용되지 않는다.
'CS > 네트워크' 카테고리의 다른 글
스위치(switch)란? (0) | 2022.06.21 |
---|---|
서브넷과 게이트웨이 (0) | 2022.06.03 |
TCP와 UDP (0) | 2022.06.03 |
IP 주소란 (1) | 2022.06.02 |
MAC 주소란 (0) | 2022.06.02 |