archilles scriptworld Forum

» Startseite
  » Support-Foren
      » Häufig gestellte Fragen (FAQ)
          · FAQ: Weiterführendes zu Webservern und Netzwerk-Grundkenntnisse

Seite: 1

FAQ: Weiterführendes zu Webservern und Netzwerk-Grundkenntnisse Archilles
Version 4 - 12. Juni 2004 12:00:00 CEST

Auf Wunsch einiger Besucher hin und weil ich teilweise dieselben gundlegenden Fragen beantworten muß, habe ich mich entschlossen eine größere FAQ zu vielen Fragen zu beantworten. Damit sollen einige essentielle Techniken und Grundbegriffe aus der Programmierwelt und Serverwelt erläutert werden. Ich hoffe, viele neue Fragen zu bekommen, um diese FAQ erweitern zu dürfen. Zu lesen ist dies speziell für Anfänger - wobei ich meine Erfahrungen weitergebe. Einiges muß ich tief aus dem Gedächtnis holen, also nicht böse sein, wenn es nicht ganz korrekt ist; man kann es ja editieren. Dabei sollte einem keine Frage peinlich sein. Alles weiß ich auch nicht und muß es mir zusammensuchen ;-)

Wenn du weitere Fragen hast oder Verbesserungen oder etwas unverständlich ist, ruhig fragen und posten. Bitte jedoch in einem eigenen Thread! Dieser ist geschlossen. Nimm am Besten das Forum "Frei für alle".

Was ist das Internet und wie funktioniert es?

Das Internet ist ein zusammengeschlossenes, weltweites Computernetzwerk bestehend aus vielen kleinen. Es ist das größte WAN (Wide Area Network) auf unserem Planeten. Stellen wir uns das ganze als weltumspannendes Schienennetz vor, welches den Leitungen (Glasfaser, Transatlantik-Kabel etc.) entspricht. Die Aufgaben für jede Komponenten in einem Netzwerk sind grundlegend aufgeteilt. Ein OSI-Netzwerkmodell besteht aus sieben Schichten, wobei jede folgende auf die bisherigen aufsetzt. Ohne dich langweilen oder überfordern zu wollen, eine kurze Erklärung zu jeder. Das ist nur eine Grundlage und keineswegs immer gleich oder als Gesetz anzusehen; nur das OSI-Modell ist es als solches. Netzwerke sind sehr komplexe Gebilde. Ich bewundere Menschen, die das alles in Ihrem Köpfchen unterbringen können :-D

1 Physikalische Schicht - Das ist direkt die Hardware des Netzwerkes und stellen die Kabel dar. Das kann Kupfer, LWL (Lichtwellenleiter/Glasfaser) oder auch ein Funkmedium sein. Die Kontrollchips werden hier PHY genannt.

2 Datenverbindungsschicht - Hier wird das Durchreichen der Daten vorgenommen, grundlegene Fehlerkorrektur und Erkennung der Daten-Struktur, wie Bitmuster oder Kodierungen. Man unterteilt dies häufig in LLC und MAC. MAC bedeutet "Media Access Control" und sorgt für Kollisionserkennung und allgemeine Kontrollfunktionen. Der LLC "Logical Link Controller" sorgt für den Versand/Empfang der Benutzerdaten. Dafür hat jede Netzwerkkarte eine MAC-Addresse, die weltweit bei jeder Karte einzigartig ist; bzw. sein sollte. Zum Beispiel DHCP funktioniert so. Dieser Dienst besorgt sich eine freie IP-Adresse vom DHCP-Server, damit man am (IP-)Netzwerk teilhaben kann. Da man vorher noch keine IP-Adresse hat, benötigt man die MAC-Adresse. Ein bekanntes Protokoll für diese Schicht ist Ethernet.

3 Netzwerkschicht - Hier liegt das, für das gesamte Netzwerk zuständige, Protokoll. Bekannte Beispiele sind IP und IPX. IP wird etwas weiter unten erklärt; IP-Adressen, Portnummer und so weiter. Das ist am gebräuchlichsten und heißt ausgeschrieben "Internet Protocol".

4 Transportschicht - Falls mehrere Datenpakete zur selben Zeit bearbeitet werden sollen, braucht man ein weiteres Protokoll, welches die korrekte Reihenfolge wiederherstellt und die zusammengehörigen Pakete erkennt. Sehr bekannt ist hier TCP (Transmission Control Protocol), welches zusammen mit IP das im Internet benutzte TCP/IP-Protokoll bildet. IP ist somit für den Versand/Empfang der Daten und TCP für deren Reihenfolge (Integrität) verantwortlich. Desweiteren wird noch UDP (Universal Datagram Protocol) benutzt, welches die Integrität nicht prüft und keine "festen" Verbindungen wie TCP kennt. ICMP (Internet Control Message Protocol), wovon "Pings" am bekanntesten sind, zählt auch zu dieser Schicht.

