본문 바로가기
C++ 200제/코딩 IT 정보

RARP 네트워크 서버 포맷 패킷과 사용자 프로세스 알아보기

by vicddory 2017. 11. 28.

RARP 네트워크 서버 포맷 패킷과 사용자 프로세스 알아보기


RARP Introduction

RARP는 로컬 디스크에 있는 시스템이 부트스트랩 상태에 있을 때, 일반적으로는 디스크에 있는 환경 파일로부터 자신의 IP 어드레스를 얻는다. 그러나 X 터미널 또는 디스크가 없는 워크스테이션과 같이 디스크가 없는 시스템에서 RARP는 IP 어드레스를 얻는 다른 방법이 필요하다.


RARP 네트워크에 있는 각각의 시스템은 네트워크 인터페이스 제조사에 의해 할당된 자신만의 유일한 하드웨어 어드레스를 갖는다.


RARP의 원리는 디스크가 없는 시스템에서 인터페이스 카드로부터 자신만의 유일한 하드웨어 어드레스를 읽어서 누군가가 디스크가 없는 시스템의 IP 어드레스를 응답(RARP reply)하도록 요청하는 RARP request(네트워크에 브로드캐스트 함)를 보내는 것이다.


개념은 간단하지만 이장의 뒷부분에서 설명된 이유로 구현하기에는 ARP보다 어렵다. RARP의 공식적인 스펙은 RFC 903[Finlayson et al. 1984]이다.



RARP Servers as User Process



RARP Packet Format

RARP 패킷의 포맷은 ARP 패킷(아래 그림)과 거의 같다.


RARP Packet FormatRARP Packet Format


유일한 차이점은 RARP request와 reply의 frame type이 0x8035라는 것이다. 그리고 op field는 RARP request일 때는 3의 값을 갖고 RARP reply일 때는 4의 값을 갖는다. ARP와 마찬가지로, RARP request는 브로드캐스트되고 RARP reply는 일반적으로 unicast된다.




RARP Server Design


RARP Server Design

RARP의 개념은 간단했지만, RARP 서버를 디자인하는 것은 시스템에 의존적이며 복잡하다. 반대로 ARP 서버를 제공하는 것은 간단하며 일반적으로 커널에 있는 TCP/IP 프로그램의 일부이다.


커널은 자신의 IP 어드레스와 하드웨어 어드레스를 알고 있으므로, 자신의 IP 어드레스 중 하나에 대한 ARP request를 수신하면, 그에 대한 하드웨어 어드레스로 응답한다.




RARP 서버 개념 등


RARP Servers as User Process

RARP 서버의 복잡성은 일반적으로 서버가 많은 호스트(네트워크에 있는 모든 디스크 없는 시스템)에 대해서 하드웨어 어드레스로부터 IP 어드레스로의 매핑을 제공하는 것이다. 이러한 매핑은 disk file(Unix 시스템에서는 일반적으로 /etc/ethers에 있다)에 담겨있다.


커널은 일반적으로 disk file을 읽는다든지 분석하지 않기 때문에 『RARP 서버의 기능』은 커널의 TCP/IP 프로그램의 일부가 아니라 user process로 제공된다. 좀 더 복잡한 문제는 RARP request는 특정한 이더넷 프레임 type field를 갖는 이더넷 프레임으로 전송된다는 점이다.

  • 이것은 RARP 서버가 이러한 타입의 이더넷 프레임을 송수신할 방법을 가져야 한다는 것을 의미한다.




Multiple RARP Servers per Network

또 다른 복잡한 문제는 RARP request는 아래 그림에 있는 바와 같이 hardware-level의 브로드캐스트로 보내진다는 점이다. 이것은 그것들이 라우터에 의해 포워드 되지 않는다는 것을 의미한다.


RARP 호스트가 다운되더라도 디스크 없는 시스템이 bootstrap 하도록 하기 위해, 일반적으로 하나의 네트워크(즉, 하나의 케이블)에 여러 개의 RARP 서버가 제공된다.


RARP Servers as User ProcessRARP Servers as User Process


서버의 수가 증가함에 따라서, 네트워크의 트래픽도 증가한다.


왜냐하면, 모든 서버가 『모든 RARP request』에 대해 RARP reply를 보내기 때문이다.


RARP request를 보내는 디스크 없는 시스템은 일반적으로 맨 처음 수신한 RARP reply를 사용한다. (ARP에서는 이러한 문제가 발생하지 않았다. 왜냐하면 하나의 호스트만이 ARP reply를 보내기 때문이다.) 게다가 각각의 RARP 서버가 거의 같은 시각에 응답을 시도하는 경우가 있으므로 이더넷에서 충돌이 발생할 가능성이 증가한다.


RARP 네트워크 서버 포맷 패킷과 사용자 프로세스 알아보기

댓글