[NW] Use of ARP

Computer Networks 2013. 6. 21. 02:28

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


그렇다. 이번 포스팅에서는 앞에서 예고했듯이 ARP의 쓰임에 대해서 이야기 해보고자 한다. ARP는 이전 포스팅에서 이야기 했을 때 모든 통신이 이루어지기 시작할 때 기본적으로 PC가 알고 있는 IP에 대한 MAC 주소를 알기 위해서 사용한다.

그런데 ARP라는 것이 비단 이 때만 쓰이는 것이 아니다. ARP를 응용해서 Inverse ARP, Reverse ARP 등등 여러가지 다른 형태의 ARP가 있는데 이것들의 쓰임을 알아보자.

Inverse ARP는 우선 생략하고자 한다. 이것은 전화 네트워크에서 나오는 개념으로 PC 네트워크를 논하고 있는 지금 이 블로그의 성격과 거리가 조금 있고 네트워크를 처음 접하는 초보자들의 눈높이를 고려했을 때 개념을 혼동시킬 확률이 많다고 생각되어 이 부분에 대한 논의는 잠시 접어두기로 하자. 혹은 영원히 접어둘지도 모른다.(알고 싶으시다면 위의 메일로 메일 주세요)

Reverse ARP 부터는 공부를 해볼 필요가 있다.



아래의 그림을 보면 DHCP 서버를 사용하고 있다는 정보를 볼 수 있을 것이다. DHCP 란 무엇일까?

Dynamic Host Configuration Protocol (http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)

The Dynamic Host Configuration Protocol (DHCP) is a network protocol used to configure devices that are connected to a network (known as hosts) so they can communicate on that network using the Internet Protocol (IP). It involves clients and a server operating in a client-server model.


위키피디아를 참고해보면 DHCP는 네트워크에 연결되어있는 장비들의 네트워크 프로토콜을 설정하는 프로토콜이라고 한다. 즉 요즘의 네트워크에서는 보통 IP를 네트워크 프로토콜로 사용하기 때문에 IP를 할당해주는 프로토콜 정도로 이해하면 된다.


DHCP를 사용하는 PC들 같은 경우 PC를 재부팅할 때마다 IP가 바뀔 가능성이 있다. 바로 DHCP 서버가 당신의 IP를 할당해주기 때문이다. 자, 여기서 조금만 생각해보면 내가 왜 Reverse ARP를 이야기 하다가 갑자기 DHCP를 이야기 하는지 알 수 있을 것이다. 바로 MAC 주소로부터 IP 주소를 얻어낼 때 Reverse ARP (RARP)를 사용한다. 말 그대로 ARP의 역방향 동작이다.


조금 구체적으로 알아보자. RARP는 다음과 같이 동작한다. 아래의 6대의 PC를 보자.


RARP 서버는 위의 테이블 정보를 가지고 있다. 즉, IP address와 MAC address가 이미 매핑되어있는 상태에서 서비스를 시작한다. 모든 PC가 꺼져있는 상태에서 PC0가 켜졌다. 부팅을 하는 과정에서 RARP 서버와의 통신이 일어난다.(참 빨리 통신이 일어난다. 우리도 모르는 사이에) 이 때 PC0의 MAC address가 RARP 요청 패킷을 통해 전송된다. (물론 RARP 요청 패킷은 broadcast를 통해 전송된다.) RARP 요청 패킷을 받아본 RARP 서버는 패킷에서 MAC address를 확인한 후 자기가 가지고 있는 테이블과 매핑되는 IP가 있는지 확인한다. 


000A.4181.2029?? 아!! 10.10.123.100이네~


이와 같이 작동한다는 것이다. 따라서 PC0는 정상적으로 자기에게 매핑되어있는 IP인 10.10.123.100을 갖게 된다. 이것이 바로 RARP 서버의 동작원리이며 DHCP가 나오기 이전부터 사용되던 방식이다. 이 방식은 지금은 잘 사용되지 않는다. RARP는 subnet mask나 사용가능한 라우터 또는 그 이외의 것들을 지원하지 않는다고 한다. 그래서 나온 것이 DHCP이다.


이제 DHCP를 논해보자. DHCP와 RARP의 가장 큰 차이점은 이것이다. RARP는 IP와 MAC이 매핑되어있는 반면, DHCP는 단지 MAC address와 그 DHCP 서버가 할당해줄 수 있는 IP 대역(예를 들어, 10.10.0.2 - 10.10.0.254까지)을 가지고 있을 뿐이다. IP 대역에 맞는 것이라면 어떤 IP도 할당해줄 수 있다는 것이다. 


