네트워크

통신프로토콜(ARP/RARP)(1)

딜레이라마 2017. 4. 2. 20:12
반응형

1.ARP, RARP, InvARP, Gratuitous ARP

① ARP : ARP란 Address resolution protocol의 약자로서 ip는 알지만 Ethernet address를 모를 때 사용하는 방법으로 ip를 가지고 Ethernet address를 찾아내는 방법이다. ARP의 동장 원리는 내부 네트워크에서는 알아내고자 하는 ip의 MAC address를 ARP 패킷에 실어 broadcast망으로 모든 host에 대하여 송신한다. 수신 받은 host들이 이 패킷을 확인 하여 자신의 ip인지 아닌지 확인히 자신의 ip가 아니면 이 ARP 패킷은 버리게 되고 자신의 ip이면 ARP 패킷에 자신의 MAC address를 실어 송신자에게 송신한다. ip를 알아내고자 ARP 패킷을 만들어 broadcast망으로 송신하는 Message를 ARP Request Message라고 하며 해당 ip주소를 가진 host가 송신자에게 MAC address를 싫어 보내는 Message를 ARP Reply Message라고 한다.

 또, 라우터를 거치는 외부망에 존재하는 ip에 대한 MAC address를 알아내기 위해서 ARP Request Message를 보내면 라우터에서는 Ethernet Header를 열어 ip가 수신 받는 라우터 포트의 ip(라우터의 각 포트 에도 ip주소가 각각 할당되어 있다.)와 같은지 다른지 확인한다. 라우터 포트에 할당되어 있는 ip주소와 알아내고자 하는 MAC address를 가진 ip주소는 다르기 때문에 라우터에서는 버리게 되는데(라우터가 다시 Ethernet Header를 붙여 broadcast망으로 송신하게 되면 수 많은 ARP Request Message가 송신되게 되고 네트워크 망은 매우 복잡해 질 것 이다.) 이를 방지 하기 위해 송신측은 자신의 subnet mask와 목적지 ip주소를 subnetting하여 subnet 주소(네트워크 주소)를 구한후 자신의 네트워크 주소와 다르면 송신측은 자신의 기본게이트웨이 주소(라우터 포트에 할당되어 있는 ip 주소)로 ARP Request Message를 송신한다. 그럼 수신한 라우터는 Ethernet Header를 떼서 안에있는 ip(알아내고자 하는 ip)를 확인 후 해당 포트로 라우팅되어 그 해당 포트에서 Ethernet Header를 붙인 후 알아내고자 하는 ip를 가진 host에 도착하게 된다. 그 후 목적지에서는 자신의 MAC Address를 ARP Reply Message에 실어 송신측에 송신하게 된다. (* Ethernet Header는 라우터를 거칠 때 마다 떼어지고 붙여지고 반복한다.)송신측에서는 도착한 ARP Reply Message를 열어 MAC address를 확인 후 테이블안에 저장해놓는다. 다음에 MAC주소를 불필요한 ARP를 하지 않고 알아내기 위해 테이블안에 저장해놓으며(만약 없으면 다시 ARP를 한다.) 저장된 List들은 일정 시간 흐른 후에도 그 해당 ip주소와 Ethernet에서 패킷이 오지 않으면 테이블안에서 그 항목을 삭제 한다.

 ② RARP : Reverse ARP로 ARP의 반대의 기능을 하는 protocol이다. ARP는 ip주소는 알지만 Ethernet address를 모를 때 사용하는 protocol인 반면 RARP는 자신의 Ethernet address을 RARP Request Message에 실어 Server에 송신하게 되면 Server에서는 수신받은 RARP Request Message를 열어 안에있는 Ethernet address를 확인 후 그에 해당하는 ip주소를 RARP Reply Message에 실어 송신측에 송신한다. RARP의 단점이 있는데 RARP는 ip주소외의 정보(기본 게이트웨이주소와 DNS 주소 정보)는 알려주지 않고, 라우터를 지나다닐 수 없다.

 ③ InvARP : InvARP는 위의 RARP와 마찬가지로 Ethernet address는 알지만 ip주소는 모를 때 사용하는 방법이다. 하지만 차이점이 있다면 RARP는 자신의 Ethernet address를 가지고 자신의 ip주소를 알아내는 방법이지만 이 InvARP는 상대방의 Ethernet address를 가지고 상대방의 ip주소를 알아내는 방법이다.

 ④ Gratuitous ARP : Gratuitous ARP는 자신의 ip와 중복되는 ip를 찾을 때 사용하는 프로토콜로 내부 망에서 자기 자신의 ip 주소로 ARP Request Message를 broadcast망으로 송신하면 내부 망에 있는 host들이 이 ARP Request Message를 수신하게 된다. 이때 수신 받은 host들은 자신의 ip주소와 같은지 다른지 확인 후 다르면 수신 받은 ARP Request Message를 버린다. 만약 host들 중에 같은 ip를 사용하는 host가 있으면 그 host에서 ARP Reply Message를 송신측에 송신하게 되고 송신측은 수신 받은 ARP Reply Message로 자신의 ip와 중복된 ip를 가진 host가 있는 것을 알 수 있다.

 

