Está en la página 1de 14

Almacenamiento y Transmisión de

Datos
Katherine Barba, Jose Granados,
Roy León, Jose Ramos, Yeiko Soto,
Andrey Villarreal
Ingeniería en sistemas de
computación, Universidad Fidelitas
San José, Costa Rica
kbarba40144@ufide.ac.cr
jgranados00042@ufide.ac.cr
rleon40117@ufide.ac.cr
jramos10825@ufide.ac.cr
ysoto70199@ufide.ac.cr
avillarreal30809@ufide.ac.cr

Abstract— Now a days most people have the need to store utilizados día a día en el mundo de la informática y son de
and transmit their information between different devices, gran importancia conocerlos; la serialización, el
however, a large segments of the population don’t know the almacenamiento de datos, los tipos de almacenamiento que
methods and types of storage that exist to store their existen, los protocolos de comunicación y los API sockets
information. So, due to this premise, there is a necessity to son los principales temas que se abarcaran en dicho
understand how this information is stored, which methods to documento.
transmit information are, what serialization and API sockets
are, and which transmit protocols are the most used for Data Se sabe que los datos es la información que recibe una
transmission and data reception. In order to get the answers computadora o maquina a través de distintos medios, y que
and through a deep research, the current document is a good
introduction to understand concepts, types and the uses of
es manipulada mediante procesos. Su contenido puede ser
these technologies related to the computer science industry. prácticamente cualquiera: estadísticas, números,
descripciones, archivos, registros etc... que por separado no
tienen relevancia para los usuarios del sistema, pero que en
I. OBJETIVOS conjunto pueden ser interpretados para obtener una
información completa y específica. En muchos casos el
contenido de estos datos es de gran importancia para las
Objetivo general empresas, negocios o personas en general y por eso es de
vital importancia conocer dónde y cómo se almacenan los
Conocer por medio de la investigación, los diferentes datos y como se transmiten los mismos.
tipos de almacenamientos y los medios para la transmisión
de datos en los sistemas operativos.
III. CONCEPTOS BASICOS
Objetivos específicos
• Explicar los conceptos relevantes sobre las En la siguiente parte se procederá a realizar la
tecnologías utilizadas en el almacenamiento y explicación de los conceptos básicos, a continuación, vamos
transmisión de datos. a explicar el concepto de almacenamiento de datos.
• Informar sobre los tipos de almacenamientos
existentes y sus respectivos usos.
Almacenamiento de datos
• Proponer ejemplos de uso relacionados con la
transmisión de datos. El almacenamiento de datos es el proceso tecnológico
donde se graban, archivan y guardan bits de información que
contienen imágenes, texto, video, programas, hojas de
II. INTRODUCCIÓN cálculo, entre otros archivos digitales de múltiples formatos.
Existen diversas arquitecturas y dispositivos de
En la presente investigación se encuentra la almacenamiento para cumplir este propósito. [11]
documentación e información sobre el tema del
almacenamiento y gestión de datos donde se redactará y se Tipos de almacenamiento de datos
darán a conocer ampliamente diferentes conceptos que son
 Almacenamiento definido por software:
El software de almacenamiento configurado previamente
Según Redhat el almacenamiento definido por se instala en un sistema de hardware específico llamado NAS
software es una arquitectura que separa el software de box que no es más que un servidor que contiene discos de
almacenamiento del hardware. A diferencia de un sistema de almacenamiento, memoria RAM y procesadores.
almacenamiento conectado a la red (NAS) o una red de área
de almacenamiento (SAN), el almacenamiento definido por Una NAS box está formateada con protocolos de
software (SDS) generalmente está diseñado para ejecutarse transferencia de datos, que son maneras estándar de enviar
en cualquier sistema estándar o x86. por eso el software no datos de un dispositivo a otro. [4]
depende de ningún hardware propietario. [4]

El SDS permite una mayor automatización y una gestión


más sencilla, así como el uso de interfaces estandarizadas, lo
que aumenta la escalabilidad y la transparencia para la
gestión y el control del almacenamiento. Esto según
VMware. [6]

Imagen 2. NAS

 Almacenamiento de objetos:

De acuerdo con IBM, el almacenamiento de objetos es un


método de almacenamiento de datos libre de jerarquía,
generalmente utilizado en la nube. Y es una estrategia que
gestiona y manipula el almacenamiento de datos como
unidades diferenciadas, denominadas objetos la cual no
Imagen 1. Software defined storage utiliza un árbol de directorio [8]. Según Netapp las unidades
diferenciadas de datos existen en el mismo nivel en una
 Almacenamiento en la nube: agrupación de almacenamiento. Cada objeto tiene un nombre
único e identificado, que utiliza la aplicación para
De acuerdo a Amazon web, el almacenamiento en la recuperarlo. Además, el almacenamiento de objetos combina
nube es un modelo de computación en la nube que almacena los elementos de datos que conforman un archivo, añade
datos en Internet a través de un proveedor de servicios de todos los metadatos relevantes a ese archivo y adjunta un
informática en la nube que administra y opera el servicio de identificador personalizado. [7]
almacenamiento en la nube. Está disponible bajo demanda
con la capacidad y el costo correctos, al mismo tiempo que
elimina la necesidad de comprar y administrar su propia
infraestructura de almacenamiento de datos. Esto le brinda
agilidad, escala global y sostenibilidad con acceso a los datos
en cualquier momento y en cualquier lugar. [5]

El almacenamiento en la nube se compra a un proveedor


