제임스딘딘의
Tech & Life

개발자의 기록 노트/Embedded Linux

[네트워크/프로토콜] BOOTP 에 대해서. BOOTP란? BOOTP 특성?

제임스-딘딘 2016. 12. 30. 02:19

BOOTP란? (bootstrap protocol)


Bootp는 TCP/IP상에서 자동 부팅을 위한 최초의 표준프로토콜이다.

디스크 장치가 없는 클라이언트를 구동시키기 위한 목적으로 개발되었다.

여기서, 디스크 장치가 없는 클라이언트라고 하면, 과거 Unix머신과 연결해서 사용하던 'X터미널' 과 같은 장비쯤 되시겠다.

이 터미널 장비는 디스크 장치가 없으므로, 장치의 설정정보를 저장할 곳이 마땅치 않게된다. 


그러니깐, 디스크 장치를 가지고 있는 Main Unix머신이 이 정보를 가지고 있다가, X터미널이 실행되고 Unix머신에게 연결하려고 신호를 보내면, Unix머신은 Bootp 서버를 이용해서 X터미널에게 이런 정보들을 알려주게 된다.

그러면 X터미널은 BOOTP클라이언트 쯤이 된다.

정확하게 말하면 클라이언트는(X터미널) BOOTP를 통해 3가지 정보를 제공받는다.


  1. IP주소
  2. 부트 파일이 있는 서버 이름
  3. 부트 파일 이름

하위 프로토콜로 UDP와 IP 프로토콜을 사용한다.


사실 BOOTP는 지금은 거의 사용되지 않는 구형 프로토콜이긴 하다.

이후 좀더 진보된 네트워크 관리 프로토콜이 DHCP의 기반이 된다.

게다가, BOOTP - DHCP가 완벽호환 되는 특징이 있어서,  BOOTP 클라이언트가 DHCP 서버와 통신이 가능하다.


만약 당신이 DHCP를 들어본적이 없다면, 당장은 간단히 설명하겠다.

DHCP는 '내가 누구?, 여긴 어디?' 에 대한 정보를 주는 프로토콜 쯤으로 이해해두자. 

즉, IP address, subnet mask address, DNS address, gateway address 와 같은 네트워크 그룹에 가입하기 위해 필요한 정보나, domain상에서 통용되는 터미널의 이름 등..을 전달해 준다고 보면 된다.


임베디드 개발보드에서는 tftp와 함께 사용되곤 한다.

즉, Bootloader에서 Kernel과 파일시스템 Image를 Host PC에서 Target board로 다운로드할 때, Host PC에 연결하기 위한 정보가 필요한데,

Bootp를 이용하면 Target board의 IP와 Host에 대한 정보를 Host PC에서 가져올 수 있도록 하는게 가능하다.



BOOTP 특성

몇가지 특성을 알면, BOOTP를 깊게 이해하는데 좀 더 수월할 것이다.


BOOTP는 클라이언트 - 서버 구조로 동작한다.


그리고 정적인 주소 설정 방식을 사용한다.

여기서 '정적인 주소 설정 방식' 이 무엇이냐면, 관리자에 의해 미리 정의되어있는 '물리주소 - IP주소' 간 매핑 테이블을 사용하는 방식이라고 생각하면된다.


또한 UDP에 의해 캡슐화 되고, 보통 TFTP와 함께 동작한다.

클라이언트 요청은 UDP 포트 68로 전달되고, 서버 응답은 UDP 포트 67로 전달된다.

요청메세지는 브로드캐스트로 전송되며, Source IP Address는 0.0.0.0 , Destination IP Address는 255.255.255.255 로 설정한다.


UDP로 전달되는 메세지 유실에 대한 대비책으로써, 재전송(Retransmission)과 시간초과(Timeout) 정책을 이용한다.

주소 설정 방식과, 재전송 등에 대해서는 아래 세부섹션에서 좀더 살펴보자.




BOOTP 의 RFC document

만약, 당신이 굉장히 네트워크에 관심이 많은 사람이어서, 

BOOTP에 대해 자세히 알고 싶다면 RFC 951와 RFC 1542를 참고하기 바란다.


일반적으로 RFC문서는 아래 주소에서 찾을 수 있다.


RFC문서 검색기 페이지 : https://www.rfc-editor.org/search/rfc_search.php




귀찮다면, 아래를 다운받자.


RFC 951 -- The Bootstrap Protocol (BOOTP) (ftp://nic.ddn.mil/rfc/rfc951.txt)

rfc951.txt


RFC 1542 Clarifications and Extensions for the Bootstrap ProtocolClarifications and Extensions for the Bootstrap Protocol

rfc1542.txt




또한, IETF라는 기구가 있다. '국제 인터넷 표준화 기구' 쯤으로 해석한다.

IETF는 Internet Engineering Task Force의 머릿글자이다.

이는 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 인터넷 표준화 작업기구이다.

계속 관심이 간다면, 아래 홈페이지에서 rfc에 대한 몇몇 정보를 찾아보자.


IETF Homepage : http://www.ietf.org/rfc.html






Tftp 란


TFTP (Trivial File Transfer Protocol) 은 FTP와 같은 파일 전송 프로토콜이다.

하위 프로토콜로 IP, UDP프로토콜을 사용한다.

개발보드에서는 Bootloader에서 Kernel과 파일시스템 Image를 Host에서 Target으로 이더넷을 통하여 고속으로 다운로드하기 위해 사용한다.



Bootp와 Tftp를 활용한 개발보드의 초기 부팅방법


구체적인 활용 방법에 대해서는 기회가 된다면 내용을 추가하도록 하겠다.