Modern web tarayıcısına içeriden bakış [PART:2] Çevrildi/Dil Takımı

DrEngerek

Kıdemli Üye
20 Kas 2015
2,344
1
Teşkilat
BÖLÜM 2

Gezintide ne olur?

Bu bölüm; Chrome'un iç çalışmalarını inceleyen 4 bölümlük bir blog zincirinin 2. bölümüdür. Bundan önceki girdilerde, farklı süreçler ve izleklerin tarayıcının farklı bölümlerini nasıl ele aldığını inceledik. Bu girdide ise, Bir web sitesini görüntülemek için, her süreç ve izleğin; nasıl iletişim kurduğunu daha detaylı bir şekilde inceliyoruz. Web gezintisinin basit bir kullanım örneğine bakalım: siz tarayıcıya bir URL yazarsanız, sonrasında tarayıcı internetten veriyi alır ve bir sayfa görüntüler.


Gezinti bir tarayıcı işlemi ile başlar.

İlk girdide yorumladığımız gibi: CPU, GPU, Bellek ve çoklu işlem mimarisi… Sekmenin dışındaki her şey tarayıcı işlemi tarafından işlenir. Tarayıcı işlemlerinde, tarayıcının butonları ve veri giriş alanlarını çeken kullanıcı arayüzü; internetten veri çekmeyi sağlayan, protokol yığını ile ilgilenen, ağ izleği; dosya erişimlerini denetleyen depolama izleği gibi bir çok izlek bulunur. Adres çubuğuna bir URL yazdığınızda girdiniz, tarayıcı işleminin kullanıcı arayüzü izleği tarafından işlenir.


Basit bir gezinti...


Adım 1: “Girdi işlemek”

Bir kullanıcı adres çubuğuna yazmaya başladığında, kullanıcı arayüzü izleğine sorulan ilk şey "Bu bir arama sorgusu mu yoksa bir URL mi?" (döngüsü) olur. Chrome'da, adres çubuğu da bir arama giriş alanıdır, bu yüzden kullanıcı arayüzü izleğinin sizi bir arama motoruna mı yoksa bir siteye mi göndereceğine karar vermesi gerekir.

input.png


Adım 2: “Gezintiye başlamak”


Bir kullanıcı enter tuşuna bastığında, kullanıcı arayüzü, site içeriğini almak için bir ağ çağrısı başlatır. Yükleme çubuğu bir sekmenin köşesinde görüntülenir ve ağ izleği, DNS incelemesi ve TLS Bağlantısı kurma isteği gibi uygun protokollerden geçer.

navstart.png


Bu noktada, ağ izleği “HTTP 301” gibi bir sunucu yönlendirme üstbilgisi alabilir. Bu durumda, ağ izleği, sunucunun yeniden yönlendirmek istediği kullanıcı arayüzü izleğiyle iletişim kurar. Sonrasında başka bir URL isteği başlatılır.

Adım 3: “Yanıtı okumak”

Yanıt gelmeye başladığında, ağ izleği eğer gerekirse akışın ilk birkaç baytına bakar. Yanıtın (önceden belirlenen) "İçerik Türü" başlığı ne tür bir veri olduğunu söylemelidir, ancak eksik ya da yanlış olabilme ihtimaline karşı MIME (çok amaçlı internet posta uzantısı) adı verilen dinleme işlemi yapılır. Bu kaynak kodda açıklandığı üzere ince bir iştir. Farklı tarayıcıların yük bindirme ve içerik türü belirlenmesinde nasıl bir yol izlediğini görmek için yorumu okuyabilirsiniz.

response.png


Eğer gelen yanıt bir “HTML” dosyası ise, sonraki adım verileri oluşturma işlemine geçmektir ancak “ZIP” dosyası gibi (başka uzantıdaki) bir veri dosyası ise, bu bir indirme isteğidir, bu yüzden verileri indirme yöneticisine iletmeleri gerekir.

