Horchen, ob online oder offline

Hallo allerseits,

ich frage mich seit einiger Zeit, ob ich auf WinXP ein einfaches Programm schreiben könnte, zu dessen Funktionen es gehört, festzustellen, ob der Computer des Nutzers gerade eine Verbindung zum Internet aufgebaut hat. Programme wie der Yahoo-Messenger beherrschen das ja offensichtlich.

Ich habe auf der Suche nach einer Lösung entdeckt, dass der DOS-Befehl „netstat“ auch nach mehrfacher Eingabe die gleichen Ergebnisse liefert, die sich jedoch leicht ändern (insbesondere in den Portnummern), sobald die Internetverbindung aufgebaut wird. Ist das ein einigermaßen sicherer Anhaltspunkt? Kann ich in der überwiegenden Mehrzahl der Fälle davon ausgehen, dass wenn sich die Ergebnisse/Portnummern bei „netstat“ ändern, gerade eine Internetverbindung aufgebaut wurde?

Ich bekomme bei „netstat“ übrigens vier Spalten, darunter „Lokale Adresse“ und „Remoteadresse“. Beider Inhalte ändern sich in besagtem Fall - aber wahrscheinlich ist es sinnvoller, nur auf „Lokale Adresse“ zu achten, oder?

Schöne Grüße,

Mohamed.

Wieos Pingst du nciht einfahc in regelmässigen abständen google.de ?
Wenn „ping“ erfolgreich, dann bist du online, wenn nicht dannhalt nicht.

Stimmt eigentlich

Wieos Pingst du nciht einfahc in regelmässigen abständen
google.de ?
Wenn „ping“ erfolgreich, dann bist du online, wenn nicht
dannhalt nicht.

Ich glaube, das ist die Lösung :smile: .

Danke schön,

Mohamed.

Ich bekomme bei „netstat“ übrigens vier Spalten, darunter
„Lokale Adresse“ und „Remoteadresse“. Beider Inhalte ändern
sich in besagtem Fall - aber wahrscheinlich ist es sinnvoller,
nur auf „Lokale Adresse“ zu achten, oder?

Die lokale Adresse ist uninteressant, das ist dein Rechner selbst. Was sich da ändert und für andere Zwecke auswertbar wäre, ist allenfalls der Port, von dem aus der Rechner eine Verbindung aufbaut.

Um festzustellen, ob eine Verbindung ins Internet besteht, ist zunächst der Status interessant. Wenn der auf HERGESTELLT lautet, steht eine Verbindung. Aber nicht zwingend zum Internet. Im nächsten Schritt ist die Remoteadresse zu prüfen. Lautet die auf den gleichen Namen, wie die lokale Adresse oder auf 127.0.0.1 oder auf localhost, ist die Verbindung nicht zum Internet, sondern zu einem Dienst auf dem Rechner selbst geöffnet.

Gruss
Schorsch

Hallo,

Wenn „ping“ erfolgreich, dann bist du online, wenn nicht
dannhalt nicht.

Da sehe ich nur ein Problem bei Routern mit automatischem Verbindungsauf- und abbau. Wenn so ein Ding gerade offline ist, und dann die Ping-Anfrage kommt, dann geht er sofort online um diese beantworten zu können, und liefert dann zwar aufgrund der schlechten Ping-Zeit vom WAN-Interface des Routers zum nächsten Knoten ein Indiz dafür, dass der Router zum Zeitpunkt der Abfrage offline war, im Ergebnis ist er aber dann ab dem Moment wieder online und geht dann erst nach der voreingestellten Idle-Zeit wieder offline. D.h. mit der Abfrage veränderst Du den Status.

Gruß vom Wiz

Hallo,

ich frage mich seit einiger Zeit, ob ich auf WinXP ein
einfaches Programm schreiben könnte, zu dessen Funktionen es
gehört, festzustellen, ob der Computer des Nutzers gerade eine
Verbindung zum Internet aufgebaut hat. Programme wie der
Yahoo-Messenger beherrschen das ja offensichtlich.

