İnternetin başından sonuna kadar nasıl çalıştığı hakkında bir röportaj sorusu için daha teknik bir cevaba ihtiyaç var [kapalı]


13

Son iki hafta içinde 5 ayrı kişiyle röportaj yaptım ve bu beş kişiden üçü bana bu soruyu sordu: "Google.com" a basmak ile ekranda çıkan sayfa arasında ne olacağını açıklayın. Temel olarak, İnternet nasıl çalışır. Üç kez sonra bu soruyu tekrar alırsam hazırlıklı olsam iyi olur.

Bazı şeyleri biliyorum , ama cevabımın yeterince iyi olduğuna tam olarak ikna olmadım. Temel olarak, DNS sunucusunun "google.com" u bir IP adresine çevirdiğinden bahsediyorum. TCP / IP üzerinde biraz parlak, daha sonra tarayıcının yorumladığı ve görüntülediği tarayıcıya geri gönderilen istenen sayfaları sunan web sunucusu hakkında konuşuyorum.

Daha önce söylediğim gibi, cevabımın yeterince teknik olduğuna ikna olmadım. Dışarıda bıraktığım adımlar neler?

Değeri için, bu üç zamandan ikisi aynı şirkette ve onlarla üçüncü bir röportaj için geri çağrıldım, bu yüzden çok fazla bombalayamam .


1
Görüştüğünüz pozisyonların doğası nedir?
smp7d

3
Her beş görüşmeciden üçü bu soruyu sorduysa, biraz araştırma / araştırma yapma ve bunu tam olarak anladığınızı gösteren iyi bir cevap alma zamanı . Aynı şirkette üçüncü bir röportaj için çağrılıyorsanız ve size tekrar soru sorulursa, ya bilginizi arttırmak için yeterince önemsediğinizi göstereceksiniz ya da söylemediniz.
Robert Harvey

1
Ayrıca, sürecin hangi kısmına en çok ilgi duyduklarını sorarak sorunun kapsamını daraltmaya çalışacağım. Örneğin, OSI modelinin yedi katmanı gibi şeyleri derinlemesine bilmenizi umursamayabilirler , ancak siz hala çalışma bilgisine sahip olmalıdır.
Robert Harvey

1
Öte yandan, cevap çok teknik olabilir. Belki de bilgiyi teknik olmayan bir şekilde insanlarla nasıl ilişkilendirebileceğinizi görmek istiyorlar?
Matt

1
Sorunun ne kadar iyi iletişim kurduğunuzu görmesi istenirse, belki de çok geniş bir soruya cevap vermek yerine soru ile ilgili soruları sormak iyidir. Çok detaylı bir teknik cevap verebilir ve bunu açıklamak için bütün günü ayırabilirsiniz. Sorunun amacı olduğunu sanmıyorum.
Matt

Yanıtlar:


