Network Working Group D. Waitzman Request For Comments: 1073 BBN STC October 1988 L'opzione telnet NAWS (Dimensione della Finestra) Traduzione a cura di ComiSAT Brescia, Gen. 2019 (comisat@yahoo.it) Distribuita da .::http://www.rfc.altervista.org::. Stato di Questo Documento Questa RFC descrive la proposta di un'opzione telnet che consenta ad un client di trasmettere ad un server telnet la dimensione della finestra. La distribuzione di questo documento non e' soggetta a limitazioni. 1. Nome del Comando e Codice dell'Opzione Nome = NAWS (Negotiate About Window Size) (negoziazione della dimensione della finestra) Codice = 31 2. Significati del Comando IAC WILL NAWS Inviato dal client telnet per suggerire l'uso di NAWS. IAC WON'T NAWS Inviato dal client telnet per rifiutare l'uso di NAWS. IAC DO NAWS Inviato dal client telnet per suggerire l'uso di NAWS. IAC DON'T NAWS Inviato dal client telnet per rifiutare l'uso di NAWS. IAC SB NAWS IAC SE Inviato dal client telnet per informare il server telnet della larghezza ed altezza della finestra. L'informazione relativa alla dimensione della finestra viene trasmessa attraverso questa opzione dal client telnet al server telnet. Il messaggio e' informativo. Il serve puo' accettare l'opzione ma non utilizzare l'informazione inviata. Il client ed il server negoziano l'invio dell'informazioni relative alla dimensione della finstra utilizzando il meccanismo telnet standard WILL/DO/DON'T/WON'T. Waitzman [Page 1] RFC 1073 Telnet Window Size Option October 1988 Se il client e il server di accordano, il client puo' dunque inviare una subnegoziazione per trasmettere la dimensione della finestra. Se la dimensione della finestra viene poi cambiata (ad esempio perche' modificata dall'utente) il client puo' inviare nuovamente la subnegoziazione. Poiche' su alcuni sistemi operativi, sui quali puo' trovarsi in esecuzione un server, potrebbe non essere consentito che l'informazione relativa alla dimensione della finestra venga aggiornata, il server potrebbe inviare al client un DON'T NAWS per proibire ulteriori subnegoziazioni dopo quella accettata all'inizio. Con tale regola non si creera' alcun loop di negoziazione. La subnegoziazione consiste in due valori, la larghezza e l'altezza della finestra in caratteri. I valori sono inviati ciascuno come due bytes, in modalita' Internet standard. Questo consente una dimensione massima in larghezza od altezza della finestra di 65535 caratteri. Un valore pari a zero e' accettato per la larghezza (o l'altezza) e significa che non viene inviata alcun carattere in larghezza (od altezza). In questo caso, la larghezza (o l'altezza) che verra' considerata dal server telnet sara' quella specifica del sistema operativo (probabilmente si basera' sull'informazione relativa al tipo di terminale che e' stata inviata utilizzando l'opzione telnet TERMINAL-TYPE). La sintassi della subnegoziazione e' la seguente: IAC SB NAWS LARGHEZZA[1] LARGHEZZA[0] ALTEZZA[1] ALTEZZA[0] IAC SE Come richiesto dal protocollo telnet, qualsiasi evento di 255 nella subnegoziazione dev'essere raddoppiato per essere distinto dal carattere IAC (il quale ha valore di 255). 3. Specifica di Default WON'T NAWS DON'T NAWS Questa opzione non presuppone alcuna informazione di default relativa alla dimensione della finestra. Spesso il tipo di terminale, passato con l'opzione telnet TERMINAL-TYPE, puo' includere la dimensione della finestra ma non e' necessario per questa opzione. 4. Motivazioni Con la crescente popolarita' dei sistemi a finestre, un client telnet spesso gira all'interno di una finestra di dimensione variabile e il server telnet ha bisogno di conoscerne la dimensione per un corretto controllo del cursore. La finestra puo' anche modificare la propria dimensione durante la sessione telnet e la dimensione aggiornata ha bisogno di essere trasmessa al server. Questo documento specific una opzione per l'invio della larghezza ed altezza in caratteri della finestra da un client ad un server. Waitzman [Page 2] RFC 1073 Telnet Window Size Option October 1988 Le opzione telnet NAOL (Negotiate Output Line Width - Negoziazione della larghezza della riga di output) e NAOP (Negotiate Output Page Size - Negoziazione della dimensione della pagina di ouput) non hanno la semantica appropriata per questo scopo, e non sono di uso comune [vedasi l'RFC-1011 "Protocolli Internet Standard" e "Manuale di Protocollo di Difesa]. Le opzioni NAOL e NAOP sono bidirezionali (ad es. il server puo' controllare la dimensione della riga o di pagina del client) e limitati a 253 caratteri per ciascun asse. Questa opzione e' un modello migliore del normale processo di negoziazione della finestre. Il client ha il controllo totale sulla dimensione della sua finestra e comunica semplicemente al server quale sia la dimensione attuale. Inoltre, le limitazione dei 253 caratteri in larghezza ed altezza e' troppo bassa cosi' la nuova opzione ha un limite di 65535 caratteri. Infine questa opzione invia la larghezza ed altezza della finestra contemporaneamente dal momento che esse vengono generalmente modificate simultaneamente e molti sistemi operativi ed applicazioni basate su finestre preferiscono pensare in termini di modifiche simultanee di altezza e larghezza. 5. Descrizione e Note di Implementazione Un utente tipico di questa opzione potrebbe essere un client telnet che gira sotto X. Dopo che un utente ridimensiona la finestra del client, questo dev'essere comunicato al server telnet. In Unix BSD 4.3 il segnale SIGWINCH (windows changed - finestra modificata) potrebbe essere intercettato da un processo telnet ed una nuova subnegoziazione NAWS inviata al server. Una volta ricevuta una subnegoziazione NAWS, il server potrebbe fare l'appropriato ioctl per gestire la nuova informazione, e potrebbe poi inviare un SIGWINCH al suo processo child, probabilmente una shell. 6. Esempi Negli esempi che seguono tutti i numeri nel flusso di dati sono decimali. 1. Il server propone e il client accorda l'uso di NAWS. (server invia) IAC DO NAWS (client invia) IAC WILL NAWS (client invia) IAC SB NAWS 0 80 0 24 IAC SE [Una finestra di ampiezza 80 caratteri, 24 in altezza] [alcune volte capita che l'utente cambi la dimensione della finestra] (client invia) IAC SB NAWS 0 80 0 64 IAC SE [Una finestra di ampiezza 80 caratteri, 64 in altezza] Waitzman [Page 3] RFC 1073 Telnet Window Size Option October 1988 In forma numerica: (server invia) 255 253 31 (client invia) 255 251 31 (client invia) 255 250 31 0 80 0 24 255 240 (client invia) 255 250 31 0 80 0 64 255 240 2. Il client propone e il server accorda l'uso di NAWS. (client invia) IAC WILL NAWS (server invia) IAC DO NAWS (client invia) IAC SB NAWS 1 44 0 24 IAC SE [Una finestra di ampiezza 300 caratteri, 24 in altezza] 3. Il client propone e il server rifiuta l'uso di NAWS. (client invia) IAC WILL NAWS (server invia) IAC DON'T NAWS 4. Il server propone e il client rifiuta l'uso di NAWS. (server invia) IAC DO NAWS (client invia) IAC WON'T NAWS 7. Ringraziamenti Una versione piu' elaborata, specifica per il systema X window, di questa opzione e' stata implementata alla Carnegie-Mellon University da Glenn Marcy e dall'autore. Viene ampiamente utilizzata al Dipartimento di Scienze del Computer della Carnegie-Mellon University. Il sig. Marcy ha contribuito alla stesura di una prima bozza di questo documento descrivendo l'opzione in modo piu' elaborato. Waitzman [Page 4]