Bu yazı bir çeviri yazısıdır. Çeviride hata bulursanız lütfen yorum yaparak düzeltme isteyin. Yazının orjinal linki: https://www.freecodecamp.org/news/how-the-web-works-a-primer-for-newcomers-to-web-development-or-anyone-really-b4584e63585c/#.zbp8vcc90
Web geliştiriciliğinin içindeyseniz veya yeni başladıysanız, en azından temel düzeyde her şeyi bildiğinizi düşünebilirsiniz. Fakat temel olarak bir web sitesinin nasıl işlediğini anlatmaya çalıştığınızda anlatmakta zorluk çekersiniz. Sahi, IP adresi neydi? “Client-server” modeli tam olarak nasıl çalışıyordu?
Web yapıları geliştirmek son zamanlarda giderek önem kazanıyor. Hatta, o kadar önemli bir hale geldi ki, bazen bu uğurda internetin (web) nasıl çalıştığını öğrenmeden geliştirme aşamasına geçiyoruz.
Bunu biliyorum çünkü bende yaptım. Bunu söylerken utanmaya gerek yok; internet karmaşıktır. Sadece bir mühendis olup karmaşık arka plan yapılarıyla uğraşınca aslında bu işlemlerin ne kadar önemli olduğunu anlıyoruz.
Bende bu yüzden -herkesin baş edebileceği şekilde- göz korkutucu temel bilgileri 4 bölüm şeklinde yazdım.
Birinci Bölüm: Web nasıl çalışıyor?
İkinci Bölüm: Web uygulamasının yapısı
Üçüncü Bölüm: HTTP ve Diğerleri
Dördüncü Bölüm: Kod örnekleri ve “Client-server” etkileşimleri
Daha önce hepimizin bulunduğu “www.github.com” adresini tarayıcımıza yazalım ve sayfanın yüklenmesini seyredelim. Çok basit gözükebilir; fakat kaputun altında tonlarca sihir gerçekleşiyor. Hadi bunlara bir göz atalım.
Web’i anlamaktaki en büyük sorun jargon. Maalesef, devam etmek için bu jargonları öğrenmemiz gerekiyor. İşte “world wide web” (interneti) öğrenmek için bilmemiz gereken terimler;
Pekala, önemli tanımlamalar yolumuzdan çekildiğine göre devam edelim.
1) Tarayıcıya URL’yi yazın ve isteğinizi yollayın.
2) Tarayıcı URL’den aldığı verileri ayrıştırır. Buna protokol tipi “https”, domain adı “github.com” ve istediğimiz belge”/” dahildir . Şu anki durumumuzda (.com’dan sonrası boş olduğu için) tarayıcımız ana sayfayı (index) istedi.
3) Tarayıcımız DNS bilgilerinden “github.com” un host edildiği sunucunun İP adresini öğrenmek için ISP’mizle iletişime geçti. DNS, ilk önce”Kök İsim Sunucusundan” isteğimizin “.com” olduğunu anlar, daha sonra “.com isim sunucusundan” domaine ait bilgileri alır.
4) ISP, internet sunucusuna giden yolun IP adresini elde ettiği zaman, internet tarayıcınıza geri gönderir.
5) İnternet tarayıcınız girdiğiniz URL’nin IP adresini alır ve TCP bağlantısını kurar. Bu noktada internet tarayıcınız ile internet sunucusu bağlanmıştır.
6) İnternet tarayıcınız, internet sunucusunun ana sayfasını istediğini belirten bir HTTP isteği yollar.
7) İnternet sunucusu isteği alır ve istenen HTML sayfasına bakar. Eğer sayfa mevcutsa, gerekli hazırlama işlemlerini gerçekleştirilir ve internet tarayıcınıza gönderir. Eğer aradığınız sayfa sunucu üzerinde mevcut değilse 404 hata sayfasını yani “Sayfa Bulunamadı” hata sayfasını internet tarayıcınıza iletir.
8) İnternet tarayıcısı HTML sayfayı alır ve diğer kaynakları (harici Css veya JavaScript dosyalarını) bulmak için baştan sonra parçalara ayırmaya -taramaya- başlar.
9) Her bir harici dosya için internet tarayıcısı şu ana kadar gerçekleştirdiği işlemleri baştan tekrar eder.
10) Tarayıcı diğer bütün harici kaynakları yüklemeyi bitirdikten sonra sayfa tarayıcınızda yüklenmiş ve sunucu ile arasındaki bağlantı kapanmıştır.
Buradaki asıl önemli olay; görmek istediğimiz bilginin nasıl iletildiği. Bir istek yaptığınızda bilgi bir çok ufak pakete dönüşür. Her paket kaynağını ve gideceği hedefin port numarasının bulunduğu TCP başlığıyla işaretlenmiştir; ve bu paketlerin her birisi kendi kimliğini (nereden geldiği ve nereye gittiği) belirten bir İP numarası taşır. Bu paket ethernet aracılılığıyla Wi-Fi ağınız veya Hücresel Veri (telefon) üzerinden aktarılır.
(Aslında paketlerin nasıl gittiğini çok önemsemiyoruz, tek önemli olan sağ salim gitmeleri) Paketler gideceği yere ulaştığında tekrar birleşir ve tek bir bütün haline dönerler.
Peki bütün paketler kaybolmadan nasıl hedefe ulaştı?
Cevap TCP/IP.
TCP/IP internetin ana kontrol sistemi olarak işlev gören iki parçalı bir sistemdir. İlk bölümün, IP protokolünün, görevi her pakette IP başlığı (header) atamak ve bu başlık sayesinde diğer bilgisayarlarla anlaşmaktır. İkinci bölümün, TCP, görevi ise mesajları -veya dosyaları- küçük paketlere bölmek, varış bilgilerini içeren bir TCP başlığı (header) atamak, yolda kaybolan paketleri yeniden göndermek ve varış noktasına ulaşan paketleri tekrar birleştirmektir.
Ama durun! Daha işimiz bitmedi. Şuanda tarayıcıya ulaşan veriler bizler için okunabilir bir yapıda değil, sadece bir yığın koddan ibaretler. Bu işi düzeltecek olan son adımı, kullandığımız tarayıcı halledecek.
Her tarayıcıda bu işi yapmak için çeviri motorları vardır. Çeviri motoru gelen veriyi, HTML ayrıştırma algoritmasıyla tarayıcı için ögelerine ayırır (bknz görsel). Ögelerine ayırma sırasında “DOM element”lerinden bir şema (DOM ağacı) ortaya çıkar. DOM elementleri, JavaScript gibi script dilleriyle manipüle edilebilir. Bu manipüleler sayesinde web içerikleriyle bir çok yöntemle iletişime geçebiliriz.
DOM ağacı yüklendikten sonra; tarayıcı, her bir yapının stil dosyasında nasıl şekillendirildiğini arar. DOM ağacı yüklendikten ve stillerini aldıktan sonra sonunda karmaşık kodlar bizim için anlaşılır seviyeye gelmiştir.
Sonuç: “internette şu ana kadar gördüğünüz her şey”.
İşte size “web” in kısa bir özeti. Kafanız karıştı değil mi? Hepimizin bir zamanlar karışmıştı. Fakat bu yazıyı buraya kadar okuduysanız size bir iyi haberim var, şu anda zor kısmı atlattınız. Konuyu özetlediğim için doğal olarak bir takım detayları atladım. Fakat biraz daha tekrar yaparsanız boşlukları doldurmanın çok kolay olduğunu keşfedeceksiniz :)
Yayınlanan Son 3 Yazı
Güncellenen Son 7 Yazı