Segunda Entrega Trabajo Colaborativo

TRABAJO COLABORATIVO PERSISTENCIA Y DATOS TRANSACCIONALES PROFESOR: ALEXIS ROJAS CORDERO INTEGRANTES DEL GRUPO: CHALI

Views 199 Downloads 22 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

TRABAJO COLABORATIVO PERSISTENCIA Y DATOS TRANSACCIONALES

PROFESOR:

ALEXIS ROJAS CORDERO

INTEGRANTES DEL GRUPO: CHALIAL MEZA WILLIAM DAVID- 1821023166 MARLES ANDRES FERNANDO – 1911020327 LUIS ALBERTO CASTILLO CHITIVA. 1821024940 BRYAN ALFREDO TINOCO HUERTAS 1811024550 JULIAN MARTINEZ MOLINA 1424009003

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO FACULTAD DE INGENIERÍA, DISEÑO E INNOVACIÓN INGENIERÍA DE SOFTWARE 2020

TABLA DE CONTENIDO

INTRODUCCIÓN ...................................................................................................................... 2 JUSTIFICACIÓN ..................................................................................................................... 3 OBJETIVOS ............................................................................................................................. 4 OBJETIVO GENERAL ...................................................................................................................... 4

ESTADO DEL ARTE .............................................................................................................. 5 SOCKET: ............................................................................................................................................ 6 Creación de un Socket: ........................................................................................................................ 8 Configuración del Socket: ................................................................................................................. 11

BASE DE DATOS ................................................................................................................. 12 Tabla Países ....................................................................................................................................... 12 Tabla Ciudades .................................................................................................................................. 13 Tabla Clientes .................................................................................................................................... 13 Tabla Saldos ...................................................................................................................................... 14 Tabla Movimientos............................................................................................................................ 15

MODELO ENTIDAD RELACIÓN ....................................................................................... 16 CONCLUSIONES ENTREGA 1 ........................................................................................... 17 ENTREGA 2 SEMANA 5 ...................................................................................................... 17 Socket Server (demonio) ................................................................................................................... 19 Socket Cliente.................................................................................................................................... 20

CONCLUSIÓN ENTREGA 2 ................................................................................................ 26 REFERENCIAS BIBLIOGRÁFICAS ................................................................................... 27

1

INTRODUCCIÓN

El trabajo consiste en una investigación sobre la creación de socket, su definición, tipos de socket, haremos un breve repaso por la historia del socket. También se encontrará en este trabajo la familia de protocolos y la configuración necesaria para la creación de un socket, es importante conocer en principio que un socket es un punto de comunicación a través del cual un proceso puede enviar y recibir información, esto se conoce comúnmente como cliente servidor. La comunicación entre cliente y servidor debe ser confiable; esto quiere decir que no se pueden perder datos, y que éstos deben llegar al cliente en el mismo orden en el cual fueron enviados por el servidor; por esta razón se utiliza TCP/IP. En el presente trabajo encontraremos también la creación de una base de datos generada en PostgreSQL un sistema de gestión de bases de datos relacional orientado a objetos y de código abierto, publicado bajo la licencia PostgreSQL. También se elaborar el Modelo Entidad Relación de Persistencia en la base de datos para un cliente de un Banco XYZ.

2

JUSTIFICACIÓN

El presente trabajo se enfocará en un análisis de la construcción de un socket, actualmente existe una gran demanda para generar mecanismos que puedan mantener interconectadas las aplicaciones y las bases de datos, no solo las grandes empresas tienen la necesidad de contar con sistemas de conexión para tener su información disponible, también se crean a diario muchas aplicaciones para la diversión y el ocio. en esta necesidad cada vez más amplia y creciente trabajaremos el estudio del socket y su construcción teniendo presente que existen diferentes tecnologías para el manejo de protocolos y definiremos como trabajan estas tecnologías

3

OBJETIVOS

OBJETIVO GENERAL Comprender la definición de socket teniendo en cuenta una apreciación histórica y un marco teórico existente

OBJETIVOS ESPECIFICOS •

Analizar el material de los módulos y las lecturas complementarias con el fin identificar la teoría necesaria para la definición de Socket