5 Sitzungsschicht - Diese Schicht hilft, einfach gesagt, den Anwendungen auf zwei Rechnern bei der Kommunikation. Sie startet eine Sitzung, verwaltet den Verlauf der versendeten Daten und beendet eine Sitzung. Für die korrekte Übertragung ist ja schon gesorgt.

6 Präsentationsschicht - Auf der sechsten Ebene werden die Daten aus verschiedenen Typen (Apple, IBM, NeXT usw.) in das des aktuellen Computers konvertiert.

7 Anwendungsschicht - Ganz oben sind schließlich die Programme für den Endanwender wie Browser oder E-Mail Clients. Sie sorgen nun für die Darstellung der Daten. Es dürfen aber auch hier weitere Protokolle benutzt werden, wie FTP (File Transfer Protocol) oder SSH (Secure Shell).

Der Einfachheit halber werden in der Regel nur Schicht 2 bis 4 und 7 angenommen. Das sind die, womit man am meisten zu tun hat, da die anderen im Netzwerkkernel des Betriebssystems liegen oder man sich keine Gedanken um das Kabel macht ;-)

Die Grundeinheit sind Daten. Diese Daten werden in Paketen verpackt und vom TCP/IP-Protokoll (Transmission Control Protocol/Internet Protocol) sowie den anderen Schichten definiert. Es legt fest wie die Daten auszusehen haben. Damit es handlicher wird, werden die zu versendenen Daten später in Pakete aufgeteilt. Sie enthalten eine Aufschrift des Absenders, des Empfängers und den Inhalt. Man nennt das auch Header, Footer und (Meta-)Daten. Jede OSI-Schicht baut dabei ihre eigenen Daten darum, was man Datenkapselung (Encapsulation) nennt. Die MAC-Adresse, dann die IP-Daten und schließlich Infos für TCP. Beim Versand umgekehrt. So entsteht ein "Frame", der über die physikalische Schicht geschickt wird. Diese dürfen nur eine maximale Größe aufweisen, die der Computer verwalten kann (MSS, Maximum Segment Size und WS, Window Size). Größere Pakete werden fragmentiert; okay, TCP kennt ein DF-Bit, was das verbietet. Dabei ist z.B. TCP/IP so intelligent, daß es fehlerhafte Pakete erkennt und erneut versendet. Ein solches Paket wird auf die Schienen gesetzt und losgeschickt. TCP setzt mehrere dann wieder zusammen.

Mit viel Glück kommt es auf direktem Weg ans Ziel an, aber meistens müssen Weichen gestellt werden. Diese Weichen übernehmen spezielle Computer, die "Router" genannt werden. Diese wissen wie die Weichen zu stellen sind und übergeben an die nächste Weiche und so weiter. Irgendwann sind die Pakete am Ziel angekommen. Jede Station nennt man "Hop". Falls das Ziel nicht gefunden werden kann, wird das Paket nach einer festgelegten Anzahl Hops gelöscht. Diese Lebensdauer nennt man TTL oder "Time to live". Wenn du in deiner MS-DOS-Eingabeaufforderung oder Linux-Konsole "traceroute www.kh-webcenter.de" (Windows: tracert statt traceroute) eingibst, siehst du über welche Router das Paket geht, bis es beim Server meines Hosters ankommt. Die TTL nimmt dabei bei jedem Hop ab. Eine spezielle Art Router sind "Gateways". Diese verbinden zwei Netzwerke miteinander. Wenn du einen grauen Kasten hast, der dich ins Internet bringt, hast du auch so eins :-)

Natürlich müssen Absender und Empfänger eindeutig sein und haben dafür eine weltweit gültige Identifikation. Diese wird IP-Adresse - in der vierten Generation, weshalb man sie auch IPv4 nennt - genannt und ist mit einer Hausnummer in einer Straße zu vergleichen. Die Straße ist eine größere Unterteilungseinheit und ist mit "Subnetzen" im Internet vergleichbar. Mir ist klar, daß es nicht ganz richtig ist, aber es ist eine einfache Analogie. Zu allererst wird das Paket zur Zentralstelle des Ortes gebracht und von da dann zur Straße und zur Hausnummer weitergeleitet. Dabei erkennt man in der IP-Adresse in welchen Ort und in welches Subnetz es gehört. Eine weitere Angabe gibt dann die Hausnummer an. Praktisch sieht eine IP so aus 192.168.1.99. Es ist eine 32-Bit Zahl (ein Bit ist die kleinste Informationseinheit und kann 0 oder 1 sein), welche in vier 8-Bit-Zellen geteilt wurde; 8-bit deshalb, weil jede IP-Zelle eine Zahl von 0-255 sein darf und somit 256 (2 hoch 8) Zustände gespeichert werden müssen. Durch die Trennung in vier Stellen kann man die IP "logisch" aufteilen. Man könnte sagen, daß 192 der Kontinent ist, 168 die Stadt, 1 die Straße und 99 die Hausnummer. Das gilt zwar nicht immer, aber so kann man sich das plastisch vorstellen. Große Netzbetreiber lassen sich meistens an bestimmten IP-Räumen erkennen. Zur Zeit wird langsam, mangels freier Adressräume, auf IPv6 umgestellt. Dies ist eine 128bit-Adresse und kann so jedem Quadratmillimeter der Erdoberfläche einige hundert Billiarden Adressen zuweisen. Das sollte reichen :-B