de nube externo que posee y opera la capacidad de
almacenamiento de datos y la distribuye a través de Internet
mediante pago por uso. Estos proveedores de
almacenamiento en la nube administran la capacidad, la
seguridad y la durabilidad para entregar datos a sus
aplicaciones en todo el mundo. [5] Imagen 3. Object storage

 Almacenamiento adjunto a la red:  Almacenamiento de archivos:

Según Redhat el almacenamiento conectado a la red De acuerdo con Redhat, el almacenamiento de archivos,
(NAS) es un tipo de arquitectura de almacenamiento de también conocido como almacenamiento basado en archivos
archivos que facilita el acceso a los datos almacenados desde o a nivel de archivos, almacena datos en una estructura
dispositivos en red. NAS proporciona a las redes un único jerárquica. Los datos se almacenan en archivos y carpetas y
punto de acceso para el almacenamiento con funciones se presentan tanto al sistema de almacenamiento como al
integradas de seguridad, administración y tolerancia a fallas. sistema que recupera esos datos en el mismo formato.
Los datos almacenados en el archivo se clasifican y
recuperan utilizando una cantidad limitada de metadatos que
le indican a la computadora exactamente dónde buscar. [4]
USOS

 Entre los usos que se le pueden dar a la


serialización se encuentran:
 Enviar el objeto a una aplicación remota
mediante un servicio web
 Pasar un objeto de un dominio a otro
 Pasar un objeto a través de un firewall como una
cadena JSON o XML
 Mantener la seguridad o información específica
del usuario entre aplicaciones

TIPOS

Imagen 4. File Storage  Serialización de JSON


JSON es un estándar abierto que se usa normalmente
 Almacenamiento en bloques: para compartir datos en la web.

Es una tecnología que se utiliza para almacenar archivos La serialización de JSON serializa las propiedades
de datos en redes de área de almacenamiento (SAN) o públicas de un objeto en una cadena, una matriz de bytes o
entornos de almacenamiento basados en la nube, este tipo una secuencia que se ajusta a la especificación de JSON RFC
de almacenamiento divide los datos en bloques y los 8259.
almacena en partes separadas. Cada uno de ellos recibe un
identificador único, lo cual permite que el sistema de  Serialización XML y binaria
almacenamiento coloque los conjuntos de datos más
pequeños donde considere más conveniente. Es esencial para La serialización binaria utiliza la codificación binaria
situaciones de cálculo en las que requieren un transporte de para generar una serialización compacta para usos como
datos rápido, eficaz y fiable, también es útil para empresas almacenamiento o secuencias de red basadas en socket. En la
que implementan bases de datos de gran tamaño. Esto según serialización binaria se serializan todos los miembros,
IBM. [9] incluso aquellos que son de solo lectura, y mejora el
rendimiento.

La serialización XML serializa las propiedades y los


campos públicos de un objeto o los parámetros y valores
devueltos de los métodos en una secuencia XML que se
ajusta a un documento específico del lenguaje de definición
de esquema XML (XSD). La serialización XML produce
clases fuertemente tipadas cuyas propiedades y campos
públicos se convierten a XML. [1]

API Sockets

Imagen 5. Block Storage En esta sección se hablará sobre la definición y el uso de


los API sockets, según Rodrigo Santos “Se trata de una
Serialización interfaz que les permite a los programas el control y el uso
De acuerdo con Microsoft, la serialización es el proceso de los conectores de red, que son un modelo de construcción
de convertir un objeto en una secuencia de bytes para de programación.” [2]
almacenarlo o transmitirlo a la memoria, a una base de datos
o a un archivo. Su propósito principal es guardar el estado de El estándar de socket de Berkeley se usa típicamente para
un objeto para poder volver a crearlo cuando sea necesario. permitir la comunicación entre procesos. Así, ambos pueden
El proceso inverso se denomina deserialización. exponer las operaciones proporcionadas por la API para
enviar y recibir datos. Dado que es una especie de API, los
El objeto se serializa en una secuencia que incluye los usuarios aún deben seguir un conjunto de reglas para
datos. La secuencia también puede tener información sobre intercambiar datos con otros programas. La API de socket
el tipo del objeto, como la versión, la referencia cultural y el funciona de manera consistente para manejar las conexiones,
nombre del ensamblado. A partir de esa secuencia, el objeto lo que le permite crear sockets en diferentes dominios para
se puede almacenar en una base de datos, en un archivo o en conectarse a múltiples destinatarios, con una diferencia
memoria. mínima entre ellos. Una arquitectura de programación de
socket puede usar los protocolos UDP (socket de datagrama)
o TCP (socket de flujo).
ser una conversación en dos direcciones y de una
Ahora bien, tomando como referencia lo dicho forma encriptada.
anteriormente por Rodrigo se debe tener en claro que TCP es
implementado por JavaSocket. Este protocolo divide los  Estadísticas en tiempo real: Ejemplos se podría
mensajes en paquetes y los vuelve a ensamblar en la ver cuando las estadificas de COVID eran muy
secuencia correcta al final de la entrega, lo que reduce el cambiantes y se necesitaba tener a primera mano los
trabajo de las capas superiores. También maneja las datos más recientes.
solicitudes de retransmisión de paquetes perdidos. En Java,
se proporcionan dos clases de API:  Colaboración en documentos: El envió de
documentos por ejemplo Google drive, teams se
1. DatagramSocket para sockets: cada socket está necesita una comunicación entre el cliente y el
conectado a un puerto UDP en la máquina local del servidor en tiempo real.
proceso.
 Streaming binario: La conversión de data a binaria
