Vous êtes sur la page 1sur 22

Tema: Socket

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.

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.

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.

Comunicacin entre dos procesos a travs de socket

Los modelos de capas de dividen el proceso de comunicacin en capas independientes. Cada capa proporciona servicios a la capa superior a travs de una interfaz y a la vez recibe servicios de la capa inferior a travs de la interfaz correspondiente. Este tipo de abstraccin permite construir sistemas muy flexibles ya que se esconden los detalles de la implementacin: la capa N slo necesita saber que la capa N-1 le proporciona el servicio X, no necesita saber el mecanismo que utiliza dicha capa para lograr su objetivo.

Socket como interfaz entre la capa de Aplicacin y la del Transporte

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)

  

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 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.

Son un ser i io de tr nsporte no orient do a la conexi n. Son ms eficientes que TCP, pero en su utili aci n no est garanti ada la fiabilidad. os datos se envan y reciben en paquetes, cuya entrega no est garanti ada. os paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al que se envi .
as 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 direcci n 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.

Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos de ms bajo nivel. Se utilizan sobre todo para la depuracin del cdigo de los protocolos.

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.

La comunicacin con sockets hace uso de una serie de primitivas, entre las que destacan socket para establecer el punto de comunicacin, connect para conectarse a una maquina remota en un determinado puerto que est disponible, bind para escribir en l y publicar informacin, read para leer de l, shutdown o close para desconectarse.

Vous aimerez peut-être aussi