Ich weiß jetzt nicht ob dir das hilft, aber unter Linux würde ich abfragen, ob es eine route nach default gibt:

ip route
172.28.65.64/26 dev eth0 proto kernel scope link src 172.28.65.73 
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.32 
default via 172.28.65.65 dev eth0

Wenn der Rechner per DHCP konfiguriert ist, sollte die nur gesetzt sein, wenn der Rechner auch tatsächlich diese Verbindung hat.

Ich weiß nur nicht, wie kompliziert es ist, die Routingtabelle unter Windows auszulesen.

Grüße,
Moritz

Stimmt’s nicht wenigstens meistens?

Wenn „ping“ erfolgreich, dann bist du online, wenn nicht
dannhalt nicht.

Da sehe ich nur ein Problem bei Routern mit automatischem
Verbindungsauf- und abbau.

Hallo Wiz,

gibt es viele von den Dingern? Also ich persönlich würde automatischen Verbindungsaufbau durch reines Ansprechen eines Hosts auf meinem PC unterbinden wollen, aus verständlichen Gründen. Wie hoch ist denn die Wahrscheinlichkeit, dass der User so einen Router hat?

Schöne Grüße,

Mohamed.

Eben, vor allem gab es mit dem automatischen Verbindungsauf- und abbau früher mit vielen Router-Firmwares Probleme, die dann zu enormen DSL-Rechnungen geführt haben.

Wer also einen Zeittarif hat sollte so etwas nie, nie, nie machen. Das dürfte aber eh die Minderheit sein, bei DSL-Flat-Preisen von vielleicht 10 € / Monat. Mit einem Volumentarif hat man diese Probleme übrigens auch nicht.

gibt es viele von den Dingern? Also ich persönlich würde
automatischen Verbindungsaufbau durch reines Ansprechen eines
Hosts auf meinem PC unterbinden wollen, aus verständlichen
Gründen. Wie hoch ist denn die Wahrscheinlichkeit, dass der
User so einen Router hat?

Ich würde nicht für jeden Internetzugriff erstmal mühsam die Verbindung manuell selbst aufbauen wollen. Die Wahrscheinlichkeit, dass andere genauso denken, kann ich nicht beziffern. Für gering halte ich sie nicht. Ne, Wiz hat schon recht, diese Diagnosemethode per ping produziert erst das Ergebnis, das du doch eigentlich diagnostizieren willst. Sozusagen die Heisenberg’sche Unschärferelation im Eigenbau.

Gruss
Schorsch

Hallo.

Diesen automatischen Auf- und Abbau kann man aber auch bei DSL-Flats nutzen. Und so eine Funktion bietet doch so gut wie jeder DSL-Router, oder nicht?

Sebastian.

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

Also sonst gibt es keine Passive Methode herauszufinden ob der Rechner der hinter einem Router ist Internet hat.

Weil man kann die lokale Netzwerkkarte nicht fragen ob sie eine Verbindung aufgebaut hat
und man kann den Router nur schwer beibringen es einem so mitzuteilen.

Also 4 Möglichkeiten:

  1. Netzwerkkarte sagt das eine Verbindung steht (also Windows zum Beispiel)
  2. Router sagt das Internet an ist (keine ahnugn wie er dir das dann mitteilen will)
  3. Ping nach google.de
  4. ist mir grad eingefallen, villeicht einfahc eine NAmensauflösung von google.de versuchen, könnte im grunde allerdings auf eine ähnliche Problematik wie der Ping kommen.

Diesen automatischen Auf- und Abbau kann man aber auch bei
DSL-Flats nutzen. Und so eine Funktion bietet doch so gut wie
jeder DSL-Router, oder nicht?

Klar, mittlerweile schon.
Bei einer DSL-Flat ist das aber ziemlich überflüssig, wieso sollte man nicht direkt immer über den Router eingewählt bleiben? Beim Provider belegt das praktisch keine Ressourcen und den Kunden kostet es nichts.

