loopback-socket: Welcher PORT ?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Donnerstag 3. Mai 2007, 14:52

joost hat geschrieben:Das ist es ja: Windows bietet ein sogenanntes Loopback-Netzwerkfeature an, das ist offenbar in jedem XP enthalten und wird einfach über die Systemsteuerung->Netzwerkverbindungen->Neue_Verbindung_erstellen installiert. Das meinte ich mit 169.254.25.129 - diese Adresse bekam das Ding bei mir.
Hi

Nocheinmal, damit die IP 127.0.0.1 unter Windows verfügbar ist, muss gar nichts gemacht werden. Das ist auf jedem Windows vorhanden, da muss kein Loopback-Interface installiert werden.

Die 169er Adresse kommt von einem Interface das keinen DHCP gefunden hat.

Gruss
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Donnerstag 3. Mai 2007, 15:11

@rayo: zum dritten Mal.

Für 127.0.0.1 bekam ich ständig blockierte Ports, wenn Programme in der Entwicklung abstürzten, was normal ist. Das kann dadurch passieren, dass der Code, der sockets schließt, nicht mehr erreicht wird. Das Ganze in einem Firmennetzwerk. Die Blockade dieser Ports ließ sich oft nicht einmal durch Neustarts beheben - das habe ich oben alles beschrieben.

Was 127.0.0.1 ist, weiß ich allerspätestens ein gutes Stück genauer, seit ich - wie oben zitiert - den ensprechenden Ausschnitt der RFC 3330 gelesen habe. Das geht aber natürlich nicht von selbst, irgendwo muss routender Code interpretieren, dass diese Adresse nirgends außerhalb des Rechners überhaupt gesucht werden darf (so jedenfalls gemäß der RFC) und muss insofern irgendwo in der installierten Software implementiert sein.
__________________
Schlechte Software ist schlimmer als keine Software
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 3. Mai 2007, 15:30

joost hat geschrieben:irgendwo muss routender Code interpretieren, dass diese Adresse nirgends außerhalb des Rechners überhaupt gesucht werden darf (so jedenfalls gemäß der RFC) und muss insofern irgendwo in der installierten Software implementiert sein.
Ja. Im Netzwerk-Stack des Betriebssystems. Du musst ja auch sonst nichts in Windows installieren, um dich an ein Netztwerk anschließen zu können. Das Bringt der Stack mit, das bringt jeder Netzwerk-Stack mit. Das ist grundlegend. Sowas auszulagern wäre Wahnsinn.

@joost: Kannst du die Signaturfunktion?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Donnerstag 3. Mai 2007, 15:41

Ja. Im Netzwerk-Stack des Betriebssystems. Du musst ja auch sonst nichts in Windows installieren, um dich an ein Netztwerk anschließen zu können. Das Bringt der Stack mit, das bringt jeder Netzwerk-Stack mit. Das ist grundlegend. Sowas auszulagern wäre Wahnsinn.
Eben. Dann dürfte aber ein Versuch ein socket auf 127.0.0.1 zu erzeugen, niemals 'Connection refused' zurückliefern, 'address already in use' natürlich schon.

Wegen der Signatur: Ich sehe gerade nirgends auf der vor mir stehenden Seite einen Help-"Link". Übrigens möchte ich ganz gern abwechseln, nützlicher ist natürlich die hier unten Stehende.
__________________
never use sys.stdin with idle.pyw
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 3. Mai 2007, 15:46

joost hat geschrieben:Eben. Dann dürfte aber ein Versuch ein socket auf 127.0.0.1 zu erzeugen, niemals 'Connection refused' zurückliefern, 'address already in use' natürlich schon.
Ja. Aber wenn man selstsame Sachen wie zusätzliche Loopback-Interfaces (?) zu installieren versucht, wundert es mich nicht, dass da jetzt irgendwas kaputt ist. Scheint so, als hättest du dein OS gegen die Wand gefahren.
joost hat geschrieben:Wegen der Signatur: Ich sehe gerade nirgends auf der vor mir stehenden Seite einen Help-"Link".
Braucht man auch gar nicht, die Profil-Seite ist selbsterklärend. Einfach mal draufklicken und die Einstellung dort finden.
joost hat geschrieben:Übrigens möchte ich ganz gern abwechseln
Kannst du dann auch machen, aber im Moment steht deine Signatur immer in den Posts von dir die ich zitiere, so dass ich sie jedes mal manuell entfernen muss -> nervt, also bitte hör auf damit.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Donnerstag 3. Mai 2007, 16:24

