- Katılım
- 21 May 2023
- Mesajlar
- 709
- Tepki
- 17
- Puan
- 18
"Sunucu" kelimesi çoğu zaman bir bilgisayar odasındaki kutuyu çağrıştırıyor. Oysa protokol tarafında sunucu bir makine değil, bir rol. Aynı makinede birçok sunucu çalışabiliyor, tek bir sunucu birçok makineye yayılabiliyor.
Bu yazı sunucunun protokoldeki tanımını, köken sunucu kavramını, istemciyle arasındaki iş bölümünü ve tek makine varsayımının neden yanıltıcı olduğunu standart belgeye dayanarak açıklıyor.
Protokoldeki tanım
RFC 9110, HTTP'nin anlambilimini tanımlayan belge, sunucuyu işleviyle anlatıyor. Köken sunucu terimi, belirli bir hedef kaynak için yetkili yanıtlar üretebilen programı ifade ediyor.
Tanımdaki kelime "program". Donanım değil, çalışan bir yazılım kastediliyor.
Belge yaygın yanılgıyı da düzeltiyor: en tanıdık köken sunucu biçimi büyük genel web siteleri; ancak kullanıcı aracılarının tarayıcılarla eşitlenmesi gibi, bütün köken sunucuların birbirine benzediğini düşünmek kolay bir yanılgı.
Verilen örnekler kapsamı gösteriyor: ev otomasyon birimleri, yapılandırılabilir ağ bileşenleri, ofis makineleri, otonom robotlar, haber akışları, trafik kameraları, gerçek zamanlı reklam seçiciler ve istek üzerine video platformları.
- Sunucu: Yetkili yanıt üretebilen program.
- Donanım değil: Tanım yazılım rolüne bakıyor.
- Kapsam: Web sitesinden trafik kamerasına kadar.
Karşı taraf: kullanıcı aracısı
Belge iletişimin diğer ucunu da tanımlıyor: kullanıcı aracısı terimi, isteği başlatan çeşitli istemci programlarından herhangi birini ifade ediyor.
Burada da aynı uyarı var. En tanıdık biçim genel amaçlı web tarayıcısı, ama bu uygulamaların yalnız küçük bir yüzdesi.
Belge diğer yaygın kullanıcı aracılarını sayıyor: örümcekler (web'i dolaşan robotlar), komut satırı araçları, ilan ekranları, ev aletleri, teraziler, ampuller, ürün yazılımı güncelleme betikleri, mobil uygulamalar ve çeşitli boyutlarda iletişim cihazları.
Bir ayrıntı daha var: kullanıcı aracısı olmak, istek anında yazılımla doğrudan etkileşen bir insan kullanıcı bulunduğu anlamına gelmiyor. Çoğu durumda kullanıcı aracısı arka planda çalışacak ve sonuçlarını sonradan incelenmek üzere saklayacak biçimde kuruluyor.
Püf nokta' Alıntı:İstemci ve sunucu makine değil rol; aynı program bir istekte istemci, başka bir istekte sunucu olabiliyor.
Arayüz neyi gizliyor?
Belge HTTP'nin tasarım mantığını da veriyor: HTTP, bir hizmetin nasıl uygulandığına dair ayrıntıları gizliyor ve istemcilere sağlanan kaynak türlerinden bağımsız tek biçimli bir arayüz sunuyor.
Tersi de geçerli: sunucuların her istemcinin amacını bilmesine gerek yok. Bir istek, belirli bir istemci türüyle ya da önceden belirlenmiş bir uygulama adımları dizisiyle ilişkilendirilmek yerine yalıtık olarak değerlendirilebiliyor.
Belgeye göre bu, genel amaçlı uygulamaların birçok farklı bağlamda etkili biçimde kullanılabilmesini sağlıyor, etkileşim karmaşıklığını azaltıyor ve zaman içinde bağımsız gelişime imkân veriyor.
Tek makine varsayımı
MDN'in HTTP genel bakışı pratikteki tabloyu anlatıyor: sunucu sanal olarak tek bir makine gibi görünüyor.
Ama gerçekte durum farklı olabiliyor. MDN'e göre bu, yükü paylaşan bir sunucu topluluğu ya da belgeyi tamamen veya kısmen istek üzerine üreten başka yazılımlar (önbellekler, veri tabanı sunucusu veya e-ticaret sunucuları) olabiliyor.
Tersi de mümkün: sunucu ille de tek bir makine değil ve aynı makinede birden çok sunucu yazılımı örneği barındırılabiliyor. MDN, HTTP/1.1 ve Host başlığıyla bunların aynı IP adresini bile paylaşabildiğini belirtiyor.
Bu, paylaşımlı barındırmanın teknik temeli; barındırma modelini hosting yazımızda ayrıntılandırmıştık.
Rol neden önemli?
Sunucuyu makine yerine rol olarak düşünmek, günlük sorunların çoğunu daha anlaşılır kılıyor. "Sunucu çöktü" denen durum çoğu zaman makinenin kapanması değil, o rolü üstlenen yazılımın yanıt üretememesi oluyor.
Aynı ayrım kapasite tartışmasında da işe yarıyor. Bir makinede birden çok sunucu yazılımı örneği çalışabildiği için, kaynağı tüketen genellikle "sunucu" değil, o makinedeki belirli bir hizmet oluyor.
Yetki tarafı da rolle belirleniyor. Belgenin "yetkili yanıt üretebilen program" ifadesi, hangi yanıtın doğru kabul edileceğini de tarif ediyor: aradaki katmanlar kopya sunabilir, ama son sözü köken sunucu söylüyor.
Arada kimler var?
MDN iletişim yolunun boş olmadığını hatırlatıyor: tarayıcı ile sunucu arasında çok sayıda bilgisayar ve makine HTTP mesajlarını aktarıyor.
Bunların çoğu taşıma, ağ veya fiziksel katmanlarda çalışıyor ve HTTP katmanında saydam kalıyor; yine de performans üzerinde belirgin etkileri olabiliyor.
Uygulama katmanında çalışanlara ise genel olarak vekil deniyor. MDN bunların saydam olabileceğini (aldıkları isteği hiç değiştirmeden ilettiklerini) ya da saydam olmadığını (isteği sunucuya iletmeden önce bir biçimde değiştirdiklerini) söylüyor.
Sunucunun tamamına yetkili olduğunuz senaryoyu VPS yazımızda, sunucunun yanıt veremediği durumu ise 503 hatası yazımızda ele almıştık.
Sık Sorulan Sorular
Sunucu nedir?
RFC 9110'a göre belirli bir hedef kaynak için yetkili yanıtlar üretebilen program.
Sunucu bir makine mi?
Hayır. Tanım programa bakıyor; aynı makinede birden çok sunucu yazılımı örneği çalışabiliyor.
İstemci ne demek?
Kullanıcı aracısı, isteği başlatan istemci programlarından herhangi biri.
Her istemcide insan var mı?
Hayır. Kullanıcı aracısı arka planda çalışacak biçimde kurulmuş olabiliyor.
Arada başka makineler var mı?
Var. Çoğu HTTP katmanında saydam; uygulama katmanında çalışanlara vekil deniyor.
Özetle
Sunucu, protokol tarafında yetkili yanıt üretebilen bir program. Tanım donanıma değil role bakıyor; bu yüzden tek makinede birçok sunucu, tek sunucuda birçok makine olabiliyor. Karşı taraf olan kullanıcı aracısı da tarayıcıdan ibaret değil. HTTP'nin tek biçimli arayüzü iki tarafın da diğerinin iç işleyişini bilmesine gerek bırakmıyor.
Sitenizin yanıtını üreten sunucu tek bir makinede mi çalışıyor, biliyor musunuz?
Güncelleme: 3 Eylül 2026. RFC 9110 (HTTP Semantics) ve MDN HTTP genel bakışı kontrol edildi.
Dijital Dünyanıza Yön Veren Pusula