Potrzebuję bardziej technicznej odpowiedzi na pytanie dotyczące rozmowy na temat działania Internetu od początku do końca [zamknięte]


13

W ciągu ostatnich dwóch tygodni przeprowadziłem wywiady z 5 oddzielnymi osobami, a trzy z tych pięciu zadały mi następujące pytanie: Wyjaśnij, co dzieje się między wejściem na „Google.com” a wyświetlaniem strony na ekranie. Zasadniczo, jak działa Internet. Po trzech razy myślę, że lepiej się przygotuję, jeśli jeszcze raz otrzymam to pytanie.

Wiem pewne rzeczy, ale nie jestem w pełni przekonany, że moja odpowiedź jest wystarczająco dobra. Zasadniczo wspominam, że serwer DNS tłumaczy „google.com” na adres IP. W pewnym sensie przeglądam TCP / IP, a następnie mówię o serwerze WWW dosłownie obsługującym żądane strony, które są wysyłane z powrotem do przeglądarki, którą przeglądarka następnie interpretuje i wyświetla.

Jak powiedziałem wcześniej, nie jestem przekonany, że moja odpowiedź jest wystarczająco techniczna. Jakie kroki pomijam?

Za to, co jest warte, dwa z tych trzech razy były w tej samej firmie i jestem wezwany na trzecią rozmowę z nimi, więc nie mogłem zbyt mocno go zbombardować .


1
Jaki jest charakter stanowisk, z którymi przeprowadzałeś wywiady?
smp7d,

3
Jeśli trzech na pięciu ankieterów zadało to pytanie, nadszedł czas, abyś zajął się badaniami / badaniami i uzyskał dobrą odpowiedź, która pokazuje, że w pełni je rozumiesz. Jeśli zostaniesz wezwany na trzecią rozmowę w tej samej firmie i ponownie zostaniesz o to zapytany, albo udowodnisz, że zależało ci na tym, aby zdobyć wiedzę, albo nie.
Robert Harvey,

1
Ponadto staram się zawęzić zakres pytania, zadając pytanie, która część procesu jest najbardziej zainteresowana. Może ich to nie obchodzi, że dobrze wiesz o takich rzeczach, jak na przykład siedem warstw modelu OSI , ale ty powinien nadal mieć praktyczną wiedzę.
Robert Harvey

1
Z drugiej strony być może odpowiedź jest zbyt techniczna. Być może szukają sposobu, w jaki możesz powiązać informacje z ludźmi w sposób nietechniczny?
Matt

1
Jeśli pytanie ma na celu sprawdzenie, jak dobrze się komunikujesz, być może dobrze jest zadać pytanie dotyczące pytania, a nie tylko udzielić odpowiedzi na bardzo szerokie pytanie. Możesz udzielić bardzo szczegółowej odpowiedzi technicznej i poświęcić cały dzień na jej wyjaśnienie. Nie sądzę, że taki jest cel tego pytania.
Matt

Odpowiedzi:


