Você está na página 1de 11

INTRODUCCION

La programacin en red siempre ha sido dificultosa, el programador deba de conocer la mayora de


los detalles de la red, incluyendo el hardware utilizado, los distintos niveles en que se divide la capa
de red, las libreras necesarias para programar en cada capa, etc.
Pero, la idea simplemente consiste en obtener informacin desde otra mquina, aportada por otra
aplicacin software. Por lo tanto, de cierto modo se puede reducir al mero hecho de leer y escribir
archivos, con ciertas salvedades.
Los sockets son un sistema de comunicacin entre procesos de diferentes mquinas de una red.
Ms exactamente, un socket es un punto de comunicacin por el cual un proceso puede emitir o
recibir informacin.
Los sockets fueron desarrollados como un intento de generalizar el concepto de pipe (tubera
unidireccional para la comunicacin entre procesos en el entorno Unix) en 4.2BSD bajo contrato por
DARPA (Defense Advanced Research Projects Agency). Sin embargo, fueron popularizados por
Berckley Software Distribution, de la Universidad Norteamericana de Berkley.
Los sockets utilizan una serie de primitivas para establecer el punto de comunicacin, para
conectarse a una mquina remota en un determinado puerto que est disponible, para escuchar en
l, para leer o escribir y publicar informacin en l, y finalmente para desconectarse. Con todas las
primitivas que ofrecen los sockets, se puede crear un sistema de dilogo muy completo.

2.1 CONCEPTO DE SOCKET

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?

El modelo ms bsico de los sockets consta de 2 simples programas, un servidor y un


cliente. Bsicamente el programa servidor comienza a escuchar en un puerto determinado
(nosotros lo especificamos), y posteriormente el programa que la hace de cliente debe conocer la
ip o nombre de dominio/hostname del servidor y el puerto que est escuchando, al saber esto
simplemente solicita establecer una conexin con el servidor. Es aqu cuando el servidor acepta esa
conexin y se puede decir que estos programas estn conectados, de este modo pueden
intercambiar informacin.
Funcionamiento genrico
Normalmente, un servidor se ejecuta sobre una computadora especfica y tiene un socket que
responde en un puerto especfico. El servidor nicamente espera, escuchando a travs del socket a
que un cliente haga una peticin.
En el lado del cliente: el cliente conoce el nombre de host de la mquina en la cual el servidor se
encuentra ejecutando y el nmero de puerto en el cual el servidor est conectado. Para realizar una
peticin de conexin, el cliente intenta encontrar al servidor en la mquina servidora en el puerto
especificado.

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.

2.2 DOMINIOS Y TIPOS DE SOCKET


DOMINIOS
Un dominio puede referirse a dos cosas:
Es un conjunto de ordenadores conectados en una red que confan a uno de los equipos de dicha
red la administracin de los usuarios y los privilegios que cada uno de los usuarios tiene en dicha
red.
Es la parte principal de una direccin en la web que indica la organizacin o compaa que
administra dicha pgina.
Un dominio representa una familia de protocolos
Un socket est asociado a un dominio desde su creacin
Slo se pueden comunicar sockets del mismo dominio
Los servicios de sockets son independientes del dominio
Los sockets se crean dentro de un dominio de comunicacin, igual que un archivo se crea dentro de
un filesystem.
El dominio de comunicacin nos dice dnde se encuentran los procesos que se van a
intercomunicar. Si los procesos estn en el mismo sistema, el dominio de comunicacin ser
AF_UNIX, si los procesos estn en distintos sistemas y stos se hallan unidos mediante una red
TCP/IP, el dominiode comunicacin ser AF_INET. Cabe aclarar que existen otros dominios de
comunicacin. Los sockets no se han diseado solamente para TCP/IP. La idea original fue que se
usase la misma interfaz tambin para distintas familias de protocolos. En esta introduccin slo
trataremos el dominio AF_INET.
Indica el formato de las direcciones que podrn tomar los sockets y los protocolos que soportarn
dichos sockets.
La estructura genrica es

struct sockaddr {

};

Pueden ser:

u__short

sa__family;

/* familia */

char

sa__data[14];

/* direccin */

* Dominio AF_UNIX ( Address Family UNIX ):

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;

/* en este caso AF_UNIX */

sun__data[108]; /* direccin */
};

* Dominio AF_INET ( Address Family INET ):


El cliente y el servidor pueden estar en cualquier mquina de la red Internet. Deben
incluirse los ficheros cabecera /usr/include/netinet/in.h, /usr/include/arpa/inet.h,
/usr/include/netdb.h. La estructura de una direccin en este dominio es:

struct in__addr {
u__long

s__addr;

};

struct sockaddr__in {
short
u__short

sin_family;
sin_port;

struct in__addr
char

/* en este caso AF_INET */

/* numero del puerto */


sin__addr; /* direcc Internet */

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.

Diferencias entre Socket Stream y Datagrama


El problema aparece al momento de decidir por cual protocolo o tipo de socket usar. La
decisin depende de la aplicacin cliente/servidor que se est desarrollando; aunque hay
algunas diferencias entre los protocolos que sirven para ayudar en la decisin y utilizar un
determinado tipo de socket.
En UDP, cada vez que se enva un datagrama, hay que enviar tambin el descriptor del
socket local y la direccin del socket que va a recibir el datagrama, luego los mensajes son
ms grandes que los TCP. Como el protocolo TCP est orientado a conexin, hay que
establecer esta conexin entre los dos sockets antes de nada, lo que implica un cierto
tiempo empleado en el establecimiento de la conexin, que no es necesario emplear en
UDP.
En UDP hay un lmite de tamao de los datagramas, establecido en 64 kilobytes, que se
pueden enviar a una localizacin determinada, mientras que TCP no tiene lmite; una vez
que se ha establecido la conexin, el par de sockets funciona como los streams: todos los
datos se leen inmediatamente, en el mismo orden en que se van recibiendo.
UDP es un protocolo desordenado, no garantiza que los datagramas que se hayan enviado
sean recibidos en el mismo orden por el socket de recepcin. Al contrario, TCP es un
protocolo ordenado, garantiza que todos los paquetes que se enven sern recibidos en el
socket destino en el mismo orden en que se han enviado.____
Los datagramas son bloques de informacin del tipo lanzar y olvidar, es decir, no hay la
seguridad de que el paquete llegue o no al destino. Para la mayora de los programas que
utilicen la red, el usar un flujo TCP en vez de un datagrama UDP es ms sencillo y hay menos
posibilidades de tener problemas. Sin embargo, cuando se requiere un rendimiento ptimo,
y est justificado el tiempo adicional que supone realizar la verificacin de los datos, la
comunicacin a travs de sockets TCP es un mecanismo realmente til.
En resumen, TCP parece ms indicado para la implementacin de servicios de red como un
control remoto (rlogin, telnet) y transmisin de ficheros (ftp); que necesitan transmitir
datos de longitud indefinida. UDP es menos complejo y tiene una menor sobrecarga sobre
la conexin; esto hace que sea el indicado en la implementacin de aplicaciones
cliente/servidor en sistemas distribuidos montados sobre redes de rea local.

Esta imagen muestra los tipos de socket para el protocolo de Internet

2.3 CREACION/ IMPLEMENTACION Y SUPRESION DE SOCKETS.

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

Você também pode gostar