URL Erkennung bei FTP/HTTP

Moin,

kann mir mal jemand kurz erklären, wie das funktioniert, daß mehrere unterschiedliche Dienste unter einer IP-Adresse angeboten werden und der jeweilige Dienst anhand der URL erkannt wird?

Die Hauptfrage ist: Funktioniert das auch bei den allerorts erhältlichen Domain-Hostingangeboten à la 1&1 sowie über dyndns?
Wer liest da was aus, ist das ein Feature des Webservers oder kann ich das auch eine HTML-Datei machen lassen, bspw. via Javascript / Java o.ä. und anschließender automatischer Weiterleitung?

TIA & regards,

Doc.

kann mir mal jemand kurz erklären, wie das funktioniert, daß
mehrere unterschiedliche Dienste unter einer IP-Adresse
angeboten werden und der jeweilige Dienst anhand der URL
erkannt wird?

In der Anfrage wird die gesamte URL (einschließlich Host-Anteil) übermittelt. Und der Apache gibtdann entsprechende Daten heraus.

Das ist „im Prinzip“ ja bei Mail ganz ähnlich…

Sebastian

kann mir mal jemand kurz erklären, wie das funktioniert, daß
mehrere unterschiedliche Dienste unter einer IP-Adresse
angeboten werden und der jeweilige Dienst anhand der URL
erkannt wird?

In der Anfrage wird die gesamte URL (einschließlich
Host-Anteil) übermittelt. Und der Apache gibtdann
entsprechende Daten heraus.

Hallo Sebastian!

Der Apache macht FTP? Ist es nicht bereits der Browser, der bei einer URL ftp://… direkt Port 21 anspricht statt Port 80 für HTTP?

CU
Markus

PORTS heißt die Lösung…
Hallo Doc,

meinen Vorrednern kann ich nur eingeschränkt zustimmen. Das eine IP-Adresse mit mehrere Diensten arbeitet geht nur über die Ports.

Soll zum Beispiel http angesteuert werden ist das Port 80

Soll zum Beispiel ftp angesteuert werden ist das Port 21

SSl => 443
Telnet =>23
HTTP => 80, 8080 und auch weitere Ports
VNC: 5800

usw.

Ich hoffe das hilft Dir und noch einen schönen Tag!

Grüße Jan

Hallo,

das ist natürlich korrekt, jedoch gibt es auch FTP Server, die mit sogenannten virtuellen Domains klarkommen. Deshalb HTTP/FTP im Betreff.

Gruß,

Doc.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

kann mir mal jemand kurz erklären, wie das funktioniert, daß
mehrere unterschiedliche Dienste unter einer IP-Adresse
angeboten werden und der jeweilige Dienst anhand der URL
erkannt wird?

In der Anfrage wird die gesamte URL (einschließlich
Host-Anteil) übermittelt. Und der Apache gibtdann
entsprechende Daten heraus.

Der Apache macht FTP?

Äh… nein.

;Ist es nicht bereits der Browser, der

bei einer URL ftp://… direkt Port 21 anspricht statt Port 80
für HTTP?

Ja.

Du hast natürlich recht. Die ursprüngliche Anfrage ist terminologisch (Dienste, Webserver, Hosting-Angebote) etwas mißverständlich, da habe ich mich aufs Glatteis führen lassen und mich auf HTTP konzentriert.

Wenn man FTP macht, erfolgt die Umsetzung des Hostnamens in die IP über das DNS, der im weiteren Verlauf IIRC [1] „egal“ ist. (weitere Spezifizierung erfolgt dann ggfs. über dem Verzeichnispfad oder Passwort/Benutzername…)

Bei HTTP dahingegen wird der Hostname mitgesendet und ist für die Auswahl des zu sendenden Dokumentes relevant.

Gruß,

Sebastian

[1] Ich habe jetzt nicht nocheinmal das entsprechende RFC überfolgen und auch ansonsten eher mäßig Schimmer von dem Protokoll…