Ja. Aber wenn man selstsame Sachen wie zusätzliche Loopback-Interfaces (?) zu installieren versucht, wundert es mich nicht, dass da jetzt irgendwas kaputt ist. Scheint so, als hättest du dein OS gegen die Wand gefahren.
Die Installation war ein totaler Selbstläufer und - wie gesagt -, das Netzlaufwerk war einen Tag lang toleranter gegenüber Abstürzen als 127.0.0.1 - der jeweilige Port war schon nach Neuanmeldung wieder verfügbar. Und am Ende lief ja sowieso alles, die Lösung finde ich für das Füllen eines reinen Anzeigefensters nur ziemlich unpassend (und auch eine Performancefrage). Aber ich hatte auch in einigen früher überflogenen Sachen immer wieder gelesen, dass andere Inter-Prozess-Kommunikation auf Windows ausschließlich über sockets machen (müssen).

Ich kann jetzt über subprocess.stdin ständig Daten in den subprocess pumpen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 3. Mai 2007, 16:28

joost hat geschrieben:Aber ich hatte auch in einigen früher überflogenen Sachen immer wieder gelesen, dass andere Inter-Prozess-Kommunikation auf Windows ausschließlich über sockets machen (müssen).
Nein. Es gibt auch unter Windows IPC-Möglcihkeiten ohne sockets. COM wäre gleich mal das erste Beispiel.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Donnerstag 3. Mai 2007, 16:59

Danke für den Hinweis. Aber für so kleine Pakete wie eine .csv-Zeile ist alles zu groß, solange Popen<object>.stdin funktioniert.

ActivePython macht ne ganze Menge in der Registry. Eigentlich möchte ich meine Programme einfach durch Kopieren weiterreichen (Einträge in 'PATH' oder 'PYTHONPATH' mal ausgenommen, man könnte übrigens versuchen, die aus den Programmen heraus zu manipulieren). Mit dem Python-Interpreter geht das, mit gtk auch. Deshalb hab ich es zusammen mit den win32 nach gestriger Installation wieder abgeschafft. Es half nichts bei den Problemen mit subprocess (eben auch nicht der Start aus Mark Hammonds IDE).
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 4. Mai 2007, 13:01

Nochmal zur Klarstellung:

Das Loopback-Device gibt es sowohl unter Windows als auch UNIXen und vermutlich auf so gut wie allen Systemen mit einem TCP/IP-Stack. Es hat per Default die IP-Adresse 127.0.0.1 und den Hostnamen 'localhost'. Weitere Adressen wie 127.0.0.2 usw. lassen sich aber auch anlegen.
Das Device dient zum Testen und ist nur Host-intern verwendbar, von Außen nicht zugänglich. Der Adressbereich 127.0.0.0/8 ist extra für diese interne Nutzung reserviert.

Eine Zeroconf-/Link-Local-Adresse aus 169.254.0.0/16 wird u.a. an Interfaces vergeben, die (zumindest unter Windows) per DHCP keine Adresse von Außerhalb zugewiesen bekommen. Allerdings bekommt das Loopback-Device so eine Adresse *nicht*, sondern nur richtige Devices wie deine Netzwerkkarte (oder andere, virtuelle NICs).

Wenn du ein 'Address/port/socket already in use' erhältst, sollte das Abschießen des verursachenden Prozesses das aus der Welt schaffen. Wenn da nur ein Neustart hilft, ist an deinem OS wohl was ziemlich kaputt.
lunar

Freitag 4. Mai 2007, 13:07

Y0Gi hat geschrieben:Nochmal zur Klarstellung:

Das Loopback-Device gibt es sowohl unter Windows als auch UNIXen und vermutlich auf so gut wie allen Systemen mit einem TCP/IP-Stack. Es hat per Default die IP-Adresse 127.0.0.1 und den Hostnamen 'localhost'.
Korrigiert mich, wenn ich falsch liege, aber kann man "localhost" als Namen nicht auch umbiegen (z.B. über einen Eintrag in der /etc/hosts)?
Eine Zeroconf-/Link-Local-Adresse aus 169.254.0.0/16 wird u.a. an Interfaces vergeben, die (zumindest unter Windows) per DHCP keine Adresse von Außerhalb zugewiesen bekommen.
Deswegen kann man mit Windows auch Netzwerke ohne manuelle IP-Konfiguration und ohne DHCP Server aufbauen. Das Linux-Pendant dazu heißt avahi...
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 4. Mai 2007, 13:43

lunar hat geschrieben:
Y0Gi hat geschrieben:Nochmal zur Klarstellung:

Das Loopback-Device gibt es sowohl unter Windows als auch UNIXen und vermutlich auf so gut wie allen Systemen mit einem TCP/IP-Stack. Es hat per Default die IP-Adresse 127.0.0.1 und den Hostnamen 'localhost'.
Korrigiert mich, wenn ich falsch liege, aber kann man "localhost" als Namen nicht auch umbiegen (z.B. über einen Eintrag in der /etc/hosts)?
Ja, und sogar noch genauer: Durch diesen Eintrag wird der Name erst erstellt. Wenn du ihn auskommentierst, ist "unknown host: localhost" die Folge.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Freitag 4. Mai 2007, 13:55

