phpbar.de logo

Mailinglisten-Archive

[php] Sockets (allg.)

[php] Sockets (allg.)

Carsten Sierks php_(at)_phpcenter.de
Wed, 1 May 2002 01:28:35 +0200


Hallo Leute,

erst mal eine kurze Vorstellung:

mein Name ist Carsten, bin 32, bin angestellter IT-Consultant, nachdem ich
Physik studiert habe.
Meine Wissens-Schwerpunkte liegen zum großen Teil im Breich JavaScript und
auch Netzwerke.

Ich will hier mal eine Kurze Erklärung dazu bringen, was eine
Socket-Verbindung ist, da ich das Gefühl hab, es könnte bei zwei laufenden
Threads eine Klärung der Verhältnisse bringen. ;)

Der Internet-Verkehr läuft ja bekanntermaßen über IP-Nummern und Ports ab.
(Web-Server lauschen auf Port 80).
Ein Socket ist nun eine Ein-/Ausgabe-Puffer, der eine Verbindung zu einer
IP-Nummer:Port-Kombination hergestellt hat. Diesen Buffer muß man mit dem
entsprechenden Protokoll bedienen.

Soll heissen, wenn ich einen Web-Server saugen will, muß ich nach Öffnen der
Verbindung reines HTTP sprechen. Man muß sich also so verhalten, als wäre
man ein Browser. Und wie von Mathias schon erwähnt, man verbindet sich nur
mit dem Server, nicht direkt mit einem Unterverzeichnis.

Was nun einen Proxy angeht, das ist ein Zwischen-Speicher, der früher mal
dazu diente, Anfragen zwischen zu speichern, damit man nicht jedesmal das
Netz benutzen mußte. Die Funktionsweise ist, daß sich der Browser (den das
Skript simulieren muß) mit dem Proxy auf einem gewissen Port (meist 8080)
verbindet. Nun fragt der Browser den Proxy, ihm die vom User angeforderte
Seite zu liefern. Dazu wird ein erweitertes HTTP gesprochen. Der Proxy
wertet die Anfrage aus, fragt per HTTP den Webserver, nimmt die Antwort
entgegen und liefert das Ergebnis an den Browser weiter. Weiterhin speichert
er die Antwort, um sie bei der nächsten Anfrage schneller liefern zu können
und nicht über das Netz anfragen muß. Es gibt noch "Transparente Proxies",
aber von denen merkt man nichts.

Eine Firewall ist quasi ein Polizist, welcher den Netzwerk-Verkehr
überwacht. Sie überprüft jede Verbindung, ob sie zulässig ist und verbietet
sie. Die Firewall kann für gewisse Verbindungs-Typen (Protokolle, wie z.B.
HTTP, FTP, ...) als Proxy dienen, sie generell verbieten oder sie bietet
sogenannte Port-Mappings an.
Port-Mappings sind quasi Aliasse. Man verbindet sich mit einem Port auf der
Firewall, und die leitet direkt auf eine andere IP-Nummern:Port-Kombination
weiter.
Bei uns in der Firma gibt es eine Firewall. Damit wir aber auf News-Server
zugreifen, haben wir einen Server, der bietet Port-Mappings zu verschiedenen
News-Servern an. Wenn ich mich nun mit dem Server:Port1 verbinde, dann wird
auf News-Server1:119 (119 ist der Port für nntp - news-protokoll)
weitergeleitet. Bei Server:Port2 auf News-Server2:119.

Um HTTP sprechen zu lernen, empfehle ich einen Blick in die entsprechende
RFC. Bei google mal eingeben: "HTTP RFC". Viel Spass beim Lesen.


Carsten


php::bar PHP Wiki   -   Listenarchive