2. ARP 명령어 실행 실습

 ① arp -a 명령어는 사용 중인 컴퓨터에 저장되어있는 ARP테이블을 보여주는 기능을 하는 명령어 이다.

 

②  arp –d 명령어는 저장되어 있는 ARP테이블안에 있는 List를 삭제하는 기능을 하는 명령어이다 ex) arp-d 192.168.52.11

 

 ftp명령어: 삭제한 ip 192.168.52.11에 대한 MAC address 알아내기 위하여 ftp 192.168.52.11 명령어를 사용하였다. 여기서 사용된 ftp명령어는 File Transfer Protocol의 약자로서 입력하는 파일을 전송할 때 사용하는 프로토콜이다. CMD창에서 ftp명령어는 입력하는 ip주소를 가진 host와 연결을 하는데 이때 Request Message를 broadcast망으로 보내고 수신측은 Request Message를 수신하면 Reply Message에 MAC address를 실어 전송하게 된다. 이렇게 MAC address를 알아 내어 연결을 하면 192.168.52.11에 대한 MAC address를 ARP 테이블 안에 저장 시킨다.

 

④ arp/?를 이용하여 arp명령어가 arp-a, arp-d외에 다른 기능이 무엇이 있는지 확인하였다.

 

 

3. 실습실 내의 컴퓨터 간의 ARP 패킷 수집 실습

 

 ⦁ router를 거치지 않는 경우의 ARP 실습

 

 

① ARP 테이블안에 있는 List들을 모두 삭제하는 명령어인 arp –d를 입력하고 테이블 안에 있는 정보들을 보여주는 arp –a를 사용하여 저장되어 있는 List들이 없는 것을 확인 하고 난 후 ftp 192.168.52.11에 접속을 하기 위해 ARP동작을 하여 ARP 테이블 안에 List가 추가 된 것을 확인 할 수 있다.

 

 