29
  1. Najpierw przeglądarka systemu operacyjnego szuka w pliku „hosts” wpisu, który przetłumaczy nazwę domeny na adres IP. Jest to odziedziczona funkcja odziedziczona po ARPANET, gdy pojedynczy plik tekstowy mógł zawierać zrozumiałe nazwy dla każdego komputera dostępnego za pośrednictwem ARPANET, a dla każdego podłączonego do niego komputera mieć stosunkowo nową kopię. Kiedyś miał trochę wartości w małych sieciach komputerów, które nie miały NetBIOS lub podobnych protokołów nazewnictwa węzłów, ale obecnie jest równie prawdopodobne, że będzie celem hakerów (którzy mogą go użyć do ominięcia DNS i skierowania twojego komputera na strony kontrolują) w celu legalnego użytkowania na komputerze klienckim lub jego użytkowniku / właścicielu.
  2. Zakładając, że twój komputer nie ma wpisu HOSTS dla tej domeny, twoja przeglądarka wysyła żądanie UDP do serwera DNS skonfigurowanego w ustawieniach internetowych systemu operacyjnego dla używanego połączenia, przekazując „nazwę hosta” czyli nazwę domeny żądania (wszystko między „http: //” a pierwszym dwukropkiem lub ukośnikiem po tym, co nastąpi później, tj. „www.google.com”). Ten serwer DNS zazwyczaj należy do Twojej firmy lub do lokalnego dostawcy usług internetowych.
    • UDP oznacza „Universal Datagram Protocol” i jest protokołem „warstwy transportowej” w tej samej klasie co TCP (powyżej protokołu IP „warstwy sieci”, poniżej protokołów „warstwy aplikacji”, takich jak HTTP, FTP, SMTP itp. ). Podczas gdy TCP zapewnia wiele możliwości sprawdzania błędów i tolerowania błędów (dodawanie dodatkowych danych i zwiększanie w ten sposób kosztów ogólnych), UDP przyjmuje znacznie lżejsze podejście, zwiększając przepustowość danych netto; kompromis polega na tym, że protokół nie obsługuje funkcji dostępnych w TCP, takich jak dzielenie dużych danych na wiele pakietów (więc wiadomości muszą być małe) lub ponowne wysyłanie pakietów utraconych podczas przesyłania. Jest dobry do małych, prostych wiadomości (takich jak DNS) i przesyłania strumieniowego, danych telemetrycznych, gdzie nie ma znaczenia, czy jeden pakiet zostanie utracony.
  3. Ten serwer DNS będzie wiedział jedną z trzech rzeczy: jak przetłumaczyć tę nazwę domeny bezpośrednio na adres IP (co oznacza, że ​​jest to „autorytatywny serwer nazw” lub ANS dla tej domeny); adres IP ANS lub jego rodzica; lub własny nadrzędny serwer nazw, który z większym prawdopodobieństwem będzie mógł uzyskać dostęp do ANS. Jeśli serwer nie przetłumaczy samego żądania, prześle je „w dół” w kierunku znanego ANS lub „w górę” do nadrzędnego NS, a proces ten będzie się powtarzał rekurencyjnie.
    • „Katalog główny” tej struktury drzewa jest pojedynczym serwerem, który nie robi nic poza przekazywaniem otrzymanych żądań do jednego z wielu „serwerów najwyższego poziomu” lub serwerów TLD. Istnieje na przykład serwer nazw „.com”, który wie, jak znaleźć adres IP dowolnej domeny „.com” na planecie (przekazując te żądania do serwerów nazw na poziomie ISP). Te domeny TLD przekazują żądania serwerów nazw domen, które nie są znane przez żaden DNS w ramach określonej „gałęzi” Internetu należącej do dostawcy usług internetowych.
  4. Po znalezieniu autorytatywnego serwera nazw i przetłumaczeniu nazwy domeny na adres IP adres ten jest zwracany klientowi i jego przeglądarce. Jeśli ANS nie może zostać znaleziony w „czasie życia żądania” (TTL; maksymalna liczba przypadków, w których żądanie powinno być przekazywane między serwerami, aby uniknąć nieskończonego przełączania między źle skonfigurowanymi serwerami), węzeł zwraca błąd do klienta którego żądanie „przekroczyło limit czasu” (lub węzeł, który jest autorytatywnym serwerem dla domeny, ale który nie może przetłumaczyć konkretnego prefiksu domeny).
  5. Przeglądarka dla połączenia HTTP wysyła następnie żądanie „TCP SYN” na adres IP i określony port (lub domyślny port HTTP 80) w celu nawiązania połączenia. Jest to żądanie na poziomie protokołu, nałożone na nagłówek IP „na poziomie sieci”, który zawiera informacje, takie jak preferowany port odpowiedzi klienta („port źródłowy”), preferencje dotyczące komunikacji TCP, takie jak rozmiar segmentu, skala okna oraz korzystanie z opcjonalnych funkcji protokołu.
  6. Żądanie jest kierowane na „poziomie łącza” (regulującym sposób manipulowania rzeczywistymi obwodami elektrycznymi w celu przesyłania danych zawartych w sieci, warstwach transportowych i aplikacyjnych) przez strukturę Internetu; zazwyczaj dane będą przesyłane przewodem lub światłowodem do „biura centralnego” w domu lub firmie (nazywa się to „ostatnią milą” i zazwyczaj jest to obwód stanowiący największe wąskie gardło w przepustowości), które jest mniej więcej Autostrada informacyjna. CO ma wtedy dostęp do rur o dużej przepustowości (T-przewoźników, SONET itp.), Które przesyłają twoje żądanie wraz z miliardami innych osób na całym świecie do CO miejsca docelowego, który przesyła je do docelowego serwera lub sieci.
    • To „routing IP” działa w sposób podobny koncepcyjnie jak rozpoznawanie DNS; Dostawcy usług internetowych „najwyższego poziomu” otrzymują od ICANN całe sieci IP „klasy A” (każdy możliwy adres przy znanym pierwszym bajcie), a inni dostawcy usług internetowych wiedzą, kto jest właścicielem tej sieci klasy A i jak uzyskać dane na najbliższym „froncie” tej sieci drzwi ”, używając informacji w„ tabeli routingu ”. Ten usługodawca najwyższego poziomu dzierżawi następnie bloki adresów, niektóre lokalnym lokalnym dostawcom usług internetowych, inni bezpośrednio użytkownikom korporacyjnym, a ci dostawcy usług internetowych i korporacje mają routery, które używają adresu IP (i własnych tabel routingu) w celu ustalenia, czy wysłać pakiety do innych pobliskie obwody, z boku na inne lokalne routery ISP lub na pnie i routery wyższego poziomu.
  7. Serwer odbiera to żądanie (pod warunkiem, że nie jest odrzucane na niższej warstwie abstrakcji, takiej jak gniazdo lub zapora ogniowa), a jeśli zdecyduje się zaakceptować połączenie, wyśle ​​krok odpowiedzi „SYN-ACK”, oba potwierdzając zażądać i określić własne preferencje (w tym dowolne preferencje klientów, które może zaakceptować, ale zmieniając dowolne, których nie może lub które nie zostały określone).
  8. Jeśli klient obsługuje komunikację przy użyciu zestawu opcji podanego przez serwer, wyśle ​​odpowiedź ACK, a teraz połączenie zostanie „nawiązane”.
  9. Następnie przeglądarka wysyła żądanie „HTTP GET”. Żądanie zawiera pełny identyfikator URI zasobu żądanego przez przeglądarkę (mimo że wiemy, że rozmawiamy z www.google.com, wysyłamy ten ciąg jako część żądania, aby serwer mógł, jeśli sobie tego życzy, dokonać dalszej interpretacji nazwa domeny do kierowania żądania). To żądanie może zawierać „pliki cookie”; dane przechowywane na kliencie, które mogą zostać przekazane serwerowi, aby pomóc w wydajnym i wygodnym przetwarzaniu żądania (np. w określeniu preferencji użytkownika).
  10. Serwer odbiera żądanie GET i najpierw decyduje, czy chce je honorować (serwer mógł nasłuchiwać żądań na porcie TCP 80, ale oczekuje wiadomości z innego protokołu aplikacji, takiego jak FTP lub VoIP; jest to rzadkie w przypadku portu 80, ale bardziej powszechne dla innych typów portów). Zakładamy, że to akceptuje; serwer następnie zwraca odpowiedź HTTP zawierającą żądany zasób (w tym przypadku HTML strony domyślnej, która jest wszechobecną stroną wyszukiwania Google). Odpowiedź może również zawierać „pliki cookie”, które serwer prosi klienta o przechowanie (klient może, ale nie musi).
  11. HTML jest przetwarzany przez przeglądarkę i renderowany w celu narysowania strony w oknie przeglądarki. Gdy tak się dzieje, więcej żądań HTTP GET dla Javascript, arkuszy stylów, obrazów i innych danych potrzebnych do wyświetlenia całej zawartości strony w sposób określony przez HTML jest wysyłanych przez klienta, a dane wynikowe są dostarczane przez serwer.
  12. W minionym wieku Google opierał się na formach statycznych; wpisałeś w polu tekstowym to, co chcesz wyszukać, i nacisnąłeś „Szukaj” (lub „Mam szczęście”). Po wykonaniu tej czynności klient wysyła żądanie HTTP POST do serwera; żądanie zawiera lokalizację określoną przez klienta, do której należy wysłać informacje, i oczywiście same informacje. Informacje te są przetwarzane przez serwer, który wykorzystuje je do wyszukiwania wyników wyszukiwania, a serwer tworzy stronę tych wyników, którą wysyła do Ciebie. Lub może przekształcić wyszukiwane hasła w „ciąg zapytania” i odpowiedzieć „przekierowaniem”; żądanie przeglądarki, aby wysłać kolejne żądanie do innego identyfikatora URI określonego w komunikacie. Przeglądarka to zrobi, a następnie serwer zbuduje i wyśle stronę.
  13. W dzisiejszych czasach strona główna Google jest znacznie bardziej dynamiczna. Podczas pisania skrypt JavaScript uruchamiany po stronie klienta w przeglądarce wysyła to, co wpisujesz do Google, wzdłuż „kanału bocznego” (używa tych samych protokołów do komunikacji, ale ponieważ sama przeglądarka nie wysyła żądań dla całych stron , ekran przeglądarki nie jest całkowicie czyszczony i ponownie rysowany). W przypadku strony głównej służy ona do udzielania wskazówek dotyczących zapytań (automatyczne uzupełnianie sugestii dotyczących rzeczy, których możesz szukać, ponieważ ostatnio zrobiły to inne osoby); na stronie wyników robi to samo, ale może również służyć do dostarczania wyników wyszukiwania w czasie rzeczywistym i całkowitego przerysowania strony, bez konieczności pełnego przeładowania strony przez przeglądarkę. Tego typu sztuczki należą do ogólnego nagłówka AJAX (asynchroniczny JavaScript i XML,

Ten film , który pokazał mojej studentce pierwszego roku na studiach „Intro to IT”, ilustruje podstawy w przyjaznym, analogicznym formacie. Nie jest w żaden sposób techniczny, ale zapewnia dobry przegląd koncepcyjny elementów tej układanki.


1
To dobra odpowiedź, ale zawiera wiele szczegółów, które większość ludzi uznałaby za niepotrzebne. (Nie mówię, że musisz dodać te szczegóły; zaznaczam tylko, że dzieje się o wiele więcej, niż sugeruje Twój post).
greyfade,

1
Tak, musisz przejść do TCP vs UDP w celu wyszukiwania DNS. W przypadku protokołu TCP należy przejść do trójstronnego uzgadniania protokołu TCP. Prawdopodobnie bezpiecznie jest założyć, że system ma w jakiś sposób zdefiniowane serwery nazw domen (wcześniej przez DHCP lub konfigurację sieci) ...
Alan Shutko 11.09.2013

1
@AlanShutko - I nie wspominając o 3-way handshake; tam iz powrotem SYN / SYN-ACK / ACK. Nie wspomniałem o UDP, chociaż jest to podstawowy protokół DNS.
KeithS,

@ KeithS, ups, masz rację, szukałem go podczas sprawdzania DNS, nie później. DNS może wrócić do TCP, jeśli odpowiedź jest większa niż 512 bajtów i zostanie obcięta.
Alan Shutko

1
ANS - „Autorytatywny serwer nazw”, serwer DNS, który ma bezpośrednią wiedzę na temat punktów końcowych określonej nazwy domeny i odpowiada za nie. ALD było literówką. Wpis został edytowany, aby był bardziej przejrzysty w obu przypadkach.
KeithS,

1

Pomijając wzmianki o ciasteczkach i zaporach ogniowych, byłoby tutaj kilka rzeczy, których brakuje. Można powiedzieć coś o wysyłaniu plików cookie, aby „Google.com” mógł rozpoznać użytkownika i wyświetlić stronę, która może być inna dla osób niezalogowanych w Google. Pozostaje również pytanie, gdzie szuka tego osoba: smartfon, tablet lub zwykły komputer (laptop lub komputer stacjonarny)?

Zastanawiam się, czy mogą być jakieś dodatkowe pytania, które miałeś zadać, ale nie może to mieć tutaj znaczenia. Jest to raczej pytanie o to, jak działa Internet, ponieważ Internet byłby nieco szerszy i obejmowałby e-mail i inne rzeczy, które moim zdaniem.


Domyślam się, że był to raczej test twoich możliwości komunikacyjnych. Czy możesz zadać raczej techniczne pytanie i rozbić je, aby techniczne i nietechniczne go zrozumiały? Jakie pytania powróciłbyś, prosząc o wyjaśnienie komuś, kto wyświetla stronę główną „Google.com” w swojej przeglądarce? Czy przyjmujesz wiele założeń lub zadajesz pytania? W pewnym sensie postrzegam to jako równoznaczne z pytaniem na białej tablicy, gdzie rzeczy są na tyle niejasne, że albo zadajesz pytania, abyś mógł udzielić dokładnej poprawnej odpowiedzi, albo przyjmujesz założenia przy udzielaniu odpowiedzi.


5
Moim zdaniem pytanie o Internet byłoby bardziej pytaniem o sieci w ogóle; jak znaleźć trasy? Jaki jest cel i znaczenie pakietu i jak przesyłają informacje? Jak działa abstrakcja TCP nad pakietami i dlaczego? Ale pytanie jest naprawdę niejasne, może chodzi o HTTP, HTML, przełączniki sieciowe, dostawców usług internetowych i szkielety itp., Może chce wiedzieć, jak zeskrobany jest bufor ramki NIC i czy robi to system operacyjny, procesor lub karta sieciowa ...
Jimmy Hoffa,

@ JimmyHoffa: Rzeczywiście, jest to szerokie pytanie. Ankieterzy, którzy o to pytali, sformułowali to w taki sposób, że uważam, że główny nacisk kładziony jest na stronę sieciową - od żądania strony do otrzymania strony. Wiele się dzieje i podejrzewam, że byliby szczęśliwi, bez względu na to, którą trasę wybrałem, o ile była wystarczająco techniczna i wiedziałam, o czym mówię.
Megacannon,

1
Też myślę, że szukają nietechnicznej odpowiedzi, aby zobaczyć, jak dobrze potrafisz komunikować pomysły. Często tracimy las za drzewa, nie widzimy szerokiego obrazu.
Matt

@ JimmyHoffa, dobry punkt. Prawdopodobnie powinieneś zacząć od adresu IP swoich serwerów DNS i ustalić, czy są one w tej samej podsieci za pomocą maski sieci, a jeśli tak, użyj ARP, aby je znaleźć. W przeciwnym razie pakiet jest wysyłany do bramy.
Alan Shutko
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.