PDF de programación - CONEXIÓN DE SOCKET CON DIRECCIONES DE DESTINO

Imágen de pdf CONEXIÓN DE SOCKET CON DIRECCIONES DE DESTINO

CONEXIÓN DE SOCKET CON DIRECCIONES DE DESTINOgráfica de visualizaciones

Publicado el 26 de Agosto del 2017
805 visualizaciones desde el 26 de Agosto del 2017
3,2 MB
33 paginas
Creado hace 13a (30/10/2010)
Universidad Nacional del Nordeste

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

La Interfaz Socket

P.U.A. Leandro Rodríguez

Año 2010

Introducción - Origen de la INTERFAZ SOCKET

 La Interfaz Socket es una API para redes TCP/IP que se

compone de funciones o rutinas.

 Originalmente se construyó a principios de los 80 para el

sistema operativo UNIX , aunque hoy en día también la
utilizan otros sistemas operativos como Microsoft
Windows, Mac, OS2, etc...

La Interfaz Socket

2

Introducción - Origen de la INTERFAZ SOCKET

 Las llamadas al sistema de E/S en UNIX se basan en el

proceso de open-read-write-close (abrir-leer-escribir-
cerrar), y esto se utiliza
 tanto con archivos como con dispositivos hardware.

 En este tipo de comunicación se basó el diseño de la

interfaz de sockets,
 con lo que para comunicarse con una red TCP/IP, se abre

primero una conexión con la red, se leen y escriben datos a
través de ella y una vez terminados los procesos se cierra la
conexión.

La Interfaz Socket

3

Introducción - SOCKETS

 Las aplicaciones desarrolladas en Sockets están basadas

en la arquitectura Cliente-Servidor.

 La aplicación necesita conocer el papel que va a

desempeñar (cliente o servidor), ya que la estructura del
sw y primitivas difieren.

La Interfaz Socket

4

Introducción - SOCKETS

 Permiten comunicaciones orientadas a conexión o sin

conexión.

 Un socket está completamente definido cuando consta de

dirección y puerto (ej. IP + puerto TCP).

 Para que se dé la comunicación en una red, el programa

requiere un socket en cada extremo del proceso de
comunicación.

La Interfaz Socket

5

Creación de un Socket

 Para crear un socket, se utiliza la función socket y se

deben especificar tres parámetros:
socket = socket(protocol_familiy, socket_type, protocol)

1. Familia de Protocolos (Protocol Family): Identifica a una

familia de protocolos relacionados, como TCP/IP.

2. Tipo de Socket (Socket_type): Si el programa utilizará el

socket para transmitir flujo de bytes o datagramas.
SOCK_DGRAM para datagramas y SOCK_STREAM
para flujo de bytes.

La Interfaz Socket

6

Creación de un Socket

3. Protocolo a utilizar: Permite especificar qué protocolo

utilizará el socket. IPPROTO_TCP , IPPROTO_UDP.

 Ej: socket_handle = socket(PF_INET, SOCK_STREAM,

IPPROTO_TCP);

 Cuando se llama a la función socket, la implementación
del socket lo crea y devuelve un identificador de socket
que identifica a un registro en la tabla de descripción. El
registro muestra la estructura de datos del socket.

La Interfaz Socket

7

Estructura de Datos del Socket

Familia de Protocolos
Tipo de Servicio
Dirección IP Local
Dirección IP Remota
Puerto de Protocolo Local

Puerto de Protocolo Remoto

Cada vez que la aplicación llama a la función socket,
la implementación de este reserva memoria para una
nueva estructura de datos y almacena la dirección de
la familia, el tipo de socket y el protocolo.

La Interfaz Socket

8

Configuración del Socket

 Una vez creado el socket, utilizando la función socket, se

pueden utilizar las funciones de configuración
dependiendo del uso que se le vaya a dar al socket:

 Si se trata de un cliente orientado a conexión, se deberá

llamar a la función connect que se encargará de almacenar
toda la información local y remota en la estructura de datos
del socket.

 Si se trata de un cliente sin conexión las funciones llamadas

son:

 Máquina Local: bind - Máquina remota: send

La Interfaz Socket

9

Configuración del Socket

En el caso de un servidor orientado a conexión:

 Máquina Local: bind

 Máquina Remota: listen y accept

En el caso de un servidor sin conexión:

 Máquina Local: bind

 Máquina Remota: recvfrom

La Interfaz Socket

10

Primitivas Sockets Orientadas a Conexión (TCP)

 Socket: Crea un descriptor de socket.
 Close: Cierra socket
 Bind: Asocia una dirección local con un socket
 Listen: Crea cola de espera para almacenar

solicitudes de conexión

 Accept: Espera una solicitud de conexión
 Connect: Inicia conexión con conector remoto
 Shutdown: Deshabilita al recepción y/o el envío de

datos por el socket

 Send, Write: Envía mensaje
 Recv, Read: Recibe mensaje

La Interfaz Socket

11

Primitivas Sockets Orientadas a Conexión (TCP)

La Interfaz Socket

12

Descripción del Proceso

 El programa servidor solicita a la implementación
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 de sockets.

 Después el servidor une el socket a un puerto de

protocolo local.
 La función listen indica al socket que atienda las

