Todo

Solo disponible en BuenasTareas
  • Páginas : 8 (1879 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de marzo de 2011
Leer documento completo
Vista previa del texto
Sockets

Qué es un socket?

Un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información. En el interior de un proceso, un socket se identifica por un descriptor de la misma naturaleza que los que identifican los archivos, al igual que todos los procesos del sistema UNIX de Berkeley.
La comunicación mediante sockets es una interfaz (o servicio)con la capa de transporte (nivel 4) de la jerarquía OSI. La filosofía de la división por capas de un sistema es encapsular, dentro de cada una de ellas, detalles que conciernen sólo a cada capa, y presentársela al usuario de tal forma que este pueda trabajar con ella sin necesidad de conocer sus detalles de implementación. La interfaz de acceso a la capa de transporte del sistema UNIX de Berkeleyno está totalmente aislada de las capas inferiores, por lo que a la hora de trabajar con sockets, es necesario conocer algunos detalles sobre esas capas. En concreto, a la hora de establecer una conexión mediante sockets, es necesario conocer la familia o dominio de la conexión, y el tipo de conexión
[pic]
Figura 1.- Tabla descriptora de ficheros de un proceso.

 

Dominio de unsocket.
Una familia, o dominio de la conexión, agrupa todos aquellos sockets que comparten características comunes. Especifica el formato de las direcciones que se podrán dar al socket y los diferentes protocolos soportados por las comunicaciones vía los sockets de este dominio.
Cada protocolo, a la hora de referirse a un nodo de la red, implementa un mecanismo de direccionamiento. La direccióndistingue de forma inequívoca a cada nodo u ordenador, y es utilizada para encaminar los datos desde el nodo origen hasta el nodo destino. Hay muchas llamadas al sistema que necesitan un puntero a una estructura de dirección de socket para trabajar. La siguiente estructura genérica, se utiliza para describir las diferente primitivas.
struct sockaddr {
u_shortsa_family; /* familia de sockets; se emplean constantes de la forma AF_xxx */
char sa_data[14]; /* 14 bytes que contienen la dirección; su significado depende de la familia de sockets que se emplee */
};
Pero en el caso de que estemos tratando con una aplicación particular, esta estructura se deberá reemplazar por la estructura correspondiente deldominio de comunicaciones utilizado, ya que por desgracia, no todas las familias de direcciones se ajustan a la estructura genérica descrita.
No obstante, esta estructura genérica encaja en la estructura definida para la familia AF_INET, perteneciente al dominio Internet, lo que hace que el software de TCP/IP trabaje correctamente aunque el programador use la estructura genérica anterior, puesto queambas tienen el mismo número de bytes. A continuación, pasamos a describir esta estructura del dominio Internet.
struct sockaddr_in {
short sin_family; /* la familia de la dirección AF_INET*/
u_short sin_port; /* 16 bits con el número del puerto */
u_long sin_addr; /* 32 bits con la direcciónInternet (identificación de la red y del host)*/
char sin _zero[8]; /* 8 bytes no usados */
Se puede observar que en la dirección Internet el campo sin_family es equivalente al campo sa_family de la dirección genérica y que los campos sin_port, sin_addr y sin_zero cumplen la misma función que el campo sa_addr.
También podemos ver el dominio UNIX (AF_UNIX), donde lossockets son locales al sistema en el cual han sido definidos. Permiten la comunicación interna de procesos, y su designación se realiza por medio de una referencia UNIX.
struct sockaddr_un {
short sun_family; /* dominio UNIX: AF_UNIX */
char sun_data[108]; /* path */
};
Estas direcciones se...
tracking img