@rayo
Die 169er Adresse kommt von einem Interface das keinen DHCP gefunden hat.
Verstehe ich richtig, dass unter solchen Umständen immer '169.x.x.x' vergeben wird ?
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 4. Mai 2007, 15:27

Ja! Wie in dem von mir genannten Zeroconf-Artikel bei Wikipedia auch steht:
Wenn ein Rechner eine Link-Local IP-Adresse konfigurieren will, wählt er einfach mit Hilfe eines Zufallszahlengenerators eine IP-Adresse zwischen 169.254.1.0 und 169.254.254.255 (RFC 3330) aus. Die ersten 256 und die letzten 256 Adressen sind von der IANA für zukünftige Anwendungen reserviert, und dürfen unter keinen Umständen ausgewählt werden.
Und wie in der von mir ebenfalls genannten RFC 3330 steht:
127.0.0.0/8 - This block is assigned for use as the Internet host
loopback address. A datagram sent by a higher level protocol to an
address anywhere within this block should loop back inside the host.
This is ordinarily implemented using only 127.0.0.1/32 for loopback,
but no addresses within this block should ever appear on any network
anywhere [RFC1700, page 5].

[...]

169.254.0.0/16 - This is the "link local" block. It is allocated for
communication between hosts on a single link. Hosts obtain these
addresses by auto-configuration, such as when a DHCP server may not
be found.
Nix für ungut, aber mich beschleicht das Gefühl, dass du auf jene Dokumente nicht mal einen genaueren Blick geworfen hast.

Wie dem auch sei, noch klarer kann ich es selbst mit weiteren Posts nicht mehr ausdrücken.[/url]
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Freitag 4. Mai 2007, 23:14

@YOGI: Ja gut, weshalb willst Du es denn auch klarer ausdrücken ? Den Absatz, den Du aus der RFC 3330 zitierst, ist der, den ich ca.10 Posts weiter oben selbst schon zitiert habe - habe aber in der RFC aber tatsächlich NUR diesen Absatz gelesen. Sorry, aber über 127.0.0.x sollten wir an dieser Stelle wirklich nicht mehr reden.

Das mit 169.x.x.x war informativ, danke.

Es ist aber schade, wie ihr alle mit diesem Fund umgeht, dem, dass MS eine 'Extra'-Loopback-Installation anbietet, kostenlos und gut dokumentiert. Das ist und bleibt sehr merkwürdig, fast so, als würde MS seiner Implementierung im Netwerkstack des Betriebssystem nicht trauen. Davon berichtet zu haben, hat mir hier nichts als endlos wiederholte Posts darüber, was 127.0.0.x ist (wie geschrieben, all diese Dinge sind allerdings schon neu für mich) und überflüssige Schreibarbeit eingebracht. Schade !

Und @Leonidas: Nein, ich habe jenes OS nicht zerschossen. Und die sockets in meiner ftpXact funktionieren weiter tadellos.
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
lunar

Samstag 5. Mai 2007, 10:28

joost hat geschrieben:Es ist aber schade, wie ihr alle mit diesem Fund umgeht, dem, dass MS eine 'Extra'-Loopback-Installation anbietet, kostenlos und gut dokumentiert.
Wieso? Das ist ganz normal. Sowas gibt es auch unter Linux mit dem dummy-Treiber. Er ist zum Testen vom Netzwerk-Funktionalität auf Rechnern gedacht, die keinerlei echte Schnittstellen verfügen. Microsofts Namensgebung ist nur etwas unglücklich: Dieser Treiber bietet kein Loopback-Interface im eigentlichen Sinne, sondern nur ein virtuelles Interface, was sich wie ein richtiges Interface verhält.
Das ist und bleibt sehr merkwürdig, fast so, als würde MS seiner Implementierung im Netwerkstack des Betriebssystem nicht trauen.
Nein, sie trauen ihrem Netzwerk-Stack schon. Nur bietet Windows normalerweise keine Dummy-Treiber für virtuelle Schnittstellen, deswegen bietet MS sowas zum Download an. Das ist aber kein echtes Loopback-Interface, sondern was ganz anderes (worauf schon die Zeroconf-Adresse hindeutet). Das schreibt MS übrigens auch selbst:
Der Microsoft Loopbackadapter kann zu Testzwecken in einer virtuellen Netzwerkumgebung verwendet werden, in der kein Zugriff auf ein Netzwerk möglich ist.
Man sollte diesen Adapter nicht dazu zweckentfremden, um lokale Kommunikation zu betreiben. Dazu ist das schlicht nicht gedacht.
Davon berichtet zu haben, hat mir hier nichts als endlos wiederholte Posts darüber, was 127.0.0.x ist (wie geschrieben, all diese Dinge sind allerdings schon neu für mich) und überflüssige Schreibarbeit eingebracht. Schade !
Das waren unsere Versuch, die klarzumachen, dass du da eben kein echtes Loopback-Interface installiert hast, sondern was ganz anderes.
Antworten