Escolar Documentos
Profissional Documentos
Cultura Documentos
QUE ES UN SOCKET
Un socket (enchufe), es un mtodo para la comunicacin entre un programa del cliente y un
programa del servidor en una red. Un socket se define como el punto final en una conexin. Los
sockets se crean y se utilizan con un sistema de peticiones o de llamadas de funcin a veces
llamados interfaz de programacin de aplicacin de sockets (API, application programming
interface).
Definicin
Un socket es un punto final de un proceso de comunicacin. Es una abstraccin que permite
manejar de una forma sencilla la comunicacin entre procesos, aunque estos procesos se
encuentren en sistemas distintos, sin necesidad de conocer el funcionamiento de los protocolos de
comunicacin subyacentes.
Abstraccin del proceso de comunicacin entre dos mquinas. Es as como estos puntos finales
sirven de enlaces de comunicaciones entre procesos. Los procesos tratan a los sockets como
descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos
transmitiendo y recibiendo a travs de sockets.
Cmo funciona?
Si todo va bien, el servidor acepta la conexin. Adems de aceptar, el servidor obtiene un nuevo
socket sobre un puerto diferente. Esto se debe a que necesita un nuevo socket ( y ,en consecuencia,
un numero de puerto diferente) para seguir atendiendo al socket original para peticiones de
conexin mientras atiende las necesidades del cliente que se conect.
Por la parte del cliente, si la conexin es aceptada, un socket se crea de forma satisfactoria y puede
usarlo para comunicarse con el servidor. Es importante darse cuenta que el socket en el cliente no
est utilizando el nmero de puerto usado para realizar la peticin al servidor. En lugar de ste, el
cliente asigna un nmero de puerto local a la mquina en la cual est siendo ejecutado. Ahora el
cliente y el servidor pueden comunicarse escribiendo o leyendo en o desde sus respectivos sockets.
struct sockaddr {
};
Pueden ser:
u__short
sa__family;
/* familia */
char
sa__data[14];
/* direccin */
El cliente y el servidor deben estar en la misma mquina. Debe incluirse el fichero cabecera
/usr/include/sys/un.h. La estructura de una direccin en este dominio es:
struct sockaddr__un {
short
char
sun__family;
sun__data[108]; /* direccin */
};
struct in__addr {
u__long
s__addr;
};
struct sockaddr__in {
short
u__short
sin_family;
sin_port;
struct in__addr
char
sin_zero[8];
/* campo de 8 ceros */
};
Estos dominios van a ser los utilizados en xshine. Pero existen otros como:
* Dominio AF_NS:
Servidor y cliente deben estar en una red XEROX.
* Dominio AF_CCITT:
Para protocolos CCITT, protocolos X25, ...
TIPOS DE SOCKET
El tipo de sockets describe la forma en la que se transfiere informacin a travs de ese socket.
Existen muchos tipos de sockets, sin embargo, los ms populares son:
Stream (TCP)
Datagram (UDP)
Raw (acceso directo al protocolo: root)
Socket Stream
Son un servicio orientado a la conexin, donde los datos se transfieren sin encuadrarlos en registros
o bloques, asegurndose de esta manera que los datos lleguen al destino en el orden de
transmisin. Si se rompe la conexin entre los procesos, stos sern informados de tal suceso para
que tomen las medidas oportunas, por eso se dice que estn libres de errores. El protocolo de
comunicaciones con streams es un protocolo orientado a conexin, ya que para establecer una
comunicacin utilizando el protocolo TCP (Transmission Control Protocol), hay que establecer en
primer lugar una conexin entre un par de sockets. Mientras uno de los sockets atiende peticiones
de conexin (servidor), el otro solicita una conexin (cliente). Una vez que los dos sockets estn
conectados, se pueden utilizar para transmitir datos en ambas direcciones.
Socket Datagram
Son un servicio de transporte no orientado a la conexin. Son ms eficientes que TCP, pero en su
utilizacin no est garantizada la fiabilidad. Los datos se envan y reciben en paquetes, cuya entrega
no est garantizada. Los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al
que se envi. Las comunicaciones a travs de datagramas usan UDP (User Datagram Protocol), lo
que significa que, cada vez que se enven datagramas es necesario enviar el descriptor del socket
local y la direccin del socket que debe recibir el datagrama. Como se puede ver, hay que enviar
datos adicionales cada vez que se realice una comunicacin, aunque tiene la ventaja de que se
pueden indicar direcciones globales y el mismo mensaje llegar a un muchas mquinas a la vez.
Socket Raw
Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos dems
bajo nivel. Se utilizan sobre todo para la depuracin del cdigo de los protocolos.
Conclusiones
Los sockets son mecanismos que permiten una comunicacin sencilla entre procesos
remotos, otorgando distintos niveles de fiabilidad de acuerdo al tipo de socket que se
use, es decir, que dependiendo de la aplicacin y del tipo de socket que se use en ella, la
comunicacin siempre se realizar dentro de los parmetros predefinidos.
El uso de sockets se ha extendido debido a que han sido diseadas para servir en la
comunicacin en el protocolo IP; resultando eficientes al momento de su aplicacin.
El uso de sockets en Java abstrae un conjunto de operaciones de bajo nivel que bajo
nivel, lo que resulta beneficioso para el programador que tan slo se enfoca en la
aplicacin y la manera en la que enviar y recibir los distintos mensajes durante la
comunicacin.
BIBLIOGRAFIA
http://www.electron.frba.utn.edu.ar/~mdoallo/descargas/redes.pdf
http://es.tldp.org/Universitarios/seminario-2-sockets.html
http://es.scribd.com/doc/19795778/Sockets-y-su-Programacion-en-Java