② ftp 192.168.52.11 명령어를 실행 한 직후 wireshark에 수집되는 패킷들 중에서 filtering을 통하여 수집한 ARP Request Message이다. 이 패킷을 보면 Sender IP address란 항목에서 알 수 있듯이 이 항목은 송신하는 컴퓨터 즉 명령어를 실행한 컴퓨터의 ip주소이고 Sender MAC address는 송신하는 컴퓨터의 Ethernet address이다. 그리고 Target IP address항목에서 알 수 있듯이 ARP Request Message를 수신하는 컴퓨터 즉 상대방의 컴퓨터 ip주소이다. 그리고 Target IP address항목에서 알 수 있듯이 ARP Request Message를 수신하는 컴퓨터의 Ethernet address는 모르는 것을 알 수 있다.

 

  수신측에서 ARP Request Message를 수신한 후 송신측에 송신한 ARP Reply Message이다. 이 Reply Message에서 보면 Sender MAC Address, Sender IP address, Target MAC address, Target IP address 항목이 아까 ARP Request Message에 있던 항목과 다른 것을 알 수 있다. 이 Reply Message는 수신측이 송신측에게 자신의 Ethernet address를 보내기 위한 패킷인데 여기서 보면 Target MAC address와 Target IP address 항목이 아까 Request Message의 주소 정보와 같다는 것을 알 수 있다. 왜냐하면 이 Reply Message는 Request Message와는 반대로 수신측이 송신측에게 송신하는 패킷이기 때문이다. 그리고 Sender IP address는 자기 자신 즉, Request Message에서 Target IP address에 해당하는 정보가 들어있다. 그리고 Sender MAC address는 Request Message를 수신한 host에 대한 Ethernet address이다. 이렇게 내부 망 ip주소에 대하여 Ethernet address를 알 수 있다

 

 

 

4. 외부 server 접속 시의 ARP 패킷 수집 실습

 ⦁ router를 거치는 경우의 ARP 실습

 

 arp –d 로 ARP 테이블을 삭제 후 arp –a명령어로 ARP 테이블안에 List가 없는 것을 확인 하였다. 그 후 ftp 명령어로 ftp.kaist.ac.kr에 연결 하여 Request와 Reply가 실행 되도록 한 후 ARP테이블에 List가 추가 된 것을 확인 하였다.

 

 이 그림은 ipconfig/all명령어의 실행모습이다. 이 그림에서 알 수 있듯이 192.168.52.1이 기본 게이트웨이 주소 인 것을 알 수 있다. ARP 테이블에 ftp.kaist.ac.kr의 ip주소와 MAC address가 없고 기본게이트웨이 ip주소와 MAC address가 저장되어 있는 이유는 ftp.kaist.ac.kr은 외부 망 ip주소이기 때문에 송신측에서 Ethernet Header에 수신 받는 라우터포트에 할당된 ip주소를 넣어 라우터에서 라우팅 후 외부 망 ip주소에 할당되어 있는 라우터포트에서 Request Message를 송신하여 MAC address를 알아내기 때문에 송신측에서 보내는 Request는 라우터까지 가게 되고 라우터에서 Reply Message를 송신 한다. 그리고 이 Reply Message에 포함된 라우터포트에 해당되는 ip주소(기본 게이트웨이 주소)인 192.168.52.1에 대한 MAC address로 ARP 테이블에 저장시킨다.

 

 위 그림은 외부 망인 ftp.kaist.ac.kr에 접속할 때 발생하는 ARP Request Message 패킷이다. 이 패킷을 보면 Sender IP address와 Sender MAC address는 해당 컴퓨터의 ip주소와 MAC address인 것을 알 수 있고,  Target IP address는 라우터포트에 할당되어 있는 ip주소로 기본게이트웨이 주소 인 것을 알 수 있다. 그리고 라우터포트의 MAC address는 모르기 때문에 Target MAC address는 비어 있다.

 

  위 그림은 위부 망인 ftp.kaist.ac.kr에 접속 할 때 발생하는 ARP Request Message에 대한 ARP Reply Message 패킷 이다. 이 패킷은 외부 망에 접속 할 때 발생하는 Request에 대한 Reply이기 때문에 라우터포트에서 라우터포트에 할당되어있는 ip에 대한 MAC address를 Reply에 실어 해당 컴퓨터로 송신 하여야 하기 때문에 Target IP address와 Target MAC address와 해당 컴퓨터의 ip와 MAC address의 정보이며 Sender IP address는 라우터포트에 할당되어 있는 ip 즉, 기본게이트웨이 주소이며 Sender MAC address는 라우터포트에 할당되어 있는 ip에 대한 MAC address이다.



반응형