conexiones entrantes y que confirme las solicitudes de
conexión y se encarga de poner al socket en modo de
atención pasiva.

La Interfaz Socket

13

Descripción del Proceso

 Result = listen(socket_handle, queue_length);

 Donde el segundo parámetro queue_length, nos

permite especificar el número máximo de solicitudes
que pueden acumularse en la cola.
 Después de configurar una cola de datos entrantes, el
programa servidor llamará a la función accept, cesa su
actividad y espera una solicitud de conexión de un
programa cliente.

 Result = accept (socket_handle, socket_address,

address_length);

La Interfaz Socket

14

Descripción del Proceso

 El programa cliente también crea un socket, pero no

necesita ocuparse de qué dirección local usará el
protocolo ya que utiliza un protocolo orientado a
conexión, por lo tanto no llama a la función bind.
 Lo que hace es iniciar la conversación en red llamando

a la función connect.

 Después de que el cliente y el servidor establecen la

conexión, pueden ocurrir comunicaciones adicionales
a través de las funciones write y read.

La Interfaz Socket

15

Primitivas Sockets No Orientadas a Conexión
(UDP)

 Socket: Crea un descriptor de socket.

 Close: Cierra socket.

 Bind: Asocia una dirección local con un socket.

 Sendto: Envía mensaje.

 Recvfrom: Recibe mensaje.

La Interfaz Socket

16

Primitivas Sockets No Orientadas a Conexión
(UDP)

La Interfaz Socket

17

Conexión de un Socket

 Un programa cliente orientado a conexión utiliza la
función connect para configurar un socket, y requiere
como parámetros,

 el identificador de socket, que es el valor del descriptor

del socket que devolvió la función socket,

 la dirección del socket remoto, es decir la dirección IP

del host remoto y el puerto de protocolo y

 la longitud de la dirección, el tamaño en bytes de la

dirección del socket remoto.

 result = connect (socket_handle, remote_socket_address,

address_length);

La Interfaz Socket

18

Conexión de un Socket

 En el caso de clientes no orientados a conexión o

servidores en general tienen que atender a un puerto de
protocolo las solicitudes que les pueden llegar.

 La función de asignación de nombres, bind, en la API de

sockets permite a un programa asociar una dirección local
con un socket:

 Result = bind (socket_handle, local_socket_address,

address_lenght);

 De esta manera se le comunica a la implementación del

socket, qué puerto de protocolo utilizar para la entrega de
datos.

La Interfaz Socket

19

Transmisión de Datos

 Se proporcionan cinco funciones para transmitir

datos a través de un socket y se dividen en dos grupos.

 Existen

 dos funciones que requieren una dirección de destino

como parámetro,

 las restantes que son las utilizadas en los procesos

orientados a conexión, no lo precisan.

La Interfaz Socket

20

Transmisión de Datos – Orientadas a Conexión

FUNCION

DESCRIPCIÓN

send

write

writev

sendto

sendmsg

Transmite datos a través de un socket de conexión.

Transmite datos a través de un socket de conexión
utilizando un buffer de datos simple.

Transmite datos a través de un socket de conexión
utilizando bloques de memoria no contiguos.

Transmite datos a través de un socket sin conexión
utilizando un buffer de mensajes simple.

Transmite datos a través de un socket sin conexión,
utilizando una estructura de mensajes flexible como
buffer de mensajes.

La Interfaz Socket

21

Transmisión de Datos – Orientadas a Conexión

 Las funciones del API de sockets que hacen transmisiones

de datos orientadas a conexión no requieren que el
programa especifique una dirección destino como
parámetro.

 Las funciones send, write y writev sólo trabajan con sockets

conectados, y tiene la siguiente estructura:

 Result= write (socket_handle, message_buffer,

buffer_length);

 El primer parámetro es el identificador de socket, el

segundo es el búfer de mensajes, que apunta al búfer de
datos que contiene la información a transmitir. El tercer
parámetro es el tamaño del búfer de datos.

La Interfaz Socket

22

Transmisión de Datos – Orientadas a Conexión

 Por otro lado la función writev no requiere que los datos
ocupen bloques de memoria contiguos como si lo hace la
función write.
 Así writev permite que se especifique una tabla de direcciones que

contenga los datos.

 Result= writev (socket_handle, io_vector, vector_length);

 También requiere como primer parámetro, un identificador de

socket, el segundo parámetro especifica la dirección de una
tabla que contiene una secuencia de apuntadores.
 Cuando la función writev transmita los datos, enviará la

información contenida en cada localidad de memoria especificada
por el array de apuntadores, transmitiéndolos en el mismo orden
en que aparecen en el array.

La Interfaz Socket

23

Transmisión de Datos – Orientadas a Conexión

 La función send es otra función del interfaz de sockets

para utilizar con sockets orientados a conexión:
 Result= send (socket_handle, message_buffer, buffer_length,

special_flags);

 Con send se pueden especificar banderas opcionales para

controlar la transmisión, como la gestión de datos
urgentes (fuera de banda).

 Las t
  • Links de descarga
http://lwp-l.com/pdf6628

Comentarios de: CONEXIÓN DE SOCKET CON DIRECCIONES DE DESTINO (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad