Está en la página 1de 5

INTERFAZ SOCKET.

Ren Andrs Palta Morocho


Universidad de Cuenca
Facultad de Ingeniera
Escuela de Informtica

ABSTRACT (RESUMEN): En el presente artculo se


realiza una breve introduccin a la interfaz sockets desde
su origen en la Universidad de California en Berkeley en
donde originalmente de diseo la interfaz para el sistema
operativo Unix y que en la actualidad la interfaz socket
es ampliamente usado por muchos fabricantes y por la
mayora de sistemas operativos existentes. Decir tambin
que la interfaz sockets soporta comunicaciones
orientadas a la conexin y no orientadas a la conexin as
como el diseo de los sockets est basado en la
arquitectura cliente servidor por lo que es fundamental
especificar quien acta como servidor y quien como
cliente.
Keywords
protocolo.

(palabras

clave)

interfaz,

socket,

I. INTRODUCTION (INTRODUCCIN)

II. ORIGEN
El origen de la interfaz socket se da en la Universidad
de California en Berkeley, en esta Universidad disearon
para el sistema operativo BSD UNIX, una interfaz para
permitir a los programas acceder y comunicarse a travs de
una red de computadores. Las llamadas al sistema de E/S en
UNIX se basan en el proceso de open-read-write-close
(abrir-leerescribir-cerrar), y esto de utiliza tanto con
archivos como con dispositivos hardware. En este tipo de
comunicaciones se bas el diseo de la interfaz sockets, con
lo que para comunicarse con una red TCP/IP, se abre
primero una conexin con la red, se leen y escriben datos a
travs de ella y una vez terminados los procesos se cierra la
conexin.

Los sockets son mecanismos de comunicacin entre


procesos que permiten que un proceso hable con otro
proceso incluso estando en distintas maquinas. Es decir un
socket no es ms que un canal de comunicacin entre dos
programas que corren sobre ordenadores distintos o incluso
en la misma computadora. Desde el punto de vista de
programacin, un socket no es ms que un fichero que se
abre de manera especial. Una vez abierto se pueden escribir
y leer datos de el con las funciones de lectura y escritura. La
forma de referenciar un socket por los procesos implicados,
es mediante un descriptor del mismo tipo que el utilizado
para referenciar ficheros, se podr realizar redirecciones de
los archivos de E/S estndar (descriptores 0,1 y 2) a los
sockets y asi combinar ntre ellos aplicaciones de la red.

La INTERFAZ SOCKET, se incorpor a la versin 4.1


del sistema operativo. El S.O. BSD Unix fue muy adoptado
por grandes fabricantes como Sun Microsystems Inc.,
Tektronix Inc. o Digital Equipment Corp., por ende la
interfaz sockets estuvo disponible en gran cantidad de
mquinas. La interfaz fue ampliamente aceptado por lo que
se conviertio en un estndar que lo usaban la mayora de
fabricantes.

Hay que tomar en cuenta que las aplicaciones


desarrolladas con sockets estn basadas en la arquitectura
Cliente-Servidor. La aplicacin necesita conocer el papel
que va a desempear (cliente o servidor), ya que la
estructura de la aplicacin y primitivas difieren.

III. IMPLEMENTACION EN EL S.O.

Aunque originalmente fue desarrollado para el S.O.


Unix hoy en da lo usan todos los Sistemas Operativos como
es S.O. de Microsoft Windows, Mac, OS2, Linux, etc

La implementacin de la interfaz socket se dio segn las


especificaciones con las que contaba el S.O. es asi que en
Unix, cuando una aplicacin desea realizar operaciones E/S,
este llama a la funcin open para crear un descriptor de
fichero que se usara luego para acceder al fichero. El S.O.

operativo implementa los descriptores de ficheros como un


array de punteros a estructuras internas de datos. Para cada
proceso, el sistema mantiene una tabla de descriptores de
ficheros separados.

Definir funciones que soporten especficamente el


protocolo TCP/IP.
Definir funciones que soporten cualquier tipo de
protocolo de comunicaciones y parametrizarlas
cuando se quisiera utilizar TCP/IP.

Hay que decir que en el momento del desarrollo de la


