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 - 매핑 대상인 프로토콜 주소의 유형
③ Hardware Length - 하드웨어 주소의 길이(byte) ④ Protocol - 프로토콜 주소의 길이(byte) ⑤ Operation - 동작 유형
⑥ 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)->