2. DatagramPacer para datagramas modificados: es pan de cada día en millones de datos enviados a
el proceso de crear una representación de través de internet.
datagramas, inicializando un objeto que carga la
dirección de destino y los datos como una referencia Es importante además reconocer las diferencias entre
a una matriz de bytes. Además, emite una llamada REST API y API Socket y la forma más sencilla de
al entenderlo es que los sockets requieren el uso de direcciones
objeto, especificando la referencia como argumento. IP y puertos, mientras que las aplicaciones RESTful deben
diseñar procesos basados en verbos HTTP. Los sockets son
Así mismo un término asociado al concepto de sockets es bidireccionales, es decir, pueden realizar operaciones en
WebSocket es una API que establece conexiones de socket ambas direcciones desde el cliente al servidor y viceversa,
bidireccionales entre el navegador y el servidor, lo que mientras que REST adopta un enfoque unidireccional.
permite el intercambio de datos basado en TCP. Proporciona Sockets es un protocolo sin estado, mientras que REST se
señales de datos de mercado donde se transmiten recursos de basa en un protocolo sin estado (todos los estados se
precios y en formato XML/JSON, disponible para mercados manejan en el lado del cliente). El enfoque de WebSocket es
B3 y forex. Drop it es para navegadores habilitados para ideal para aplicaciones escalables en tiempo real, mientras
HTML5, pero puede ser utilizado por cualquier cliente o que REST es más adecuado para un escenario de alta
servidor. La API de WebSocket está estandarizada por el demanda.
W3C, mientras que el protocolo WebSocket está
estandarizado por el IETF. Ejemplo práctico API Socket

Aunque WebSocket aún no está completamente En esta sección se va a construir una aplicación de
implementado en todos los navegadores, es posible usarlo mensajería en node.js con el objetivo de hacer la
con bibliotecas que usan el sistema alternativo ya que no está demostración de API Socket usando Socket.io ya que La
disponible. Otras soluciones también permiten la integración conexión se establece incluso con proxies, balanceadores de
desde la API HTTP para enviar mensajes WebSocket a los carga, firewalls y software antivirus. Los clientes
clientes. Sin embargo, la solicitud HTTP adicional genera desconectados intentarán volver a conectarse
más gastos generales en comparación con WebSocket puro. indefinidamente hasta que se realice una copia de seguridad
Los paquetes de servidores tradicionales luchan por manejar del servidor. El mecanismo Heartbeat se implementa a nivel
muchas conexiones WebSocket simultáneas, incluso cuando de Engine.IO, lo que permite que el servidor y el cliente
se establecen mediante un ciclo de solicitud y respuesta sepan cuándo el servidor no responde.
HTTP. Para ello, suele desarrollarse una arquitectura capaz
de alta concurrencia, con bajo rendimiento, en hilo o IO no Observemos un modelo o diagrama de cómo funcionará
obstruida. la aplicación:

¿Porque usar API sockets?

En primera instancia se debe tener en claro que este es un


término moderno que muchas plataformas están empezando
a utilizar y a ser contribuyentes al código de nuevos marcos
de trabajo. Además, los sockets no necesitan enviar
solicitudes para responder. Permiten que los datos fluyan en
dos direcciones, así que simplemente escuche al servidor y le
enviará un mensaje cuando esté disponible, API sockets
pueden ser usados en:

 Aplicaciones de mensajería (Chats): Un ejemplo


de ello es cuando se realiza una conversación en
tiempo real con un agente bancario ya que debe de
Imagen 8. Código HTML socket IO

Tomando como referencia la imagen anterior del código, se


hace notar que se tiene una estructura HTML solida con
estilos por medio de CSS y lógica agregada por JavaScript.
Siendo esta última importante ya que se hacen las
importaciones de la librería a utilizar la cual es socket IO.

<script>
var socket = io();
Imagen 6: Diagrama de Sockets IO
var messages = document.getElementById('messages');
Se va a necesitar instalar las dependencias de "express": var form = document.getElementById('form');
"^4.17.1", "socket.io": "^4.1.2" usando NPM, de igual var input = document.getElementById('input');
manera se va a necesitar crear un archivo index.html y un
index.js donde va a realizar la configuración del servidor, el
código de ejemplo está disponible acá: form.addEventListener('submit', function(e) {
https://github.com/socketio/chat-example, es por ello que no e.preventDefault();
se va a realizar hincapié en el código si no a entenderlo, por if (input.value) {
ello se va a explicar los tres tipos de funciones importantes socket.emit('chat message', input.value);
input.value = '';
1. Join: Notifica cuando un usuario ha entrado a la
}
aplicación y lo emite a todos los clientes.
});
2. Message: Notifica cuando un mensaje ha llegado y
lo emite a todos los clientes. socket.on('chat message', function(msg) {
var item = document.createElement('li');
3. Disconnect: Evento reservado por socket.io el cual item.textContent = msg;
notifica cuando un cliente ha salido.
messages.appendChild(item);
Seguido a ello se mostrará la estructura del folder que window.scrollTo(0, document.body.scrollHeight);
debe llevar el código para el buen funcionamiento. });
</script>

En el código anterior además de las importaciones de puede


observar que existen varios escuchadores que realizarán
alguna función y así mismo setters de importunación en dos
líneas agredas por métodos internos de la librería.

