Wie unterscheidet der Raspi ob ich mich an der Pi hole console anmelden will, oder z.B. bei dem Login für die Homebridge...
Gute Frage
. Stellen die wenigsten.
Die Unterscheidung wird über die Ports vorgenommen. Software, die als Service läuft, also aus einer Plastikbox einen Server macht, öffnet einen Port und lauscht auf die Dinge, die da kommen mögen. Alle Programme, die einen Port öffnen, sind Serverprogramme.
Beispiele:
Würdest du einen Webserver auf einem Computer betreiben und die Webserver-Software starten, dann öffnet diese Software Port 80. Dein Webbrowser nimmt Kontakt zum Webserver auf und versucht den auch auf Port 80 zu erreichen. Das ist erstmal so fest eingestellt. Man kann das ändern, indem man in der Webserver-Konfiguration einen anderen Port angibt, beispielsweise 99. Dann schlägt der Verbindungsaufbau vom Webbrowser fehl, denn der erwartet auf Port 80 eine Antwort, oder aber man gibt als Adresse http://192.168.1.21:99 ein.
Wenn du Email versendest, dann versucht das dein Mailprogramm auf Port 25. Früher jedenfalls. Heutzutage verschlüsseln wir gerne und dafür bietet der Mailserver einen weiteren Port an, und zwar 587. Ein Server kann also durchaus mehrere Ports öffnen.
Wenn du eine Homebridge betreibst, dann ist der Port der, der in config.json eingestellt ist. Bei den meisten wird das 51826 sein. Willst du zwei Homebridges starten, dann müssen beide unterschiedliche Ports benutzen. Ein Port kann also nicht von zwei Serverprogrammen gleichzeitig genutzt werden.
Aber wieso sind das ausgerechnet diese Ports? Wieso ist 80 der Standard für Webserver und 25 der für Mailserver? Naja, das hat man einfach so festgelegt. Es gibt da keine Standardisierungsstelle, sondern das macht jeder Programmierer, wie er mag. Dabei sollte er aber nicht die Ports sehr bekannter Services wie Web und Mail oder anderer benutzen (well known services), sondern sich was anderes ausdenken. Ports liegen in der Range zwischen 1 und 65535, da wird sich schon was finden lassen. In der Datei /etc/services sind die well known services aufgelistet.
less /etc/services (blättern mit Leertaste, Abbruch mit ctrl-c)
Sowas wie 192.168.1.21 nennt man IP-Adresse, sowas wie 99 nennt man Port und sowas wie 192.168.1.21:99 nennt man Socket.
Läuft ein Server auf einem bestimmten Port, dann nennt man diesen Port offen. Ein Port kann entweder offen sein oder nicht vorhanden, denn wenn der Server nicht gestartet ist, dann wird der Port halt nicht geöffnet. Ob ein bestimmter Port geöffnet ist oder anders ausgedrückt: ob auf einem bestimmten Port ein Server lauscht, kann man mit dem Programm nc testen:
nc -zv localhost 8080
pi@raspberrypi:~ $ nc -zv localhost 8080
Connection to localhost 8080 port [tcp/omniorb] succeeded!
pi@raspberrypi:~ $
pi@raspberrypi:~ $ nc -zv localhost 12345
nc: connect to localhost port 12345 (tcp) failed: Connection refused
nc: connect to localhost port 12345 (tcp) failed: Connection refused
pi@raspberrypi:~ $
Ein connection refused bedeutet immer, dass auf dem Socket kein Server läuft und dieser erst gestartet werden muss. Ein address in use bedeutet immer, dass auf dem Socket schon ein Server läuft und kein zweiter Server diesen Port nutzen kann. Homebridge schreibt in einem solchen Fall EADDRINUSE ins Log (naja, eigentlich ist es node, das den Fehler ausspuckt).
So weit das. Jetzt bleibt nur noch zu fragen: was meinst du mit deiner Aussage "ich gebe im Browser die IP des Raspis an, gefolgt von Doppelpunkt und Port"? Welchen Port gibst du denn an?
Stefan