Benötigen Sie eine technischere Antwort auf eine Interview-Frage, wie das Internet von Anfang bis Ende funktioniert?

13

Ich hatte in den letzten zwei Wochen Interviews mit 5 verschiedenen Personen, und drei von diesen fünf haben mir folgende Frage gestellt: Erklären Sie, was zwischen dem Aufrufen von "Google.com" und dem Aufrufen der Seite auf dem Bildschirm passiert. Grundsätzlich funktioniert das Internet. Ich denke nach dreimal, dass ich besser vorbereitet bin, wenn ich diese Frage jemals wieder bekomme.

Ich weiß einiges , bin aber nicht ganz davon überzeugt, dass meine Antwort gut genug ist. Grundsätzlich erwähne ich, dass der DNS-Server "google.com" in eine IP-Adresse übersetzt. Ich beschönige TCP / IP ein bisschen und spreche dann davon, dass der Webserver angeforderte Seiten buchstäblich bereitstellt, die an den Browser zurückgesendet werden, den der Browser dann interpretiert und anzeigt.

Wie ich bereits sagte, bin ich nicht überzeugt, dass meine Antwort technisch genug ist. Was sind die Schritte, die ich auslasse?

Für das, was es wert ist, waren zwei dieser drei Male bei der gleichen Firma und ich werde zurückgerufen, um ein drittes Interview mit ihnen zu führen, also kann ich es nicht zu hart bombardieren .

Megakanone
quelle
1
Was ist die Art der Positionen, für die Sie interviewt haben?
smp7d
3
Wenn drei von fünf Interviewern diese Frage gestellt haben, ist es Zeit für Sie, etwas zu studieren / zu recherchieren und eine gute Antwort zu erhalten, die zeigt, dass Sie sie vollständig verstehen. Wenn Sie für ein drittes Interview bei derselben Firma angerufen werden und die Frage erneut gestellt wird, werden Sie entweder nachweisen, dass Sie sich genug um Ihr Wissen gekümmert haben, oder Sie haben es nicht getan.
Robert Harvey
1
Darüber hinaus würde ich versuchen, den Umfang der Frage einzugrenzen, indem ich frage, an welchem ​​Teil des Prozesses sie am meisten interessiert sind. Es ist ihnen vielleicht egal, dass Sie sich beispielsweise mit Dingen wie den sieben Schichten des OSI-Modells auskennen, aber Sie sollte noch ein funktionierendes Wissen haben.
Robert Harvey
1
Andererseits ist die Antwort vielleicht zu technisch. Vielleicht möchten sie wissen, wie Sie Informationen auf nicht-technische Weise mit Menschen in Verbindung bringen können?
Matt
1
Wenn die Frage gestellt wird, um zu sehen, wie gut Sie kommunizieren, ist es möglicherweise hilfreich, Fragen zu dieser Frage zu stellen, anstatt nur eine Antwort auf eine sehr breite Frage zu geben. Sie könnten eine sehr detaillierte technische Antwort geben und sich den ganzen Tag Zeit nehmen, um sie zu erklären. Ich denke nicht, dass das der Zweck der Frage ist.
Matt

Antworten:

29
  1. In Ihrem Browser sucht das Betriebssystem zunächst in der Datei "hosts" nach einem Eintrag, der den Domänennamen in eine IP-Adresse übersetzt. Dies ist eine Legacy-Funktion, die von ARPANET geerbt wurde, als es möglich war, dass eine einzelne Textdatei verständliche Namen für jeden Computer enthielt, auf den über ARPANET zugegriffen werden konnte, und dass für jeden Computer, der mit ARPANET verbunden war, eine relativ aktuelle Kopie vorhanden war. Früher hatte es in kleinen Netzwerken von Computern, die kein NetBIOS oder ähnliche Node-Naming-Protokolle hatten, noch einen gewissen Wert, aber heute ist es wahrscheinlich auch ein Ziel für Hacker (die es verwenden können, um DNS zu umgehen und Ihren Computer auf Sites zu verweisen Sie kontrollieren, ob ein Client-Computer oder sein Benutzer / Eigentümer eine legitime Verwendung hat.
  2. Angenommen, Ihr Computer hat keinen HOSTS-Eintrag für diese Domain, dann sendet Ihr Browser eine UDP-Anfrage an den DNS-Server, der in den Interneteinstellungen des Betriebssystems für die verwendete Verbindung konfiguriert ist, und übergibt den "Hostnamen", den Domainnamen der Anfrage (alles) zwischen "http: //" und dem ersten Doppelpunkt oder Schrägstrich nach dem nächsten, dh "www.google.com"). Dieser DNS-Server gehört normalerweise entweder Ihrem Unternehmen oder Ihrem lokalen Internetdienstanbieter.
    • UDP steht für "Universal Datagram Protocol" und ist ein "Transport-Layer" -Protokoll in derselben Klasse wie TCP (über dem IP-Protokoll "Network-Layer", unter den Protokollen "Application-Layer" wie HTTP, FTP, SMTP usw.) ). Während TCP eine Vielzahl von Funktionen zur Fehlerprüfung und Fehlertoleranz bietet (Hinzufügen zusätzlicher Daten und damit Erhöhung des Overheads), ist UDP wesentlich unkomplizierter und erhöht die Nettodatenbandbreite. Der Nachteil ist, dass das Protokoll die in TCP verfügbaren Funktionen wie das Aufteilen großer Datenmengen in mehrere Pakete (Nachrichten müssen also klein sein) oder das erneute Senden von Paketen, die während der Übertragung verloren gegangen sind, nicht unterstützt. Es ist gut für kleine, einfache Nachrichten (wie DNS) und Streaming-Daten vom Typ Telemetrie, bei denen es egal ist, ob ein Paket verloren geht.
  3. Dieser DNS-Server weiß eines von drei Dingen: Wie übersetzt man diesen Domainnamen direkt in eine IP-Adresse (was bedeutet, dass es der "autorisierende Nameserver" oder ANS für diese Domain ist); die IP-Adresse des ANS oder eines Elternteils davon; oder einen eigenen übergeordneten Nameserver, der mit größerer Wahrscheinlichkeit weiß, wie er den ANS erreicht. Wenn der Server die Anforderung selbst nicht übersetzt, leitet er die Anforderung entweder "abwärts" an einen bekannten ANS oder "aufwärts" an seinen übergeordneten NS weiter, und dieser Vorgang wird rekursiv wiederholt.
    • Der "Stamm" dieser Baumstruktur ist ein einzelner Server, der nur die empfangenen Anforderungen an einen von mehreren "Top-Level-Domain" - oder TLD-Servern weiterleitet. Es gibt zum Beispiel einen ".com" -Nameserver, der weiß, wie die IP-Adresse einer beliebigen ".com" -Domäne auf dem Planeten ermittelt wird (indem diese Anforderungen an Nameserver auf ISP-Ebene weitergeleitet werden). Diese TLDs leiten Anforderungen für Domain Name Server weiter, die keinem DNS in einem bestimmten "Zweig" des Internets eines Internetdienstanbieters bekannt sind.
  4. Sobald der autorisierende Nameserver gefunden wurde und den Domainnamen in eine IP-Adresse übersetzt hat, wird diese Adresse an den Client und dessen Browser zurückgegeben. Wenn ein ANS innerhalb der "Time to Live" (TTL) der Anforderung nicht gefunden werden kann (die maximale Häufigkeit, mit der die Anforderung zwischen Servern weitergeleitet werden sollte, um ein unbegrenztes Wechseln zwischen falsch konfigurierten Servern zu vermeiden), gibt der Knoten unter einen Fehler an den Client zurück Die Anforderung "Timeout" (oder der Knoten, der der autorisierende Server für die Domäne ist, das bestimmte Domänenpräfix jedoch nicht übersetzen kann).
  5. Der Browser sendet dann für eine HTTP-Verbindung eine "TCP SYN" -Anforderung an die IP-Adresse und den angegebenen Port (oder den Standard-HTTP-Port 80), um eine Verbindung herzustellen. Hierbei handelt es sich um eine Anforderung auf Protokollebene, die über dem IP-Header auf "Netzwerkebene" liegt und Informationen wie den bevorzugten Antwortport des Clients (den "Quellport") sowie Einstellungen für die TCP-Kommunikation wie Segmentgröße und Fensterskalierung enthält und Verwendung optionaler Protokollfunktionen.
  6. Die Anforderung wird auf der "Verbindungsebene" (die regelt, wie die tatsächlichen elektrischen Schaltkreise manipuliert werden, um die in der Netzwerk-, Transport- und Anwendungsebene enthaltenen Daten zu übertragen) durch die Struktur des Internets geleitet. In der Regel werden die Daten über ein Kabel oder eine Glasfaser zum "Central Office" Ihres Hauses oder Geschäfts geleitet (dies wird als "letzte Meile" bezeichnet und ist in der Regel die Schaltung, die den größten Engpass bei der Bandbreite darstellt) die Datenautobahn. Der CO hat dann Zugriff auf Pipes mit hoher Bandbreite (T-Carrier, SONET usw.), die Ihre Anfrage zusammen mit Milliarden anderer weltweit an den CO des Ziels übertragen und an den Zielserver oder das Zielnetzwerk weiterleiten.
    • Dieses "IP-Routing" funktioniert konzeptionell ähnlich wie die DNS-Auflösung. "Top-Tier" -ISPs werden von ICANN ganze "Klasse A" -IP-Netzwerke zugewiesen (jede mögliche Adresse mit einem bekannten ersten Byte), und andere ISPs wissen, wem dieses Klasse A-Netzwerk gehört und wie die Daten an die nächstgelegene "Front" des Netzwerks geleitet werden door ", unter Verwendung von Informationen in einer" Routing-Tabelle ". Dieser Top-Tier-ISP vermietet dann Adressblöcke, einige an lokale ISPs, andere direkt an Unternehmensbenutzer. Diese ISPs und Unternehmen verfügen über Router, die anhand der IP-Adresse (und ihrer eigenen Routingtabellen) bestimmen, ob Pakete an andere gesendet werden sollen In der Nähe befindliche Leitungen, seitwärts zu anderen lokalen ISP-Routern oder zu übergeordneten Amtsleitungen und Routern.
  7. Der Server empfängt diese Anforderung (vorausgesetzt, sie wird nicht auf einer niedrigeren Abstraktionsschicht wie dem Socket oder einer Firewall zurückgewiesen). Wenn er die Verbindung akzeptiert, sendet er einen Anforderungs-Antwort-Schritt "SYN-ACK", der beide bestätigt Anfordern und Angeben seiner eigenen Einstellungen (einschließlich der Einstellungen der Clients, denen es entsprechen kann, aber Ändern von Einstellungen, die es nicht kann oder die nicht angegeben wurden).
  8. Wenn der Client die Kommunikation mit der vom Server bereitgestellten Option unterstützt, sendet er eine ACK-Antwort, und die Verbindung wird nun "hergestellt".
  9. Der Browser sendet als nächstes eine "HTTP GET" -Anforderung. Die Anfrage enthält den vollständigen URI der vom Browser angeforderten Ressource (obwohl wir wissen, dass wir mit www.google.com sprechen, senden wir diese Zeichenfolge als Teil der Anfrage, damit der Server sie auf Wunsch weiter interpretieren kann den Domainnamen, um die Anfrage zu leiten). Diese Anfrage kann "Cookies" enthalten; Auf dem Client gespeicherte Daten, die an den Server weitergegeben werden können, um die effiziente und bequeme Verarbeitung der Anforderung zu unterstützen (z. B. Identifizierung der Vorlieben des Benutzers).
  10. Der Server empfängt die GET-Anforderung und entscheidet zunächst, ob er sie berücksichtigen möchte (der Server hat möglicherweise auf Anforderungen für TCP-Port 80 gewartet, erwartet jedoch Nachrichten von einem anderen Anwendungsprotokoll wie FTP oder VoIP; dies ist jedoch für Port 80 selten häufiger für andere Arten von Ports). Wir werden annehmen, dass es dies akzeptiert. Der Server gibt dann eine HTTP-Antwort zurück, die die angeforderte Ressource enthält (in diesem Fall den HTML-Code für die Standardseite, die die allgegenwärtige Suchseite von Google darstellt). Die Antwort kann auch "Cookies" enthalten, die der Server vom Client zum Speichern auffordert (der Client kann dies tun oder nicht).
  11. Der HTML-Code wird vom Browser verarbeitet und gerendert, um die Seite im Browserfenster zu zeichnen. Währenddessen sendet der Client weitere HTTP-GET-Anforderungen für Javascript, Stylesheets, Bilder und andere Daten, die erforderlich sind, um den gesamten Inhalt der Seite in der vom HTML vorgegebenen Weise anzuzeigen, und die resultierenden Daten werden vom bereitgestellt Server.
  12. In früheren Zeiten basierte Google auf statischen Formularen. Sie haben das Gesuchte in das Textfeld eingegeben und auf "Suchen" (oder "Ich fühle mich glücklich") geklickt. Wenn Sie dies tun, sendet der Client eine HTTP-POST-Anforderung an den Server. Die Anfrage enthält den vom Kunden angegebenen Ort, an den die Informationen gesendet werden sollen, und natürlich die Informationen selbst. Diese Informationen werden vom Server aufbereitet, der sie zum Suchen von Suchergebnissen verwendet, und der Server erstellt eine Seite mit diesen Ergebnissen, die er an Sie sendet. Oder es kann die Suchbegriffe in eine "Abfragezeichenfolge" umwandeln und mit einer "Umleitung" antworten. eine Anforderung an den Browser, eine weitere Anforderung an einen anderen in der Nachricht angegebenen URI zu senden. Der Browser wird dies tun, und dann wird der Server diese Seite erstellen und übertragen .
  13. In der heutigen Zeit ist die Startseite von Google viel dynamischer. Während der Eingabe sendet JavaScript, das auf der Clientseite des Browsers ausgeführt wird, das, was Sie eingeben, über einen "Seitenkanal" an Google (für die Kommunikation werden dieselben Protokolle verwendet, aber nicht der Browser selbst sendet Anforderungen für ganze Seiten wird der Browserbildschirm nicht vollständig gelöscht und neu gezeichnet). Für die Startseite wird dies verwendet, um Abfragetipps bereitzustellen (automatische Vervollständigung von Vorschlägen für Dinge, nach denen Sie möglicherweise suchen, weil andere dies kürzlich getan haben). Auf der Ergebnisseite wird das Gleiche ausgeführt, es kann jedoch auch verwendet werden, um Suchergebnisse in Echtzeit bereitzustellen und die Seite vollständig neu zu zeichnen, ohne dass eine vollständige Seite vom Browser neu geladen werden muss. Diese Arten von Tricks fallen unter die allgemeine Überschrift von AJAX (Asynchronous JavaScript and XML,

In diesem Film , den sie meinem Studienanfänger "Intro to IT" im College gezeigt haben, sind die Grundlagen in einem freundlichen, analogen Format dargestellt. Es ist keineswegs technisch, bietet aber einen guten konzeptionellen Überblick über die Teile dieses Puzzles.

KeithS
quelle
1
Dies ist eine gute Antwort, beschönigt aber viele Details, die die meisten Leute für unnötig halten würden. (Ich sage nicht, dass Sie diese Details hinzufügen müssen; ich weise nur darauf hin, dass viel mehr los ist, als in Ihrem Post vorgeschlagen wird.)
greyfade
1
Ja, Sie müssen TCP vs UDP für DNS-Lookups verwenden. Bei TCP sollten Sie den TCP-3-Wege-Handshake verwenden. Es ist wahrscheinlich sicher anzunehmen, dass das System Domänennamenserver definiert hat (durch DHCP oder Netzwerkkonfiguration im Voraus) ....
Alan Shutko
1
@AlanShutko - ich kann schweigen von dem 3-Wege - Handshake; das hin und her SYN / SYN-ACK / ACK. Ich habe UDP nicht erwähnt, obwohl es das primäre Protokoll für DNS ist.
KeithS
@KeithS, hoppla, du hast recht, ich habe danach gesucht, als ich DNS überprüft habe, nicht später. DNS kann auf TCP zurückgreifen, wenn eine Antwort größer als 512 Byte ist und diese abgeschnitten wird.
Alan Shutko
1
ANS - "Authoritative Name Server", der DNS-Server, der die Endpunkte eines bestimmten Domänennamens direkt kennt und dafür verantwortlich ist. ALD war ein Tippfehler. Der Beitrag wurde bearbeitet, um in beiden Punkten klarer zu sein.
KeithS
1

Das Auslassen von Erwähnungen von Cookies und Firewalls würde hier ein paar Dinge vermissen lassen. Das Senden von Cookies kann dazu führen, dass "Google.com" einen Nutzer erkennt und eine Seite anzeigt, die für jemanden, der nicht bei Google angemeldet ist, möglicherweise anders ist. Es stellt sich auch die Frage, wo die Person nachschaut: Smartphone, Tablet oder normaler Computer (Laptop oder Desktop)?

Ich frage mich, ob es vielleicht einige Nebenfragen gibt, die Sie stellen sollten, aber das könnte hier nicht eine Rolle spielen. Dies ist eher eine Frage der Funktionsweise des Webs, da das Internet etwas umfassender wäre und E-Mails und andere Dinge enthalten würde, die ich denke.


Ich vermute, das war eher ein Test für Ihre Kommunikationsfähigkeiten. Können Sie eine eher technische Frage aufschlüsseln, damit technische und nichttechnische Fragen sie verstehen? Welche Art von Fragen würden Sie zurückbringen, wenn Sie gefragt würden, ob jemand die "Google.com" -Homepage in seinem Browser aufruft? Nehmen Sie eine Reihe von Annahmen an oder stellen Sie die Fragen? In gewisser Weise sehe ich dies als Parallele zu einer Whiteboard-Frage, bei der die Dinge so vage bleiben, dass Sie entweder Fragen stellen, um eine präzise richtige Antwort zu geben, oder Annahmen treffen, wenn Sie eine Antwort geben.

JB King
quelle
5
Eine Frage zum Internet würde mich eher nach dem Networking im Allgemeinen fragen. Wie werden Routen gefunden? Was ist der Zweck und die Bedeutung eines Pakets und wie übertragen sie Informationen? Wie funktioniert die TCP-Abstraktion über Pakete und warum? Aber die Frage ist sehr vage. Vielleicht geht es um HTTP, HTML, Netzwerk-Switches, ISPs und Backbones oder irgendetwas anderes. Vielleicht möchte es wissen, wie der NIC-Frame-Buffer geschabt wird und ob das Betriebssystem, die CPU oder die NIC dies tun ...
Jimmy Hoffa
@ JimmyHoffa: In der Tat ist es eine breite Frage. Die Interviewer, die es fragten, formulierten es so, dass ich glaube, dass der Fokus auf der Netzwerkseite der Dinge liegt - von Seitenanforderung zu Seite. Es ist viel los und ich vermute, dass sie glücklich wären, egal welchen Weg ich genommen habe, solange es technisch genug war und ich wusste, wovon ich sprach.
Megacannon
1
Ich denke auch, dass sie nach einer nicht-technischen Antwort suchen, um zu sehen, wie gut Sie Ideen kommunizieren können. Oft verlieren wir den Wald vor lauter Bäumen, können das breite Bild nicht sehen.
Matt
@ JimmyHoffa, guter Punkt. Sie sollten wahrscheinlich mit der IP-Adresse Ihrer DNS-Server beginnen und über die Netzmaske ermitteln, ob sie sich im selben Subnetz befinden, und in diesem Fall ARP verwenden, um sie zu finden. Andernfalls wird ein Paket an das Gateway gesendet.
Alan Shutko