kann mir mal jemand kurz erklären, wie das funktioniert, daß
mehrere unterschiedliche Dienste unter einer IP-Adresse
angeboten werden und der jeweilige Dienst anhand der URL
erkannt wird?

Er wird nicht anhand der URL erkannt.
Zu einem Kommunikationskanal gehören immer zwei Endpunkte, die sich jeweils aus IP-Adresse und Portnummer zusammensetzen. Machst du nun eine Anfrage in deinem Webbrowser http://bla.de dann wird eine tcp Verbindung zu port 80 (default portnummer http) des servers aufgebaut.

Der Server unterscheidet die eingehenden Pakete anhand der Portnummer und gibt sie an die entsprechende Applikation weiter, die auf diesem Port auf eingehdende „Anrufe“ wartet.

Portnummern sind in 2 Bytes gespeichert, es können also (rein theoretisch) 2^16 = 65536 verschiedene Dienste auf einem Server laufen, wobei zu berücksichtigen ist dass es zwei verschiedene Arten von Sockets gibt: streaming sockets (TCP) und datagram sockets (UDP), die unahängig voneinander sind.

Es gibt default portnummern wie 80 für http, damit dein Webbrowser weiß was er machen soll wenn keine Portnummer angegeben wird, aber theoretisch spielt die Nummer keinerlei Rolle.

Die Hauptfrage ist: Funktioniert das auch bei den allerorts
erhältlichen Domain-Hostingangeboten à la 1&1 sowie über
dyndns?

Das mit domainhosting verstehe ich nicht, dann muss natürlich auf dem webserver auch ftp etc. laufen, wenn du da mehreres willst

bei dyndns: JA. dyndns wandelt ja nur einen hostnamen in eine IP-Adresse um, d.h. auf deinem privaten rechner kannst du dann die ganzen Dienste die du möchtest betreiben

Wer liest da was aus, ist das ein Feature des Webservers oder
kann ich das auch eine HTML-Datei machen lassen, bspw. via
Javascript / Java o.ä. und anschließender automatischer
Weiterleitung?

Das Betriebssystem / Kernel / IP-Stack wie auch immer liest das aus. Du kannst da nichts „programmieren“, weil die URL überhaupt keine Bedeutung hat in dem Zusammenhang.

Grüße
Bruno

Danke für Deine ausfürhliche Erklärung. Meine Frage war vielleicht etwas mißverständlich gestellt, entschuldige.

Und wie geht es dann, daß unter EINER IP verschiedene Domains gehostet werden? Einen bestimmten Port gebe ich ja bei der Eingabe nicht an, also wird standardmäßig Port 80 genommen, oder kann DNS dies überschreiben, also einen Port angeben? Ich meine, ich kann ja eine Domain auch auf ein bestimmtes Verzeichnis umleiten, da passiert also doch mehr als bloß die Umsetzung in eine IP, oder nicht?

Gruß,

Doc.

Wenn man FTP macht, erfolgt die Umsetzung des Hostnamens in
die IP über das DNS, der im weiteren Verlauf IIRC [1] „egal“
ist. (weitere Spezifizierung erfolgt dann ggfs. über dem
Verzeichnispfad oder Passwort/Benutzername…)

Okay, dan bleibt die Frage, wie das mit virtuellen Domains bei FTP funktioniert. Ich wohl um die RFCs nicht drumrum, was? :wink:

Bei HTTP dahingegen wird der Hostname mitgesendet und ist für
die Auswahl des zu sendenden Dokumentes relevant.

Okay. Also wird diese Information vom Webserver ausgewertet, ja? Ist das auch ohne Zugriff auf den Webserver möglich, also durch Java / Javascript etc?

Gruß,

Doc.

meinen Vorrednern kann ich nur eingeschränkt zustimmen. Das
eine IP-Adresse mit mehrere Diensten arbeitet geht nur über
die Ports.