findrenderer.png


Bu aynı zamanda “Güvenli-Tarama” kontrolünün gerçekleştiği yerdir. Alan adı ve yanıt verileri kötü amaçlı bir siteyle eşleşiyor gibi görünüyorsa, ağ izleğini bir uyarı sayfası görüntülemesi için uyarır. Ek olarak; sitelerde hassas verilerin işlenip, işlenmediğinden emin olmak için “Kaynak Okuma Engellemesi” (CORB) adlı denetim gerçekleşir.


Adım 4: “Oluşturma işlemini bulmak”

Tüm denetimler yapılıp, ağ izleği tarayıcının istenen siteye gitmesi gerektiğinden emin olduktan sonra, ağ izleği kullanıcı arabirimine verinin hazır olduğunu bildirir. Daha sonrasında, kullanıcı arayüzü izleği web sayfasının oluşturulmasına devam edecek bir oluşturucu işlemi bulur.

commit.png


Ağ isteğinin yanıt alması yüzlerce milisaniye sürebileceğinden dolayı işlemi hızlandırmak için bir optimizasyon uygulanır. Zaten kullanıcı arayüzü izleği, ağ izleğine “URL isteği” gönderdiğinde onların hangi siteye gittiklerini bilir ve paralel olarak bir oluşturma işlemini bulmaya veya başlatmaya çalışır. Bu şekilde, eğer her şey beklendiği şekilde giderse, ağ izleği veri aldığında, oluşturucu işlemi bekleme durumunda olur. Eğer gezinme esnasında siteler arasında bir yönlendirme işlemi yapılıyorsa, bu bekleme işlemi kullanılamayabilir ve bu durumda farklı bir işlem gerekebilir.

Adım 5: “Gezintinin tamamlanması”

Veriler ve oluşturucu işlemi hazır olduğuna göre; gezinme işlemini gerçekleştirmek için tarayıcı işleminden, oluşturucu işlemine bir “IPC” isteği gönderilir. Ayrıca veri akışını da iletir. Böylelikle oluşturma işlemi “HTML” verilerini almaya devam edebilir. Tarayıcı işlemi, işlemcinin oluşturma işleminde gerçekleştiğini doğruladıktan sonra, gezinme işlemi tamamlanır ve belge yükleme aşaması başlar.

Bu noktada; adres çubuğu, (SSL) güvenlik göstergesi ve site ayarları güncellenir ardından kullanıcı arayüzü izleği yeni sayfanın site bilgilerini yansıtır. Sekmenin oturum geçmişi güncellenir, bu nedenle ileri/geri butonları yeni gezinilen site için güncellenir. Bir sekmeyi veya pencere kapatıldığında oturum geri yüklemesini kolaylaştırmak için oturum geçmişi diskinizde depolanır.

loaded.png


Ek adım: “İlk yüklemenin tamamlanması
”

Gezinme işlemi tamamlandıktan sonra, oluşturma işlemi kaynakları sayfayı oluşturur. Sonraki girdide bu aşamada neler olacağının ayrıntılarını ele alacağız. Oluşturucu, render işlemini bitirdiğinde, tarayıcıya bir “IPC” isteği gönderir. Bu noktada, kullanıcı arayüzü izleği sekmedeki yükleme çubuğunu durdurur.

Bu noktadan sonra ilk yükleme tamamlanır ancak yine de istemci tarafında JavaScript ile ek kaynaklar yüklenip yeni görünümler oluşturabilir.


beforeunload.png


Farklı bir siteye geçmek…

Gezinme tamamlandı! Ancak kullanıcı adres çubuğuna tekrar farklı bir “URL” çağırırsa ne olur? Tarayıcı işlemi farklı siteye gitmek için aynı adımları uygular. Ama bunu yapmadan önce; az önce oluşturulan site için, bir geri yükleme (veya çağırma) işlemi uygulayabilir.