여기서 잠깐, 아까 예를 들었을 때 10.10.0.2 - 10.10.0.254까지라고 이야기 했는데 그렇다면 10.10.0.0, 10.10.0.1, 10.10.0.255는 안 쓴다는 것인가? 정답은 거의 대부분 못 쓴다이다. 대역을 나타내는 IP가 10.10.0.0이고 10.10.0.1과 같이 보통 1로 끝나는 IP들은 게이트웨이일 가능성이 매우 높다. 마지막으로 10.10.0.255는 알지? broadcasting 용이다. 해당 LAN에 있는 모든 PC가 255로 끝나는 IP로부터 패킷을 받으면 이 패킷은 broadcasting 패킷이므로 CPU는 적어도 자기가 읽어볼 필요가 있는 패킷이라는 것은 안다.


다시 DHCP 이야기로 돌아오자. 


DHCP는 네 가지 과정으로 이루어져 있다.

1. DHCP DISCOVER

2. DHCP OFFER

3. DHCP REQUEST 

4. DHCP ACK


DHCP DISCOVER

DHCP 서버를 찾는 과정이다. 어떻게 찾을까? 전수 조사이다. Broadcast 메세지를 보낸다. 이 때는 IP가 할당이 되어있지 않다. 그렇지만 같은 네트워크이고 LAN 카드가 제데로 되어있기 때문에 2계층에서 통신이 가능하다. 즉 MAC address로 통신이 가능하다. 아무튼 이 과정에서 모두에게 "DHCP 서버는 응답하라. 나 IP좀 줘라" 라는 메세지를 보낸다. 아래의 패킷이 DHCP DISCOVER 패킷이다.



3계층 IP부분을 보면 자기의 IP는 모르기 때문에 0.0.0.0으로 세팅되어 있고 목적지도 255.255.255.255.로 세팅되어있다. 2계층 부분은 이전에 설명한 그대로 작동한다.


DHCP OFFER

DHCP 서버가 클라이언트 PC에게 응답을 하는 것이다. 이 때 DHCP 서버는 사용가능한 IP를 할당해서 클라이언트에게 응답을 한다. 이 과정에서는 IP 계층의 출발지와 도착지 주소가 채워진다.



위의 그림 중에서 가장 상위 계층 프로토콜인 Bootstrap 프로토콜이 클라이언트에게 요청할 IP를 가지고 있다. Bootstrap 프로토콜에 대해서는 다음에 설명할 기회가 있다면 하도록 하겠다. (안 할 수도 있어용)


DHCP REQUEST

이제 우리가 기다리던? REQUEST 하는 부분이 나온다. 이 부분은 정확히 말하면 요청하는 부분이라기 보다는 확인시켜주는 과정이랄까? DHCP DISCOVER에서 broadcast 주소(255.255.255.255)를 사용하여 요청을 보내면 그 LAN에 속해있는 모든 PC가 DISCOVER 패킷을 받게 된다. 이 말인 즉, DHCP OFFER 패킷을 한 개 이상 받을 수도 있다는 것이다. 여러 개의 DPCP OFFER를 받았으면 그 중에 한 개만 선택해야 하지 않나? 바로 그 과정이다. 여러 개의 DHCP OFFER 패킷을 받았을 경우 그 중 하나를 선택해서 "나 이 서버가 준 IP를 쓸께"라고 얘기 해주는 것이다. 


DHCP ACK

DHCP ACK 패킷은 한 마디로 서버가 클라이언트에게 "그래 알겠어"라고 대답을 해주는 과정일 뿐이다. 중요한 것은 이 ACK 패킷 이후의 패킷은 아까전의 DHCP DISCOVER 패킷에서처럼 출발지가 0.0.0.0이 아니라는 것이다. 이 이후의 패킷들은 할당받은 IP 주소를 사용하여 통신을 한다는 것이다.


위의 과정을 전체적으로 한번 봐보자.



위의 그림에서 98 104 105 106번 패킷이 위에서 설명한 4가지의 패킷이다. 그리고 107번을 봐라. 출발지 IP가 제대로 세팅되어있다는 것이 확인되었다.


이 정도면 어느 정도 ARP가 언제 어떻게 적용되고 있는 프로토콜인지 잘 설명한 것 같다. 따라서 이제 IP 얻는 방법도 알아냈으니 IP를 공부해보자. 나도 정리를 조금 하고 포스팅을 해야하기 때문에 다음 포스팅은 조금 시간이 걸릴지도 모른다.

'Computer Networks' 카테고리의 다른 글

[NW] Internet Protocol in detail  (0) 2013.07.28
[NW] Internet Protocol  (0) 2013.07.26
[NW] Packet structure  (0) 2013.06.16
[NW] Address Resolution Protocol (ARP)  (2) 2013.06.13
[NW] Media Access Control (MAC)  (0) 2013.06.13
Posted by 빛나유
,