interfaz socket, el protocolo TCP/IP no estaba tan
ampliamente divulgado como lo es hoy en da y existan
otras posibilidades para establecer comunicaciones entre dos
mquinas. Es por esta razn que los diseadores optaron por
la segunda opcin: mantener la generalidad de la interfaz. Es
por ello que al desvincular la interfaz de sockets de un
protocolo de comunicaciones determinado se har necesario
especificar ese protocolo cuando se usen esas funciones. De
esta manera, cada vez que se quisiera utilizar la interfaz de
sockets, ser necesario especificar:
Cuando un proceso abre un fichero, el S.O. coloca un
puntero a las estructuras de datos internas de ese fichero en
la tabla de descriptores de ficheros de ese proceso y le
devuelve al proceso el ndice del puntero en esa tabla. Ese
ndice es el descriptor del fichero y es lo nico que el
proceso tiene que recordar cuando quiere acceder al fichero.
La interfaz socket aade una nueva abstraccin para la
comunicacin a travs de la red, el socket. Cada socket
activo se identifica por un entero denominado su descriptor
de socket. El S.O. Unix coloca los descriptores de sockets en
la misma tabla de descriptores que los ficheros. De esta
manera, una aplicacin no puede tener un descriptor de
fichero con el mismo valor que un descriptor de socket.
Para crear un descriptor de socket se le aade al S.O.
una nueva llamada al sistema: la funcin socket. Con esta
funcin se crea un socket. Cuando un proceso crea un
socket, el sistema coloca un puntero a las estructuras
internas de ese socket en la tabla de descriptores de ficheros
de ese proceso y le devuelve al proceso el ndice de esa
tabla. Dicho ndice es el descriptor socket, para rellenar los
detalles especficos del socket ser necesario realizar
llamadas a otras funciones del API.

IV. CONCEPTOS DE DISEO


Un socket se le puede ver como un punto de conexin
que comunica dos procesos entre s. Para que dos procesos
pudieran comunicarse entre procesos hubo que aadir al
sistema de una cantidad de funciones que permitieran a esos
procesos acceder a los dispositivos de red. Cuando se
consider como aadir funciones al S.O. para suministrar
acceso a las comunicaciones, surgieron dos posibilidades:

Familia De Protocolo: Hay que indicar que tipo de


protocolo se va a utilizar para realizar las distintas
comunicaciones. Los protocolos TCP/IP constituyen una
nica familia representada por la constante PF_INET.
En el caso de comunicaciones entre procesos en la misma
maquina usando el sistema de ficheros, tendramos la
familia de protocolos identificada como PF_UNIX.
Tipo de Servicio: La interfaz permite seleccionar el
tipo de servicio que se desea siempre y cuando el protocolo
seleccionado sea capaz de suministrar distintos tipos de
servicio. Aqu por tipo de servicio nos estamos refiriendo a
cosas como comunicacin orientada a la conexin o bien a
comunicacin no orientada a la comunicacin.
Familia de Direcciones Finales: La interfaz de
protocolos especifica la direccin final de una comunicacin
de una manera distinta. La direccin final de una
comunicacin es el punto a travs del cual un proceso enva
o recibe datos. Por ejemplo en IP, una direccin final se
especifica usando la direccin IP de la mquina y el nmero
de puerto de protocolo que usara el programa. En el caso de
usar la familia de protocolos UNIX la direccin final ser el
nombre de un fichero. La interfaz permite que las
direcciones finales se puedan expresar con distintos
formatos aun dentro de la propia familia de protocolos. Cada
una de esas posibles representaciones correspondera a una
familia de direcciones.
VI: FUNDAMENTOS
Como se ha definido los sockets son un sistema de
comunicacin entre procesos de diferentes mquinas de una
red. Especficamente un socket es un punto de comunicacin
por el cual un proceso puede emitir o recibir informacin.

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 este,
el cliente asigna un numero de puerto local a la maquina en
la cual est siendo ejecutado. Ahora el cliente y el servidor
pueden comunicarse escribiendo o leyendo en o desde sus
respectivos sockets.
VI. CREACION DE UN SOCKET
Para crear un socket, se utiliza la funcin socket y se
debe especificar tres parmetros:

Protocol Family: Identifica a una familia de protoclos


relacionados, como TCP/IP.

Normalmente, un servidor se ejecuta sobre una


computadora especfica y tiene un socket que responde en
un puerto especfico. El servidor nicamente espera, este
escucha a travs del socket a que un cliente haga la peticin.
En el lado del cliente: el cliente conoce el nombre de
host de la maquina en el 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 maquina servidor en el
puerto especifico.

Socket Type: Si el programa utilizara el socket para


transmitir flujo de bytes o datagramas.
SOCK_DGRAM: Para datagramas
SOCKET_STREAM: Para flujo de bytes.
Protocol: Permite especificar que protocolo utilizara el
socket. IPPROTO_TCP, IPPROTO_UDP

Si la llamada a socket() ha retornado el valor de -1


significa que algo ha salido bien. En este caso podemos
comprobar la variable errno para saber que ha ocurrido. Los
valores posibles son:

Si no hay problemas en la comunicacin 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 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

EACCES: Se deniega el permiso para crear el


socket del tipo solicitado.
EMFILE: La tabla de descriptores del proceso seta
llena.
EPROTONOSUPPORT:
El
protocolo
especificado o el servicio solicitado no estn
soportados.

Cuando se llama a la funcin socket, la implementacin del


socket lo crea y devuelve un identificador de socket que
identifica a un registro en la tabla de descripcin tal y como
se especific en el punto III en la Implementacin en el S.O.
El registro muestra la estructura de datos del socket.

conexin y se encarga de poner al socket en modo de


