‫Kursleiter: Unser Ziel ist
‫es also, Back-End-Anwendungen mit Node zu
‫entwickeln und daher ist es wahrscheinlich eine
‫gute Idee, ein grundlegendes Verständnis dafür zu bekommen, wie das
‫Web hinter den Kulissen tatsächlich funktioniert, oder?
‫Und das wird ein wirklich voller Vortrag.
‫Und so lasst uns gleich eintauchen.
‫Um nun besser zu verstehen, wie das
‫Web tatsächlich funktioniert, stellen wir
‫uns zunächst die Frage: Was
‫passiert eigentlich jedes Mal, wenn wir
‫eine URL in
‫unseren Browser eingeben, um eine neue Webseite zu öffnen?
‫Oder jedes Mal, wenn wir Daten von einer API anfordern?
‫Was eigentlich ganz dasselbe ist,
‫konzentrieren wir uns hier nur auf ein einfaches Website-Beispiel.
‫Nun, die einfachste Antwort ist, dass unser Browser, der
‫auch Client genannt wird, eine Anfrage an den Server sendet,
‫auf dem die Webseite gehostet wird.
‫Und der Server sendet dann eine Antwort
‫zurück, die die Webseite enthält, die wir gerade angefordert haben.
‫Und dieser Vorgang wird als Request-Response-Modell oder
‫auch als Client-Server-Architektur bezeichnet.
‫Und alles, worüber wir
‫in diesem Abschnitt sprechen, dreht sich um dieses grundlegende Konzept.
‫Okay, aber gehen wir jetzt noch einen Schritt weiter,
‫denn das ist jetzt wahrscheinlich nicht wirklich
‫neu für Sie, oder?
‫Nehmen wir an, wir möchten auf Google Maps
‫zugreifen, indem wir google schreiben. com/maps als URL in unseren Browser ein.
‫Und jede URL erhält ein HTTP oder HTTPS, das für
‫das Protokoll steht, das für die
‫Verbindung verwendet wird.
‫Und wir werden etwas später in diesem Video darüber sprechen.
‫Dann haben wir hier den Domainnamen,
‫der Google ist. com in
‫diesem Fall und auch nach einem Schrägstrich die sogenannte
‫Ressource, auf die wir
‫zugreifen werden, und in diesem Fall /maps.
‫Was Sie jetzt wissen müssen, ist, dass
‫der Domainname google. com ist nicht die
‫tatsächliche Adresse des Servers, auf den wir zugreifen
‫möchten, sondern nur ein schöner Name, den wir uns leicht merken können.
‫Wir brauchen also eine Möglichkeit, den Domänennamen in die
‫echte Adresse des Servers
‫umzuwandeln, und das geschieht über ein DNS.
‫DNS steht also für Domain Name Server, das
‫sind spezielle Server, die im Grunde wie
‫die Telefonbücher des Internets sind.
‫Der erste Schritt, der beim Öffnen einer Website passiert, besteht
‫darin, dass der Browser eine Anfrage an ein DNS stellt und
‫dieser spezielle Server dann einfach die Webadresse, die
‫wir in den Browser eingegeben haben, mit
‫der echten IP-Adresse des Servers abgleicht.
‫Gut.
‫Und zwar geschieht dies
‫über Ihren Internet Service Provider oder ISP, aber die vollständigen
‫Details sind für uns nicht wirklich wichtig.
‫Was Sie von diesem Teil
‫beachten müssen, ist, dass die Domain nicht die echte
‫Adresse ist und dass ein DNS sie in diese echte IP-Adresse umwandelt, die
‫ein Browser dann aufrufen kann, nachdem sie an unseren Browser
‫zurückgesendet wurde.
‫So sieht also die echte Adresse
‫aus, hat also noch das Protokoll, aber dann kommt die IP-Adresse.
‫Und auch der Port, auf den wir auf dem Server zugegriffen haben.
‫Und die Portnummer dient wirklich nur dazu,
‫einen bestimmten Dienst zu identifizieren, der auf einem Server
‫läuft, und kann sich wie eine Unteradresse vorstellen.
‫Denken Sie daran, wie wir Port 8000 auf
‫unserem Webserver abgehört haben, als wir ihn in der Kreuzung eingerichtet
‫haben, die genau dieser Port ist.
‫Bitte beachten Sie auch, dass die Portnummer nichts
‫mit der Google Maps-Ressource zu tun hat, auf
‫die wir zugreifen möchten.
‫Diese Ressource wird tatsächlich in
‫der HTTP-Anfrage gesendet, wie wir gleich sehen werden.
‫Okay, und damit ist der erste Schritt abgeschlossen.
‫Sobald wir also die echte Webadresse
‫haben, wird eine TCP-Socket-Verbindung zwischen dem Browser
‫und dem Server hergestellt,
‫die nun endgültig verbunden sind.
‫Und diese Verbindung wird normalerweise während der gesamten
‫Zeit aufrechterhalten, die es braucht, um alle
‫Dateien der Website zu übertragen.
‫Nun, was sind unsere TCP und IP?
‫Nun, TCP ist das Transmission Control Protocol und IP
‫ist das Internet Protocol,
‫und zusammen sind sie Kommunikationsprotokolle, die genau
‫definieren, wie Daten über das Web übertragen werden.
‫Sie sind
‫also im Grunde das grundlegende Kontrollsystem
‫des Internets, denn sie sind wiederum diejenigen, die die
‫Regeln für den Datenfluss im Internet festlegen.
‫Und keine Sorge, wir werden etwas später in diesem Video etwas
‫mehr über TCP/IP erfahren.
‫Wie auch immer, jetzt ist es an der Zeit, endlich unsere Anfrage zu stellen.
‫Und die Anfrage, die wir stellen,
‫ist eine HTTP-Anfrage, wobei HTTP für HyperText Transfer Protocol steht.
‫HTTP ist also nach TCP/IP ein weiteres Kommunikationsprotokoll.
‫Übrigens ist ein Kommunikationsprotokoll einfach ein
‫Regelsystem, das es
‫zwei oder mehr Teilnehmern ermöglicht, zu kommunizieren.
‫Und im Fall von HTTP ist es nur ein Protokoll,
‫das es Clients und Webservern ermöglicht, zu kommunizieren,
‫indem Anfragen und Antwortnachrichten von Client zu
‫Server und zurück gesendet werden.
‫Nun sieht eine Anfragenachricht ungefähr so aus.
‫Der Anfang der Nachricht ist also der
‫wichtigste Teil, die Startzeile, die die HTTP-Methode enthält, die
‫in der Anfrage
‫verwendet wird, dann das Anfrageziel und die HTTP-Version.
‫Über HTTP-Methoden gibt es viele, aber die wichtigsten sind
‫Get zum einfachen Anfordern
‫von Daten, Post zum Senden von Daten und Put
‫und Patchen, um Daten grundsätzlich zu ändern.
‫Sie sehen also, dass eine HTTP-Anfrage an den Server nicht
‫nur zum Abrufen von Daten dient, sondern wir auch Daten senden können.
‫Gut?
‫Machen Sie sich jetzt bitte keine Sorgen, wenn Ihnen das
‫jetzt alles zu viel klingt.
‫Wir werden diese Dinge natürlich
‫während des restlichen Kurses verwenden, und
‫das ist eigentlich der Grund, warum ich Ihnen dies erzähle.
‫Wie auch immer, in Bezug auf
‫das Anforderungsziel wird davon ausgegangen, dass der Server
‫in diesem Beispiel auf die Maps-Ressource zugreifen möchte.
‫Erinnere dich daran?
‫Also hatten wir /maps in unserer URL und jetzt wird es
‫als Ziel in der HTTP-Anfrage gesendet, damit
‫der Server dann herausfinden kann, was damit zu tun ist.
‫Und wenn dies leer ist, also wenn es nur ein Schrägstrich wäre,
‫würden wir auf das Stammverzeichnis der Website
‫zugreifen, das nur Google wäre. com in diesem Beispiel.
‫Dann sind der nächste Teil der Anfrage
‫die Anfrage-Header, die nur einige
‫Informationen sind,
‫die wir über die Anfrage
‫selbst senden, und es stehen
‫unzählige verschiedene Header zur Verfügung, z viele, viele andere.
‫Wenn wir schließlich Daten an den Server
‫senden, gibt es auch einen
‫Anfragetext, der diese Daten enthält, beispielsweise aus einem HTML-Formular.
‫Das ist also die HTTP-Anfrage.
‫Natürlich sind es nicht
‫wir Entwickler, die diese Anfragen manuell
‫schreiben, aber es ist immer noch extrem
‫wichtig, dass Sie verstehen, wie eine HTTP-Anfrage und auch eine Antwort
‫aussehen, weil Sie eine Menge damit arbeiten werden, okay?
‫Außerdem möchte ich erwähnen, dass es auch HTTPS gibt, wie
‫Sie wahrscheinlich wissen.
‫Und der Hauptunterschied zwischen HTTP und HTTPS besteht darin,
‫dass HTTPS mit TLS oder SSL verschlüsselt wird, was noch einige
‫weitere Protokolle sind, aber
‫ich werde Sie nicht damit langweilen.
‫Abgesehen von dieser zusätzlichen Verschlüsselung
‫gilt die Logik zwischen HTTP-Anfragen und -Antworten
‫jedoch weiterhin für HTTPS.
‫Alles klar, unsere Anfrage erreicht jetzt den Server,
‫der daran arbeitet, bis unsere Website zum
‫Zurücksenden bereit ist.
‫Und es sendet es zurück, wie Sie sich
‫vorstellen können, eine HTTP-Antwort.
‫Und die HTTP-Antwortnachricht sieht der
‫Anfrage tatsächlich ziemlich ähnlich.
‫So auch mit einer Startlinie, Kopfzeilen und einem Körper.
‫Die Startzeile enthält neben der HTTP-Version einen
‫Statuscode und eine Nachricht.
‫Im Grunde also, um dem
‫Kunden mitzuteilen, ob die Anfrage erfolgreich war oder nicht.
‫Diese 200 zum Beispiel bedeutet in
‫Ordnung, und jeder kennt den Statuscode 404, was
‫nicht gefunden bedeutet.
‫Und hier kommt also dieser 404-Code, den
‫Sie bereits kannten.
‫Dann die Antwortheader oder Informationen über
‫die Antwort selbst.
‫Also genau wie zuvor, und es gibt eine Menge zur
‫Verfügung und wir können auch unsere eigenen Header erstellen.
‫Der Unterschied zu Antwortheadern besteht
‫darin, dass es tatsächlich der Back-End-Entwickler wie
‫Sie ist, der sie spezifiziert und in der Antwort zurücksendet.
‫Gut.
‫Schließlich ist der letzte Teil der
‫Antwort wieder der Körper, der in den meisten Antworten
‫tatsächlich vorhanden ist.
‫Und es ist auch der Entwickler, der den Körper
‫in der Antwort gezielt zurückschickt.
‫Und das haben wir tatsächlich schon in der Kreuzung
‫mit Response gemacht. Ende, erinnerst du dich?
‫Und der Body sollte normalerweise den HTML-Code der
‫angeforderten Website enthalten oder beispielsweise JSON-Daten, die
‫von einer API oder ähnlichem zurückkommen.
‫Daher haben wir hier ausführlich
‫über die wichtigsten
‫Teile gesprochen, nämlich den HTTP-Request und die Response.
‫Aber in unserem imaginären Beispiel haben wir nur eine Anfrage
‫an Google gestellt. com und bekam eine Antwort.
‫Wenn es sich jedoch um eine Website handelt, auf die
‫wir zugreifen möchten, wird es viele, viele weitere Anfragen und Antworten geben.
‫Und das liegt daran, dass wir
‫bei der ersten Anfrage nur die ursprüngliche HTML-Datei zurückbekommen.
‫Diese Datei wird dann nach allen Assets
‫durchsucht, die sie zum Erstellen
‫der gesamten Website benötigt, wie JavaScripts, CSS-Dateien, Bilddateien oder andere Vermögenswerte.
‫Und für jede dieser verschiedenen
‫Dateien stellt der Browser dann eine neue HTTP-Anfrage an den Server.
‫Im Grunde passiert also dieses ganze Hin
‫und Her zwischen Client und Server, das gerade
‫erklärt wurde, für jede
‫einzelne Datei, die auf der Website enthalten ist.
‫Es können jedoch mehrere Anfragen und Antworten
‫gleichzeitig erfolgen.
‫Aber die Menge ist eigentlich
‫begrenzt, da sonst die Verbindung langsamer werden würde.
‫Okay, und dann endlich, wenn alle Dateien angekommen sind, wird
‫die Website im
‫Browser nach den HTML-, CSS- und JavaScript-Spezifikationen gerendert, die
‫Sie vielleicht schon kennen.
‫Und jetzt, als letztes Teil dieses Puzzles,
‫lassen Sie uns noch einmal über TCP/IP
‫sprechen und herausfinden, wie Anforderungs- und Antwortdaten tatsächlich über
‫das Web gesendet werden.
‫Wir haben bereits gesagt, dass TCP und IP
‫die Kommunikationsprotokolle sind, die definieren,
‫wie Daten über das Web übertragen werden.
‫Ich werde hier nicht ins Detail gehen, aber hier
‫ist, was Sie wissen müssen.
‫Erstens besteht die Aufgabe von TCP darin, die Anfragen
‫und Antworten in Tausende kleiner Blöcke, sogenannte Pakete, aufzuteilen, bevor
‫sie festgelegt werden.
‫Sobald sie ihr Ziel erreicht haben, werden
‫alle Pakete wieder in
‫die ursprüngliche Anfrage oder Antwort zusammengesetzt, damit
‫die Nachricht so schnell wie möglich
‫am Ziel ankommt, was nicht möglich wäre, wenn
‫wir die Website in einem großen Stück senden würden.
‫Das wäre also, als würde man versuchen,
‫mit dem größten Bus, den man sich vorstellen kann, durch
‫den Tanzverkehr zu fahren.
‫Also keine gute Idee.
‫Im zweiten Teil besteht die Aufgabe des IP-Protokolls darin,
‫all diese Pakete tatsächlich über das Internet zu senden
‫und zu routen.
‫Es stellt also sicher, dass alle am Ziel ankommen,
‫an das sie gehen sollten, indem sie IP-Adressen für jedes Paket verwenden.
‫Und wieder ist dies nur ein sehr breiter Überblick
‫darüber, was wirklich hinter den Kulissen des Webs passiert,
‫denn das sind eigentlich viel zu viele Informationen,
‫als Sie tatsächlich benötigen,
‫um ein großartiger Backend-Entwickler zu werden.
‫Aber ich hoffe, dass Sie diese Informationen
‫trotzdem nützlich und interessant fanden und auch nicht allzu verwirrend.
‫Im nächsten Video werden wir dann tatsächlich
‫einige HTTP-Requests durchführen, damit Sie sich mit dem Protokoll etwas
‫vertrauter machen.