|
Introducció¶L’objectiu principal de les xarxes és el d’interconnectar diversos dispositius per tal de compartir totalment o parcialment els seus recursos. Les aplicacions distribuïdes són aquelles que s’executen en diversos dispositius a la vegada. La comunicació és un procés complex en el qual es produeix una transferència d’informació entre agents independents. La forma més clàssica de comunicar dispositius digitals és aplicant el model de client-servidor. El servidor és un dispositiu que conté informació a compartir amb altres agents anomenats clients. Sovint les aplicacions treballen amb recursos al núvol o extreuen les dades d’un SGBD situat en un servidor remot. Gràcies a la connectivitat dels nostres dispositius podem veure pel·lícules sense haver d’emmagatzemar-les en un disc local, podem sincronitzar els rellotges amb l’hora oficial, comprar entrades per anar al teatre sense moure’ns de casa o fer una partida en línia del nostre videojoc preferit. Tota aquesta capacitat de comunicació només és possible gràcies a les xarxes. Comunicació entre aplicacions¶Als sistemes distribuïts, les aplicacions es comuniquen entre si per aconseguir un objectiu. Per exemple, quan visitem una pàgina web el navegador del nostre equip es comunica amb el servei HTTP del servidor web. Es produeix un procés comunicatiu que involucra una sèrie d'elements fonamentals que cal tenir presents:
Generalment durant una transmissió d'informació l'emissor i el receptor canvien de funció per compartir informació en els dos sentits. Protocols de comunicació: IP, TCP i UDP¶A les xarxes d'ordinadors i internet, la pila de protocols usada és TCP/IP, aquest nom ve dels dos protocols més importants que la componen. Quan es va definir l'estàndard de protocols de comunicacions OSI, es van crear les capes de sessió i transport, que a TCP/IP es troben dins de la capa aplicació. Funcionament de la pila de protocols¶Les aplicacions que es comuniquen es troben al nivell superior, capa d'aplicació, tant de l'emissor com del receptor. L'aplicació crea el missatge que cal transmetre, que es passa a la capa següent. A la capa transport se separa el missatge en paquets i aquests es passen a la capa següent. A la capa de xarxa es calcula la ruta que seguiran els paquets per la xarxa per arribar a la destinació, siga final o intermedi, que conega com arribar al receptor. Amb aquesta informació, els paquets es passen a la següent capa. A la capa nivell es preparen els datagrames per al canal de comunicació que s'utilitzarà i es passa el paquet al següent nivell que és el canal. Una vegada els datagrames arriben al receptor, es produeix el procés invers. TCP¶Transmission Control Protocol o TCP és un protocol de la capa de transport:
UDP¶User Datagram Protocol o UDP és un protocol de la capa de transport:
Sockets¶Els sockets van aparèixer l'any 1981, a la versió 4.2 d'UNIX BSD. Des d'aleshores, s'han convertit en el mecanisme estàndard de comunicació entre processos distribuïts a la majoria d'entorns. Actualment, la majoria de llenguatges d'alt nivell ofereixen interfícies de programació per a sockets. Els sockets permeten fer transferències d'informació entre aplicacions oferint abstracció sobre la pila de protocols. En anglès socket significa literalment endoll i representa l'extrem d'un canal de comunicació establert entre emissor i receptor. Les dos aplicacions, l'emissor i el receptor respectivament, han de crear els seus propis sockets i connectar-los entre si. Una vegada connectats, els sockets creen una "canonada privada", on les aplicacions escriuen (write) al socket per enviar informació i llegeixen (read) per rebre'n. Adreces i ports¶Igual que amb una comunicació tradicional, com és l'enviament de cartes per correu on l'emissor ha de conèixer l'adreça exacta del receptor (carrer, número, porta, codi postal, país), en els sistemes distribuïts les aplicacions han de saber on estan ubicades entre si per poder enviar missatges. En el protocol TCP/IP s'usen les adreces IP assignades a cada equip a la xarxa. Es possible que en una mateixa màquina amb adreça IP pròpia hi haja diverses aplicacions funcionant que utilitzen sockets per comunicar-se. Per distingir-les, s'usen els ports. Un port és un número entre 0 i 65535 que identifica cada socket a la màquina. Quan es crea un socket cal especificar el número de port. Normalment se sol dir que un socket escolta (listen) un port. Tipus de sockets¶Hi ha dos tipus bàsics de sockets:
Stream socket¶Són sockets orientats a connexió. Si s'utilitzen sobre IP, ho faran mitjançant el protocol TCP, oferint totes les característiques d'aquest protocol. Un socket stream s'utilitza per comunicar-se sempre amb el mateix receptor, mantenint el canal obert fins que finalitza la connexió. Per establir la connexió mitjançant un socket stream s'han de seguir una sèrie de passos tant a l'emissor com al receptor. Un farà el paper de procés servidor i l'altre el paper de procés client. El servidor serà el primer a crear el socket i esperarà que el client es connecte. El client crearà el seu socket i es connectarà al servidor creant el canal de comunicació. En qualsevol moment algun dels dos processos pot tancar el socket, destruint el canal i acabant la connexió. Client¶
Servidor¶
Datagram socket¶Són sockets no orientats a connexió. Si es fan servir sobre IP, ho faran mitjançant el protocol UDP, oferint totes les característiques d'aquest protocol. Un datagram socket s'utilitza per enviar missatges a múltiples receptors ja que es fa servir un canal temporal per a cada enviament. Amb aquests sockets no hi ha distinció entre client i servidor, totes les aplicacions usen sockets datagram.
Programació de Sockets¶la majoria de llenguatges de programació d'alt nivell disposen de llibreries per crear, destruir i operar amb sockets sobre TCP/IP. A Java els podem trobar al package java.net i tenim les següents classes:
Classe Socket¶Els mètodes més importants de la classe
Classe
|