Bu; sekmeden çıkmaya çalıştığınızda "Bu siteden ayrılsın mı?" şeklinde bir kutucuk göstererek ekrana bastırılır. Çünkü JavaScript kodunuz da dahil olmak üzere; bir sekmenin içindeki her şey oluşturma işlemi tarafından işlenir. Bundan dolayı tarayıcı işlemine yeni bir gezinme isteği geldiğinde, hazırda bulunan oluşturma işlemini kontrol etmesi gerekir.

Gezinme, oluşturma işleminden başlatıldıysa, oluşturma işlemi önce yükleme işleyicilerini denetler. Sonrasında tarayıcı işlemi tarafından başlatılan gezinme ile aynı süreçten geçer. Tek fark ise, gezinme isteğinin oluşturucu işleminden tarayıcı işlemine başlatılmasıdır.


unload.png


Yeni gezinme işlemi, mevcut oluşturulmuş olandan farklı bir siteye yapıldığında, yeni gezinmeyi işlemek için ayrı bir oluşturma işlemi çağrılırken, mevcut oluşturma işlemi boşaltma gibi olayları işlemek için tutulur. Daha fazla bilgi için “Lifecycle” (yaşam döngüsü) uygulamasına göz atabilirsiniz.

“Servis çalışanı” koşulunda:

Bu gezinti işlemi için son zamanlarda yapılan bir değişiklik ise, servis çalışanının tanıtılmasıdır. Servis çalışanı, uygulama kodunuza ağ proxy'si yazmanın bir yoludur; web geliştiricilerin yerel olarak nelerin önbellekte tutulacağı ve ağdan ne zaman yeni veri alınacağı konusunda daha fazla kontrole sahip olmalarını sağlar. Servis çalışanı sayfayı önbellekten yükleyecek şekilde ayarlanmışsa, ağdan veri istemeye gerek kalmaz.
Bir diğer önemli noktaysa, servis çalışanının bir oluşturma işleminde çalışan JavaScript kodlarıdır. Peki bir gezinme isteği geldiğinde, tarayıcı işlemi sitenin bir servis çalışanına sahip olduğunu nereden bilir?

scope_lookup.png


Bir servis çalışanı kaydedildiğinde, servis çalışanının kapsamı referans olarak tutulur. Gezinme gerçekleştiğinde ağ izleği, alan adını kayıtlı servis çalışanlarına göre denetler ve eğer bu “URL” için bir servis çalışanı kaydedilmişse; kullanıcı arayüzü izleği, servis çalışanı kodunu yürütmek için bir oluşturucu işlemi bulur. Servis çalışanı önbellekten veri yükleyebilir, böylece ağdan veri isteme ihtiyacını ortadan kaldırabilir ve/veya ağdan yeni kaynaklar isteyebilir.

serviceworker.png


Gezinme önyüklemesi…

Gezinme Ön Yüklemesi, kaynakları hizmet çalışanının başlatılmasına paralel olarak yükleyerek işlemi hızlandıran bir mekanizmadır. Bu istekleri bir başlık ile işaretleyerek sunucuların istekler için farklı içerikler gönderebilmesine izin verir; örneğin, belgenin tamamının yerine yalnızca güncellenmiş verilerin yollanması gibi.

navpreload.png


Toparlayalım!

Bu girdide; bir web gezinmesi sırasında neler olduğuna, yani yanıt başlıkları ve (istemci tarafında) JavaScript gibi web uygulama kodunuzun tarayıcı ile nasıl etkileşime girdiğine baktık. Ağdan veri almak için tarayıcıda gerçekleşen adımları bilmek, web gezinmeleri ve önyüklemeler gibi uygulamaların neden geliştirildiğini anlamayı kolaylaştırır. Önümüzdeki girdide, tarayıcımızın sayfaları oluşturmak için HTML/CSS/JavaScript kodlarımızı nasıl işlediğine bir bakacağız.

yU1vMI.png

Konu linki için : Buraya Tıklayın.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.