Dann kannst Du dann auch einfach google anpingen. :smile:

Der einzige Grund für den automatischen Auf- und Abbau wäre, wenn ein Provider die Verbindung nach x Stunden Verbindung zwangstrennt.

OT:
Da ich meinen PC zu Hause eh nur abends benutzte ziehe ich einfach den Netzstecker des Routers und des Modems aus, wenn ich’s nicht brauche. Geht auch fix im Vorrübergehen. :smile:

Hallo,

Ich weiß nur nicht, wie kompliziert es ist, die Routingtabelle
unter Windows auszulesen.

schrecklich kompliziert (vgl. etwa http://www.microsoft.com/technet/prodtechnol/Windows…):

route print

Etwa in Netzen, die über VPNs abgesichert sind, bedeutet aber die Existenz einer Default-Route noch nicht zwangsläufig, dass eine (uneingeschränkte) Verbindung ins Internet besteht.


Philipp

Dann kannst Du dann auch einfach google anpingen. :smile:

Die Frage ist ja aber nicht, ob der Router, sondern ob der PC eine Verbindung aufgebaut hat. Und auch der Router hat, nur weil er online ist, deswegen noch lange keine Verbindung aufgebaut. Nein, das einzige, was du mit ping testen kannst ist, ob es momentan möglich ist, eine Verbindung aufzubauen.

Gut, du kannst natürlich auch die Latzenzveränderung zw. erstem und zweiten ping-Paket messen und daraus Rückschlüsse ziehen, ob das Modem hinter dem Router zum Zeitpunkt der Abfrage on- oder offline war.

Für die Aufgabenstellung, zu testen ob derzeit auf Router oder PC eine Verbindung offen ist, taugt der ping grad garnix.

Gruss
Schorsch

Du lässt Dich ungefragt verbinden?

Ich würde nicht für jeden Internetzugriff erstmal mühsam die
Verbindung manuell selbst aufbauen wollen.

Hallo Schorsch,

soll dass heißen, dass wenn Du offline bist und in Deinem Browser eine URL eingibst oder Dein Messenger irgendwen anfunkt, gar nicht erst - was ja nicht mühsam wäre - mit einem [Weiter]-Button gefragt wirst, ob Du verbinden willst?

Schönen Gruß,

Mohamed.

Hallo Mohamed,

Hallo Schorsch,

ich bin zwar nicht Schorsch, aber …

soll dass heißen, dass wenn Du offline bist und in Deinem
Browser eine URL eingibst oder Dein Messenger irgendwen
anfunkt, gar nicht erst - was ja nicht mühsam wäre - mit einem
[Weiter]-Button gefragt wirst, ob Du verbinden willst?

… natürlich nicht. Seit ich einen Router habe, weiß ich gar nicht mehr, wann der Rechner oder der Router eine Verbindung ins Internet aufbaut, es inetressiert mich auch nicht. Unangenehm ist nur, daß Windows mir schon mal ein Spiel unterbricht, weil es im Hintergrund ein Update gefunden hat und mich fragt, ob das installiert werden soll. Dazu sind Router doch (unter anderem) da!

Gruß, Rainer

Hallo Mohamed,

Hallo Schorsch,

ich bin zwar nicht Schorsch, aber …

ich bin zwar auch nicht Schorsch, aber … Halt, Moment, falscher Anfang!

… natürlich nicht. Seit ich einen Router habe, weiß ich gar
nicht mehr, wann der Rechner oder der Router eine Verbindung
ins Internet aufbaut, es inetressiert mich auch nicht.
Unangenehm ist nur, daß Windows mir schon mal ein Spiel
unterbricht, weil es im Hintergrund ein Update gefunden hat
und mich fragt, ob das installiert werden soll. Dazu sind
Router doch (unter anderem) da!

Sobald der PC daheim in einem Netz steht, in Unternehmensnetzen sowieso, wäre eine andere Lösung auch kaum mehr vernünftig realisierbar.

Gruss
Schorsch

Hallo Quintar,

Also sonst gibt es keine Passive Methode herauszufinden ob der
Rechner der hinter einem Router ist Internet hat.

Die Frage ist doch, was man herausfinden will:
a) ob es möglich ist, ins Netz zu kommen, oder
b) ob aktuell eine Verbindung ins Netz besteht

a) kann man per ping testen (wobei man hier eigentlich das Gateway pingen sollte, sonst testest Du nicht, ob Du ins Internet kommst, sondern nur, ob eine bestimmte Domain erreichbar ist, was mit Sicherheit nicht das Gleiche ist).

b) Geht unter Windows per netstat - allerdings mit etwas mehr Aufwand, weil man hier die Ausgabe tatsächlich analysieren muß.

Weil man kann die lokale Netzwerkkarte nicht fragen ob sie
eine Verbindung aufgebaut hat

Doch (-> netstat)

und man kann den Router nur schwer beibringen es einem so
mitzuteilen.

Also die meisten Router, die ich kenne, beherrschen das. in der Regel gibt’s eine über den Browser abrufbare Konfigurationsseite, wo es auch einen „Status“ gibt.

Also 4 Möglichkeiten:

  1. Netzwerkkarte sagt das eine Verbindung steht (also Windows
    zum Beispiel)

netstat

  1. Router sagt das Internet an ist (keine ahnugn wie er dir
    das dann mitteilen will)

recht häufig über http://192.168.0.1

  1. Ping nach google.de

ja

  1. ist mir grad eingefallen, villeicht einfahc eine
    NAmensauflösung von google.de versuchen, könnte im grunde
    allerdings auf eine ähnliche Problematik wie der Ping kommen.

ja

Gruß,
Martin

Hallo Schorsch,

Sozusagen die Heisenberg’sche Unschärferelation im Eigenbau.

Als Nichtphysiker wollte ich damit nicht Wissensprostitution betreiben, aber genau der Begriff lag mir auch auf der Zunge.

Und ganz ehrlich, mir fällt für die eigentliche Fragestellung keine einfache und allgemeingültige Lösung ein, weil alles was auf externe Dinge verweist genau dieses Problem hat.

Da viele Router eine Statusanzeige in ihren Webservern haben, müsste es allerdings im Einzelfall tatsächlich eine Möglichkeit geben den Status auch per Script zu erfahren. Nur wird das natürlich bei Cisco anders als bei DLink, bei hp anders als bei IBM, … laufen.

Gruß vom Wiz

Hallo,

soll dass heißen, dass wenn Du offline bist und in Deinem
Browser eine URL eingibst oder Dein Messenger irgendwen
anfunkt, gar nicht erst - was ja nicht mühsam wäre - mit einem
[Weiter]-Button gefragt wirst, ob Du verbinden willst?

Ich würde mal tippen, dass im Zeitalter von DSL-Flatrates dies die absolute Ausnahme ist. Mir wäre niemand bekannt, der so arbeiten würde. Zumal entsprechende Abfragen in Einzelprogrammen bei deinem Problem auch nicht weiter helfen würde. So fragt ja z.B. Elster immer brav, ob ich eine Verbindung aufbauen möchte. Allein es bekommt selbstverständlich nichts davon mit, dass längst eine Verbindung besteht. Und wenn erst mehr als ein Rechner am Router hängt, dann hast Du überhaupt keine Chance mehr, denn es nützt ja gar nichts, dass ein PC für sich lokal jedes Mal brav nachfragt, denn er weiß ja nur vom eigenen Status, nicht aber vom Status des Routers. D.h. er stellt die Frage ja vollkommen unabhängig davon ob sie nötig ist (weil momentan keine Verbindung besteht) oder nicht (weil gerade jemand am PC nebenan fünf Browserfenster, ein Internetspiel und ICQ offen hat.

Gruß vom Wiz