Ja.

Allerdings können mehrere Domains mit verschiedenen Inhalten „auf einer IP“ gehostet werden.

Darauf bezog ich mich.

Gruß,

Sebastian

meinen Vorrednern kann ich nur eingeschränkt zustimmen. Das
eine IP-Adresse mit mehrere Diensten arbeitet geht nur über
die Ports.

Ja.

Allerdings können mehrere Domains mit verschiedenen Inhalten
„auf einer IP“ gehostet werden.

Darauf bezog ich mich.

Ich auch. Undzwar geht das nicht nur bei HTTP, sondern wohl auch bei FTP, wie ich lesen durfte. Daher die Frage.

Gruß,

Doc.

Ups, hab ich die Frage wohl falsch verstanden.

Ok bei HTTP/1.1 gibt es ein Host: Feld im HTTP-Header anhand dessen dies unterschieden wird.

Bei FTP weiss ich nicht, ich gehe eigentlich davon aus, dass es am Usernamen hängt, was aber bei anonymous ftp nur eine Möglichkeit zuliesse…

Wenn man FTP macht, erfolgt die Umsetzung des Hostnamens in
die IP über das DNS, der im weiteren Verlauf IIRC [1] „egal“
ist. (weitere Spezifizierung erfolgt dann ggfs. über dem
Verzeichnispfad oder Passwort/Benutzername…)

Okay, dan bleibt die Frage, wie das mit virtuellen Domains bei
FTP funktioniert.

Bei FTP brauchen die AFAIK pro „echte virtuelle“ Domain eine IP.

Ich wohl um die RFCs nicht drumrum, was? :wink:

Nein. RFC tut stets gut.

Bei HTTP dahingegen wird der Hostname mitgesendet und ist für
die Auswahl des zu sendenden Dokumentes relevant.

Okay. Also wird diese Information vom Webserver ausgewertet,
ja?

Ja.

Ist das auch ohne Zugriff auf den Webserver möglich, also
durch Java / Javascript etc?

Äh. Ja. Hm. Doch. Heh…

Was willst Du damit genau erreeichen und bezwcken?

Sebastian

Wenn man FTP macht, erfolgt die Umsetzung des Hostnamens in
die IP über das DNS, der im weiteren Verlauf IIRC [1] „egal“
ist. (weitere Spezifizierung erfolgt dann ggfs. über dem
Verzeichnispfad oder Passwort/Benutzername…)

Okay, dan bleibt die Frage, wie das mit virtuellen Domains bei
FTP funktioniert.

Bei FTP brauchen die AFAIK pro „echte virtuelle“ Domain eine
IP.

Richtig. Hab genau diese Infos auch gerade gefunden.

„The FTP protocol doesn’t allow name-based selection. So, if you want to host different virtual FTP servers on the same host, you need different IP addresses. Yes, Sir. Or use HTTP.“

Ich wohl um die RFCs nicht drumrum, was? :wink:

Nein. RFC tut stets gut.

Naja, geht so… Die sind halt echt nicht leicht zu lesen. Ist halt mühsam. Aber von nix kommt wohl nix.

Bei HTTP dahingegen wird der Hostname mitgesendet und ist für
die Auswahl des zu sendenden Dokumentes relevant.

Okay. Also wird diese Information vom Webserver ausgewertet,
ja?

Ja.

Ist das auch ohne Zugriff auf den Webserver möglich, also
durch Java / Javascript etc?

Äh. Ja. Hm. Doch. Heh…

Was willst Du damit genau erreeichen und bezwcken?

Nix, wollte das bloß mal kapieren. Naja, hat mich halt interessiert, ob ich mit dyndns.org auch verschiedene Angebote auf einem Webserver hosten kann, denn dyndns.org unterstützt keine Umsetzung einer URL zu einem bestimmten Verzeichnis. Und manche Domain-Hosting-Anbieter auch nicht. Deshalb die Frage nach dem Auslesen mittels Quelltext, weil ich leider keinen root-Zugriff auf meinen Webspace habe.

