tarayıcıda bir URL yazdığınızda ne olur [kapalı]


293

Birisi bana tarayıcıda bir URL yazdığımdan sayfayı tarayıcıda gördüğüm zamana kadar perde arkasında neler olduğunu söyleyebilir mi? Sürecin ayrıntılı bir açıklaması çok yardımcı olacaktır.


2
Bu, programlama ile ilgili (eninde sonunda) olsa da - bunun cevaplanabileceği ayrıntı seviyesi, hacimleri doldururdu (ve doldurmuştur). Lütfen bir programlama sorgusu olarak yeniden ifade edin.
KevinDTimm

28
O'Reilly'nin DNS ve Bind kitabını edinin . Sadece 624 sayfa.
Wim Hollebrandse

7
edusagar.com/articles/view/70/… bu mümkün olan en iyi cevaptır!
Shivendra

1
Posterity aşkına, internetin nasıl çalıştığının ayrıntılı bir versiyonu - goo.gl/eEHmpZ .
Ashwin Krishnamurthy

4
Şimdi bunu olabildiğince ayrıntılı olarak cevaplamak için ortak bir çaba var: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor binadan

Yanıtlar:


587

Dikkat: Bu, mümkün olan en basit HTTP isteğini (HTTPS yok, HTTP2 yok, ekstra yok), mümkün olan en basit DNS, proxy yok, tek yığın IPv4, yalnızca bir HTTP isteği, basit bir HTTP sunucusu varsayarak son derece kaba ve aşırı basitleştirilmiş bir çizimdir. diğer ucu ve hiçbir adımda sorun yok. Bu, çoğu çağdaş niyet ve amaç için gerçekçi olmayan bir senaryodur; bunların hepsi gerçek kullanımda çok daha karmaşıktır ve teknoloji yığını, bu yazıldığından beri daha karmaşık bir büyüklük sırası haline gelmiştir. Bunu göz önünde bulundurarak, aşağıdaki zaman çizelgesi hala biraz geçerlidir:

  1. tarayıcı önbelleği kontrol eder; İstenen nesne önbellekte ve yeni ise # 9'a atlayın
  2. tarayıcı işletim sisteminden sunucunun IP adresini ister
  3. İşletim sistemi bir DNS araması yapar ve IP adresini tarayıcıya yanıtlar
  4. tarayıcı sunucuya bir TCP bağlantısı açar (bu adım HTTPS ile çok daha karmaşıktır)
  5. tarayıcı HTTP isteğini TCP bağlantısı üzerinden gönderir
  6. tarayıcı HTTP yanıtı alır ve TCP bağlantısını kapatabilir veya başka bir istek için yeniden kullanabilir
  7. tarayıcı, yanıtın bir yönlendirme mi yoksa koşullu bir yanıt mı (3xx sonuç durumu kodları), yetkilendirme isteği (401), hata (4xx ve 5xx) vb. olup olmadığını kontrol eder; bunlar normal yanıtlardan farklı olarak ele alınmaktadır (2xx)
  8. önbelleklenebilirse, yanıt önbellekte saklanır
  9. tarayıcı yanıtı çözer (örneğin, sıkıştırılmışsa)
  10. tarayıcı yanıtla ne yapılacağını belirler (örneğin, bir HTML sayfası mı, bir resim mi, bir ses klibi mi?)
  11. tarayıcı yanıt veriyor veya tanınmayan türler için bir indirme iletişim kutusu sunuyor

Yine, bu noktaların her birinin tartışılması sayısız sayfayı doldurmuştur; Bunu sadece netlik amacıyla kısaltılmış bir özet olarak ele alalım. Ayrıca, buna paralel olarak gerçekleşen birçok şey daha var (yazılı adresi işleme, spekülatif ön getirme, tarayıcı geçmişine sayfa ekleme, kullanıcıya ilerleme gösterme, eklentileri ve uzantıları bildirme, indirme sırasında sayfayı oluşturma, ardışık düzen oluşturma, bağlantı izleme canlı tutma, çerez yönetimi, kötü amaçlı içeriğin kontrolü vb.) - ve tüm işlem HTTPS (sertifikalar ve şifreler ve sabitleme, oh benim!) ile daha karmaşık bir büyüklük sırası alır.


4. adımda https isteklerinde ne olur? Biraz daha açıklayabilir misiniz?
Mohammad Raheem

2
Bu cevap kapsamının çok ötesinde. Ancak yukarıda bağlantılı GH sayfasını kontrol edin, kısa bir genel bakış sağlar: github.com/alex/what-happens-when/blob/master/…
Piskvor binadan ayrıldı

41

Önce bilgisayar hedef ana bilgisayarı arar. Yerel DNS önbelleğinde varsa, bu bilgileri kullanır. Aksi takdirde, IP adresi bulunana kadar DNS sorgulaması yapılır.

Ardından, tarayıcınız hedef ana bilgisayara bir TCP bağlantısı açar ve isteği HTTP 1.1'e göre gönderir (veya HTTP 1.0'ı kullanabilir, ancak normal tarayıcılar artık bunu yapmaz).

Sunucu gerekli kaynağı arar (varsa) ve HTTP protokolünü kullanarak yanıt verir, verileri istemciye gönderir (= tarayıcınız)

Tarayıcı daha sonra size daha sonra ekranda sunulan belge yapısını yeniden oluşturmak için HTML ayrıştırıcısını kullanır. Resimler, css dosyaları, javascript dosyaları gibi harici kaynaklara başvurular bulursa, bunlar HTML belgesinin kendisiyle aynı şekilde sunulur.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.