Hallo,
ambitionierte Frage....
könnt ihr mir erklären wie ein Internet-Browser arbeitet?
Wie empfängt er den HTML-Quellcode und sendet Anfragen an einen Server?
Dazu gibt es das Protokoll HTTP, welches beschreibt, wie Hypertext übertragen wird. Im einfachsten Fall schickt der Browser dem Server ein Request-Paket, das in etwa so aussieht:
GET http://forum.de.selfhtml.org/ HTTP/1.1
(kannst du mit telnet ausprobieren)
Und der Server schickt dann die Antwort:
Content-type: text/html
<!DOCTYPE.....>
....
</HTML>
Wie interpretiert er den HTML-Code, so dass er weiß was er mit den einzelnen Tags anfangen soll?
Dazu gibt es einerseits die DOCTYPE, die definiert, welche Tags es gibt, welche Tags alleine stehen können (<BR> z.B.) und welche geschlossen werden müssen.
Grundsätzlich grast der die Rendering-Engine den Source ab, und baut einen referenzierten Baum daraus, sodass für jedes HTML Element bekannt ist, in welchem anderen Element es eingebunden ist und welche anderen Elemente in ihm selbst eingeschlossen sind.
Wenn der Baum fertig aufgebaut ist, wird dem BODY-Tag gesagt, er soll sich "zeichnen". Das kann er nur machen, indem er allen untergeordneten Tags sagt, die sollen sich zeichnen. Wenn da jetzt beispielsweise 2 <P>-Tags sind, sagt der BODY dem 1. P, er soll sich zeichnen kann ganz links oben beginnen. Der P-Tag malt den Text und weiss vom BODY, dass er die ganze Fensterbreite nutzen kann, bricht den Text dementsprechend um und wenn er fertig ist, sagt er dem BODY: Fertig, ich habe 600 Pixel breit und 70 Pixel hoch gebraucht.
Und der Body sagt dem 2. P: Mal dich, und beginne bei 70 Pixel von oben zu malen.
Yepp. So ungefähr funktioniert das.
Hoffentlich könnt ihr mir ein bisschen weiterhelfen, würd mich mal brennend interessieren, wie ein Browser funktioniert.
Ist auch wirklich interessant. Das ganze jedoch in allen Facetten zu verstehen, ist sehr komplex... sieh mal unter mozilla.org, wenn du ein bisserl C verstehst: Dort gibts alle Sourcen für den Mozilla-Browser, die Gecko-Engine (die steckt im neuen Netscape-Browser)!
Liebe Grüsse,
gerhardii