atencin pasiva.
El programa cliente tambin crea un socket, pero no
necesita ocuparse de que direccin local usara el protocolo
ya que se utiliza un protocolo orientado a la conexin, por
tanto no llama a la funcin bind.
Lo que hace es iniciar la conversin en red llamando a la
funcin connect. Despues de que el cliente y el servidor
establecen la conexin, pueden ocurrir comunicaciones
adicionales a travs de las funciones write y read.
Cada vez que la aplicacin llama a la funcin socket, la
implementacin de este reserva memoria para una nueva
estructura de datos y almacena la direccin de la familia, el
tipo de socket y el protocolo.

VII. CONFIGURACION DEL SOCKET


Una vez creado el socket, utilizando la funcin socket,
se pueden utilizar las funciones de configuracin
dependiendo del uso que se le vaya a dar al socket.
Si se trata de un cliente orientado a la conexin, se
deber llamar a la funcin connect que se encargara de
almacenar toda la informacin local y remota en la
estructura de datos socket.
Si se trata de un cliente no orientado a la conexin las
funciones llamadas son:
Maquina Local: bind Maquina remota: send.
En el caso de un servidor orientado a la conexin:
Maquina Local: bind
Maquina Remota: listen y accept
En el caso de un servidor no orientado a la conexin:
Maquina Local: bind
Maquina Remota: recvfrom

VIII. PRIMITIVAS SOCKET ORIENTADO A LA


CONEXIN
El programa servidor solicita a la implementacin del
socket que le asigne una estructura de datos para el socket y
que le devuelva un descriptor de sockets para utilizarlo en
las siguientes llamadas a funciones de la interfaz socket.
Despus el servidor une el socket a un puerto de protocolo
local. La funcin listen indica al socket que atienda las
conexiones entrantes y que confirme las solicitudes de

Socket: Crea un descriptor de socket.


Close: Cierra socket.
Bind: Asocia una direccin local con un socket.
Accept: Espera una solicitud de conexin.
Connect: Inicia conexin con conector remoto.
Send, Write: Enva mensaje
Recv, Read: Recibe mensaje
Listen: Crea cola de espera para almacenar solicitudes de
conexin.
Shutdown: Deshabilita al recepcin y/o el envo de datos
por el socket.

IX. PRIMITIVAS SOCKET NO ORIENTADO A LA


CONEXIN.
El cliente no establece una conexin con el servidor, sino
que le enva datagramas mediante la llamada del sistema
Sendto. Requiere como parmetro la direccin destino
(servidor). Por su parte, el servidor slo tiene que invocar
una llamada recvfrom. Espera hasta que arriva data de
algn cliente. Recvfrom devuelve la direccin del proceso
cliente junto con el datagrama de forma tal que el servidor
puede enviar su respuesta al proceso correcto.

Socket: Crea un descriptor de socket


Close: Cierra socket
Bind: Asocia una direccin local con un socket
Sendto: Enva mensaje
Recvfrom: Recibe mensaje

Conexin de un Socket
Un programa cliente orientado a la conexin utiliza la
funcin connect para configurar un socket, y requiere como
parmetros:
Identificador Socket que es el valor del descriptor del socket
que devolvi la funcin socket.
Direccin del socket remoto, es decir la direccin IP del host
remoto y el puntero de protocolo y
Longitud de la direccin, el tamao en bytes de la direccin
del socket remoto.
En el caso de cliente no orientado a la conexin o
servidores en general tienen que tender a un puerto de
protocolo las solicitudes que les pueden llegar. La funcin
de asignacin de nombres, bind en la API de sockets permite
a un programa asociar una direccin local con un socket.
Transmisin de Datos.
Se proporciona cinco funciones para transmitir datos a
travs de un socket y se divide en dos grupos:
Dos funciones que requieren una direccin de destino
como parmetro.
Las restantes que son las utilizadas en los procesos
orientados a conexin, no lo precisan.

X. CONCLUSIONES
A pesar de que originalmente fue desarrollado para el
S.O. Unix hoy en da es muy usado por los diferentes S.O. y
por muchos de los fabricantes a nivel mundial.
La programacin de aplicaciones en redes utilizando la
interfaz de sockets, constituye una herramienta simple de
utilizar y de mucha potencia para el desarrollo de
aplicaciones.
Cabe decir que con el uso de la interfaz socket se puede
dar el desarrollo de aplicaciones distribuidas en redes del
tipo cliente servidor, que estn especialmente hechas para
trabajar en internet.

V: REFERENCES (BIBLIOGRAFA)
[1] [En lnea].
http://courses.cs.vt.edu/~cs5516/spring03/slides/Socket
Programming_6.pdf
[ltimo acceso: 17 Enero 2015].
[2] [En lnea].
http://lia.deis.unibo.it/Courses/PMA4DS1112/materiale/
10.Socket.pdf
[ltimo acceso: 17 Enero 2015].
[3] DOUGLAS E COMER Redes Globales de
Informacin con Internet y TCP/IP

También podría gustarte