# BOOTP
Bilgisayar ağları konusunda geçen Önyükleme Protokolü veya BOOTP, bir yapılandırma sunucusundan bir IP adresi almak için bir ağ istemcisi tarafından kullanılan bir ağ protokolüdür. BOOTP protokolü ilk olarak RFC 951 içerisinde tanımlanmıştı.
BOOTP genellikle bir bilgisayar açılıyorken önyükleme işlemi esnasında kullanılır. BOOTP yapılandırma sunucusu bir adres havuzundan her bir istemciye bir IP adresi tahsis eder. BOOTP yalnızca IPv4 ağları üzerinde taşınan User Datagram Protocol (UDP) kullanır.
Geçmişte BOOTP, diski olmayan Unix benzeri iş istasyonları için bir IP adresi almak ve buna ek olarak bu istasyonlara ait önyükleme imajlarının ağdaki konumunu elde etmek için kullanılmıştı. Ayrıca şirketler tarafından, önceden yapılandırılmış bir istemci (örneğin Windows) kurulumunu yeni kurulmuş bilgisayarlara bellekten yollamak için kullanılıyordu.
Başlangıçta, ilk ağ bağlantısını kurmak için bir önyükleme disketinin kullanılması geriyordu. Daha sonra ağ kartı üreticileri, protokolü hem arayüz kartlarının BIOS'ları içerisine hem de yerleşik ağ adaptörlü sistem kartlarına gömdüler. Böylece doğrudan ağ önyüklemesine imkân sağlandı.
Son zamanlarda, diski olmayan bağımsız ortam merkezi bilgisayarlarına ilgi gösteren kullanıcılar, bir Windows işletim sisteminin bu yöntemle önyüklenmesine ilgi duymaya başladılar.
Dinamik Konak Yapılandırma Protokolü (DHCP) aynı amaç için daha gelişmiş bir protokoldür ve BOOTP kullanımının yerini almıştır. Çünkü birçok DHCP sunucusu BOOTP desteği de sunmaktadır.


## Özellikleri.
  - DHCP'den önce tasarlanmıştır.
  - Genellikle bilgisayarların veya işletim sisteminin önyükleme işleminde yapılan ağ istemcilerine otomatik olarak bir IP adresi atar.
  - IP ağlanı üzerinden ve UNIX tabanlı disksiz iş istasyonları tarafından uzaktan önyükleme için kullanılır.
  - Sağlayıcı uzantıların adı verilen sınırlı sayıda istemci yapılandırma parametresini destekler.


## Çalışma Prensipleri.
  - Durum 1
 İstemci ve sunucu aynı ağda ise
Bir BOOTP istemcisi başlatıldığında, bir IP adresi yoktur, bu yüzden ağa MAC adresini içeren bir mesaj yayınlar. Bu mesaj "BOOTP isteği" olarak adlandırılır ve BOOTP sunucusu tarafından alınır. Sunucu istemciye aşağıdaki bilgileri içeren yanıt verir:
  - İstemcinin IP adresi, alt ağ maskesi ve varsayılan ağ geçidi adresi.
  - BOOTP sunucusunun IP adresi ve ana bilgisayar adı.
  - İşletim sistemini yüklemek için istemcinin ihtiyaç duyduğu önyükleme görüntüsüne sahip sunucunun IP adresi.
İstemci, bu bilgileri BOOTP sunucusundan aldığında, TCP/IP protokol yığını'nı yapılandırır ve başlatır ve ardından önyükleme görüntüsünün paylaşıldığı sunucuya bağlanır. İstemci, önyükleme görüntüsünü yükler ve bu bilgileri kullanarak işletim sistemini yükler ve başlatır.
Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP), BOOTP'nin bir uzantısı olarak geliştirilmiştir. BOOTP, RFC 951 ve 1084'te tanımlanmıştır.


### Durum 2.
İstemci ve sunucu farklı ağda ise
1.Bootp isteğiyle ilgili sorun, isteğin yayınlanmasıdır. Bir yayın IP datagramı herhangi bir yönlendiriciden geçemez. Yönlendirici bu paketi atar.
2. Bu sorunu çözmek için bir aracıya (relay) ihtiyaç vardır.
3. Ana bilgisayardan veya yönlendiriciden biri, geçiş aracısı olarak çalışacak şekilde uygulama katmanında yapılandırılabilir.
4. Aktarma aracısı, bootp sunucusunun tek noktaya yayın adresini bilir ve 67 numaralı bağlantı noktasında yayın iletisini dinler.
5. Bu yayın paketini aldığında, iletiyi tek noktaya yayın datagramında saklar ve isteği bootp sunucusuna gönderir.
6. Tek noktaya yayın hedef adresini taşıyan paket herhangi bir yönlendirici tarafından yönlendirilir ve bootp sunucusuna ulaşır.
7. Aktarma aracısı, yanıtı aldıktan sonra onu bootp istemcisine gönderir.


## BOOTP ve DHCP Protokollerinin Karşılaştırılması.
BOOTP açıkça oldukça başarılı olsa da, kendine ait bazı zayıflıkları da vardı. "Bunlardan en önemlilerinden biri, dinamik" adres atama desteğinin olmamasıdır. İnternet gerçekten 90'ların sonlarında yükselmeye başladığında, dinamik atama ihtiyacı çok daha belirgin hale geldi. Bu, doğrudan Dinamik Ana Bilgisayar Yapılandırma Protokolünün (DHCP) geliştirilmesine yol açtı.
BOOTP ve DHCP arasındaki temel fark, BOOTP'nin IP adreslerinin statik yapılandırmasını desteklerken, DHCP dinamik yapılandırması desteklenmesidir.DHCP'nin internete bağlı bilgisayarın IP adreslerini otomatik olarak atar ve alır ve ayrıca bazı ek özelliklere sahiptir.


## Tarihçe.
BOOTP ilk olarak Eylül 1985'te RFC 951'de, Haziran 1984'te RFC 903'te yayınlanan Ters Adres Çözümleme Protokolü rarp'nin yerine tanımlandı. Rarp'yi BOOTP ile değiştirmenin birincil motivasyonu, rarp'nin bir bağlantı katmanı protokolü olmasıdır. Bu, birçok sunucu platformunda uygulamayı zorlaştırdı ve her bir IP alt ağında bir sunucunun bulunmasını gerektirdi. BOOTP, bir merkezi BOOTP sunucusunun birçok alt ağdaki ana bilgisayarlara hizmet verebilmesi için standart IP yönlendirmesini kullanarak yerel ağdan BOOTP paketlerini ileten geçiş aracılarının yeniliğini tanıttı.
BOOTP, 1980'lerin ortasından 1990'ların sonuna kadar tercih edilen TCP/IP ana bilgisayar yapılandırmasıydı. RFC 1048'de tanıtılan satıcı uzantıları popülerdi ve yıllar içinde ek satıcı uzantıları tanımlandı; RFC 1048, arka arkaya RFC 1084, 1395 ve 1497 ile değiştirildi. Yıllar içinde, RFC 951'in bazı bölümlerinin nasıl yorumlanması gerektiği ve BOOTP'nin belirli özelliklerinin nasıl çalıştığı konusunda bazı kafa karışıklıkları da ortaya çıktı.
"Önyükleme Protokolü için Açıklamalar ve Uzantılar olan" RFC 1542, bunu ele almak için Ekim 1993'te yayınlandı ve ayrıca protokolün işleyişinde bazı küçük değişiklikler yaptı. (RFC 1542 aslında içinde bazı küçük hatalar olan neredeyse aynı RFC 1532'nin bir düzeltmesidir.)


## İlişkili RFC'ler.
BOOTP ile ilgili RFC'ler (NOT: Grayed out RFCs are Obsolete)


## Bunlara da bakın.
  - Preboot Execution Environment (PXE)
  - UDP Helper Address — a tool for routing BOOTP requests across subnet boundaries