230 likes | 390 Views
Alex Maneu Victòria David Marí Larrosa Pau Roura Brun. El Protocol -Server. Sessió. Sistema -Window. Format per Protocol de comunicació (X Protocol) API (Xlib): Defineix una interfície aplicacions dispositius Desenvolupat al MIT als ‘80 com a part del projecte Athena.
E N D
Alex Maneu Victòria David Marí Larrosa Pau Roura Brun El Protocol -Server
Sistema -Window • Format per • Protocol de comunicació (X Protocol) • API (Xlib): Defineix una interfície aplicacions dispositius • Desenvolupat al MIT als ‘80 com a part del projecte Athena. • Necessitat d’una GUI transparent en xarxa sobretot per entorns UNIX • Format de les versions inclou nº de versió i de revisió (p.e. X11R6) • Especifica un model client-servidor a nivell d’aplicació • Client (aplicació) separat del servidor (display)
Protocol • Especifica una capa dependent i una independent dels dispositius • Amaga les característiques del SO i del hardware • Ajuda a la portabilitat i al desenvolupament d’aplicacions • S’executa sobre la connexió de xarxa (orientat a connexió, generalment TCP) • Permet sol·licituds i respostes clientservidor • Descriu el format dels missatges intercanviats entre client i servidor
Servidor • Programa dedicat a subministrar els serveis de display en un terminal gràfic a petició del client X • Gestiona • La pantalla • Els dispositius d’entrada (teclat, mouse, ...) • La sortida al display • El mapatge de colors • La càrrega de fonts • El mapatge de teclat • S’executa habitualment en PCs, terminals gràfics i terminals X (dissenyats per a executar servidors X).
Client • És l’aplicació pròpiament dita • Dissenyada per a emprar una interfície gràfica d’usuari per a mostrar les seves sortides • Molts clients X competeixen pels serveis d’un servidor X per cada usuari i display • El gestor de finestres resol aquests conflictes
Gestor de -Window (gestor de finestres) • Cas particular de client X • Localitzat a la mateixa màquina que el servidor X • Permet fer operacions sobre finestres (moure, redimensionar, etc) • No és necessari per a la creació de finestres
Funcionament gràfic • El client X • Manté les finestres que ha creat • No s’ha de preocupar de quina part de la finestra és visible • Canvis efectuats en el display per altres altres clients són notificats mitjançant events del servidor X • Servidor X • Gestiona finestres visibles/no visibles utilitzant piles • No conté funcions de gestió, només retalla finestres
i la pila TCP/IP • Finestres remotes generalment sobre TCP/IP (AF_INET) • Finestres locals sobre sockets AF_UNIX
Característiques del sistema -Window • Concepte de client i servidor “invertit”! • El servidor s’executa en la màquina “client” • L’aplicació s’executa al servidor d’aplicacions i es mostra a la màquina client • Permet execució remota en entorns heterogenis • Permet utilitzar els serveis de RPC o APPC (Advanced Program to Program Communication)
Característiques del sistema -Window Servidor d’aplicacions – executa Clients X Client – Executa Servidor X Client – Executa Servidor X Client – Executa Servidor X Client – Executa Servidor X
Displays • Format per un servidor, pantalles i dispositius d’entrada • Per iniciar sessió les aplicacions es connecten al display • Display *XOpenDisplay(char *display_name)) • L’struct Display conté la informació sobre l’estat d’un display particular • Identificació:host:[:]num_servidor.num_display • Es numeren a partir de 0 • TCP • Port 0x5800+N per a clients Little Endian • Port 0x5900+N per a clients Big Endian
Exemple • Cas pràctic en màquines separades • Redirecció de la sortida • puki@pistacho$ export DISPLAY=neoma:0.0 (en màquines BSD) • > setenv DISPLAY neoma:0.0 (en màquines SysV) • A la màquina local (servidor X) caldrà afegir el servidor remot a la llista de control d'accés: • dix@neoma$ xhost +pistacho • “Automatitzable” amb ssh • Servidor d’aplicacions amb servidor ssh i l'opció X11Forwarding posada a yes a l'arxiu /($ETC)/ssh/sshd_config)
lib • API del sistema X-Window • Funcions C encastades en els clients X • Accés de més baix nivell a l’X Protocol • Peticions clients Sol·licituds X Protocol • Analitzen missatges dels servidors X (events, respostes, errors) • Subministren utilitats addicionals (Xpermalloc()) • Clients X envien peticions al servidor X • Servidor X respon amb missatges de resposta o error • Servidor X envia missatges d’event als clients X
Format dels missatges: Peticions • Cada petició conté: • Header de 4 bytes que inclou: • Un opcode de 8 bits (major opcode) que correspon a una crida de la Xlib • Un camp de longitud de 16 bits que expressa la (longitud total incloent el header)/4 • Un byte de dades (minor opcode a les extensions) • 0 o més bytes de dades • Els opcodes de 128 a 255 estan reservats per a extensions. Les extensions poden contenir múltiples peticions, i utilitzen el minor opcode. • A cada petició se li assigna implícitament un número de seqüència, començant per 1, que s’utilitza a les respostes, errors i events. • Cada petició té un tamany mínim i màxim; si el camp de longitud està fora de rang, es produeix un error.
Format dels missatges: Respostes i Errors • Cada resposta conté: • Un camp de 32 bits que expressa la longitud total/4 • 32 bytes seguits de 0 o més bytes addicionals de dades • Els 16 bits menys significatius del número de seqüència de la petició corresponent • Els paquets d’error són de 32 bytes. Cada error inclou: • Un codi d’error de 8 bits • Major opcode de la petició • Minor opcode de la petició • Els 16 bits menys significatius del número de seqüència de la petició • Informació necessària en determinats tipus d’errors • Els codis d’error del 128 a 255 estan reservats per a extensions.
Format dels missatges: Events • Els paquets d’events són de 32 bytes. Cada event conté: • Un codi de tipus de 8 bits. Si aquest event l’ha generat una petició SendEvent, el bit més alt està a 1. • Els 16 bits menys significatius del número de seqüència de l’última petició feta pel client que el servidor està processant (o ja ha processat). • Els codis d’event del 64 al 127 estan reservats per a extensions.
Toolkits • Problema: complexitat del codi que usa Xlib • Toolkits: Llibreries que afegeixen funcionalitats d’alt nivell • Implementen “widgets”: botons, menús, etc. • Alguns exemples: • QT • GTK+ • Xt (MIT) • Xaw [3D] (Athena)
Toolkits (cont.) • Es pot combinar l’ús de widgets i Xlib en una mateixa aplicació
Avantatges • Usuari i programador no noten la diferència entre el funcionament local i remot. • Servidor X portable i ofereix suport per diversos llenguatges i sistemes operatius. • Clients X són força portables. • Sistema X-Window suporta qualsevol protocol de xarxa orientat a connexió. • Rendiment de les aplicacions poc afectat. • Les aplicacions no han de conèixer les característiques hardware del terminal. • Les aplicacions no tenen perquè estar a la mateixa màquina que el terminal. • Es poden afegir terminals d’arquitectura diferent proporcionant un servidor X adequat. • El programador no s’ha de preocupar de les comunicacions, només ha d’escriure aplicacions gràfiques per a X, amb independència de si s’utilitzaran de forma local o remota.
Inconvenients • El sistema X Window consumeix molts recursos • No hi ha una GUI unificada ni polítiques sobre el tema • La interfície de programació no és còmoda d’utilitzar (problema parcialment solucionat pels toolkits, però no n’hi ha cap que sigui dominant). • Les dades viatgen sense encriptar • Es complicat gestionar les autoritzacions i controls d’accés • El suport de fonts no ofereix serveis com “antialiasing”, i és complicat utilitzar charsets com UNICODE. • Una aplicació (client X) no pot indicar al servidor que només li envïi un tipus determinat d’events, per la qual cosa s’envien tots i es pot arribar a generar trànsit innecessari.
Links • X Consortium:http://www.x.org • XFree86 Project:http://www.xfree86.org/ • Enllaços a informació sobre X:http://www.rahul.net/kenton/xsites.html • Principis de disseny de X: http://www.motifzone.com/tmd/articles/XDesign/xdesign.html • Funcionament de X: http://hissa.nist.gov/rbac/titlehce/node25.html • Informació TCP/IP: http://ditec.um.es/laso/docs/tut-tcpip/3376fm.html • Is X bloated?:http://www.cbbrowne.com/info/xbloat.html
Links (cont.) • RFC 1013: http://www.faqs.org/rfcs/rfc1013.html • Xlib complete reference: http://www.msu.edu/~huntharo/xwin/docs/xwindows/XWINSYS.pdf • Documentació sobre X: http://www.x-docs.org