Es kann natürlich sein, daß das Paket in einem Bürokomplex mit verschiedenen Abteilungen ankommt. Wäre unsinnig das Paket durch jede zu geben, um zu gucken an wen es gehen soll. Dafür gibt es eine weitere Angabe, ein Postfach, wenn man so will. Diese werden "Ports" genannt und es gibt 65535 davon. Dabei unterscheidet man in zwei Typen. Einmal die "Serverports" (Service Ports). Das ist vergleichbar mir Abteilung, die Vorgänge bearbeiten, wozu Webserver, Mailserver, Newsserver usw. gehören. Diese haben die Portnummer 1-1024. Alle darüber sind die Ports, welche von Anwendungen genutzt werden, um Anfragen zu übermitteln. Diese nennt man Clients mit den Ports 1024-65535 (Application Ports/"ephemeral"). Viele Anwendungen haben feste Portnummern, die weltweit gelten und bei der IANA registriert werden müssen. Lediglich die Ports 49152 bis 65535 stehen zur freien Verfügung. Bekannt sind Webserver mit Port 80, SMTP-Mailserver mit 25, POP3-Mailserver mit 110 oder Nameserver mit Port 53. Aber auch im Client-Bereich gibt es zur Zeit einige wie 3306 von MySQL-Datenbankservern, 6667-6670 vom IRC-Netz oder 8080 von Webproxies.

Kurz angeschnitten gibt es noch zwei Arten der Versendung bzw. Protokolle. Einmal in korrekter Reihenfolge und nacheinander. Das ist die typische TCP-Versendung und wird für "zeitunkritische" Dienste wie HTTP (Webseiten) oder E-Mails (POP3/SMTP/IMAP) genommen. Die andere Art ist UDP, welche auch Pakete durcheinander versendet. Das ist sehr beliebt bei Streaming-Angeboten, etwa Live-Videos. Wenn man da das ein oder andere Paket nicht erhält, ist es nicht so schlimm. Wichtig ist, daß es einen konstanten, zeitlich aktuellen Datenstrom gibt. DNS-Anfragen werden auch häufig über UDP gemacht, ebenso VoIP über RTP. Korrekterweise gibt es noch eine dritte Art, das ICMP-Protokoll mit der bekanntesten Verwendung: dem "Ping". Es bietet desweiteren noch ein paar Funktionen zur Datenflußkontrolle.

Also, wir können nun Daten von A nach B versenden, deren Gültigkeit und Korrektheit garantieren und sogar nur bestimmten Abteilungen zukommen lassen. Leider haben wir noch ein Problem. Wer kann sich schon IP-Nummern oder gar MAC-Adressen merken? Glücklicherweise gibt es schon lange eine Lösung, genauso wie unsere Straßen Namen statt Nummern haben. Dies sind die Domain-Namen, wie kh-webcenter.de. Zur Zeit sind 13 große Server dafür verantwortlich, daß die Domainauflösung, also die Umwandlung der IP nach Domainname, funktioniert. Wenn man im Browser eine Domain eingibt, wird die IP bei den DNS-Servern erfragt und die Daten versendet, da TCP/IP nicht mit Namen umgehen kann. Diese 13 Server werden "Root-Server" genannt, weil sie die "root" (=Wurzel) darstellen. Natürlich gibt es mehr dieser Server, auch dein Internetprovider hat einen. Auch wenn DNS ausfiele, wären alle Server noch über deren IP erreichbar. Man muß sie nur kennen. Wichtig zu wissen ist noch, daß hier eine Hierachie vorliegt. Die Root-DNS verweisen, wenn sie die Antwort nicht kennen, auf z.B. die jeweiligen Root-DNS-Server eines Landes. Diese können dann weiterleiten auf z.B. einzelne Provider. Anhand der IP (und einigen Einträgen in speziellen Datenbanken) sieht man, welcher DNS-Server dafür zuständig ist. Manchmal können solche Namensauflösungen sehr lange dauern oder auch fehlschlagen, wenn es keinen Eintrag gibt. Ein DNS kennt diverse Arten von Einträgen wie z.B. NS (Name Service), CNAME (Canoncial Name) oder MX (Mail eXchange).