Presentar un enfoque teórico e histórico de la creación de un socket



Comprender la intercomunicación de las aplicaciones y los protocolos utilizados



Describir la funcionalidad de los protocolos necesarios para la conexión



Implementar una base datos en el sistema de gestión de bases de datos PostgreSQL



Generar las diferentes relaciones de las tablas generadas

4

ESTADO DEL ARTE

Para conocer el principio del socket debemos remitirnos a la primera computadora creada en 1941, el ingeniero alemán Konrad Zuse, una de las primeras máquinas programables y automáticas la cual realizaba algunas operaciones matemáticas, consumía grandes cantidades de potencia y tenia un gran peso. Todo inicio con tubos al vacío y tarjetas perforadas

En la segunda generación de computadoras de 1965 a 1980 se incluye el transistor y los circuitos integrados, con lo que se redujo el tamaño de estas y donde inicia con la comunicación de paquetes y surge en esta época también el concepto de interconexión a través de redes

En la década de los 80 los equipos cuentan con mas transistores y circuitos integrados que hace los equipos mas pequeños, pero solo contaban con estas máquinas las grandes empresas, algunas universidades, la ciencia y las personas adineradas. El primer protocolo conocido es el NPC (Network Control Protocol) también deriva de este el protocolo FTP que se empezó a utilizar en abril de 1971, publicado como el RFC 114, antes de que existiera la pila TCP/IP. La estructura general fue establecida en 1973. Posteriormente se crea el protocolo TCP/IP El protocolo TCP / IP es el protocolo de comunicación fundamental de Internet y consta de dos protocolos, el TCP y el IP. El objetivo es que los ordenadores se comuniquen de una forma sencilla y transmitan información a través de la red., posteriormente surge el protocolo HTTP que controla la transferencia de datos en la World Wide WEB WWW proporciona un vehículo de entrega para las imágenes, gráficos, video, hipertexto u otros datos en la Web. Mientras se recorre la web, el explorador intercambia mensajes con los servidores Web 5

gracias al HTTP. Así vamos avanzando a otros tipos de protocolos como el TELNET un protocolo de Internet estándar que permite conectar terminales y aplicaciones en Internet. El protocolo proporciona reglas básicas que permiten vincular a un cliente con un intérprete de comandos del lado del servidor, surgen otros protocolos en 1982 por ejemplo surge el protocolo MTP (Simple Mail Transfer Protocol) es un protocolo de la familia del TCP/IP para la transmisión de correo electrónico y con el los protocolos IMAP y POP3.

Se crean una gran variedad de protocolos donde destacamos también el protocolo SSH (Secure Socket Shell) el cual proporciona autenticación y encriptación entre dos computadoras que se conectan a Internet o el Protocolo DNS (Sistema de ombres de Dominio) El cual rastrea al usuario para ubicar la dirección web en la dirección IP correspondiente

SOCKET:

Un socket es el extremo de un enlace de comunicación de dos-vías entre dos programas que se ejecutan en la red. Un socket se asocia a un número de puerto, para que TCP pueda identificar la aplicación a la cual se están enviando los datos.

Originalmente se construyó a principios de los 80, en los orígenes de internet las primeras computadoras en implementar sus protocolos fueron las de la Universidad de Berkeley, dicha implementación tuvo lugar en una variante del sistema operativo Unix conocida como BSD Unix. Pronto se hizo evidente que los programadores necesitarían un medio sencillo y eficaz para escribir programas capaces de intercomunicarse entre sí, esta necesidad dio origen a la primera especificación e implementación de sockets, también en Unix. Hoy en día los sockets 6

están implementados como bibliotecas de programación para multitud de sistemas operativos, simplificando el trabajo de los programadores. Designa un concepto abstracto por el cual dos programas “posiblemente situados en computadoras distintas” pueden intercambiar cualquier flujo de datos, por lo general de una manera fiable y ordenada

En las aplicaciones cliente / servidor, el servidor proporciona algún servicio, como, por ejemplo: procesamiento de consultas a una base de datos. El cliente utiliza el servicio proporcionado por el servidor, desplegando los datos de la consulta a la base de datos. La comunicación entre cliente y servidor debe ser confiable; esto quiere decir que no se pueden perder datos, y que éstos deben llegar al cliente en el mismo orden en el cual fueron enviados por el servidor; por esta razón se utiliza TCP/IP.