Así mismo del lado del index.js, se observa que hay una
importación relevante que es la del express, esta va a servir
Imagen 7 Estructura folders Socket como la lógica del lado del servidor, permitiendo la
comunicación en tiempo real con el http current listener
En la imagen anterior se puede observar que se tiene todas agregado por la librería de socket IO.
las dependencias de node JS dentro del folder modules, un
gitignore que va a servir para el uso dentro de un repositorio const app = require('express')();
de archivos, sin embargo, los archivos más importantes son const http = require('http').Server(app);
el index.html y el index.js ya que dentro de estos va a ir toda const io = require('socket.io')(http);
la estructura y la lógica del programa de ejemplo const port = process.env.PORT || 3000;
app.get('/', (req, res) => { archivos directamente y se pueden asignar a equipos de
res.sendFile(__dirname + '/index.html'); trabajo ejemplo recursos humanos. En el cual pueden
modificar archivos que los equipos desean compartir junto
});
con todo el equipo de trabajo del grupo asignado. Podemos
decir que NAS es un método de transmisión de datos para
io.on('connection', (socket) => { grupos de trabajo en el cual pueden compartir, subir,
socket.on('chat message', msg => { modificar archivos en una dirección de red compartida y
io.emit('chat message', msg); accederlos en tiempo real.
});
SAN asimismo esta centralizado en un equipo lógico en
});
su gran mayoría compuesto por varios equipos físicos en
diferencia con NAS que puede o normalmente en empresas
http.listen(port, () => { pequeñas podrías encontrarlo en un solo equipo físico. SAN
console.log(`Socket.IO server running at podemos rescatar 3 protocolos: FCP- ISCSI – FCoE los
http://localhost:${port}/`); cuales FC es Fibre Channel y FCoE es el mismo protocolo,
});
pero en Ethernet, Estos protocolos todavía son usados por las
compañías y se pueden rescatar todos. Estos protocolos se
utilizan para utilizar un espacio de disco ya sea lógico o
físico de un servidor que soporta FCP- ISCSI- FCoE y se
Para ir finalizando este apartado se muestra un ejemplo en comparte un bloque del disco a otro servidor. En un ejemplo
vivo de como la transmisión de datos en tiempo real por Servidor ISCSI contiene 1TB de datos para compartir se crea
medio de API sockets, donde el Cliente 1 manda un mensaje una partición para poder compartir a otro servidor digamos
y se actualiza en tiempo real del lado del cliente 2 sin 100GB. Este servidor se conecta al servidor ISCSI y pide
necesidad de actualizar la página, todo funcionando de una parte o la totalidad del espacio asignado 100GB y crea un
forma bidireccional viajando la información en ambos disco lógico con esta información el cual se monta y se
sentidos. puede utilizar como un disco normal. Solamente que este
disco o partición fue compartida y está siendo utilizada por
la red. Hay equipos tales como los de Netapp que soportan
ambos métodos y varios protocolos y utilizaran el sharing de
almacenamiento por la red.

Protoco los de Transmisión de Datos


Entre los protocolos de transmisión de datos se
encuentras los protocolos de la capa de transporte más
conocidos UDP, TCP y SCTP. Fortinet describe estos
protocolos de transporte como”

TCP
Transmission Control Protocol (TCP) es uno de los
Imagen 9. Muestra del web app de chat live. protocolos centrales o fundamentales de Internet. Es parte de
la Capa de Transporte del Modelo OSI. Está diseñado para
Con ello ya se puede realizar la compresión del código proporcionar una entrega confiable de datos desde un
usando conceptos de JavaScript, esta información fue programa en un dispositivo en la red o Internet a otro
tomada y recapitulada del sitio web pragma.com.co escrita programa en otro dispositivo en la red o Internet. TCP logra
por Cristian Camilo Pérez [3] su confiabilidad porque es un protocolo basado en conexión.
TCP está orientado a la transmisión. Transporta flujos de
Servidores SAN y NAS datos de forma fiable y en orden.
Estos son métodos para manejar el almacenamiento y el
compartimiento de archivos a través de la red. Normalmente TCP establece un enlace de conexión previa entre los
están centralizadas en un equipo lógico que es compuesto de hosts antes de enviar datos. Esto a menudo se conoce como
varios otros o uno solo, pero es lógico y centralizado. Tienen el handshake. Una vez que se establece el enlace, el
varias diferencias una de ellas es el método de transporte. protocolo utiliza comprobaciones para verificar que los datos
NAS utiliza ethernet y SAN utiliza ethernet o fibra. En NAS se transmiten. Si una comprobación de errores falla, los datos
podemos rescatar 3 protocolos que son los más usados se retransmiten. Esto asegura que los datos lleguen al destino
recientemente NFS (Implementación de CIFS en Linux), sin errores y en el orden correcto para que puedan volver a
SMB (Implementación de CIFS en MS) , SFTP (SSH FTP). juntarse en un formato idéntico al que se enviaron.
De los cuales el SMB es el que prevalece y tiene más fuerza
de todos los protocolos. Estos protocolos trabajan en su Algunas aplicaciones que usan TCP son:
mayoría en la siguiente manera. Es un share o un compartido
que se accede por red ejemplo • World Wide Web (HTTP and HTTPS)
\\servidor\compartido1\recursoshumanos\ en el cual se suben • Email (SMTP, POP3, IMAP4)
• Remote administration (RDP) de cada mensaje de la misma manera que lo hace TCP para
• File transfer (FTP) que los datos se puedan volver a ensamblar en el otro
extremo de la transmisión en la secuencia correcta sin que
UDP los datos tengan que llegar en la secuencia correcta.

