Upload
richard-chamba
View
217
Download
1
Embed Size (px)
DESCRIPTION
Informe Practica 5
Citation preview
FACULTAD DE INGENIERIAS Y CIENCAS AGROPECUARIAS
INGENIERIA EN CIENCIAS DE LA COMPUTACION E INFORMATICA
SISTEMAS DISTRIBUIDOS
SOCKETS
RICHARD CHAMBA
QUITO ECUADOR
SOCKETS
INTRODUCCION
En el siguiente documento se desarrollara y ampliara el tema de sockets, que servir para el
aprendizaje, poder implementar y entender de mejor manera la prctica sobre sockets. Para
iniciar con el tema de sockets, los sockets es el medio por el cual dos programas logran
intercambiar un flujo de datos fiable y ordenado.
MARCO TEORICO
Bsicamente podramos decir que un socket es un punto de comunicacin por el cual un proceso
puede enviar o recibir informacin. La comunicacin utilizando sockets es un servicio/interfaz con
la capa 4 (transporte) del modelo OSI. Establecer una conexin mediante sockets es necesario
conocer la familia o dominio de la conexin y el tipo de conexin.
Dominio de un socket: Bsicamente el dominio de un socket es una familia (por as decirlo) que
agrupa sockets que comparten caractersticas comunes, se puede especificar el formato de las
direcciones que se podrn al socket y los diferentes protocolos soportados por las
comunicaciones.
Caractersticas:
Puede realizar redirecciones de los archivos de E/S estndar a los sockets y as combinar
entre ellos aplicaciones de la red.
Una vez abierto se pueden escribir y leer datos mediante las funciones read() y write().
Los sockets referencia mediante un descriptor del mismo tipo que el utilizado para
referenciar ficheros.
Tipos de sockets:
SOCK_STREAM: Permiten comunicaciones fiables en modo conectado y autorizan
mediante un protocolo asignado. Establece un circuito virtual realizando una bsqueda de
enlaces libres que unan los dos ordenadores a conectar.
SOCK_DGRAM: Sockets destinados a la comunicacin en modo no conectado para el envo
de datagramas de tamao limitado.
SOCK_RAW: Permite el acceso a protocolos de ms bajo nivel.
SOCK_SEQPACKET: Las comunicaciones que poseen las propiedades a, b, c, d y e. Las
comunicaciones se encuentran en el dominio XNS.
Arquitectura de Conexin de un socket
Modelo cliente/servidor
Qu es el modelo cliente/servidor? Bsicamente un cliente realiza peticiones a otro programa
(servidor) y este le proporciona una respuesta. El servidor puede o no estar en la misma maquina
en que se est ejecutando el programa del cliente; servidores y clientes pueden ser concurrentes o
iterativos.
Servidor: Espera continuamente peticiones de servicio, al producirse una peticin el servidor la
receptar y atiende al cliente, al terminar el servicio el servidor entra en estado de espera para la
siguiente peticin.
Servidor interactivo: Recoge la peticin de servicio, y l mismo se encarga de atenderla.
Servidor recurrente: Recoge cada una de las peticiones de servicio y crea otros procesos
para que se encarguen de atenderlas.
Socket: Realiza la apertura de un socket.
Bind: Avisa al SO que abrimos un socket y queremos asociar nuestra aplicacin con ese
socket.
Listen: Avisa al sistema de que empiece a atender la conexin de red.
Accept: Pide y acepta las conexiones de clientes al sistema operativo.
Send/Write: Lee y escribe datos del cliente. El cliente y el servidor deben saber que datos
reciben y que datos enviar adems del formato.
Close: Cierra la comunicacin del socket entre el servidor y el cliente.
Cliente: Entidad activa en el establecimiento de una conexin ya que es el que genera la demanda
de conexin hacia el servidor. Esta demanda la genera mediante la primitiva connect, genera la
conexin por los dos extremos.
Socket: Realiza la apertura de un socket.
Connect: Solicita conexin con el servidor. Esta funcin queda bloqueada hasta que el
servidor acepte la solicitud de conexin.
Listen: Avisa al sistema de que empiece a atender la conexin de red.
Send/Write: Lee y escribe datos del servidor.
Close: Cierra la comunicacin del socket entre el servidor y el cliente.
Rutinas de operacin adicionales
Rutinas de ordenacin de bytes: Se disearon para los protocolos de internet.
o u_long htonl(u_long hostlong); convierte host a network, long integer
o u_short htons(u_short hostshort); convierte host a network, short integer
o u_long ntohl(u_long netlong); convierte red a host, long integer
o u_short ntohs(u_short netshort); convierte red a host, short integer
Operaciones de bytes: Se utilizan para operar con las estructuras de direccin de los
sockets.
o bcopy(char *src, char *dest, int nbytes). Copia el nmero de bytes especificado desde el fuente al destino (notar que el orden de los dos argumentos puntero es diferente del orden usado por la funcin estndar strcpy de I/O).
o bzero(char *dest, int nbytes). Escribe el nmero especificado de bytes null al destino especificado.
o int bcmp(char *ptr1, char *ptr2, int nbytes). Compara dos cadenas de bytes, y devuelve cero si son iguales, o no cero en caso contrario (difiere en los valores devueltos de la funcin strcpy)
Rutinas de conversin de direcciones o unsigned long inet_addr (char *ptr); convierte una cadena de caracteres en
notacin decimal con punto a una direccin Internet de 32 bits, y la siguiente funcin:
o char *inet_ntoa (struct in_addr inaddr); hace la conversin contraria. UNIX ofrece un mecanismo de comunicacin general entre dos procesos cualesquiera que pertenecen a un mismo sistema o a dos sistemas diferentes.
DIAGRAMA DE ARQUITECTURA
Podemos observar que la arquitectura de una aplicacin cliente/servidor es centralizada, donde todos los clientes se conectan a un solo servidor.
CONCLUSIONES
La comunicacin mediante sockets utilizan protocolo TCP, es decir la comunicacin es confiable.
Si usamos el protocolo TCP-IP como medio de comunicacin, debemos especificar que el puerto de origen y destino sean el mismo caso contrario no se podrn establecer la comunicacin, adems de especificar una IP.
Los sockets hay de tipo no orientados a la conexin y de tipo orientados a la conexin.
Los sistemas desarrollados bajo arquitectura cliente/servidor puede ser multiplataformas.
RECOMENDACIONES
Implementar estrategias para mejorar el manejo de la consistencia y tolerancia a fallos
Los clientes y los servidores deben utilizar una misma arquitectura para lograr la comunicacin.
BIBLIOGRAFIA
[1]. Computer Networks, 2 edicin. Autor: Tanembaum
[2]. Internetworking with TCP/IP, volumen 1, captulo 5. Autor: D. E. Conner.
[3]. Instituto de Tecnologas Educativas. Internet Aula abierta 2.0. Modelo cliente-servidor.
http://www.ite.educacion.es/formacion/materiales/157/cd/m1_1_conceptos_basicos_de_interne
t/modelo_clienteservidor.html
[4]. Universidad de Colima. http://docente.ucol.mx/sadanary/public_html/bd/cs.htm
[5]. Osorio M, Jimena. INFORMTICA CLIENTE-SERVIDOR.
http://www.angelfire.com/my/jimena/so2/com_guia2.htm
[6]. Ramirez, Hazel; Hodgson, Jenny; Reyes, Javier; Coleman, Kenny. Universidad Politcnica de
Nicaragua. Arquitectura cliente/servidor.
http://es.slideshare.net/NoeGonzalezMendoza/arquitectura-cliente-servidor
[7]. Ana. Modelo Cliente Servidor. http://anagaldo.blogspot.com/2011/05/modelo-cliente-
servidor.html
[8]. Alegsa. Definicin de cliente/servidor (computacin).
http://www.alegsa.com.ar/Dic/cliente%20servidor.php
[9]. Campo, Jimmy. Arquitectura cliente servidor. http://es.slideshare.net/jcampo/cliente-
servidor-307243
[10]. Martn, David; Martnez, Luis. Comunicacin entre procesos sockets.