TCP proporciona un canal de comunicación confiable, punto a punto, que las aplicaciones cliente / servidor utilizan para comunicarse entre ellas a través de Internet. Para comunicarse a través de TCP, se establece una conexión entre el programa cliente y el programa servidor. Cada programa enlaza un socket en su extremo de la conexión. Para comunicarse, cliente y servidor leen y escriben hacia el socket asociado a la conexión.

Para entender este concepto de una manera sencilla es haciendo un paralelo con una conversación por teléfono o una conversación usando el chat, donde cada uno de los participantes de dicho evento está en lugares diferentes. Se denomina dominio de un socket al conjunto de sockets con los cuales se establece comunicación. Los sockets usan protocolos de comunicación los cuales son: TCP, UDP, IP, y alguno de los dominios son: 7



AF_NS /* Protocolos propiedad de XEROX */



AF_APPLETALK /* De Apple */



AF_SNA /* IBM */



PF_INET /* Protocolo para IPV4 */



PF_INET6 /* Protocolo para IPV6 */



PF_LOCAL /* Para comunicaciones locales */

El termino socket también es usado como el nombre de una interfaz de programación de aplicaciones (API) para la familia de protocolos de internet, provista usualmente por el sistema operativo. Los sockets de internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados, el socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puertos local y remoto.

Creación de un Socket:

Para la creación del socket se utiliza la arquitectura cliente servidor, en esta, el servidor se encuentra a la espera de que sus servicios sean llamados o utilizados por otras aplicaciones, la aplicación cliente, solicita los servicios mediante peticiones al servidor.

En la creación de un socket se deben inicializar ciertas variables pertenecientes al protocolo y la red.

El socket puede ser programado en varios lenguajes de programación como java, C# etc. Para crear un socket, se utiliza la función socket y se deben especificar tres parámetros: 8

socket = socket(protocol_familiy, socket_type, protocol). En el constructor de la clase se deben especificar el tipo de socket, el protocolo y direcciones de red. 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. 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.

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

Pasos para crear un socket: 1) Establecer el dominio en la comunicación: 9



PF_INET: Protocolos de Internet versión 4.



PF_INET6: Protocolos de Internet versión 6.



PF_IPX: Protocolos IPX (Novell).



PF_APPLETALK: Protocolos Appletalk.



PF_UNIX o PF_LOCAL: Comunicación local.

2) Una vez se tiene le dominio se debe elegir el tipo de comunicación: SOCK_STREAM: Conexión con flujo ordenado de datos bidireccional. SOCK_DGRAM: Mensajes sin conexión, con datagramas de tamaño máximo dijo y sin conexión SOCK_SEQPACKET: Conexión con datos ordenados bidireccional y datagramas de longitud fija.

3) Después de tener del dominio y el tipo se debe elegir el protocolo que usara el conector a crear, normalmente caca dominio y tipo admite un protocolo particular, ya que su valor solo puede ser 0 Dominio PF_INET y tipo SOCK_STREAM: TCP. Dominio PF_INET y tipo SOCK_DGRAM: UDP.

4) Los sockets deben ser asociados a un puerto ya que el clienye necesita conocer el puerto disponible para el servicio. 1. Puerto 21 TCP: FTP (Transferencia de archivos). 2. Puerto 22 TCP: SSH (Conexión segura). 3. Puerto 25 TCP: SMTP (Correo electrónico). 10

4.

Puerto 80 TCP: HTTP (Web).

5. Puerto 443 TCP: HTTPS (Web segura). 6. Puerto 53 UDP: DNS (Servidor de nombres). 7. Puerto 123 UDP: NTP (Sincronización de la hora)

5) Cerrar conexión del socket se debe realizar con una función la cual retorna un 0 cuando se cierra la transacción.

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

El valor devuelto por la función es un entero; si el resultado es mayor o igual a cero indica que se ha creado correctamente el socket, si es negativo indica un error en la creación.

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

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

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



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

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



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

