Sie sind auf Seite 1von 28

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/hitos-


mundiales/item/344-primer-computador-digital 23 de mayo de 2020.

Historia de la computadora Extraído de https://www.tecnologia-informatica.com/historia-de-


la-computadora/ el 23 de mayo de 2020

Cuáles son los protocolos de seguridad de la información extraído de https://clinic-


cloud.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-postgresql-
usando-psycopg2

Configparser – trabajar con archivos de configuración


https://rico-schmidt.name/pymotw-3/configparser/index.html

27

Das könnte Ihnen auch gefallen