네트워크/네트워크

ARP(Address Resolution Protocol), RARP, GARP

비니화이팅 2018. 1. 14. 01:12

ARP(Address Resolution Protocol)

- IP Address를 MAC Address로 매핑하는 데 사용되는 프로토콜이다.


RARP(Reverse Address Resolution Protocol)

- MAC Address를 IP Address로 매핑하는 데사용되는 프로토콜이다.

 - IP호스트가 자신의 MAC Address는 알지만 IP Address를 모르는 경우에 서버로부터 IP주소를 요청하기 위해 사용한다. 


[ARP, RARP 패킷 구조]

Hardware Type (2 Byte)

Protocol Type (2 Byte)

Hardware Length (1 Byte)

Protocol Length (1 Byte)

Operation (2 Byte)

Sender Hardware (MAC) Address (6 Byte)

Sender Protocol(IP) Address (4 Byte)

Target Hardware (MAC) Address (6 Byte)

Target Protocol (IP) Address (4)

 

① Hardware Type

- 하드웨어 주소의 유형

Value

Hardware Type

1

Ethernet

15

Frame Relay

17

HDLC


② Protocol Type

- 매핑 대상인 프로토콜 주소의 유형

Value

Protocol Type

0800

IP

X.25

0805


③ Hardware Length

- 하드웨어 주소의 길이(byte)


④ Protocol 

- 프로토콜 주소의 길이(byte)


⑤ Operation

- 동작 유형

Value

Operation

1

ARP Request

2

ARP Reply

3

RARP Request

4

RARP Reply


⑥ Sender Hardware (MAC) Address

- 송신자의 MAC Address


⑦  Sender Protocol (IP) Address

- 송신자의 IP Address


⑧ Target Hardware (MAC) Address

- 수신자의 MAC Address


⑨ Target Protocol (IP) Address

- 수신자의 IP Address



[ARP 패킷 분석]

 -> CentOS

 - IP : 192.168.0.10

 - MAC :  00:0C:29:7A:1B:9E


-> WindowsXP

 - IP : 192.168.0.20

- MAC : 00-0C-29-63-C1-EC


-> 우선 WindowsXP에서 ARP 테이블을 확인한다.

- arp -a : arp 테이블 확인

- 아직 아무 정보도 저장돼있지 않다.


-> 이상태에서 CentOS로 Ping한다.


-> 다시 ARP 테이블을 확인하면 CentOS에 대한 ARP정보가 저장돼있다.

- 통신을 하기 위해서는 MAC주소가 필요하다. 따라서 ARP프로토콜을 이용하여 WindowsXP가 CentOS의 MAC주소를 알아내서 ARP 테이블에 저장하고 Ping을 한다.

- ARP 테이블에 CentOS의 정보가 등록된 상태에서 Ping을 할때는 ARP프로토콜를 사용하지 않는다.

- 참고로 ARP에 저장된 정보는 일정 시간이 지나면 삭제된다.


-> 그럼 이제부터 ARP 패킷을 분석해본다.

- 아래는 wireshark로 패킷을 캡처한 모습이다.

- ARP 패킷이 발생한 후 ICMP(Ping은 ICMP프로토콜을 사용)패킷이 발생한 것이 보인다.


(5)-> WindowsXP은 192.168.0.10(CentOS)주소로 Ping을 하고 싶은데 192.168.0.10주소의 MAC Address를 모르는 상태이기 때문에  MAC주소를 알아내기 위해 Target IP에는 192.168.0.10주소채우고 Target MAC에는 0으로 채워(모르기 때문에) 브로드캐스트한다.

- 이 패킷을 받은 CentOS도 WindowsXP의 MAC주소를 자신의 ARP Table에 저장한다.


(6)-> CentOS는 WindowsXP에게 Sender MAC에 자신의 MAC Address를 채워서 유니캐스트한다.


(7)-> 이제 CentOS의 MAC Address를 알았으니까 Ping을 보낸다.


-> CentOS에서 WindowsXP로 응답을 보낸다.


GARP(Gratuitous Address Resolution Protocol)

- ARP 프로토콜의 특수한 형태이다.


[ GARP의 목적]

1. IP 주소 충돌 감지

- 호스트에서 자신의 IP주소를 타겟으로 하여 ARP 요청을 보내고 만약 다른 호스트에서 이에 대한 응답이 있다면 이미 해당 IP주소를 사용하고 있는 호스트가 존재하고 있음을 알 수 있다.

2. ARP 테이블 캐시 갱신

- 누군가가 GARP 패킷을 보내면 이를 수신한 호스트는 GARP 패킷의 Sender MAC과 Sender IP필드로 자신의 ARP 테이블을 갱신한다.


[GARP 패킷 분석] 

 -> Windowx XP

 - IP : 10.10.10.10

 - MAC :  00-0C-29-34-BD-87


-> Windows 2000 Server

 - IP : 10.10.10.20

- MAC : 00-0C-29-22-44-A2


- 아래는 Windowx XP에서 IP주소를 10.10.10.20으로 바꾼 상황을 캡쳐한 것이다.


(2)-> XP는 20으로 주소를 바꾸기 위해 20 주소를 가지고 있는 호스트가 있는지 알아보기 위해 20을 Target과 Sender로 하여 브로드캐스트한다.


(3)-> 그러면 20의 주소를 가지고 있는 Windows 2000 Server가 유니캐스트로 응답한다.(응답이 없으면 해당 IP를 갖는 호스트가 없는 것으로 간주한다.)


(4)-> 또 20의 주소를 가지고 있는 Windows 2000 Server가 자신과 같은 20의 주소를 가진 호스트가 있는지 알아보기 위해 Sender와 Target의 IP주소를 20으로 설정하여 패킷을 보낸다.

- 아직 Windowx XP는 20의 주소를 할당받은 것이 아니기 때문에 해당 패킷에 대한 응답이 돌아오지 않는다.


(6)->


(7)->


(8)->