Esercitazioni - 2 Corso Reti ed Applicazioni Mauro Campanella Como 2003
Remotizzare le applicazioni grafiche: X-WINDOW Matteo Valsasna
Remotizzazione del terminale testuale: telnet, ssh L utente interagisce con una shell che è eseguita su un altro terminale L utente utilizza il client del protocollo Funziona solo per applicazioni con interfaccia testuale Host A Utente Client ssh Host B Shell Server ssh
Remotizzazione di applicazioni grafiche: X- WINDOW L utente interagisce con una applicazione grafica che è eseguita su un altro host (l utente è client dell applicazione) Il terminale a cui l utente è connesso esegue il server X, e offre come servizio la visualizzazione di elementi grafici (l applicazione è client del server X) Il protocollo X-WINDOW trasporta la richiesta di visualizzare elementi grafici dal client al server, e le azioni che utente compie su una finestra dal server al client L host su cui è eseguita l applicazione grafica non deve necessariamente avere una interfaccia grafica
Le parti in gioco nel protocollo X-WINDOW Server X Azioni dell utente (mouse, tastiera) Client X Elementi grafici Client della da visualizzare Applicazione grafica Server con Applicazione grafica Client X: applicazione che desidera interagire con l utente mandando dei comandi grafici e ricevendo input Server X: un display che visualizza i comandi grafici, e con cui l'utente può interagire (esempio: monitor, tastiera, mouse)
Ruoli di server e client Il server X è il solo che interagisce con l hardware grafico dell host, e che ne deve conoscere le particolarità (in un certo senso è un driver di periferica) L applicazione utilizza le librerie X, che definiscono una API (application programming interface) per interagire con l ambiente grafico, e non deve conoscere i dettagli del protocollo X-window, è implementato su quasi tutte le varianti di UNIX Piattaforme con diverse architetture grafiche possono ospitare un server X in una finestra (windows, mac) una applicazione Windows potrebbe comportarsi da client X, ma dovrebbe essere riscritta
Trasporto locale di X-WINDOW Il protocollo applicativo X-WINDOW può usare diversi protocolli di trasporto: se client e server sono processi eseguiti sullo stesso host usano le named pipes, uno strumento di comunicazione interprocesso (IPC) con la stessa API delle socket Non è necessario che l host esegua un protocollo di rete utente server X pipe applicazione librerie client X pipe
Trasporto remoto di X-WINDOW se client e server sono su host diversi, connessi da una rete IP comunicano con utente server X applicazione librerie client X l'utilizzo del trasporto locale oppure di rete è trasparente all'utente ed all'applicazione ciascuna applicazione utilizza una propria connessione con il server X usare netstat -t per vedere le connessioni attive
Indirizzamento dei server X su ciascun host può esistere più di un display (non necessariamente tutti sono dei monitor...). il formato generale per indirizzare un display è: [hostname]:displaynumber[.screennumber] hostname : host a cui il display è connesso displaynumber: un display è una collezione di monitor con tastiera e mouse in comune. vengono contati a partire da 0 screennumber : quale monitor usare Le applicazioni eseguite e visualizzate sulla stessa macchina possono usare DISPLAY=:0
Esempio: usare il server X locale con il trasporto Una applicazione prende il display da usare dalla variabile d'ambiente DISPLAY Un utilizzo dell interfaccia IP di loopback [user@hosta]: DISPLAY=127.0.0.1:0 [user@hosta]: xterm & [user@hosta]: netstat t
uso di un server X remoto: autorizzazione per consentire ad un altro host di visualizzare finestre sul mio display, posso usare xhost(1) [user@hosta]: xhost +hostb (sull host A, ho autorizzato i client X provenienti da B ad usare il mio display) dall'host B, posso mandare applicazioni X sul display di A impostando la variabile d ambiente [user@hostb]: DISPLAY=hostA:0 [user@hostb]: xterm & attenzione: anche altri utenti su hostb potrebbero aprire finestre su hosta : un problema di autorizzazione eccessiva
autorizzazione X con i cookies il file $HOME/.Xauthority contiene le credenziali ( cookies ) per accedere al display Le credenziali contenute in.xauthority vengono usate automaticamente dai client X per ottenere l autorizzazione ad usare un display Se un utente vede la stessa home directory da diversi host, vede anche lo stesso.xauthority, e quindi non ha bisogno di abilitare l'accesso per indirizzo IP con xhost In casi più complessi.xauthority può essere manipolato con xauth(1) Un metodo flessibile ma macchinoso
Tunnel (X in ssh) se usiamo ssh per collegarci all'host remoto, non abbiamo bisogno di autorizzare i client X che lanciamo da quel terminale ad usare il display da cui ci siamo collegati. Come funziona? il server ssh crea un server X virtuale, che sarà usato dalle applicazioni X lanciate dal terminale il client ssh si presenta al server X locale come una applicazione locale autorizzata La comunicazione viene inoltrata tra client e server all interno della connessione ssh
Tunnel (X in ssh) - architettura Server X applicazione (Client X) ssh (Client X virtuale) sshd (Server X virtuale) pipe
Tunnel (X in ssh) esempio [user@hosta]: ssh hostb [user@hostb]: echo $DISPLAY localhost:10.0 display virtuale [user@hostb]: xterm & Utente Server X Client ssh: client X virtuale Applicazione Librerie client X Server ssh: server X virtuale