ARP(Address Resolution Protocol)
- 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이다.
- 데이터 통신은 2계층의 MAC 주소와 3계층의 IP 주소를 사용하게 되는데, MAC은 물리적 주소이고,,, IP 주소는 논리적 주소이기도 하고 두 주소는 연관이 전혀 없다. 이때 두 주소를 연계시켜주기 위한 메커니즘에 ARP를 사용하게 된다. → 아무튼 물리적 주소와 논리적 주소를 연결하는 역할을 하는 것이 ARP
- 패킷을 캡슐화하기 위해서는 MAC 주소를 알아내야 한다. 어떻게? → ARP 브로드캐스트를 이용하여 네트워크 전체에 MAC 주소를 질의한다.
- ARP 브로드캐스트를 받게 되면 ARP 프로토콜을 사용하여 자신의 MAC 주소를 응답함으로써 출발지, 목적지 모두 상대방에 대한 MAC 주소를 학습하게 된다. 이후 정상적으로 캡슐화(인캡슐레이션)되어 패킷이 전달된다.
- Windows에서 ARP 테이블 정보를 확인하는 방법은 arp -a 명령이다. ARP 프로토콜을 사용하여 IP 주소-MAC 주소를 매핑하면 유형 필드에 '동적'으로 표기된다.
- 근데 MAC 주소를 알아내기 위해서 브로드캐스트를 계속하게 되면 어떻게 될까?? → ARP 작업은 하드웨어 가속으로 처리되지 않는다. 즉, CPU에서 직접 수행한다는 뜻이다. 짧은 시간에 엄청난 양의 ARP 요청이 들어오면 큰 부하로 작용된다. 이러한 문제를 해결하기 위해서 ARP 테이블 저장 기간을 일반 PC보다 길게 설정하고, 요청을 필터링하는 방식으로 처리하게 된다.
* 패킷으로 데이터를 전송할 때는 반복 작업을 줄이기 위해 참조할 수 있는 캐시 테이블을 사용한다. ARP도 캐시 테이블이 존재한다.
ARP 동작 방법
- ARP 패킷에서 가장 중요한 건 4가지이다.
- 예를 들어 서버 A에서 B로 ping을 보낸다고 할 때, 목적지 MAC 주소를 모를 경우 정상적으로 패킷을 만들 수 없어 전송하지 못한다.
출발지 MAC | 목적지 MAC | 출발지 IP | 목적지 IP |
AA | - | 1.1.1.1 | 1.1.1.2 |
[ping 1.1.1.2]
- 그래서 물리 주소(MAC)을 알아내기 위해서 무엇을 해야 한다? ARP 요청을 네트워크에 브로드캐스트해야 한다.
- 브로드캐스트할 때 출발지 MAC은 자신의 주소, 목적지 MAC 주소는 브로드캐스트(FF-FF-FF-FF-FF-FF)로 채워 보낸다. 대상자 MAC 주소는 00-00-00-00-00-00으로 네트워크에 보낸다.
- ARP 요청을 받은 모든 단말은 ARP 프로토콜을 확인하고 대상자 IP가 자신이 아니라면 패킷을 버린다. 맞을 경우 해당 서버에서는 ARP 응답을 보낸다. 이때는 출발지와 도착지가 명시되어 있는 유니캐스트이다.
- 이후 ARP 캐시 테이블이 갱신되며 필드가 모두 완성된다. → ping 가능해짐
출발지 MAC | 목적지 MAC | 출발지 IP | 목적지 IP |
AA | BB | 1.1.1.1 | 1.1.1.2 |
[ping 1.1.1.2]
GARP(Gratuitous ARP)
- 자신의 IP와 MAC 주소를 알릴 목적으로 사용되는 프로토콜로, 대상자 IP 필드에 자신의 IP 주소를 채워 ARP 요청을 보낸다.
- 송신자 IP, 대상자 IP 모두 자신의 IP 주소를 넣어 네트워크에 브로드캐스트한다.
- GARP를 사용하여 동일 네트워크에 자신의 IP, MAC 주소를 뿌리는 이유는 3가지이다.
1. IP 주소 충돌 감지
내가 할당받은 IP를 다른 사람이 사용하고 있을 수도 있다... 이러한 IP 충돌 때문에 통신을 할 수 없는 것을 예방하기 위해서 자신에게 할당된 IP가 네트워크에서 이미 사용되고 있는지 확인하기 위해 GARP를 사용한다.
만약에 GARP에 대한 응답이 오면 네트워크상에서 이미 해당 IP를 사용 중인 단말이 있는 것을 알 수 있다.
2. 상대방의 ARP 테이블 갱신
동일 네트워크상에 존재하는 단말들의 ARP 테이블을 갱신하기 위해 사용된다.
가상 MAC 주소를 사용하지 않는 데이터베이스 고가용성 솔루션에서 주로 사용된다.
데이터베이스 고가용성 솔루션은 주로 두 데이터베이스 서버가 하나의 가상 IP 주소를 이용하여 서비스한다.
2개 중 한 대만 동작하고 나머지 한 대는 대기하는 Active-Standby로 동작하기 때문에 IP는 가상 IP지만, MAC 주소는 실제 주소를 사용하게 된다.
스탠바이 장비가 액티브 상태가 되면 GARP 패킷을 보내 액티브 장비가 변경되었음을 알려준다.
※ 하지만 요즘은 패킷을 가로채는 기법이 많이 사용되어 가상 MAC을 사용하는 HA 솔루션을 사용한다고 함!
3. 고가용성 용도의 클러스터링과 FHRP(VRRP, HSRP)
실제 MAC 주소를 사용하지 않고, 가상 MAC을 사용하는 클러스터링, VRRP, HSRP와 같은 FHRP(First Hop Redundancy Protocol)에서 사용된다.
클러스터링, FHRP는 네트워크에 있는 스위치 장비의 MAC 테이블 갱신을 목적으로 한다.
* VRRP와 HSRP는 FHRP의 일종으로, 디폴트 게이트웨이에 장애가 발생할 경우, 해당 네트워크에 속한 단말이 외부 네트워크로 통신할 수 없는 문제를 해결하기 위해 개발되었음
RARP(Reverse ARP)
- 상대방의 IP 주소를 알아내기 위해 사용되는 프로토콜
- 이름 그대로 MAC 주소를 알아내기 위한 ARP의 반대, IP 주소를 알아내기 위해서 사용된다.
- 결국 RARP는 IP 주소가 정해져 있지 않은 단말이 IP를 할당해주는 서버에 무슨 IP를 써야하는지 물어볼 때 사용된다. → 서버에 할당 요청
- 하지만 현재는 BOOTP와 DHCP로 대체되어 사용되고 있지 않다.
'네트워크' 카테고리의 다른 글
스위치::2계층 장비 - 1 (플러딩, 어드레스 러닝, 포워딩/필터링) (0) | 2024.11.15 |
---|---|
네트워크 통신하기 - 5 (서브넷, 게이트웨이, L2/L3) (0) | 2024.11.15 |
네트워크 통신하기 - 3 (TCP, UDP) (0) | 2024.11.10 |
네트워크 통신하기 - 2 (MAC 주소, IP 주소) (0) | 2024.11.10 |
네트워크 통신하기 - 1 (유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스트) (0) | 2024.11.08 |