Browser
Ein Browser ist ein Programm, welches html Code interpretiert und rendert. Dabei wird der Code in ein DOM-Tree umgewandelt und dann gerendert. Es ist dem Browser egal, ob der Code korrekt ist oder nicht. Die Webseite wird immer gerendert. Nicht jeder Browser stellt aber den selben Code gleich dar. Dies liegt daran, dass Browser unterschiedliche Engines mit unterschiedlichen Standards implementieren.
Ein Browser ist um einiges komplexer als z.B. der Linux Kernel.
Ablauf
- Eingabe der URL in die Adressleiste
- DNS Auflösung
- HTTP/S Request senden
- Server antwortet mit HTTP/S Response
- Einlesen der HTML Datei (über HTTP/S oder lokal)
- Laxikalische Analyse (Tokenisierung)
- Der HTML Code wird in Tokens zerlegt (Aus
<h1>Hello</h1>werden<h1>,Hello,</h1>).
- Syntaktische Analyse (Parsing)
- Der Token-Stream wird in ein DOM-Tree umgewandelt.
- DOM-Tree wird gerendert
- Laden und Ausführen von CSS und JavaScript
- Erstellung des Render-Tree
- Layout
- Display
Unterschiede zu Compiler
Browser sind im Gegensatz zu Compiler sehr fehlertolerant. Der Browser versucht die Webseite trotz fehlerhaftem Code darzustellen. Durch das Robustheitsprinzip nutzt der Browser Standardwerte und ähnliche bekannte Fixes damit bei Fehlern trotzdem eine Webseite dargestellt werden kann.
Compiler sind dagegen sehr streng und geben bei Fehlern einen Fehler aus und beenden die Ausführung. Durch genaue Spezifikation des Fehlers, teilt der Compiler dem Entwickler mit, welche Fehler dieser beheben muss. Das Ziel im Gegensatz zum Browser ist korrekter, ausführbarer Code.
Leaks
Auch wenn heutzutage Browser zu den sichersten Programmen gehören, kann es auch zu Leaks von sensiblen Daten kommen.
Durch Features wie WebRTC ist es möglich, dass die IP Adresse des Nutzers offen gelegt wird.
Browser-Fingerprinting ist eine Methode um Benutzer zu identifizieren, ohne dass der Nutzer persönlich identifiziert werden muss.
Hierfür werden Eigenschaften des Browsers genutzt, die von Benutzer zu Benutzer unterschiedlich sind.
Das kann die Größe des Browsers sein, die installierten Plugins, die verwendeten Fonts oder auch die Zeitzone.