En resumen, un socket es un punto de comunicación a través del cual un proceso puede enviar o recibir información, esto se conoce comúnmente como cliente servidor.

BASE DE DATOS

Para la creación de la base de datos usamos PostgreSQL, un sistema de gestión de bases de datos de objeto general y relacional, el sistema de base de datos de código abierto El nombre de la base de datos fue banco_xyy Creamos 5 tablas las cuales son: países, ciudades, clientes, saldos y movimientos

Tabla Países La tabla países cuenta con los campos ID, tomando id como llave Primaria, NOMBRE, FECHA_CREACIÓN, FECHA_ACTUALIZACIÓN

12

Tabla Ciudades La tabla ciudades cuenta con los campos ID, NOMBRE, FECHA_CREACION, FECHA_ACTUALIZACION y PAIS ID, se ha tomado como llave primaria el campo ID y como llave foránea PAIS_ID, haciendo una referencia a tabla países y agregando un update y un delete en modo CASCADE

Tabla Clientes La tabla cliente cuenta con los campos ID, NOMBRE, IDENTIFICACIÓN, DIRECCION, FECHA:CREACIÓN, FECHA_ACTUALIZACION ESTADO y PAIS ID, se ha tomado como llave primaria el campo ID y como llaves foráneas PAIS_ID y CIUDAD_ID, haciendo una referencia a las tablas países y ciudades agregando un update y un delete en modo CASCADE

13

Tabla Saldos La tabla saldos cuenta con los campos ID, VALOR, CLIENTE_id Y FECHA, se ha tomado como llave primaria el campo ID y como llave foránea el campo CLIENTE_ID, haciendo una referencia a la tabla clientes y por ultimo agregando un update y un delete en modo CASCADE

14

Tabla Movimientos La tabla movimientos tiene los campos ID, TIPO, VALOR, CLIENTE_ID y FECHA, se ha tomado el campo ID como llave primaria y el campo CLIENTE_ID haciendo una referencia a la tabla clientes y por ultimo agregando un update y un delete en modo CASCADE

15

MODELO ENTIDAD RELACIÓN A continuación, se presenta el modelo entidad relación que creamos para la base de datos BANCO_XYZ

16

CONCLUSIONES ENTREGA 1

El socket es el elemento más utilizado en las operaciones en tiempo real debido a su confiabilidad en el transporte de datos

El socket es un programa controlado, el cual usa protocolos de red para realizar operaciones entre distintas aplicaciones.

Las características de cada socket dependen del protocolo escogido, el más utilizado es el Transmission Control Protocol.

Los sockets son procesos seguros ya que permiten realizar transacciones seguras en tiempo real.

La evolución del socket a través del tiempo ha permitido mejorar procesos de seguridad en las transacciones.

Los sockets pueden ser programados en distintos lenguajes de programación.

ENTREGA 2 SEMANA 5 Elaboración del código (programas en java o en C++) de los siguientes sockets:

1. Socket server (demonio) que identifica el tipo de transacción y ejecuta la operación sobre la base de datos.

2. Socket cliente que llama al socket server para crear un cliente (inserción de un dato).

3. Agregar al documento el código de cada operación y explicar que hace cada programa (documentar el programa).

17

Para el desarrollo de la actividad se utiliza Python en la creación de los Sockets cliente y servidor de la siguiente manera:

Se realiza la importación de las librerías socket:

La librería socket de python provee clases específicas para manejar el transporte común, así como también una interfaz genérica para controlar todo lo demás.

Crearemos objetos socket usando la función socket.socket() y especificando el tipo de socket como socket.SOCK_STREAM. Cuando hacemos esto, el protocolo predeterminado que usa es el Protocolo de Control de Transmisión (TCP) y usaremos varias de las operaciones para usar sockets con este módulo:



socket()



bind()



listen()



accept()



connect()



connect_ex()



send()



recv()



close()

También se realiza la importación de la librería pickle:

El módulo pickle implementa un algoritmo para convertir un objeto arbitrario Python en una serie de bytes. Este proceso es también llamado serialización de objetos. El flujo de bytes que representa al objeto puede ser transmitido o almacenado, y luego reconstruido para crear un nuevo objeto con las mismas características.