Aber für die möglichen Szenarien gibt es elegantere Lösungen, die Frage hat mir bloß keine Ruhe gelassen.

Danke,

Doc.

Hallo,

Bei FTP weiss ich nicht, ich gehe eigentlich davon aus, dass
es am Usernamen hängt, was aber bei anonymous ftp nur eine
Möglichkeit zuliesse…

Man kann bei FTP-Servern auch virtuelle Hosts einrichten (wie beim Webserver) aber diese vHosts benötigen einen eindeutigen Socket. Wenn man also anonymous FTP machen möchte muss für jeden Server ein eigener Port genutzt werden bzw. eine eigene IP-Adresse vorhanden sein (wenn man FTP auf Port 21 wünscht)
Bei normalem Userzugriff wird anhand des Usernames entschieden, so wird es bei den Domainhostern gemacht…meistens mehr schlecht als recht (kein changedroot und ähnliches).

Grüße
Martin

Was willst Du damit genau erreeichen und bezwcken?

Nix, wollte das bloß mal kapieren. Naja, hat mich halt
interessiert, ob ich mit dyndns.org auch verschiedene Angebote
auf einem Webserver hosten kann,

Klar. Kein Problem.

denn dyndns.org unterstützt
keine Umsetzung einer URL zu einem bestimmten Verzeichnis.

Das muß Dein HTTP-Server machen.

Und
manche Domain-Hosting-Anbieter auch nicht. Deshalb die Frage
nach dem Auslesen mittels Quelltext, weil ich leider keinen
root-Zugriff auf meinen Webspace habe.

Aber Du kannst doch Deine Seiten frei gestalten? Ich verstehe noch nicht genau, was Du planst.

Sebastian

Was willst Du damit genau erreeichen und bezwcken?

Nix, wollte das bloß mal kapieren. Naja, hat mich halt
interessiert, ob ich mit dyndns.org auch verschiedene Angebote
auf einem Webserver hosten kann,

Klar. Kein Problem.

Da will ich doch glatt mal kurz einhaken:
Kann das der IIS auch? (nicht hauen…)

Gruß,
ecki

Was willst Du damit genau erreeichen und bezwcken?

Nix, wollte das bloß mal kapieren. Naja, hat mich halt
interessiert, ob ich mit dyndns.org auch verschiedene Angebote
auf einem Webserver hosten kann,

Klar. Kein Problem.

Da will ich doch glatt mal kurz einhaken:
Kann das der IIS auch?

Ich kenne ihn nicht, vermute aber „ja“. Alles andere würde mich sehr wundern.

(nicht hauen…)

Du hast es Dir verdient…

:wink:

Sebastian

Und wie geht es dann, daß unter EINER IP verschiedene Domains
gehostet werden? Einen bestimmten Port gebe ich ja bei der
Eingabe nicht an, also wird standardmäßig Port 80 genommen,
oder kann DNS dies überschreiben, also einen Port angeben? Ich
meine, ich kann ja eine Domain auch auf ein bestimmtes
Verzeichnis umleiten, da passiert also doch mehr als bloß die
Umsetzung in eine IP, oder nicht?

Also im allgemeinen kann ein DNS (zumindest die Mutter aller DNS-Dienste, der BIND) es nicht.

Im ersten HTTP/GET wird der Domänenname mitgegeben, anhand der angegebenen Domäne gibt der Webserver die entsprechende Seite zurück.

Einfaches Beispiel. Gib im Browser die URL Deiner Homepage an, der Browser zeigt sie an. Mach ein lookup auf die Domäne und trage die IP-Adresse im Browser ein. Er wird eine Fehlermeldung ausgeben. Der Webserver kann hier nicht differenzieren welche der gehosteten Webseiten er zurückgeben soll.

Gruß
Chris