Ich bin stolz auf dich, falls du bis hier mitgelesen hast. Wahrscheinlich wirst du nicht alles verstanden haben. Mach dir nichts darauf. Das habe ich am Anfang auch nicht und ich lerne jeden Tag dazu. Nun solltest du in etwa wissen wie die Daten im Internet fliessen und einige Grundbegriffe kennen, die du für diese FAQ benötigst, wenn ich von TCP, DNS oder ähnlichem spreche. Wir kommen nun zu spezifischen Fragen zu Webservern und PHP-Skripten, wobei das "Talkboard Forum" besondere Aufmerksamkeit bekommt. Als Weiterführende FAQ kann ich dir die entsprechenden, auch in diesem Forum, empfehlen.

Für mehr Lektüre in Sachen Netzwerk gibt es jede Menge Bücher offline oder im Internet, wie Techdocs, RFCs oder passende Newsgroups. Man kann sich natürlich auch einen alten Rechner zusammenschrauben und dann selber ein wenig spielen. Man muß ja nicht gerade IT-* studieren :-)

Weiterführende Literatur habe ich auch noch...

Was ist ein Webserver?

Ein Webserver beantwortet die Anfragen (auf Port 80), welche ihm ein Browser stellt und liefert fertige Webseiten. Dabei wird das HTTP-Protokoll benutzt. TCP/IP übernimmt lediglich den Transport der Daten (siehe oben, OSI-Modell) und HTTP bestimmt das Format für Webserveranfragen. Es steht für "HyperText Transport Protocol". Diese Anfragen können (hauptsächlich) in zwei Arten gesendet werden, GET und POST.

GET ist die häufigste. Wann immer du eine Adresse im Browser eingibst oder auf einen Link klickst, sendest du eine GET-Anfrage; auch Request genannt. Der Webserver weiß dann, welche Internetseite du haben möchtest und sendet diese. Man kann auch Parameter anhängen, wie zum Beispiel in diesem Forum. Dadurch kann man dann definieren, welches Forum man lesen möchte oder welchen Thread. Diese Parameter werden in der Regel mit "&" getrennt und mit "=" im Schlüssel-Wert-Paar zugewiesen: "forum=2&tid=4". Beginnen tun diese mit einem Fragezeichen hinter dem Dateinamen. Der Nachteil ist, daß diese Daten in einem bestimmten Format konvertiert werden und auch nicht viele übertragen werden können. Der Vorteil ist, daß eine GET-Anfrage denkbar einfach herzustellen ist.

POST ist die andere. Formulare benutzen dies häufig, obwohl sie auch GET-Anfragen senden können. Technisch unterscheiden sie sich kaum von der GET-Anfrage. Ihr Vorteil ist, daß man sehr viele Daten (mehrere Megabyte) senden kann und sogar auch Dateien. Der Nachteil ist, daß man sie nicht so einfach per Browser senden kann wie GET. Sicherheitstechnisch haben sie auch einen Vorteil. Bei GET-Anfragen stehen die Parameter in der URL und somit in den Serverlogs und im Browser-Verlauf. Denkbar ungünstig bei Passwörtern und ähnlichem. POST steht in der Regel nicht in den Logs und schon gar nicht im Browser-Verlauf.

Was ist HTML?

HTML steht für "HyperText Markup Language" und ist eine Dokumentenbeschreibungssprache. Bereits in den siebziger Jahren des 20. Jahrhunderts hatte IBM den Vorgänger SGML entwickelt. Mittlerweile gibt es eine weiteres "Kind" von HTML, nämlich XML. Dies ist noch weiterführend, aber für Webseiten derzeit meist unbedeutend. Mit HTML kann man das aussehen von Webseiten beschrieben und der Browser interpretiert dies und stellt die Seite dar. Da es nur eine "Beschreibung" ist, lassen sich die Browser bei der Interpretation eine Menge Spielraum gewähren. Dadurch sieht eine Seite mit demselbem HTML-Code von Browser zu Browser verschieden aus. Die Sprache selber ist natürlich genormt vom W3C (World Wide Web Consortium) und ist aktuell in der Major-Version 4. Als Erweiterung dient CSS (Cascaded StyleSheets), welches komplexere Formatierungen ermöglicht.

Seite: 1

Copyright (c) by "archilles scriptworld Forum", 2009. All rights reserved.
This archive has no free license, but any copyright laws applicable by your local country.