new la interfaz socket · 2020. 6. 10. · la interfaz socket 3 introducción - origen de la...

33
La Interfaz Socket Universidad Nacional del Nordeste Lic. Vanesa S. Roffé Año 2009 TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Upload: others

Post on 27-Oct-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket

Universidad Nacional del Nordeste

Lic. Vanesa S. RofféAño 2009

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Page 2: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 2

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

Page 3: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 3

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.

Page 4: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 4

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.

Page 5: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 5

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.

Page 6: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 6

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.

Page 7: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 7

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.

Page 8: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 8

Estructura de Datos del Socket

Puerto de Protocolo Remoto

Puerto de Protocolo Local

Dirección IP Remota

Dirección IP Local

Tipo de Servicio

Familia de Protocolos

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.

Page 9: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 9

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

Page 10: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 10

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

Page 11: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 11

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

Page 12: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 12

Primitivas Sockets Orientadas a Conexión (TCP)

Page 13: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 13

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.

Page 14: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 14

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);

Page 15: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 15

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.

Page 16: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 16

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.

Page 17: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 17

Primitivas Sockets No Orientadas a Conexión (UDP)

Page 18: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 18

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);

Page 19: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 19

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.

Page 20: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 20

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.

Page 21: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 21

Transmisión de Datos – Orientadas a Conexión

FUNCION DESCRIPCIÓN

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

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

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

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

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

Page 22: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 22

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.

Page 23: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 23

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.

Page 24: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 24

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 tres funciones write, writev y send, devuelven un valor entero, que es el número de bytes transmitidos por el socket. En caso de que exista un error devuelven: -1.

Page 25: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 25

Transmisión de Datos – No orientadas a Conexión

Para enviar datos a través de un socket sin conexión se dispone de las funciones, sendto y sendmsg:

Result=sendto(socket_handle, message_buffer, buffer_length, special_flags, socket_address_structure, address_structure_length);

Requiere 6 parámetros, entre los nuevos que aparecen ahora,

la dirección de destino (socket_address_structure) y

la longitud de la misma en bytes(address_structure_length).

Page 26: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 26

Transmisión de Datos – No orientadas a Conexión

La función sendmsg nos permite utilizar para la transmisión una estructura de mensaje, en lugar de un simple buffer de datos.

Requiere como parámetros un identificador de socket, un puntero a la estructura del mensaje(message_structure) y banderas especiales(special_flags).

Result= sendmsg(socket_handle, message_structure, special_flags);

Page 27: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 27

Recepción de Datos a través de un Socket La Interfaz de Sockets, incluye cinco funciones para la

recepción de datos, que se corresponden con las anteriores vistas en la transmisión de datos:

Funciones de Transmisión Funciones de Recepción

send recv

write read

writev readv

sendto recvfrom

sendmsg recvmsg

• A parte de estas correspondencias, hay que tener en cuenta que no esindispensable utilizarlas unas con otras, ya que una vez se han enviadodatos, para recibirlos se puede realizar con cualquiera de las funciones correspondientes al tipo de servicio, orientado o no a conexión.

Page 28: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 28

La API Windows Sockets

El software llamado Windows Sockets o Winsock es una API (Application Program Interface), Interfaz de Programas de Aplicación para redes TCP/IP, y especifica la familia de sistemas operativos de Microsoft Windows en todas sus versiones.

Windows Sockets implementa la interfaz de sockets como una biblioteca de enlace dinámico, una DLL(Dynamic Lynk Library),

que no es más que un módulo ejecutable que el sistema puede cargar en cualquier momento.

Page 29: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 29

La API Windows Sockets

La API Winsock proporciona una biblioteca de funciones que se divide en tres grupos :1. Funciones de los Berkeley Sockets.2. Funciones de Bases de Datos que permiten obtener información

relacionada con el DNS, servicios de comunicaciones y protocolos.3. Las extensiones específicas de Windows a las rutinas de los Sockets

de Berkeley.

Distinguimos entre las funciones de bloqueo, que son aquellas que evitan que se llame

a cualquier otra función hasta que esta termine sus propias operaciones de red.

Y las de no bloqueo que terminan de inmediato o emiten un mensaje de error.

Page 30: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 30

Programación con Sockets en Internet

La programación de sockets en Internet hace uso de las direcciones IP y los puertos, tanto TCP como UDP para identificar a los sockets.

Una comunicación queda completamente definida por un par de sockets, que en el caso de TCP identificarán una conexión.

TCP permite varias conexiones simultáneas en un mismo número de puerto local siempre y cuando se cumplan estas condiciones: Que la dirección IP local sea distinta. O que los números de puerto remotos sean distintos

para cada conexión.

Page 31: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 31

Conclusión

Como hemos dicho al principio, originalmente la InterfazSocket se construyó para UNIX aunque hoy en día lautilizan otros Sistemas Operativos como MicrosoftWindows.

Es necesario destacar que en UNIX la interfaz Socket seimplementa en el núcleo y Windows solo la implementacomo una biblioteca de enlace dinámico (DLL).

La programación de aplicaciones en redes utilizando laInterfaz de Sockets, constituye una herramienta simple deutilizar y de mucha potencialidad.

Con esta interfaz se pueden construir aplicacionesdistribuidas en redes del tipo cliente servidor,especialmente diseñadas para trabajar en Internet.

Page 32: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 32

Bibliografía

“Interfaz Socket” - Dpto. de Ingeniería Electrónica, de Telecomunicación y Automática - Área de Ingeniería Telemática - Universidad de Jaén - España.

Page 33: New La Interfaz Socket · 2020. 6. 10. · La Interfaz Socket 3 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

La Interfaz Socket 33

Muchas gracias por su atención!