Welche Beziehung besteht zwischen DISPLAY: 1.0 und Port 5901?

7

Wenn ich einen neuen X-Server mit vncserver starte, kann ich ihn über Port 5901 verbinden. Von einem Terminal aus kann ich außerdem Folgendes ausführen:

export DISPLAY =: 1.0 xterm

(Es ist nur ein Beispiel)

Und ich bekomme ein xterm auf dem Xvncserver.

Welche Beziehung besteht zwischen: 1.0 und Port 5901?

Cedric Martin
quelle

Antworten:

13

Port 5901, im Allgemeinen gemäß Konvention Port 5900 + XDisplaynumber, ist der TCP-Port, den der VNC-Dienst überwacht. Das ist ihre Beziehung. Tatsächlich können Sie beliebige TCP-Ports mit beliebigen Xdisplay-Nummern verwenden.

Der VNC-Dienst soll Eingaben (Maus, Tastatur) vom Client zum Server und Ausgaben (ein Bild) vom Server zum Client transportieren. Dies muss mit X nichts zu tun haben. Beispielsweise wird in der Virtualisierung häufig VNC verwendet, um das "physische" Terminal einer virtuellen Maschine remote zugänglich zu machen.

Das X11-System ist viel komplexer und wird von Programmen verwendet, um mit dem Xserver und untereinander zu interagieren. Die Formulierung in der X-Welt ist zunächst etwas unintuitiv, daher muss die Bedeutung von Ausgabe, Sitz, Bildschirm, Anzeige, Server und Client gelernt werden und einige Überlegungen verdienen.

Zu Ihrer Frage: Ein Xdisplay ist der logische Kern jeder X-Instanz. Wenn Sie ein Programm starten, ist dieses Programm ein Xclient und stellt eine Verbindung zur bereitgestellten Anzeige eines Xservers her. :1.0ist eigentlich eine Abkürzung und bedeutet "Anzeige 1 bei localhost". Sie können einen Hostnamen oder eine IP-Adresse angeben, z. B. DISPLAY = 192.168.1.2: 3.0, damit das Programm, mit dem Sie sich befassen, eine Verbindung zu Xdisplay 3 auf dem (Remote-) Computer mit der angegebenen IP-Adresse herstellt.

X und VNC sind zwei völlig unterschiedliche Dienste, die für unterschiedliche Zwecke mit unterschiedlichen Zielen implementiert werden. (Man kann argumentieren, dass einige / die meisten VNC-Ziele auch Ziele bei der Entwicklung von X waren, aber das ist eher akademisch und sehr ausführlich.)

Bei Verwendung von Xvncserver werden beide Konzepte hintereinander kombiniert. Es gibt also einen Xserver, mit dem Xclients "auf normale Weise" kommunizieren. Anstatt jedoch die für die Interaktion mit einem Benutzer verfügbare Hardware zu verwenden, implementiert der Xvncserverit einen VNC-Server, mit dem ein VNC-Client eine Verbindung herstellen kann.

Bananguin
quelle
hier unix.stackexchange.com/questions/12777/… sagen sie, dass der Basisport 6000 ist. Ich weiß nicht, was der Grund ist, aber 6000 = 0.0 hat bei mir funktioniert (anstelle von 5900 = 0.0).
Torbatamas
Der Unterschied ist VNC. An Port 5900+ (DisplayNumber) verbinden Sie Ihren Bildschirm und Ihre Eingabe mit einem VNC-Viewer. Auf Port 6000+ (DisplayNumber) stellen XClients eine Verbindung zum XServer her. Dies sind die Programme, die "auf" X ausgeführt werden. Dies sind verschiedene Protokolle mit unterschiedlichen Zwecken, wie in meiner Antwort erläutert.
Bananguin
5

Von Natur aus keine.

Wenn Sie das ausführen xvncserver, müssen Sie zwei Dinge tun.

  1. Öffnen Sie einen Überwachungsport (für VNC 5901)
  2. Erstellen Sie ein Anzeigeziel

Das Anzeigeziel kann eine beliebige Zahl sein. Wenn Sie sich über X an der Konsole anmelden, wird normalerweise die Anzeige verwendet :0. Es muss nicht, Sie können sich zuerst an der Konsole anmelden und dann startx :36stattdessen verwenden. VNC 1.0wird standardmäßig verwendet, da dies wahrscheinlich die erste verfügbare Anzeige ist.

Diese beiden werden durch Konvention ausgewählt , es gibt keine Magie, die sie zusammenhält, außer dem laufenden Prozess, der mit beiden verbunden ist.

Bahamat
quelle