29
  1. Tarayıcınızın öncelikle, etki alanı adını bir IP adresine çevirecek bir giriş için işletim sisteminin "hosts" dosyasına bakması gerekir. Bu, tek bir metin dosyasının ARPANET üzerinden erişilebilen her bilgisayar ve ona bağlı her bilgisayarın nispeten yeni bir kopyasına sahip olması için anlaşılır adlar içermesinin mümkün olduğu ARPANET'ten devralınan eski bir özelliktir. NetBIOS veya benzer düğüm adlandırma protokolleri olmayan küçük bilgisayar ağlarında kalan bir değere sahipti, ancak günümüzde bilgisayar korsanları için bir hedef olması muhtemeldir (DNS'yi atlayıp bilgisayarınızı sitelere yönlendiren) bir istemci bilgisayarına veya kullanıcısına / sahibine meşru bir şekilde sahip olmalarını kontrol eder).
  2. Bilgisayarınızın bu etki alanı için bir HOSTS girişi olmadığı varsayılarak, tarayıcınız, kullanılan bağlantı için işletim sisteminin Internet ayarlarında yapılandırılmış olan DNS sunucusuna, isteğin "ana bilgisayar adı" olarak da bilinen bir adıyla (her şey) bir UDP isteği gönderir "http: //" ile bundan sonra gelen ilk iki nokta üst üste veya ileri eğik çizgi arasında (ör. "www.google.com"). Bu DNS sunucusu genellikle şirketinize veya yerel İnternet Servis Sağlayıcınıza aittir.
    • UDP, "Evrensel Veri Birimi Protokolü" anlamına gelir ve TCP ile aynı sınıfta ("ağ katmanı" IP protokolünün üstünde, HTTP, FTP, SMTP vb. Gibi "uygulama katmanı" protokollerinin altında "taşıma katmanı" protokolüdür ). TCP çok fazla hata denetimi ve hataya dayanıklılık özelliği sağlarken (fazladan veri ekleme ve ek yükü artırma), UDP çok daha hafif bir yaklaşım izleyerek net veri bant genişliğini artırır; bunun nedeni, protokolün TCP'de büyük verileri birden çok pakete bölmek (böylece mesajların küçük olması gerekir) veya aktarılan kayıp paketleri yeniden göndermek gibi özellikleri desteklememesidir. Küçük, basit mesajlar (DNS gibi) ve bir paketin kaybolup kaybolmadığı önemli olmayan telemetri tipi veriler için iyidir.
  3. Bu DNS sunucusu şu üç şeyden birini bilir: bu etki alanı adının doğrudan bir IP adresine nasıl çevrileceği (yani, söz konusu etki alanı için "yetkili ad sunucusu" veya ANS); ANS'nin veya bir ebeveyninin IP adresi; ya da ANS'ye nasıl ulaşacağını daha fazla bilen kendi ana ad sunucusu. Sunucu isteğin kendisini çevirmezse, isteği "aşağı" bilinen bir ANS'ye veya "yukarı" üst NS'sine iletir ve bu işlem yinelemeli olarak tekrarlanır.
    • Bu ağaç yapısının "kökü", aldığı istekleri bir dizi "üst düzey alan" veya TLD sunucusundan birine ileten tek bir sunucudur. Örneğin, gezegendeki herhangi bir ".com" etki alanının IP adresini nasıl bulacağını bilen bir ".com" ad sunucusu vardır (bu istekleri ISS düzeyi ad sunucularına ileterek). Bu TLD'ler, İnternet'in bir ISS'ye ait belirli bir "dalı" içindeki hiçbir DNS tarafından bilinmeyen alan adı sunucuları için talepleri iletir.
  4. Yetkili ad sunucusu bulunduğunda ve etki alanı adını bir IP adresine çevirdiğinde, bu adres istemciye ve tarayıcısına döndürülür. Bir ANS, isteğin "yaşam süresi" içinde bulunamazsa (TTL; yanlış yapılandırılmış sunucular arasında sonsuz döngüyü önlemek için isteğin sunucular arasında maksimum sayıda iletilmesi gerekir), adresindeki düğüm tarafından istemciye bir hata döndürülür. bu istek "zaman aşımına uğrar" (veya alan için yetkili sunucu olan ancak belirli alan adı önekini çeviremeyen düğüm).
  5. Bir HTTP bağlantısı için tarayıcı, daha sonra bağlantı kurmak için IP adresine ve belirtilen bağlantı noktasına (veya varsayılan HTTP bağlantı noktası 80) bir "TCP SYN" isteği gönderir. Bu, istemcinin tercih ettiği yanıt bağlantı noktası ("kaynak bağlantı noktası"), segment boyutu, pencere ölçeği gibi TCP iletişim tercihleri ​​gibi bilgileri içeren "ağ düzeyi" IP üstbilgisinin üstünde katmanlanan protokol düzeyinde bir istektir. ve isteğe bağlı protokol özelliklerinin kullanımı.
  6. Talep, "bağlantı seviyesinde" (gerçek elektrik devrelerinin ağda, taşıma ve uygulama katmanlarında yer alan verileri iletmek için nasıl manipüle edildiğini yöneterek) İnternet yapısı üzerinden yönlendirilir; genellikle veriler bir tel veya fiber boyunca evinizin veya işletmenizin "Merkez Ofisine" (buna "son mil" denir ve genellikle bant genişliğinin en büyük darboğazını temsil eden devredir) Bilgi Otoyolu. Ardından CO, isteğinizi dünyanın dört bir yanında milyarlarca başka hedefin hedef sunucuya veya ağa ileten CO'ya ileten yüksek bant genişlikli borulara (T taşıyıcılar, SONET, vb.) Erişebilir.
    • Bu "IP yönlendirme", DNS çözümüyle kavramsal olarak benzer bir şekilde çalışır; "üst katman" ISP'lere ICANN tarafından tüm "A sınıfı" IP ağları (bilinen bir ilk bayt verildiğinde mümkün olan her adres) atanır ve diğer ISS'ler A Sınıfı ağın kime ait olduğunu ve bu ağın en yakın "cephesine nasıl veri alınacağını bilir kapı "," yönlendirme tablosundaki "bilgileri kullanarak. Bu üst düzey ISS daha sonra, bazıları yerel ISS'lere, diğerleri doğrudan şirket kullanıcılarına adres blokları kiralar ve bu ISS'lerde ve şirketlerde, paketlerin başkalarına gönderilip gönderilmeyeceğini belirlemek için IP adresini (ve kendi yönlendirme tablolarını) kullanan yönlendiriciler bulunur. yakındaki devreler, diğer yerel ISS yönlendiricilerine yanlara veya daha yüksek seviyeli gövdeler ve yönlendiricilere kadar.
  7. Sunucu bu isteği alır (soket veya güvenlik duvarı gibi daha düşük bir soyutlama katmanında reddedilmezse) ve bağlantıyı kabul etmeye karar verirse, "SYN-ACK" istek yanıt adımı gönderir. kendi tercihlerini belirtmek (müşterinin uyum sağlayabileceği, ancak yapamayacağı veya belirtilemediği tercihleri ​​de dahil olmak üzere).
  8. İstemci, sunucunun sağladığı seçenek kümesini kullanarak iletişimi destekliyorsa, bir ACK yanıtı gönderir ve şimdi bağlantı "kurulur".
  9. Tarayıcı daha sonra bir "HTTP GET" isteği gönderir. İstek, tarayıcı tarafından istenen kaynağın tam URI'sini içerir (www.google.com ile konuştuğumuzu bildiğimiz halde, sunucunun isterse daha fazla yorum yapabilmesi için bu dizeyi isteğin bir parçası olarak göndeririz) isteği yönlendirmek için alan adı). Bu istek "çerezler" içerebilir; istemcide depolanan ve talebin verimli ve rahat bir şekilde işlenmesine yardımcı olmak için sunucuya verilebilecek veriler (kullanıcının tercihlerini belirlemek gibi).
  10. Sunucu GET isteğini alır ve önce onurlandırmak isteyip istemediğine karar verir (sunucu TCP bağlantı noktası 80'e yönelik istekleri dinliyor olabilir, ancak FTP veya VoIP gibi farklı bir uygulama protokolünden mesaj beklemektedir; bu bağlantı noktası 80 için nadirdir ancak diğer bağlantı noktası türleri için daha yaygın). Kabul ettiğini varsayacağız; sunucu daha sonra istenen kaynağı içeren bir HTTP yanıtı döndürür (bu durumda, Google'ın her yerde bulunan arama sayfası olan varsayılan sayfanın HTML'si). Yanıt, sunucunun istemciden depolamasını istediği "çerezler" de içerebilir (istemci bunu yapabilir veya olmayabilir).
  11. HTML tarayıcı tarafından sindirilir ve sayfayı tarayıcı penceresinde çizmek için oluşturulur. Bu gerçekleşirken, sayfanın tüm içeriğini HTML tarafından belirtilen şekilde görüntülemek için gereken Javascript, stil sayfaları, resimler ve diğer veriler için daha fazla HTTP GET isteği istemci tarafından gönderilir ve elde edilen veriler sunucusu.
  12. Geçtiğimiz yaşlarda Google statik formlara dayanıyordu; aramak istediğiniz şeyi metin kutusuna yazıp "Ara" tuşuna (veya "Kendimi Şanslı Hissediyorum") basarsınız. Bunu yaptığınızda, istemci tarafından sunucuya bir HTTP POST isteği gönderilir; istek, istemci tarafından belirtilen, bilginin gönderileceği konumu ve elbette bilginin kendisini içerir. Bu bilgiler, arama sonuçlarını bulmak için kullanan sunucu tarafından özümsenir ve sunucu, size gönderdiği bu sonuçların bir sayfasını oluşturur. Veya arama terimlerini bir "sorgu dizesi" ne dönüştürebilir ve bir "yönlendirme" ile yanıt verebilir; tarayıcının mesajda belirtilen farklı bir URI'ye başka bir istek göndermesi isteği. Tarayıcı bunu yapar ve sunucu o sayfayı oluşturur ve iletir .
  13. Modern zamanlarda, Google'ın ön sayfası çok daha dinamiktir. Siz yazarken, tarayıcı içinde istemci tarafında çalışan JavaScript, Google'a yazdığınız şeyi bir "yan kanal" boyunca gönderir (iletişim için aynı protokolleri kullanır, ancak tarayıcının kendisi tüm sayfalar için istek gönderdiği için , tarayıcı ekranı tamamen temizlenmez ve yeniden çizilmez). Ön sayfa için bu, sorgu ipuçlarını sağlamak için kullanılır (diğer insanlar son zamanlarda yaptıklarından, aradığınız şeyler için otomatik tamamlama önerileri); sonuçlar sayfasında, aynı şeyi yapar, ancak tarayıcı tarafından tam sayfa yeniden yüklenmesine gerek kalmadan gerçek zamanlı arama sonuçları sağlamak ve sayfayı tamamen yeniden çizmek için de kullanılabilir. Bu tür hileler AJAX (Asenkron JavaScript ve XML,

Üniversitedeki birinci sınıf "IT'ye Giriş" sınıfını gösterdikleri bu filmin temelleri, dostça ve benzer formatta gösterilmiştir. Hiçbir şekilde teknik değildir, ancak bu bulmacanın parçalarına iyi bir kavramsal bakış sağlar.


1
Bu iyi bir cevaptır, ancak çoğu insanın gereksiz olarak değerlendireceği birçok ayrıntıyı inceler. (Bu ayrıntıları eklemeniz gerektiğini söylemiyorum; Sadece gönderinizin önerdiğinden çok daha fazla şey olduğuna dikkat
çekiyorum

1
Evet, DNS aramaları için TCP ve UDP'ye girmeniz gerekiyor. TCP ise, TCP 3 yollu el sıkışmasına gitmelisiniz. Sistemin bir şekilde tanımlanmış alan adı sunucularına sahip olduğunu varsaymak güvenlidir (önceden DHCP veya ağ yapılandırması ile) ....
Alan Shutko

1
@AlanShutko - Ben do 3 yollu el sıkışma söz; ileri ve geri SYN / SYN-ACK / ACK. DNS için birincil protokol olmasına rağmen UDP'den bahsetmedim.
KeithS

@KeithS, ayy, haklısın, daha sonra değil, DNS'yi kontrol ederken arıyordum. 512 bayttan daha büyük bir yanıt varsa ve TCP kesilirse DNS TCP'ye geri dönebilir.
Alan Shutko

1
ANS - "Yetkili Ad Sunucusu", belirli bir etki alanı adının uç noktaları hakkında doğrudan bilgi ve sorumluluk sahibi olan DNS sunucusu. ALD bir yazım hatasıydı. Gönderi, her iki sayımda da daha açık olacak şekilde düzenlenmiştir.
KeithS

1

Çerezlerden ve güvenlik duvarlarından bahsetmek burada eksik olan birkaç şey olacaktır. Çerezlerin gönderilmesi için söylenecek bir şey vardır, böylece "Google.com" bir kullanıcıyı tanıyabilir ve Google'a giriş yapmayan biri için farklı olabilecek bir sayfa sunabilir. Kişinin bunu nerede aradığı sorusu da var: Akıllı telefon, tablet veya normal bilgisayar (dizüstü bilgisayar veya masaüstü)?

Acaba sormanız gereken bazı yan sorular olabilir mi ama burada bir faktör olamaz mı? Bu, İnternet'in biraz daha geniş olacağı ve düşündüğüm e-posta ve diğer şeyleri içerdiği için Web'in nasıl çalıştığıyla ilgili bir soru.


Tahminimce bu iletişim yeteneklerinizin bir testiydi. Teknik ve teknik olmayan bir soruyu anlamak için oldukça teknik bir soru alıp yıkabilir misiniz? Tarayıcılarına "Google.com" ana sayfasını getiren birisini açıklamak için ne tür sorular sormanız gerekir? Bir sürü varsayım mı yapıyorsunuz yoksa soruları mı soruyorsunuz? Bazı açılardan bunu, doğru bir cevap verebilmeniz için soru soracağınız veya bir cevap verirken varsayımlar yaptığınız şeylerin yeterince belirsiz bırakıldığı bir beyaz tahta sorusuna paralel olarak görüyorum.


5
İnternet ile ilgili bir soru aklımda genel olarak ağ oluşturma hakkında daha fazla soru sormak olacaktır; rotalar nasıl bulunur? Bir paketin amacı ve anlamı nedir ve bilgiyi nasıl iletirler? Paketler üzerindeki TCP soyutlaması nasıl çalışır ve neden? Ancak soru gerçekten belirsiz, belki HTTP veya HTML veya ağ anahtarları, ISS'ler ve omurgalar veya herhangi bir şey soruyor olabilir, belki NIC çerçeve arabelleğinizin nasıl kazındığını ve işletim sisteminin, CPU'nun veya NIC'nin bunu yaptığını bilmek istiyor ...
Jimmy Hoffa

@JimmyHoffa: Gerçekten de, geniş bir soru. Bunu soran röportajcılar bunu, sayfa isteğinden sayfa almaya odaklanmanın şeylerin ağ tarafında olduğuna inanacak şekilde ifade ettiler. Devam eden çok şey var ve yeterince teknik olduğu sürece hangi rotada ilerlesem de mutlu olacaklarından şüpheleniyorum ve neden bahsettiğimi biliyordum.
Megacannon

1
Ben de fikirlerini ne kadar iyi iletebildiğinizi görmek için teknik olmayan bir cevap peşinde olduklarını düşünüyorum. Genellikle ağaçlar için ormanı kaybederiz, geniş resmi göremeyiz.
Matt

@JimmyHoffa, iyi bir nokta. Muhtemelen DNS sunucularınızın IP adresleri ile başlamalı ve ağ maskeleriyle aynı alt ağda olup olmadıklarını belirlemeli ve eğer öyleyse onları bulmak için ARP'yi kullanmalısınız. Aksi takdirde ağ geçidine bir paket gönderilir.
Alan Shutko
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.