User Datagram Protocol (UDP) como TCP es uno de los Algunas aplicaciones comunes de SCTP incluyen la
protocolos centrales de Internet y parte de la capa de transmisión compatible de los siguientes protocolos a través
transporte del modelo OSI. UDP está diseñado más para la de redes IP:
velocidad que para la confiabilidad y generalmente se usa
para diferentes aplicaciones que TCP. UDP envía mensajes, • SCTP es importante en redes 3G y 4G/LTE (por
denominados datagramas a través de la red o Internet a otros ejemplo, HomeNodeB = FemtoCells)
hosts sin establecer un enlace de comunicación previo. En • SS7 sobre IP (por ejemplo, para redes móviles 3G)
otras palabras, no hay handshake. • SCTP también se define y utiliza para SIP sobre SCTP
y H.248 sobre SCTP
UDP es un servicio poco confiable ya que los datagramas • Transporte de mensajes de señalización de la Red
pueden llegar desordenados, duplicados o perderse sin Telefónica Pública Conmutada (PSTN) sobre redes IP. [10]
ningún mecanismo para verificarlos. UDP funciona
asumiendo que la aplicación realiza cualquier comprobación Otros protocolos de red que también vamos a repasar los
de errores o que no es necesaria para el funcionamiento de la temas, SMB, FTP, TFTP, que se describen a continuación.
aplicación. De esta forma evita la sobrecarga que se requiere
para verificar la integridad de los datos. SMB

Los usos comunes de UDP son: Es un protocolo de red de Microsoft pensado para
 Time (NTP) compartir fácilmente archivos, impresoras y otros muchos
 Domain Name Resolution (DNS) recursos dentro de una red local. Es posible conectar
 Streaming media (RTSP, RTP and RTCP) ordenadores con Windows sin apenas configuraciones, e
 Telephone of the Internet (VoIP) incluso con otros sistemas operativos (como Linux y
 File Transfer (TFTP) Android) a través de Samba, la implementación libre de
 Logging (SNMP) SMB.
 Online games (GTP and OGP)
Versiones de SMB
SCTP  SMB 1 / CIFS / SMB: Esta es la versión más
antigua de este protocolo, y data de 1983. A pesar
Stream Control Transmission Protocol (SCTP) es parte de ello, por motivos de compatibilidad, es una de
de la capa de transporte del modelo OSI al igual que TCP y las versiones del protocolo más utilizadas, ya que
UDP y proporciona algunas de las características de ambos los clientes más nuevos pueden conectarse a este
protocolos. Está orientado a mensajes o datagramas como protocolo, pero los clientes antiguos no funcionan
UDP, pero también garantiza un transporte secuencial con los protocolos más modernos.
confiable de datos con control de congestión como TCP.  SMB 2.0: Windows Server 2008 fue quien empezó
a utilizar este nuevo estándar de forma masiva,
SCTP brinda los siguientes servicios: aunque ya venía incluido para los usuarios con
• Transferencia reconocida sin errores y sin duplicados
Windows Vista. SMB 2.0 era una versión más
de datos de usuario
segura, mucho más simple y, por supuesto, mucho
• Fragmentación de datos para ajustarse al tamaño MTU
de la ruta descubierta más rápida y con menos latencia. Se introducen
• Entrega secuenciada de mensajes de usuario dentro de algunas características, como los enlaces
múltiples flujos, con una opción para la entrega por simbólicos, mejoras en el cifrado y las sumas de
orden de llegada de mensajes de usuario individuales verificación y muchos otros beneficios.
• Paquete opcional de múltiples mensajes de usuario en  SMB 3: Esta versión se estrenó con Windows 8 y
un solo paquete SCTP Windows Server 2012 e introdujo importantes
• Tolerancia a fallas a nivel de red a través del soporte de cambios en la funcionalidad, además de servir para
multi-homing en uno o ambos extremos de una corregir fallos en SMB 2. Algunas de sus
asociación características son:
• Comportamiento para evitar la congestión y resistencia o SMB Multichannel.
a inundaciones y ataques de enmascaramiento
o SMB Transparent Failover.
SCTP utiliza transmisión múltiple para transportar sus o Protocolo SMB Direct.
mensajes, lo que significa que puede haber varios flujos La versión 3.0.2 de este protocolo llegó a los usuarios
independientes de mensajes que viajan en paralelo entre los con Windows 8.1. Y las posteriores versiones de este
puntos de transmisión. Los datos se envían en fragmentos de
protocolo, hasta la actual 3.1.1, se estrenaron las con otras
datos más grandes que los que usa TCP, al igual que UDP,
pero los mensajes incluyen un número de secuencia dentro versiones de Windows (hasta Windows 11) y se centraban en
mejorar el cifrado y la integridad. [12]
FTP

Las siglas de FTP significan File Transfer Protocol, que


se traduce como Protocolo de Transferencia de Archivos.
Como su nombre indica, se trata de un protocolo que permite
transferir archivos directamente de un dispositivo a otro.
Actualmente, es un protocolo que poco a poco va
abandonándose, pero ha estado vigente más de 50 años. [13]

TFTP

Protocolo de transferencia de archivos trivial. Sirve para Ejemplo Serializacion 3. Jose Ramos
el intercambio de información y pequeños archivos entre dos
equipos. Funciona a través de UDP. Destaca especialmente Después de realizar los frames del programa, se
por ser sencillo y simple, por lo que a diferencia de otros procederá a la creación de la lógica, primero se define las
protocolos no cuenta con funciones complejas de variables que se van a utilizar en los programas, dichas
transferencia. [14] variables deben ser estáticas para poder ejecutarse en el
main:
IV. MANUAL DE CONFIGURACION
Servidor Chat
En la siguiente sección se mostrará ejemplos prácticos de
serialización y transmisión de datos usando el protocolo static ServerSocket SS; //Define el puerto del servidor
SMB. static Socket s;//Escucha/Envía los input u output que
lleguen o envíe el servidor
Serializacion static DataOutputStream output;//es la variable que se
encarga de serializar(enviar)
Para la creación de un programa que represente la static DataInputStream input;//es la variable que se
transmisión y almacenamiento de datos con Serialización se encarga de deserializar (escuchar)
va a necesitar solo una computadora con un IDE para correr
y programar aplicaciones de java. Cliente Chat
Se procede a crear un programa en java con 2 JFrame
forms, uno para el Cliente y el otro par el servidor, las static Socket s;//Escucha/Envía los input u output que
mismas serán utilizadas para crear la lógica del programa. lleguen o envíe el cliente
static DataOutputStream output;//es la variable que se
encarga de serializar(enviar)
static DataInputStream input;//es la variable que se
encarga de deserializar (escuchar)

