본문으로 바로가기
728x90
반응형

안녕하세요. letitkang입니다.


오늘 공부해볼 프로토콜은 BOOTP 프로토콜입니다.


'Network Protocols Handbook의 pdf파일'을 참고하고 있습니다.


BOOTP 프로토콜은 TCP/IP 프로토콜이며 7계층인 application 계층입니다.


자세한 내용을 보시려면 RFC951(https://tools.ietf.org/html/rfc951)을 보시면됩니다.


 

 

 



먼저 NetworkProtocolsHandbook.pdf 파일에 있는 설명을 아래와 같이 정리해 보았습니다.


BOOTP 프로토콜은 부팅 호스트가 사용자의 관리 없이 동적으로 구성할 수 있게 해주는 UDP/IP 기반의 프로토콜입니다. BOOTP 프로토콜은 지정된 IP 주소, 부트 서버 호스트의 IP 주소 및 메모리에 로드되어 실행될 파일의 이름을 호스트에 알리는 수단을 제공합니다. 로컬 서브넷 마스크, 로컬 시간 오프셋, 기본 라우터의 주소 및 다양한 인터넷 서버의 주소와 같은 기타 구성 정보는 BOOTP를 사용하여 호스트에 전달할수도 있습니다.


BOOTP는 다른 두개의 well-known 포트 번호를 사용합니다. UDP 포트 67은 서버에서 사용하고, UDP 포트 68은 클라이언트에 사용됩니다. BOOTP 클라이언트는 클라이언트의 실제 네트워크 주소와 선택적으로 IP주소가 포함된 BOOTREQUEST 패킷이라는 단일 패킷을 브로드캐스트합니다. 클라이언트는 255.255.255.255라는 주소를 사용하여 브로드 캐스트를 보낼 수 있습니다. 이 주소는 제한된 브로드캐스트 주소라고하 특수한 주소입니다. 클라이언트는 브로드캐스트를 한 후, 서버로부터의 응답을 기다립니다. 응답이 지정된 시간 내에 수신되지 않으면 클라이언트는 재요청합니다.


서버는 클라이언트의 요청에 BOOTREPLY 패킷으로 응답합니다. 요청은 부팅할 일반파일 이름(ex)'unix' 또는 'ethertip')을 포함 할 수 있습니다.(선택적). 서버가 BOOTREPLY를 보내면, 이 필드는 해당 부팅 파일의 정규화 된 경로 이름으로 바뀝니다. 이 이름을 결정할 때 서버는 클라이언트의 주소 및 파일 이름 요청을 해당 클라이언트에 맞게 사용자 정의 된 특정 부트 파일과 연관시키는 자체 데이터베이스를 참조 합니다.


BOOTREQUEST 파일 이름이 NULL이라면, 서버는 클라이언트에 대해 로드될 기본파일을 나타내는 파일이름 필드를 리턴합니다. IP주소를 모르는 클라이언트의 경우, 서버는 하드웨어 주소와 IP주소를 관련시키는 데이터베이스를 가지고 있어야 합니다. 이 클라이언트 IP주소는 BOOTREPLY의 필드에 배치됩니다.


BOOTP는 LAN용 Data Link Layer에서만 작동하는 RARP의 대안입니다. UDP/IP 기반 프로토콜인 BOOTP는 훨씬 많은 구성 정보를 제공하고 전체 IP 네트워크에 대한 동적 구성을 허용합니다. BOOTP와 그 확장은  DHCP의 기초가 되었습니다.



각종 사이트 및 블로그들을 통해 BOOTP에 대해 조사한 정보들을 아래와 같이 정리했습니다.


 

 

 



1. BOOTP(Bootstrap Protocol)


BOOTP 프로토콜은 네트워크 사용자가 자동으로 구성되고(IP 주소를 받을 수 있게), 사용자의 관여 없이도 부트되는 운영체계를 가지고 있게 해주는 포로토콜입니다.


-X터미널 등과 같이 하드디스크를 갖지 않은 장치의 설정 정보를 자동적으로 할당, 관리하기 위해서 개발되었습니다.


-네트워크 관리자에 의해 관리되는 BOOTP 서버는 일정 시간 동안 IP 주소를 자동으로 할당합니다.


-BOOTP는 조금 더 진보된 네트워크 관리 프로토콜인 DHCP 프로토콜의 기반이됩니다.


-처음으로 부팅된 컴퓨터, 디스크를 갖지 않은 컴퓨터에게 IP 주소 등 구성 정보를 제공합니다.


-정적인 클라이언트/서버 형태의 구성정보 제공용 프로토콜입니다.


-3가지 정보를 제공해줍니다. (IP 주소, 부트 파일이 있는 서버 이름, 부트 파일 이름)


-지금은 거의 사용되지 않는 구형 프로토콜입니다.


-DHCP의 하위버전이라고도 부립니다. DHCP와는 완벽 호환됩니다. 즉, DHCP서버와도 연결이 가능합니다.



2. BOOTP의 특징


-클라이언트/서버 구조로 동작하는 정적인 주소 설정 방식입니다.


-관리자에 의해 미리 정의된 물리 주소와 IP 주소와의 매핑 테이블을 사용하는 정적인 주소 설정 방식을 사용합니다.


-UDP 프로토콜에 의해 캡슐화 되고, 보통 TFTP와 함께 동작합니다. 클라이언트 요청은 UDP 68포트, 서버 응답은 UDP 67 포트를 사용합니다.


-요청 메시지는 브로드 캐스트로 송출됩니다. 소스 IP 주소는 0.0.0.0이고, 목적지 IP 주소는 255.255.255.255로 세팅됩니다.


-UDP 전달 메시지 유실에 대비하여 재전송 및 타임아웃 정책을 이용합니다.



3.BOOTP 헤더 구조



Op : 메시지 조작 코드. 메시지는 BOOTREQUEST or BOOTREPLY.


Htype : 하드웨어 주소 유형.


Hlen : 하드웨어 주소 길이.


Xid : 트랜잭션 ID


Secs : 클라이언트가 주소를 얻거나 갱신 프로세스를 시작한 이후 경과된 시간(초)


Flags : 플래그


Ciaddr : 클라이언트 IP주소


Yiaddr : Your(Client) IP 주소.


Siaddr : 부트 스트랩에서 사용할 다음 Server의 IP 주소.


Giaddr : 릴레이 에이전트를 통해 부팅하는데 사용되는 릴레이 에이전트 IP 주소.


Chaddr : Client 하드웨어 주소.


Sname : 선택적 서버 호스트 이름. NULL로 끝나는 문자열.


File : 부트 파일 이름. NULL로 끝나는 문자열. 일반 이름 또는 DHCPDISCOVER의 NULL, DHCPOFFER의 정규화 된 디렉토리 경로 이름


Option : 선택적 매개 변수 필드.


 

 



BOOTP 프로토콜에 대해서 좀 감을 잡으셨나요? 생소한 프로토콜이다보니 어렵네요.


오늘의 포스팅은 이것으로 마치겠습니다.


다음 포스팅에서 뵙겠습니다!

728x90
반응형