De acuerdo con esto, el código quedaría así:

18

Socket Server (demonio) Se crea la clase ClientData con sus respectivos campos:

Se establece la dirección IP del host para el socket, el puerto y se procede con la creación del socket:

Al realizar la conexión por parte del cliente en el socket server se indica la dirección IP desde la cual se origina.

19

Socket Cliente Vamos a escribir un programa que defina un cliente que abra la conexión en un puerto y host dado. Esto es muy simple de hacer con la función socket_client.connect(host, port) que abre una conexión TCP al hostname en el puerto port. Una vez hayamos abierto un objecto socket podemos leer y escribir en este como cualquier otro objeto de entrada y salida (IO), siempre recordando cerrarlo tal como cerramos archivos después de trabajar con estos.

Igual que el socket server, se realiza la importación de las librerías socket y pickle

La documentación de cada paso en detalle se encuentra en el código:

20

21

Ahora establecemos conexión con la base de datos PostgreSql y generamos un INSERT de cliente: Importamos la librería Psycopg2 que es el adaptador de base de datos PostgreSQL más popular pues es ligero y eficiente. Es la implementación actual del adaptador PostgreSQL. Sus características principales son la implementación completa de la especificación Python DB API 2.0 y la seguridad de subprocesos (varios subprocesos pueden compartir la misma conexión) Todas las transacciones a la base de datos las hace el archivo connect.py el cual usa las librerías Datetime y pickle y por ultimo importamos el archivo config retrona la configuración para acceder a la base de datos. Se define la conexión y se realiza conexión a la base de datos Banco_XYZ:

22

Se realizan consultas de países y ciudades y se realiza el INSERT del cliente verificando que le número de identificación no exista previamente:

Se lee el objeto enviado, se crea cursor y se realiza el commit a la base de datos:

23

Se realiza consulta del cliente por número de identificación lo cual retorna el ID

24

Por último, está el archivo de configuración:

Se importa configparser, este se usa para gestionar archivos de configuración editables por el usuario para una aplicación. El contenido de los archivos de configuración se puede organizar en grupos y se admiten varios tipos de valores de opción, incluidos enteros, valores de coma flotante y booleanos. Los valores de las opciones se pueden combinar utilizando cadenas de formateo de Python, para crear valores más largos, como URLs de valores más cortos, como nombres de host y números de puerto.

25

CONCLUSIÓN ENTREGA 2 A nivel de grupo ha sido motivante y enriquecedor trabajar con este tipo de conexiones y poder entender cómo se envía la información por red más exactamente con sistemas de sockets. Básicamente esta siendo un reto muy interesante ya que como grupo tomamos la decisión de desarrollar cada uno el sistema de sockets. unos lo trabajamos con Python otros con Java, pero cada vez que nos reuníamos fuimos compartiendo este conocimiento y resolviendo dudas. Finalmente concluimos en dejar la versión en Python con la cual pudimos avanzar mucho más y cumplir con la entrega.

26

REFERENCIAS BIBLIOGRÁFICAS

la primera computadora digital. Extraído de https://arteymedios.org/historias/hitosmundiales/item/344-primer-computador-digital 23 de mayo de 2020. Historia de la computadora Extraído de https://www.tecnologia-informatica.com/historia-dela-computadora/ el 23 de mayo de 2020 Cuáles son los protocolos de seguridad de la información extraído de https://cliniccloud.com/blog/protocolos-de-seguridad-de-la-informacion/ el 23 de mayo de 2020 Creación de un Socket en Linux Extraído de https://cs.uns.edu.ar/~ldm/mypage/data/rc/apuntes/introduccion_al_uso_de_sockets.pdf Creación de un Socket http://informatica.uv.es/iiguia/R/apuntes/laboratorio/Uso.pdf

Programación de redes en Python. SOCKETS https://unipython.com/programacion-de-redes-en-python-sockets/

Acceso a la base de datos PostgreSQL usando psycopg2 https://riptutorial.com/es/python/example/18257/acceso-a-la-base-de-datos-postgresqlusando-psycopg2 Configparser – trabajar con archivos de configuración https://rico-schmidt.name/pymotw-3/configparser/index.html

27