Después de definir las variables se procede a crear la


lógica de escuchar los mensajes del cliente o del servidor y
mostrarlos en el Text Area, también se instancia las variables
previamente creadas.
Ejemplo Serializacion 1. Jose Ramos
Servidor Chat
Seguidamente, se procede a agregar en la interfaz grafica
String mensaje="";//Se crea el mensaje a mostrar en el
de ambos Jframes forms, un Text Area para mostrar los
TextArea y se le asigna un String vacio para que no
mensajes recibidos del cliente o el servidor, un Text Field
esté en null
para escribir el mensaje a enviar al cliente o servidor y un
try{
botón de enviar.
SS=new ServerSocket(1201);//se define el Puerto del
server
s=SS.accept();// mantiene escuchando al server de
cualquier solicitud
input=new DataInputStream(s.getInputStream());//
deserializa el mensaje del cliente
output=new
DataOutputStream(s.getOutputStream());//Serializa los
mensajes a enviar
while(!mensaje.equals("exit")){//ejecute el programa
hasta que se escriba exit
mensaje=input.readUTF();//con el deserializador
input se lee el UTF que envía el cliente y se agrega al
Ejemplo Serializacion 2. Jose Ramos mensaje
jTextArea1.setText(jTextArea1.getText().trim()+" creado por el cliente al Text Area
\nCliente:\t"+mensaje);// Se agrega el Text Area }catch(Exception e){
manteniendo el historial System.out.println(e);
} }
}catch(Exception e){
System.out.println(e);//Algún error lo muestra Ahora si se envía un mensaje para confirmar la
} funcionalidad de este:

Cliente Chat
try{
s=new Socket("127.0.0.1", 1201);//Se indica el
servidor local, se conecte al puerto del server
input = new
DataInputStream(s.getInputStream());//Se define el
serializador
output=new
DataOutputStream(s.getOutputStream());//Se define el
deserializador
String mensaje="";//se define el mensaje del Text Ejemplo Serializacion 4. Jose Ramos
Area
while(!mensaje.equals("exit")){//Que se ejecute
hasta que se escriba exit
mensaje=input.readUTF();//Deserializa el mensaje
que viene del server
jTextArea1.setText(jTextArea1.getText().trim()+"\n
Servidor\t"+mensaje);//Lo agrega en el Text Area
}
}catch(Exception e){
System.out.println(e);
}

Luego se configura el botón de enviar para serializar y Ejemplo Serializacion 5. Jose Ramos
enviar el mensaje:

Servidor Chat
try{
String
mensajeEnviado2=jTextField1.getText().trim();//Se
obtiene el mensaje del text field y se asigna a mensaje
enviado
output.writeUTF(mensajeEnviado2);//se serializa el
mensaje para enviarlo y se escribe en el UTF
jTextField1.setText("");
jTextArea1.setText(jTextArea1.getText().trim()+"\n
Ejemplo Serializacion 6. Jose Ramos
Servidor\t"+mensajeEnviado2);//Agrega el mensaje
creado por el server al Text Area
}catch(Exception e){
Para la descarga de este ejemplo puede dirigirse al
System.out.println(e);
siguiente enlace.
}
También se puede utilizar la serialización para almacenar
Cliente Chat los datos u objetos en un archivo serializado que nos
try{ permitirá leerlo más adelante usando la deserialización.
String Se crea la clase Persona y se implementa el interface
mensajeEnviado=jTextField1.getText().trim();//Se Serializable con los atributos Nombre, correo y teléfono,
obtiene el mensaje del text field y se asigna a mensaje también se crea los get, set y los constructores.
enviado public class Persona implements Serializable{
output.writeUTF(mensajeEnviado); //se serializa el String nombre;
mensaje para enviarlo y se escribe en el UTF String correo;
jTextField1.setText(""); String telefono;
jTextArea1.setText(jTextArea1.getText().trim()+"\n //Getters and Setters
Cliente\t"+mensajeEnviado); //Agrega el mensaje public String getNombre() {
return nombre; Ejemplo Serializacion 8. Jose Ramos
}
public void setNombre(String nombre) { Ahora se procede a programar la función de los botones
this.nombre = nombre; de Serializar y Deserializar.
}
public String getCorreo() { Serializacion.
return correo;
} private void
public void setCorreo(String correo) { jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.correo = correo; ArrayList<Persona> ArrayPersonas = new
} ArrayList<Persona>();//definimos un array por si ya existe
public String getTelefono() { uno llamarlo y poder agregar al nuevo objeto a dicho array
return telefono; try {//Verificamos si existe un archivo, si no existe
} crea uno nuevo con el output
public void setTelefono(String telefono) { FileInputStream miArchivo2;
this.telefono = telefono; miArchivo2 = new
} FileInputStream("Personas.jose");//leemos el archvio
public Persona(String nombre, String correo, String ObjectInputStream input = new
telefono) { //contructor ObjectInputStream(miArchivo2);
this.nombre = nombre; ArrayList<Persona> ArrayDeserializado =
this.correo = correo; (ArrayList<Persona>) input.readObject();//sacamos el array
this.telefono = telefono; input.close();
} ArrayPersonas = ArrayDeserializado;//asignamos
} el array serializado al array que creamos antes
Luego, se crean los Jframes de crear un objeto para miArchivo2.close();
serializar y leer un archivo serializado. } catch (Exception ex) {
Para el Jframe Serializacion se usaron labels, Jtext fields System.out.println("Exception: " +
y un botón. ex.getMessage());

}
Persona personas1=new
Persona(jTextField1.getText(),jTextField2.getText(),jTextFi
eld3.getText());//creamos una persona con la info de los Jtext
fields
ArrayPersonas.add(personas1);//se agrega al array
try {
FileOutputStream miArchivo = new
FileOutputStream("Personas.jose");//defnimos la ruta donde
se van a guardar el array de objetos
ObjectOutputStream output = new
ObjectOutputStream(miArchivo);
Ejemplo Serializacion 7. Jose Ramos output.writeObject(ArrayPersonas);//Lo
sobreescribimos si existe algun dato y sino lo crea
Para el Jframe Deserializacion se usaron un label, un output.close();
botón y una tabla miArchivo.close();
} catch (Exception ex) {
System.out.println("Exception: " +
ex.getMessage());
}
//Limpiamos los Text fields
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}

Deserializacion

private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ArrayList<Persona> ArrayPersonas = new
ArrayList<Persona>();//definimos un array por si ya existe
uno llamarlo y poder agregar al nuevo objeto a dicho array
try {//Verificamos si existe un archivo, si no existe
crea uno nuevo con el output
FileInputStream miArchivo2;
miArchivo2 = new
FileInputStream("Personas.jose");//leemos el archvio
ObjectInputStream input = new
ObjectInputStream(miArchivo2);
ArrayList ArrayDeserializado =
(ArrayList<Persona>) input.readObject();//sacamos el array
input.close();
ArrayPersonas = ArrayDeserializado;//asignamos
el array serializado al array que creamos antes
Ejemplo Serializacion 9. Jose Ramos
miArchivo2.close();
} catch (Exception ex) {
Se crea un objeto Persona y se serializa.
System.out.println("Exception: " +
ex.getMessage());
}
mostrar(ArrayPersonas);//llama un método para
mostrar el array en la tabla
}
public void mostrar(ArrayList<Persona> P) {
String matriz[][] = new String[P.size()][3];//Se crea
una matriz 2x2 para las columnas filas de la tabla
for (int i = 0; i < P.size(); i++) {//Se agrega cada
valor uno por uno con el for
matriz[i][0] = P.get(i).getNombre();
matriz[i][1] = P.get(i).getCorreo();
matriz[i][2] =P.get(i).getTelefono();
} Ejemplo Serializacion 10. Jose Ramos
jTable1.setModel(new
javax.swing.table.DefaultTableModel(//se asigna los valores Como no existe el archivo lo va a crear el programa.
de la matriz a la tabla y se editan las columnas
matriz,
new String[]{
"Nombre","Correo","Telefono"
}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int
columnIndex) {
return canEdit[columnIndex]; Ejemplo Serializacion 11. Jose Ramos
}
}); Y en el archivo serializado se puede ver los datos que se
} llenaron en el Frame anterior pero con otros caracteres
especiales para que la computadora lo puede deserializar
Ya con el código del programa el flujo seria ir al Frame después.
de Serializar para crear un objeto de tipo Persona, crear un
ArrayList de Personas, si existe un archivo serializado se
abre se Saca el array del archivo y se sobre escribe al que se
creó anteriormente y está vacío, y se agrega el nuevo objeto Ejemplo Serializacion 12. Jose Ramos
al array, luego se serializa el objeto de nuevo y se sobre
escribe en el archivo serializado. Ahora se procede a crear otro usuario, pero a dado a que
Primero se verifica que no esté el archivo serializado: el archivo ya existe se procede a leerlo sacar el array que ya
tiene una persona y agregar el segundo objeto para tener
ambos objetos.
Ejemplo Serializacion 13. Jose Ramos

Si se vuelve a abrir el archivo serializado se podrá


observar que ahora están los 2 objetos serializados.

Ejemplo Serializacion 16. Jose Ramos


Ejemplo Serializacion 14. Jose Ramos Para la descarga de este ejemplo puede dirigirse al
siguiente enlace.
Sin embargo, se puede deserializar ese archivo y mostrar
el array en otro ventana encargada de deserializar. Con esto se demuestra 2 usos de la serialización, tanto
para guardar datos en archivos serializados como para
transmitir información por medio de sockets.

Transmisión de datos usando el protocolo SMB


A continuación, se verá paso a paso la creación de un
SMB share utilizado para dos grupos de trabajo, Recursos
humanos y IT, los cuales serán solamente accesibles por el
grupo asignado lo cual quiere decir que recursos humanos no
puede acceder/ver el compartido de IT y IT no puede
acceder/ver el de recursos humanos. Se empezará con la
creación del share en un servidor llamado
DCMS1.Microsoft.com, se le crea un compartido el cual será
el root pero no necesariamente podrá ser visto ni accedido
por los demás, en este caso hipotético se dejara accesible y
visto (Permisos de lectura) para los grupos involucrados,
pero más adentro de las carpetas solamente los grupos
asignados pueden ver y escribir, ningún otro grupo podrá ver
ni escribir, para esto nos posicionamos en C:\ y creamos un
Ejemplo Serializacion 15. Jose Ramos folder llamado rootshare. Se dirige a propiedades, advanced
sharing [imagen1]
Se presiona el botón de Deserializar y se procederá a
actualizar la tabla con los datos del archivo serializado.

A continuación se crea dos folders dentro de este share


los cuales se llamaran recursos humanos y IT[imagen3] , y
asimismo se dirige a active directory users and computers y
se crea los grupos [imagen2]

Cuando intenta acceder a Recursos Humanos [imagen7]

Se deshabilita la herencia [imagen4] y se agrega solos los


accesos para IT [imagen5]

V. CONCLUSIONES
Se logra demostrar cómo se almacenan y transmiten los
datos entre los dispositivos, siendo esto un punto clave para
el entendimiento del mundo digital en el que vivimos. El
planeta surge la precisión de que las personas puedan
almacenar y compartir información a través de distintos
dispositivos y así sean capaces de poder manipular dicha
información en diferentes equipos, además de velar por un
almacenamiento y transmisión seguro con minimización de
riesgo de pérdida o corrupción de información, de este modo
se evidencia la importancia de conocer cómo se almacenan y
transmiten los datos.

Los conceptos básicos y fundamentales para esta


investigación se explican y se demuestran en todo momento,
desde la forma en que se almacenan los datos y como estos
son enviados utilizando diferentes protocolos de transmisión,
para demostrar como estos son usados con ejemplos de la
vida real, y que esta ciencia de comunicación y transmisión
de datos pueda surgir y aportar a la población la posibilidad
de movilizar y guardar información en diferentes medios.

Se puede evidenciar la aplicación de estas tecnologías y


protocolos a muchas áreas, pero en cuanto a compartir y
transmitir información por la red, se conoce que ha sido
relevante en estudios de la comunicación, ha beneficiado la
síntesis de estructuras y protocolos necesarios para el
almacenamiento, además que el aporte a diversas ramas de la
ingeniería ha sido sorprendente y realmente indispensable
para su buen desarrollo y funcionamiento.

Se realiza el mismo proceso para el folder de Recursos


Humanos para permisos de HR solamente y esto ocasiona VI. REFERENCIAS
que el equipo de HR solamente pueda ver el compartido de
ellos y no puedan ni ver ni acceder al compartido de IT. El [1] Microsoft. (n.d.). Serialización (C#). Microsoft Docs.
share se accede por medio de Retrieved July 1, 2022, from https://docs.microsoft.com/es-
\\DCMS1.microsoft.com\rootshare\IT es/dotnet/csharp/programming-guide/concepts/serialization/
Ejemplo de un operador de IT [imagen6] [2] Rodrigo Santos (20/08/2020), API Socket y
WebSocket: ¡Entienda estas tecnologías del sector 2022, from:
financiero, información tomada de: https://www.redeszone.net/tutoriales/internet/protocolo-tftp-
https://blog.cedrotech.com/api-socket-y-websocket-entienda- us
estas-tecnolog%C3%ADas-del-sector-
financiero#:~:text=Se%20trata%20de%20una%20interfaz,pe
rmitir%20la%20comunicaci%C3%B3n%20entre%20proceso
s.
[3] Cristian Camilo Pérez (24/02/2020), Implementación
de una aplicación de mensajería utilizando socket.io
información tomada de:
https://www.pragma.com.co/academia/lecciones/implementa
cion-de-una-aplicacion-de-mensajeria-utilizando-socket

[4] Data storage: Dispositivos de almacenamiento de


datos. (2022). Redhat.com. información tomada de:
https://www.redhat.com/es/topics/data-storage

[5] ¿Qué es el almacenamiento en la nube? | Backup en la


nube | AWS. (2022). Amazon Web Services, Inc. From:
https://aws.amazon.com/es/what-is-cloud-storage/

[6] What is Software-Defined Storage? | VMware


Glossary. (2022, June). VMware. From:
https://www.vmware.com/latam/topics/glossary/content/soft
ware-defined-
storage.html#:~:text=El%20almacenamiento%20definido%2
0por%20software%20(SDS)%20es%20un%20sistema%20de
,del%20almacenamiento%20del%20hardware%20subyacent
e.
[7] ¿Qué es el almacenamiento de objetos? | NetApp.
(2019). Netapp.com. información tomada de:
https://www.netapp.com/es/data-storage/storagegrid/what-is-
object-storage/

[8] ¿Qué es almacenamiento de objetos? (2019).


Ibm.com. from: https://www.ibm.com/mx-
es/cloud/learn/what-is-object-storage

[9] block-storage. (2019, June 24). Ibm.com. from:


https://www.ibm.com/es-es/cloud/learn/block-storage

[10] TCP/UDP/SCTP: Handbook. Fortinet


Documentation Library. (n.d.). Retrieved July 3, 2022, from
https://docs.fortinet.com/document/fortigate/6.0.0/handbook/
797109/tcp-udp-sctp

[11] Lenis, A. (2021, December 2). ¿Qué es el


almacenamiento de datos, cómo funciona y qué tipos
existen? HubSpot. Retrieved June 30, 2022, from:
https://blog.hubspot.es/marketing/que-es-almacenamiento-
de-datos

[12] Velasco, R. (2022, June 21). Comparte archivos en


red local fácilmente con SMB. Softzone. Retrieved July 3,
2022, from: https://www.softzone.es/windows/como-se-
hace/smb-comprobar-activar-desactivar/

[13] Fernández, Y. (2021, July 15). FTP: qué es y cómo


funciona. Xataka. Retrieved July 3, 2022, from
https://www.xataka.com/basics/ftp-que-como-funciona

[14] Jiménez, J. (2021, October 12). Qué es el protocolo


TFTP y para qué se utiliza. Redes Zone. Retrieved July 3,

También podría gustarte