sábado, 25 de noviembre de 2017

JUnit

Unit es un marco de pruebas unitarias para el lenguaje de programación Java. Juega un papel crucial en el desarrollo impulsado por pruebas, y es una familia de marcos de pruebas unitarias conocidas colectivamente como xUnit.

JUnit promueve la idea de "primero probar y luego codificar", que hace hincapié en la configuración de los datos de prueba para una pieza de código que se puede probar primero y luego implementar. Este enfoque es como "prueba un poco, codifica un poco, prueba un poco, codifica un poco". Aumenta la productividad del programador y la estabilidad del código del programa, lo que a su vez reduce el estrés en el programador y el tiempo dedicado a la depuración.

Para su implementación se dará como ejemplo el siguiente código.
Las pruebas de software son uno de los procesos y actividades más importantes a la hora de desarrollar proyectos relacionados con la ingeniería de software, pues de estas depende la calidad que el proyecto posea. Por tanto, la utilización de métodos que faciliten, optimicen y sobretodo automatice dicho proceso de pruebas supone una gran mejoría en el desarrollo del proyecto y su calidad final.

Crear un nuevo archivo llamado Calculator.java
public class Calculator {
public int evaluate(String expression) {
int sum = 0;
for (String summand: expression.split("\\+"))
sum += Integer.valueOf(summand);
return sum;
}
}
Crear una prueba:
import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {
  @Test
  public void evaluatesExpression() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate("1+2+3");
    assertEquals(6, sum);
  }
}
Ejecutar con la siguiente línea:
javac -cp .;junit-4.XX.jar;hamcrest-core-1.3.jar CalculatorTest.java

Es necesario hacer múltiples pruebas en las que incluyan resultados fallidos.


Las pruebas de software son uno de los procesos y actividades más importantes a la hora de desarrollar proyectos relacionados con la ingeniería de software, pues de estas depende la calidad que el proyecto posea. Por tanto, la utilización de métodos que faciliten, optimicen y sobretodo automatice dicho proceso de pruebas supone una gran mejoría en el desarrollo del proyecto y su calidad final.

Referencias:
Anónimo. (2009). Unit Testing and JUnit. 25/11/2017, de Indraprastha Institute of Information Technology Sitio web: https://www.iiitd.edu.in/~jalote/jalotesebook/JaloteSEbook/tmp/UnitTesting.pdf

Augusto, F. (2012). Getting started. 25/11/2017, de GitHub Sitio web: https://github.com/junit-team/junit4/wiki/getting-started 

lunes, 20 de noviembre de 2017

Función Hash

Introducción

Una función hash es método para generar claves o llaves que representen de manera unívoca a un documento o conjunto de datos. Es una operación matemática que se realiza sobre este conjunto de datos de cualquier longitud, y su salida es una huella digital, de tamaño fijo e independiente de la dimensión del documento original. El contenido es ilegible.7
Es posible que existan huellas digitales iguales para objetos diferentes, porque una función hash tiene un número de bits definido. En el caso del SHA-1, tiene 160bits, y los posibles objetos a resumir no tienen un tamaño límite. A partir de un hash o huella digital, no podemos recuperar el conjunto de datos originales. Los más conocidos son el MD5 y el SHA-1, aunque actualmente no son seguros utilizarlos ya que se han encontrado colisiones. Cifrar una huella digital se conoce como firma digital.

Desarrollo
Requisitos que deben cumplir las funciones hash.
Imposibilidad de obtener el texto original a partir de la huella digital.
Imposibilidad de encontrar un conjunto de datos diferentes que tengan la misma huella digital (aunque como hemos visto anteriormente es posible que este requisito no se cumpla).
Poder transformar un texto de longitud variable en una huella de tamaño fijo (como el SHA-1 que es de 160bits).
Facilidad de empleo e implementación.
Ejemplos de funciones hash

MD5
Es una función hash de 128 bits. Como todas las funciones hash, toma unos determinados tamaños a la entrada, y salen con una longitud fija (128bits). El algoritmo MD5 no sirve para cifrar un mensaje. La información original no se puede recuperar, ya que está específicamente diseñado para que a partir de una huella hash no se pueda recuperar la información. Actualmente esta función hash no es segura utilizarla, nunca se debe usar.

SHA-1
Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los 128bits del MD5. La función de compresión es más compleja que la función de MD5, por tanto, SHA-1 es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y porque tiene mayor longitud que MD5 (160bits contra 128bits).

SHA-1 es más robusto y seguro que MD5, pero ya se han encontrado colisiones, por tanto, actualmente esta función hash no es segura utilizarla, nunca se debe usar.

SHA-2
Las principales diferencias con SHA-1 radica en en su diseño y que los rangos de salida han sido incrementados. Dentro de SHA-2 encontramos varios tipos, el SHA-224, SHA-256, SHA-384 y SHA-512. El más seguro, es el que mayor salida de bits tiene, el SHA-512, que tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de éste en:
Tamaño de salida 512 por los 160 de SHA-1.
Tamaño del bloque, tamaño de la palabra y tamaño interno que es el doble que SHA-1.
Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento su procesamiento y uso, debemos encontrar un equilibrio entre seguridad y velocidad.

Software
Si quieres comprobar o realizar la función hash a un archivo o texto, podréis encontrar el md5sum y el sha1sum por defecto instalados en sistemas operativos Linux. Si utilizas un sistema operativo Microsoft Windows podéis bajar el Snap MD5 que es un todo en uno (tiene para MD5 y para SHA-1).

Conclusión
Las funciones HASH (MD5, SHA-1, etc.) pueden usarse además para autenticar a dos usuarios.
Como carecen de una clave privada no pueden usarse de forma directa para estos propósitos, no obstante existen algoritmos que permiten añadirles esta función.
Entre ellos está HMAC, una función que usando los HASH vistos y una clave secreta autentica a dos usuarios mediante sistemas de clave secreta, las funciones MAC (Message Authentication Code) y HMAC se dedican a la autenticación y firma digital.
HMAC se usa en plataformas IP seguras como por ejemplo en Secure Socket Layer, SSL.

Referencias
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-asimetrica-o-de-clave-publica/55-funciones-hash/551-introduccion
https://www.gaussianos.com/algoritmos-hash-i-introduccion/
Stallings William, ¨Cryptography and network security: Principles and practice¨, 2da edición.

https://www.ibm.com/support/knowledgecenter/es/SSGR73_7.5.1/com.ibm.wci.doc/ref_DigesHash.html

jueves, 16 de noviembre de 2017

API RMI

Introducción
Los sistemas distribuidos requieren que las operaciones corran en diferentes hosts. Es un mecanismo necesario en la actualidad, debido a todas las innovaciones tecnológicas a las que estamos acostumbrado, esto como hemos visto antes se soporta con java sockets.
El uso de sockets permite la elaboración de aplicaciones distribuidas. Sin embargo, en ocasiones, son necesarios enfoques con un mayor grado de abstracción que el proporcionado por éstos. Al utilizar sockets, las aplicaciones deben desarrollar sus propios mecanismos para manejar de forma eficiente los mensajes intercambiados, con la consecuente complicación que esto conlleva.
En Java encontramos una herramienta que nos permite ejecutar código de forma remota (basándose en el principio que usa Remote Procedure Calling), a la cual se le denomina RMI (Remote Method Invocation) la cual nos permite ejecutar remotamente métodos de objetos ubicados en un servidor.

Desarrollo
La API RMI (Remote Method Invacation) proporciona un mecanismo para facilitar la elaboración de aplicaciones distribuidas. Integrado dentro de la jerarquía de paquetes oficiales del lenguaje de programación Java, se adapta perfectamente al modelo de programación de dicho lenguaje.

RMI integra este concepto en el lenguaje de programación Java, de manera que el manejo de objetos en aplicaciones distribuidas mantenga la semántica propia de los objetos locales de Java. En consecuencia, RMI puede ser fácilmente integrada con otras APIs de dicho lenguaje.

El uso de interfaces remotas proporciona una serie de ventajas, como son: las implementaciones de los métodos no son visibles por los clientes y no hace falta comunicar a los clientes cambios realizados en las implementaciones de los métodos.

RMI es, entonces, un paquete de Java que nos brinda la oportunidad de manejar objetos (lo que incluye también a sus métodos) de manera remota para hacer uso de líneas de código de un servidor haciendo parecer que dichas líneas de código se ejecutan en la máquina cliente de manera local. Para que esto se logre, existe algo denominado stub.

Un stub permite que la ejecución de una función invocada de manera remota pueda ser simulada localmente. En el caso del servidor, su stub se conoce como skeleton. 
Para que la comunicación entre el cliente y el servidor se pueda llevar a cabo, es necesario que se implemente, ya sea por el cliente o por el servidor, determinadas interfaces. Esto ayuda en el sentido de que se evita que se defina localmente la clase remota, lo cual hace el cliente al definir la interfaz y no la clase remota.

Mecanismo de RMI (Procesos fundamentales)
Cliente: Proceso que invoca un método en un objeto remoto.
Servidor: Proceso que posee el objeto remoto.
Registro de objetos: Se usa para el registro de objetos, para obtener acceso a objetos remotos utilizando su nombre.

Arquitectura
El sistema RMI consta de tres capas.
La capa sub/skeleton: Es la interfaz entre la capa de aplicación y el resto del sistema RMI. Transmite datos desde la capa remota a través de un flujo ordenado. Este flujo emplea un mecanismo llamado serialización, el cual habilita los objetos java a ser transmitidos entre espacio de direcciones.
Tareas que realiza el sub:
·         Iniciar una llamada a un objeto remoto
·         Ordenar los argumentos del flujo
·         Informar a la capa de referencia remota que la llamada sebe ser hecha
·         Retomar el valor o excepción de un flujo
·         Decodificar el flujo de datos
·         Hacer la llamada de la implementación del objeto remoto actual

La capa de referencia visual.
La capa de transporte.



Conclusión
Los orígenes de RMI se remontan a la invención de la tecnología RPC (Remote Procedure Calling). Aquí lo que buscamos es poder utilizar código de forma remota, lo que nos lleva, evidentemente, a la transferencia de datos. RMI, siendo una tecnología de Java, nos facilita el trabajo de implementar código que nos permita manejar objetos remotamente. Su arquitectura simula la arquitectura cliente-servidor, sin embargo, en este caso tenemos un componente más: registry, el cual nos permite crear relaciones objeto-servidor que le facilitan al cliente encontrar el objeto que requiere utilizar. 

A diferencia de Socket Datagrama o Socket Stream, resulta mucho más fácil codificar en RMI. Así, si deseamos hacer una aplicación distribuida, RMI puede representar una excelente opción. Por último, cabe destacar la gran utilidad que tiene el stub dentro de toda esta gestión, ya que nos permite visualizar una aplicación como si la estuviéramos ejecutando localmente cuando en realidad se está ejecutando remotamente.

Referencias
Acervos Digitales UDLAP (2017). Remote Method Invocation. Obtenido de http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/picen_x_pg/capitulo3.pdf
González, A. (2017). Universidad Técnica Féderico Santa María. Obtenido de http://profesores.elo.utfsm.cl/~agv/elo330/2s05/projects/CesarVasquez/sitio_web/que_es.html

UNAM. (2017). Programación Avanzada. Obtenido de Posgrado en Ciencia e Ingeniería de la Computación: http://lya.fciencias.unam.mx/jloa/rmi.pdf

domingo, 12 de noviembre de 2017

Kerberos

Introducción
La seguridad e integridad de sistemas dentro de una red puede ser complicada. Puede ocupar el tiempo de varios administradores de sistemas sólo para mantener la pista de cuáles servicios se estan ejecutando en una red y la manera en que estos servicios son usados. Más aún, la autenticación de los usuarios a los servicios de red puede mostrarse peligrosa cuando el método utilizado por el protocolo es inherentemente inseguro, como se evidencia por la transferencia de contraseñas sin encriptar sobre la red bajo los protocolos FTP y Telnet. Kerberos es una forma eliminar la necesidad deaquellos protocolos que permiten métodos de autenticación inseguros, y de esta forma mejorar la seguridad general de la red.

Desarrollo
Kerberos es un protocolo de seguridad creado por MIT que usa una criptografía de claves simétricas para validar usuarios con los servicios de red — evitando así tener que enviar contraseñas a través de la red. Al validar los usuarios para los servicios de la red por medio de Kerberos, se frustran los intentos de usuarios no autorizados que intentan interceptar contraseñas en la red.

El servicio Kerberos es una arquitectura cliente-servidor que proporciona seguridad a las transacciones en las redes. El servicio ofrece una sólida autenticación de usuario y también integridad y privacidad. La autenticacióngarantiza que las identidades del remitente y del destinatario de las transacciones de la red sean verdaderas. El servicio también puede verificar la validez de los datos que se transfieren de un lugar a otro (integridad) y cifrar los datos durante la transmisión (privacidad). Con el servicio Kerberos, puede iniciar sesión en otros equipos, ejecutar comandos, intercambiar datos y transferir archivos de manera segura. Además, Kerberos proporciona servicios de autorización, que permiten a los administradores restringir el acceso a los servicios y los equipos. Asimismo, como usuario de Kerberos, puede regular el acceso de otras personas a su cuenta.

El servicio Kerberos es un sistema de inicio de sesión único. Esto significa que sólo debe autenticarse con el servicio una vez por sesión, y todas las transacciones realizadas posteriormente durante la sesión se aseguran de manera automática. Una vez que el servicio lo autenticó, no necesita volver a autenticarse cada vez que utiliza un comando basado en Kerberos, como ftp o rsh, o accede a datos en un sistema de archivos NFS. Por lo tanto, no es necesario que envíe la contraseña a través de la red, donde puede ser interceptada, cada vez que utiliza estos servicios.

Conclusión
En resumen, Kerberos es una solución para ciertos problemas de seguridad de la red. Provee las herramientas de autenticación y criptografía reforzada a través de la red para ayudar a asegurar que los sistemas de información de una empresa o corporación están bien resguardados.
Sin embargo, y aunque se trate de un sistema robusto, no está exento de ciertos problemas, tanto de seguridad como de implementación, que han hecho que este sistema no esté todo lo extendido que debería.


Referencias
https://docs.oracle.com/cd/E24842_01/html/E23286/intro-5.html
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-kerberos.html
https://www.cisco.com/c/es_mx/support/docs/security-vpn/kerberos/16087-1.pdf

domingo, 5 de noviembre de 2017

Socket Stream

El uso de sockets permite a dos programas ( ya sea entre dos o más computadoras) intercambiar un flujo de datos, constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados.

Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.


Un Socket Es una interfaz de entrada ­salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante una red.

Existen dos tipos de sockets, por una parte, Sockets Stream, los más utilizados, hacen uso del protocolo TCP, el cual nos provee un flujo de datos bidireccional, secuenciado, sin duplicación de paquetes y libre de errores, los datos se transfieren sin encuadrarlos en registros o bloques. Si se rompe la conexión entre los procesos, éstos serán informados. A diferencia de los socket datagrama,  donde se transmiten paquetes individuales de información y no garantiza que los paquetes llegarán en alguna forma en particular.

el siguien es un ejemplo del uso de sockets stream en un servidor:



String hostName = args[0];
int portNumber = Integer.parseInt(args[1]);

try (
    Socket echoSocket = new Socket(hostName, portNumber);
    PrintWriter out =
        new PrintWriter(echoSocket.getOutputStream(), true);
    BufferedReader in =
        new BufferedReader(
            new InputStreamReader(echoSocket.getInputStream()));
    BufferedReader stdIn =
        new BufferedReader(
            new InputStreamReader(System.in))
)

Los sockets Stream y los datagrama tienen usos muy similares, mientras que uno notifica siexiste algún error a costa de mayor procesamiento, el otro es mucho más rápido y no garantiza que el destinatario reciba los paquetes.


 Cada uno de estos sockets pueden ser utilizados según las necesidades y funciones que vayan a desarrollar dentro de la red.

miércoles, 25 de octubre de 2017

Algoritmos de Cifrado

Los sistemas de cifrado asimétrico fueron creados con la finalidad de dar solución al problema de intercambio de la clave secreta de los sistemas de cifrado simétricos, el cifrado asimétrico también conocido como de doble clave o de clave pública consiste en utilizar dos claves, una para cifrar y otra para descifrar.
La clave que se utiliza para cifrar el mensaje es la clave pública del receptor, y es pública porque es conocida por más personas que sólo el emisor y el receptor de un determinado mensaje. El descifrado se lleva a cabo por el receptor y lo hace con su clave privada, lo que implica que ya no hay un intercambio de claves ya que cuando un mensaje es cifrado con la clave pública del receptor, se está asegurando que sólo él puede descifrar el mensaje con su clave privada que se supone sólo está en su poder.
La clave pública de cada persona es derivada de su clave privada mediante funciones de un sentido, es decir que son fáciles de calcular en una dirección pero muy difíciles de calcular a la inversa, lo que hace posible que la clave para cifrar se haga pública.
Es una práctica común utilizar los dos tipos de cifrado (simétrico y asimétrico) al momento de implementar un sistema criptográfico, con ello se busca aprovechar las mayores cualidades de cada uno; por un lado se intercambia de forma segura la clave con el cifrado asimétrico y por el otro el proceso cifrado/descifrado se realiza con rapidez y eficiencia con el cifrado simétrico.
El emisor utiliza una clave secreta para cifrar el MCla y por tanto un algoritmo simétrico, también cifra dicha clave pero con un algoritmo asimétrico y con la clave pública del receptor, con el objetivo de que solo éste pueda recuperarla ya que él es el único que tiene la clave privada para hacerlo, una vez que el receptor descifre la clave secreta podrá descifrar el mensaje con dicha clave.
Erika Aguillón Martínez. (2012). Fundamentos de Criptografía. octubre 25,2017, de UNAM 
Sitio web: http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/2-tecnicas-clasicas-de-cifrado/23-numero-de-claves/233-sistemas-de-dos-claves-cifradores-asimetricos

Sockets Datagrama

Sockets Datagrama

Fueron popularizados por Berckley Software Distribution, de la universidad norteamericana de Berkley. Los sockets han de ser capaces de utilizar el protocolo de streams TCP (Transfer Contro Protocol) y el de datagramas UDP (User Datagram Protocol). Utilizan una serie de primitivas para establecer el punto de comunicación, para conectarse a una máquina remota en un determinado puerto que esté disponible, para escuchar en él, para leer o escribir y publicar información en él, y finalmente para desconectarse. Con todas primitivas se puede crear un sistema de diálogo muy completo.


Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos transmitiendo y recibiendo a través de sockets. El tipo de sockets describe la forma en la que se transfiere información a través de ese socket.

Sockets Stream (TCP, Transport Control Protocol)

Son un servicio orientado a conexión donde los datos se transfieren sin encuadrarlos en registros o bloques. Si se rompe la conexión entre los procesos, éstos serán informados. El protocolo de comunicaciones con streams es un protocolo orientado a conexión, ya que para establecer una comunicación utilizando el protocolo TCP, hay que establecer en primer lugar una conexión entre un par de sockets. Mientras uno de los sockets atiende peticiones de conexión (servidor), el otro solicita una conexión (cliente). Una vez que los dos sockets estén conectados, se pueden utilizar para transmitir datos en ambas direcciones.

Sockets Datagrama (UDP, User Datagram Protocol)

Son un servicio de transporte sin conexión. Son más eficientes que TCP, pero no está garantizada la fiabilidad. Los datos se envían y reciben en paquetes, cuya entrega no está garantizada. Los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al que se envió. El protocolo de comunicaciones con datagramas es un protocolo sin conexión, es decir, cada vez que se envíen datagramas es necesario enviar el descriptor del socket local y la dirección del socket que debe recibir el datagrama. Como se puede ver, hay que enviar datos adicionales cada vez que se realice una comunicación.

Sockets Raw

Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos de más bajo nivel. Se utilizan sobre todo para la depuración del código de los protocolos.




DIFERENCIAS ENTRE SOCKETS STREAM Y DATAGRAMA

En UDP, cada vez que se envía un datagrama, hay que enviar también el descriptor del socket local y la dirección del socket que va a recibir el datagrama, luego éstos son más grandes que los TCP. Como el protocolo TCP está orientado a conexión, tenemos que establecer esta conexión entre los dos sockets antes de nada, lo que implica un cierto tiempo empleado en el establecimiento de la conexión, que no existe en UDP.

En UDP hay un límite de tamaño de los datagramas, establecido en 64 kilobytes, que se pueden enviar a una localización determinada, mientras que TCP no tiene límite; una vez que se ha establecido la conexión, el par de sockets funciona como los streams: todos los datos se leen inmediatamente, en el mismo orden en que se van recibiendo.

UDP es un protocolo desordenado, no garantiza que los datagramas que se hayan enviado sean recibidos en el mismo orden por el socket de recepción. Al contrario,TCP es un protocolo ordenado, garantiza que todos los paquetes que se envíen serán recibidos en el socket destino en el mismo orden en que se han enviado. Los datagramas son bloques de información del tipo lanzar y olvidar. Para la mayoría de los programas que utilicen la red, el usar un flujo TCP en vez de un datagrama UDP es más sencillo y hay menos posibilidades de tener problemas. Sin embargo, cuando se requiere un rendimiento óptimo, y está justificado el tiempo adicional que supone realizar la verificación de los datos, los datagramas son un mecanismo realmente útil.

En resumen, TCP parece más indicado para la implementación de servicios de red como un control remoto (rlogin, telnet) y transmisión de ficheros (ftp); que necesitan transmitir datos de longitud indefinida. UDP es menos complejo y tiene una menor sobrecarga sobre la conexión; esto hace que sea el indicado en la implementación de aplicaciones cliente/servidor en sistemas distribuidos montados sobre redes de área local.

domingo, 3 de septiembre de 2017

Modelo OSI y TCP/IP

Introducción



Se conoce como familia de protocolos de Internet al conjunto de protocolos que son implementados por la pila de protocolos sobre los cuales se fundamenta Internet y que permiten la transmisión de datos entre las redes de computadoras.

Los dos protocolos más importantes y que fueron también los primeros en definirse y en ser utilizados son: TCP (Protocolo de Control de Transmisión o Transmission Control Protocol) e IP (Protocolo de Internet o Internet Protocol), de ahí que el modelo se denomine como TCP/IP.

Los protocolos existentes superan los cien, ente los cuales podemos mencionar como los más conocidos a HTTP, FTP, SMTP, POP, ARP, entre otros. TCP/IP es la plataforma que sostiene Internet y que permite la comunicación entre dos equipos, no importando si estos cuentan con diferentes sistemas operativos, ya sea sobre redes de área local (LAN) o redes de área extensa (WAN).

El modelo TCP/IP es un protocolo dirigido a la transferencia de información a través de internet, o, dicho de otra manera, es un protocolo utilizado por todas las computadoras conectadas a una red, de manera que estos puedan comunicarse entre sí.

Por otro lado, el modelo OSI ha servido como fundamento teórico para la interconexión de sistemas abiertos, basándose en un conjunto de siete capas. Cada capa cumple funciones específicas requeridas para comunicar dos sistemas mediante una estructura jerárquica. Cualquiera de sus siete capas se apoya en la capa anterior, realiza su función y ofrece un servicio a la capa superior.


Desarrollo



Open Systems Interconnection (OSI)



Es una arquitectura general requerida para establecer comunicación, entre ordenadores.


Capa



Las redes de ordenadores, proveen al usuario una serie de servicios, e internamente poseen unas funciones. Todo esto es realizado por las capas o niveles de la arquitectura que posee el tipo de red. Las arquitecturas de las redes tienen una serie de capas superpuestas, una encima de otra, en la que cada una desempeña su función.



Nivel Físico (Capa 1)



Define las características mecánicas, eléctricas y funcionales para establecer, mantener, repetir, amplificar y desactivar conexiones físicas entre nodos.
Transmite los bits y los transporta a través de un medio físico.
Nivel de voltaje, sincronización de cambios de voltaje, frecuencia de transmisión, distancias de los cables, conectores físicos y asuntos similares son especificados en esta capa.

Ejemplos: Cable, Radio, Fibra óptica.





Nivel de Enlace(Capa 2)



La capa de enlace de datos se ocupa del direccionamiento físico, de la topología de la red, del acceso a la red, de la distribución ordenada de tramas y del control del flujo.
Se hace un direccionamiento de los datos en la red ya sea en la distribución adecuada desde un emisor a un receptor, la notificación de errores, de la topología de la red de cualquier tipo.
La tarjeta NIC (Network Interface Card) que se encarga de que tengamos conexión, posee una dirección MAC (control de acceso al medio) y la LLC (control de enlace lógico).

Ejemplo: Bus, Anillo, Estrella, etc.





Nivel de Red(Capa 3)



El objetivo de la capa de red es hacer que los datos lleguen desde el origen al destino, aun cuando ambos no estén conectados directamente.
Los dispositivos que facilitan tal tarea se denominan enrrutadores.
En este nivel se realiza el direccionamiento lógico y la determinación de la ruta de los datos hasta su receptor final.
Esta capa es la encargada de hacer el enrrutamiento y el direccionamiento.
Enrrutamiento: ¿cuál es el mejor camino para llegar a la red destino?
Direccionamiento: ¿cuál es el nodo destino?





Nivel de Transporte(Capa 4)



Su función básica es aceptar los datos enviados por las capas superiores, dividirlos en pequeñas partes y pasarlos a la capa de red. Se asegura que los datos enviados lleguen correctamente al otro lado de la comunicación. Esta capa provee servicios de conexión para la capa de sesión que los usuarios usarán al enviar y recibir paquetes..
Segmenta bloques grandes de datos antes de transmitirlos (y los reensambla en el nodo destino).
Asegura la transmisión confiable de los mensajes.
No deja que falten ni sobren partes de los mensajes trasmitidos (si es necesario, hace retransmisión de mensajes)





Nivel de Sesión(Capa 5)



Define cómo iniciar, coordinar y terminar las conversaciones entre aplicaciones (llamadas sesiones).
Administra el intercambio de datos y sincroniza el diálogo entre niveles de presentación (capa 6) de cada sistema.
Ofrece las herramientas para que la capa de aplicación, la de presentación y la de sesión reporten sus problemas y los recursos disponibles para la comunicación (control del diálogo –sesión- entre aplicaciones).
Lleva control de qué flujos forman parte de la misma sesión y qué flujos deben terminar correctamente.





Nivel de Presentación(Capa 6)



Su función es encargarse de la representación de la información, de que los datos lleguen reconocibles. Esta capa trabaja más el contenido de la comunicación que en como se establece la misma. Se tratan aspectos como la semántica y la sintaxis de los datos enviados. Realiza conversiones de los datos para que sean interpretados de manera correcta.

Por todo ello, podemos resumir la definición de esta capa como aquella encargada de manejar la estructura de datos abstracta y realizar las conversiones de representación de los datos necesarios para la correcta interpretación de los mismos.





Nivel de Aplicación(Capa 7)



Define la interfaz entre el software de comunicaciones y cualquier aplicación que necesite comunicarse a través de la red.
Las otras capas existen para prestar servicios a esta capa.
Las aplicaciones están compuestas por procesos.
Un proceso de aplicación se manifiesta en la capa de aplicaciones como la ejecución de un protocolo de aplicación.



TCP/IP



El TCP/IP es la base de Internet, y sirve para comunicar todo tipo de dispositivos, computadoras que utilizan diferentes sistemas operativos, minicomputadoras y computadoras centrales sobre redes de área local (LAN) y área extensa (WAN).





Nivel Físico (Capa 1)



El nivel físico describe las características físicas de la comunicación, como las convenciones sobre la naturaleza del medio usado para la comunicación (como las comunicaciones por cable, fibra óptica o radio), y todo lo relativo a los detalles como los conectores, código de canales y modulación, potencias de señal, longitudes de onda, sincronización y temporización y distancias máximas.





Nivel de enlace de datos (Capa 2)



El nivel de enlace de datos especifica cómo son transportados los paquetes sobre el nivel físico, incluyendo los delimitadores (patrones de bits concretos que marcan el comienzo y el fin de cada trama). Ethernet, por ejemplo, incluye campos en la cabecera de la trama que especifican que máquina o máquinas de la red son las destinatarias de la trama. Ejemplos de protocolos de nivel de enlace de datos son Ethernet, Wireless Ethernet, SLIP, Token Ring y ATM.





Internet (Capa 3)



Como fue definido originalmente, el nivel de red soluciona el problema de conseguir transportar paquetes a través de una red sencilla. Ejemplos de protocolos son X.25 y Host/IMP Protocol de ARPANET.
Con la llegada del concepto de Internet, nuevas funcionalidades fueron añadidas a este nivel, basadas en el intercambio de datos entre una red origen y una red destino. Generalmente esto incluye un enrutamiento de paquetes a través de una red de redes, conocida como Internet.





Nivel de Transporte (Capa 4)



Los protocolos del nivel de transporte pueden solucionar problemas como la fiabilidad ("¿alcanzan los datos su destino?") y la seguridad de que los datos llegan en el orden correcto. En el conjunto de protocolos TCP/IP, los protocolos de transporte también determinan a qué aplicación van destinados los datos.
Los protocolos de enrutamiento dinámico que técnicamente encajan en el conjunto de protocolos TCP/IP (ya que funcionan sobre IP) son generalmente considerados parte del nivel de red; un ejemplo es OSPF (protocolo IP número 89).





Nivel de Aplicación (Capa 5)



El nivel de aplicación es el nivel que los programas más comunes utilizan para comunicarse a través de una red con otros programas. Los procesos que acontecen en este nivel son aplicaciones específicas que pasan los datos al nivel de aplicación en el formato que internamente use el programa y es codificado de acuerdo con un protocolo estándar.
Algunos programas específicos se considera que se ejecutan en este nivel. Proporcionan servicios que directamente trabajan con las aplicaciones de usuario. Estos programas y sus correspondientes protocolos incluyen a HTTP (HyperText Transfer Protocol), FTP (Transferencia de archivos), SMTP (correo electrónico), SSH (login remoto seguro), DNS (Resolución de nombres de dominio) y a muchos otros.



Conclusión



En la comparación de los modelos se ven muchas mejoras en el modelo TCP/IP que en el modelo OSI puesto que este es antiguo.Cuyas mejoras son la velocidad de comunicación y la reducción de niveles o capas.
OSI es una referencia teórica, pero no válida en la práctica, en la que el modelo más utilizado es TCP/IP.
Si comparamos los dos modelos vemos que ambos se dividen en capas, ambos tienen capas de aplicación pero incluyen servicios muy distintos. Las capas de transporte y de red son similares.
Tienen varias diferencias como por ejemplo el modelo TCP/IP combina las funciones de la capa de presentación y de sesión en la capa de aplicación, el modelo TCP/IP combina las capas de enlace de datos y la capa física del modelo OSI en una sola capa, ademas de que el modelo OSI parece más complejo ya que tiene más capas que el modelo TCP/IP.
Se puede decir que los modelos o protocolos TCP/IP fueron y son el motor necesario para que las redes en general e internet en particular, se mejoren y se pueda tener un buen flujo de la información.

Referencias:



Vazquez.E. (2013). Modelo OSI y TCPIP. septiembre 3, 2017, de emaze Sitio web: https://www.emaze.com/@AQOILQZZ/modelos-osi-y-tcpip

domingo, 27 de agosto de 2017

Redes de Cómputo

Redes de Cómputo



Introducción



Las redes de computadoras es una definición que muchos usamos hablando sobre empresas, escuelas o alguna otra ocupación, pero casi nadie sabe a que se refiere o que significa. Es por eso por lo que hablare de ello para darnos cuenta de su significado y nos quede claro. En este tema redes de computo hablare de que trata, cuál es su significado y que ventajas trae esto. Se estructurara empezando con su definición, siguiendo como puede funcionar y terminando los beneficios que esto trae.


Desarrollo



Una red de computadoras (también llamada red de ordenadores o red informática) es un conjunto equipos (computadoras y dispositivos), conectados por medio de cables, señales, ondas o cualquier otro método de transporte de datos, para compartir información (archivos), recursos (discos, impresoras, programas, etc.) y servicios (acceso a una base de datos, internet, correo electrónico, chat, juegos, etc.). A cada una de las computadoras conectadas a la red se le denomina un nodo.

Clasificación



Cobertura

  • PAN
  • LAN
  • MAN
  • WAN




Topología

  • Estrella
  • Anillo
  • Bus
  • Híbridas
  • Jerárquicas




Relación Funcional

  • Cliente-Servidor
  • Igual a igual






Según su cobertura



PAN (red de área Personal)


Es una red de ordenadores usada para la comunicación entre los dispositivos de la computadora (teléfonos incluyendo las ayudantes digitales personales) cerca de una persona.
El alcance de una PAN es de algunos metros. Se pueden conectar con cables alos USB y FireWire de la computadora . Una red personal sin hilos del área (WPAN) se puede también hacer posible con tecnologías de red tales como IrDA y Bluetooth.




LAN (red de área local)


Una red que se limita a un área tal como un cuarto, un solo edificio o una nave. Una LAN grande se divide generalmente en segmentos lógicos más pequeños llamados grupos de trabajo.




MAN (red de área metropolitana)


Una red que conecta las redes de dos o más locales pero no se extiende más allá de los límites de la una ciudad.




WAN (red de área mundial)


Es una red que cubre un área geográfica amplia y en gran parte de su estructura utiliza instalaciones de transmisión telefónicas.




Según su topología



La topología o forma lógica de una red se define como la forma de tender el cable a estaciones de trabajo individuales.

Estrella


La red se une en un único punto; un concentrador de cableado o HUB que a través de él los bloques de información son dirigidos hacia las estaciones.
Su ventaja es que el concentrador monitorea el tráfico y evita las colisiones y una conexión interrumpida no afecta al resto de la red.
La desventaja es que los mensajes son enviados a todas las estaciones, aunque vaya dirigido a una.




Anillo


Las estaciones están unidas unas con otras formando un círculo por medio de un cable común. Las señales circulan en un solo sentido alrededor del círculo, regenerándose en cada nodo. Cada nodo examina la información que es enviada a través del anillo, si no está dirigida a él la pasa al siguiente nodo.
La desventaja es que si se rompe una conexión, se cae la red completa.




Bus


Las estaciones están conectadas por un único segmento de cable. A diferencia del anillo, el bus es pasivo, no se produce regeneración de las señales en cada nodo. Los nodos en una red de "bus" transmiten la información y esperan que ésta no vaya a chocar con otra información transmitida por otro de los nodos. Si esto ocurre, cada nodo espera una pequeña cantidad de tiempo al azar, después intenta retransmitir la información.




Jerárquica


Los nodos están colocados en forma de árbol. Es parecida a una serie de redes en estrella interconectadas, con la diferencia que no tiene un nodo central sino un nodo de enlace troncal, generalmente ocupado por un hub o switch, desde el que se ramifican los demás nodos. Es una variación de la red en bus, la falla de un nodo no implica interrupción en las comunicaciones porque se comparte el mismo canal de comunicaciones.




Híbridas


El bus, la estrella y el anillo se combinan algunas veces para formar redes híbridas.
*Anillo en estrella: se utiliza con el fin de facilitar la administración de la red. Físicamente, la red es una estrella centralizada en un concentrador, mientras que a nivel lógico, la red es un anillo.
* Bus en estrella: el fin es igual a la topología anterior. En este caso la red es un "bus" que se cablea físicamente como una estrella por medio de concentradores.
* Estrella jerárquica: esta estructura de cableado se utiliza en la mayor parte de las redes locales actuales, por medio de concentradores dispuestos en cascada para formar una red jerárquica.




Según su relación funcional



Cliente-Servidor


En este caso el servidor es una máquina específica que usa un sistema operativo desarrollado especialmente para este tipo de red. Las estaciones de trabajo comparten recursos disponibles a partir de este servidor.
La ejecución de las tareas está dividida entre el cliente (o estación) y el servidor. Este tipo de red proporciona un mejor rendimiento y niveles de seguridad más adecuados para el trabajo profesional en red.




Par a par


Es un tipo de red donde todos los equipos conectados pueden desempeñar el papel de servidor y de estación de trabajo al mismo tiempo. En este caso, si alguien quisiera compartir un recurso podría ofrecerlo a los demás. Este es un tipo de red para trabajos simples, donde el volumen de información intercambiado es pequeño y la seguridad no es un factor crítico.




Conclusión



Las redes de computadoras nos ayudan a establecer la comunicación de una manera más fácil ypermiten transportar información de una manera más rápida sin necesidad alguna de cables.

En la sociedad gracias a las redes, las personas en lugares apartados pueden infromarse sobre cosas del mundo con sus redes locales e informarse como va su municipio a nivel nacional.

Las redes de datos cumplen una función muy importante, y es que facilitan la comunicación ya que permiten conectarnos de forma global con nuestra familia, amigos etc. Todo esto por medio de los diferentes procedimientos que utilizan estas redes, haciendo que la comunicación llegue al destino y a tiempo.

Con la implementación de la tecnología tenemos como organizarnos laboralmente, profesionalmente y personalmente, por cuanto la tecnología nos da las herramientas necesarias para la realización de los diferentes procesos e actividades que requerimos.

Con la implementación de las redes y cada herramienta que nos aportan hacen que podamos tener una comunicación constante donde el costo nos es favorable.

Referencias:



Mansilla,CM. (2012). Redes de Computadoras. agosto 27,2017, de FCA-UNL Sitio web: http://www.fca.unl.edu.ar/informaticabasica/Redes.pdf

Ingeniería de Pruebas

Ingeniería de Pruebas



Introducción



En un proceso de pruebas formal, suelen confundirse con mucha facilidad, los niveles de pruebas con los tipos de prueba, y a pesar de que se encuentren íntimamente relacionadas, tienen connotaciones diferentes en el proceso. Para entender un poco más, vamos a partir del hecho de que las pruebas pueden ejecutarse en cualquier punto del proceso de desarrollo de software, y es aquí donde los niveles de prueba nos permiten entender con claridad los diferentes puntos o etapas en donde pueden ejecutarse ciertos tipos de prueba. Por lo anterior, es común que algunas personas se refieran a los niveles de pruebas o intenten clasificarlos como: pruebas de desarrollador, pruebas funcionales y pruebas de usuario final.


Desarrollo



Para poder hablar de la ingeniería de pruebas es necesario hacer referencia a tres términos que es común ver como algunas personas utilizan de manera indistinta,los términos Defecto, Falla y Error.

  1. Error: Es una equivocación realizada por una persona al desarrollar una actividad de desarrollo de software.
  2. Defecto: Se produce cuando una persona comete un error.
  3. Falla: Es un desvió respecto del comportamiento esperado del sistema, puede producirse en cualquier etapa.

Notas:Defecto es una vista interna, lo ven los desarrolladores. Falla es una vista externa, la ven los usuarios.



Justificación


  1. La realización de tareas de pruebas conlleva un costo asociado que puede inducir a tomar decisiones de no realizarlas.
  2. No realizarlas también conlleva un costo asociado.


También es importante diferenciar entre dos conceptos, validación y verificación.

Muchas veces se confunde “verificación” con validación”. Barry W. Boehm (1979) puso en claro con pocas palabras la diferencia:
  1. Validación: ¿Estamos construyendo el producto correcto? Se ocupa de controlar si el producto satisface los requerimientos del usuario
  2. Verificación: ¿Estamos construyendo correctamente el producto? implica controlar que el producto conforma su especificación inicial.

    En la Validación el resultado final del desarrollo software se debe ajustar a lo que el usuario quería (sus necesidades). En la mayoría de las ocasiones el producto desarrollado no cumple con la ideas del cliente, normalmente porque a éste suele faltarle capacidad técnica de expresión.
    En la Verificación el código que estamos construyendo debe estar en armonía con la especificación que hemos tomado del usuario. El resultado final del desarrollo software debe concordar con la especificación (requisitos) del sistema, por lo que debemos asegurarnos que el desarrollo final coincida con dicha especificación
    Un sistema puede pasar la validación, sin embargo, no pasa la verificación. Cumple con la especificación del usuario, con lo que él quería, cubre sus necesidades pero internamente puede adolecer de graves detalles como: un precario diseño en la base de datos; uso de un excesivo e innecesario número de líneas de código, por desconocer las potencialidades del lenguaje de desarrollo o de técnicas avanzadas de programación como la POO y uso incorrecto en la BD de instrucciones propias del lenguaje de desarrollo, en lugar de las sentencias adecuadas de SQL.



    Los objetivos de las pruebas son:
    • Menores costos.
    • Menores tiempos de desarrollo.
    • Mayor satisfacción del cliente.




    En las pruebas de sistema existen siete principios fundamentales que son:

    Principio 1


    "Las pruebas revelan la presencia de bugs, no la ausencia de ellos"

    Probar reduce la probabilidad de que existan bugs pero nunca se puede asegurar que no quede ninguno oculto.
    Además, cada tipo de pruebas que realicemos (de sistema, de integración, añadir auditorías de código…) son más efectivas para detectar un tipo de bug.

    Principio 2


    "Es imposible probarlo todo"

    El flujo de control de un sistema software no trivial como los que acostumbramos a utilizar en el día a día contiene miles de decisiones.
    Estas decisiones se pueden combinar entre ellas para dar lugar a una infinidad de posibles caminos. De entrada, probar todos los caminos es un problema inabordable.
    Y eso si no tenemos en cuenta la prueba de requisitos no funcionales, como el rendimiento de un sistema ante una exigente carga de usuarios, o requisitos específicos de seguridad (por ejemplo, en un sistema bancario) para protegerse de usuarios malintencionados.
    Todo esto hace necesaria una estrategia de pruebas (un plan) y priorizar a partir de una gestión de riesgos de calidad y de proyecto, y como reza el siguiente principio…

    Principio 3


    "Cuanto antes se comience a probar…mejor"

    Corregir un bug con una revisión en la fase de captura de requisitos o en una prueba unitaria tiene un coste mucho menor a lo que costará corregir este bug cuando se detecte en una prueba de sistema, o peor aún, en una prueba de aceptación por el cliente.

    Principio 4


    "Las aglomeración de defectos. ¡Los bugs siempre van en pandilla!"

    Entender esto es muy importante para plantear una buena estrategia de pruebas: los bugs suelen ir en grupo. Se concentran en determinados puntos de un sistema software, no manteniendo una distribución uniforme a lo largo del mismo.
    Conclusión: si encuentras un bug en un componente, es muy probable que hayan más. Con lo que una posible estrategia sería centrarse en mejorar las pruebas de aquellos componentes para los que se han reportado un número mayor de bugs, para ser más eficaces a la hora de cazarlos en fases tempranas.

    Principio 5


    "La paradoja del pesticida"

    O la necesidad de ajustar continuamente tu plan de pruebas… porque según este principio un plan de pruebas va perdiendo efectividad conforme se ejecuta sucesivas veces. Con lo que cada vez tenderá a encontrar menos bugs… ¡lo que no significa que no hayan! (vuelve a leer el primer principio). Se habla de paradoja del pesticida ya que estos matabichos usualmente sirven para un tipo de bichos, pero una vez no queda ninguno del tipo específico que mata el pesticida… ¡nadie te dice que no hayan otros bichos campando a sus anchas!.

    Principio 6


    "Las pruebas se deben adaptar a necesidades específicas"

    Esto viene a enlazar con lo que he comentado antes. Si tu producto se centra en el ámbito de la seguridad deberás adaptar tus casos de prueba para intentar forzar situaciones o posibles escenarios no amistosos. Si quieres probar una intranet donde los servicios más vitales son los de imputación de horas y el de vacaciones, es lógico centrarse en estos servicios y no invertir tiempo en otros componentes infrautilizados.
    Además, hay que tener en cuenta que los recursos en los proyectos son siempre escasos, con lo que en el inicio del proyecto hay que preguntarse… qué estrategia debemos seguir para encontrar y corregir lo antes posible los bugs en las funcionalidades de mayor valor para nuestros usuarios.

    Principio 7


    "La falacia de la ausencia de errores"

    Para terminar, nos encontramos con la satisfacción del usuario y con el hecho de que los usuarios elijan tu software para resolver sus necesidades.Que hayas corregido muchos bugs no significa que finalmente tu software sea un éxito. En ocasiones hay que primar un buen time to market, para luego corregir los problemas de calidad que quedaron por el camino. Y esto si se hace de manera consciente y con una buena estrategia, a priori, no debe ser un problema.



    Conclusión



    La Importancia que tienen las pruebas del software de calidad del mismo son de gran utilidad para ver las fallas que presenta el sistema y poder analizar las futuras fallas además de esto también sirven para que cuando entreguemos nuestro software ya finalizado este software este culminado , tenga altos estándares de calidad y esté listo para entregar.

    Los Productos Software, sistemas y/o aplicaciones son creadas, desarrolladas e implementadas por seres humanos y por ende en cualquiera de sus etapas de creación se puede presentar una equivocación, al generarse esa “Equivocación” se puede conllevar a un defecto en el software, por ejemplo mala digitación, distracción al codificar, mala elaboración de un documento entre otras. Si no se ha identificado ese defecto y el software o la aplicación se ejecuta, hay un alto riesgo de que la aplicación no haga lo que debería hacer o el objeto para lo cual fue creada, es decir se genera un fallo o desperfecto, lo que podría generar una catástrofe , es importante conocer que los fallos también se pueden presentar por situaciones del entorno, como la radiación, descarga eléctrica, contaminación, inundaciones, Húmeda, Fuego, etc.

    Los Ingenieros de sistemas entonces deben estar en la capacidad de conocer y aplicar las diferentes normas, procesos y procedimientos para garantizar la calidad de los productos software, aplicando las pruebas de calidad de software necesarias para que con ellas se pueda ayudar a reducir los riesgos en las aplicaciones, logrando que se identifiquen los defectos antes de que se ejecuten, así de forma proactiva tomar decisiones que permitan hacer las actividades necesarias para mejorar las condiciones del software y ofertar un producto que satisfaga las necesidades del cliente.​

    Referencias:



    Mentor,I. (2013). Prubas de Dostware. agosto 27, 2017, de it-Mentor Sitio web: http://materias.fi.uba.ar/7548/PruebasSoftware.pdf

    Oriente,J. (2013). Los siete principios de las pruebas software. agosto 27, 2017, de JOR Sitio web: http://joaquinoriente.com/2013/07/20/los-siete-principios-de-las-pruebas-software/

domingo, 20 de agosto de 2017

Modelo Cliente-Servidor

Modelo Cliente-Servidor



Introducción



En el siguiente ensayo se detallara y documentara la importancia del modelo cliente-servidor que en este momento es uno de los más importantes y utilizados en el ámbito de enviar y recibir información. Así como la función que tiene para guardar datos o información en una base de datos.

Desarrollo



En el modelo cliente-servidor, el dispositivo que solicita información se denomina “cliente”, y el dispositivo que responde a la solicitud se denomina “servidor”. Los procesos de cliente y servidor se consideran parte de la capa de aplicación. El cliente comienza el intercambio solicitando los datos al servidor, quien responde enviando uno o más streams de datos al cliente. Los protocolos de la capa de aplicación describen el formato de las solicitudes y respuestas entre clientes y servidores. Además de la transferencia real de datos, este intercambio también puede requerir la autenticación del usuario y la identificación de un archivo de datos que se vaya a transferir.

Principalmente en el modelo cliente-servidor hay dos tipos de arquitectura:

Arquitectura en dos niveles



En este tipo de arquitectura el cliente manda una solicitud y el servidor responde a ella directamente con sus propios recursos, por lo tanto se puede decir que no necesita de ninguna otra aplicación para brindar el servicio.



Arquitectura en tres niveles



En esta estructura aparece un nuevo nivel llamado servidor de aplicaciones que se encarga de proporcionar los recursos solicitados por el cliente, aunque necesita de otro servidor( Servidor de bases de datos) para poder realizar su función.



Si comparamos estos dos niveles podemos concluir que la arquitectura de 3 niveles muestra:

  • Un mayor grado de flexibilidad
  • Mayor seguridad
  • Mejor rendimiento

    Conclusión



    En conclusión el modelo cliente servidor es un modelo flexible y adaptable al servicio que se quiera implementar lo que nos permite aumentar el rendimiento, el modelo cliente servidor puede envolver varias plataformas, bases de datos, redes y sistemas operativos que pueden ser de diferentes distribuidores, diferentes arquitecturas y funcionando todos al mismo tiempo.

    Ademas de ser un sistema ventajoso en cuanto a seguridad, ya que el servidor controla el acceso a sus datos, se necesita que el servidor nos autorice a acceder a él.

    Referencias:



    Cristy,T. (2014). ¿Qué es el modelo cliente servidor?. agosto 20,2017, de CodeJobs Sitio web: https://www.codejobs.biz/es/blog/2014/11/05/que-es-el-modelo-cliente-servidor-networking

    Gil,J & Villamor, J. (2014). El modelo cliente/Servidor. agosto 20,2017, de Terra Sitio web: http://www.it.uc3m.es/mcfp/docencia/si/material/1_cli-ser_mcfp.pdf
  • Seguridad Informática

    Seguridad Informática



    Introducción



    Junto al avance de la tecnología informática y su influencia en casi todas las áreas de la vida social, ha surgido una serie de comportamientos ilícitos denominados delitos informáticos.

    La presencia constante de gusanos de internet, virus y otras amenazas para los equipos es la causa de que la seguridad de la red constituya la preocupación número uno de los propietarios de equipos tanto a nivel empresarial como en el hogar.

    A medida que el internet nos va mostrando nuevas formas de uso de la tecnología, los cyberdelincuentes también aprovechan el desconocimiento de sus víctimas para hacer de las suyas.

    La seguridad en la red no se trata solo de ver los peligros tras cada archivo, pero tampoco actuar como si en el internet nada pudiera pasarnos.

    En el siguiente ensayo se detallara y documentara la importancia de la seguridad informática en nuestras vidas cotidianas para evitar futuros problemas.

    Desarrollo



    La seguridad informática protege de amenazas por infiltración a bases de datos, software y archivos importantes en las empresas.

    Para hablar de la seguridad informática antes se tiene que definir que es un amenaza,Se conoce como amenaza al peligro inminente, que surge, de un hecho o acontecimiento que aun no ha sucedido, pero que de concretarse aquello que se dijo que iba a ocurrir, dicha circunstancia o hecho perjudicará a una o varias personas en particular.

    Como sabemos, la seguridad informática se enfoca en proteger la infraestructura computacional y todo lo relacionado con ésta (también incluye la información contenida). Para este fin existen una serie de herramientas, métodos, estándares, protocolos, reglas, y leyes concebidas para minimizar los posibles riesgos para la infraestructura o información.

    La seguridad informática abarca software, bases de datos, metadatos (datos acerca de los datos), archivos y todo lo que signifique un riesgo si llegara a manos de otras personas; pues este tipo de información puede ser privilegiada o confidencial.



    El enemigo de la seguridad informática principalmente son los ataques informáticos que se definen como un intento organizado e intencionado causado por una o más personas para causar daño o problemas a un sistema informático o red. Los ataques en grupo suelen ser hechos por bandas llamados "piratas informáticos" que suelen atacar para causar daño, por buenas intenciones, por espionaje, para ganar dinero, entre otras.

    Un ataque informático consiste en aprovechar alguna debilidad o falla en el software, en el hardware, e incluso, en las personas que forman parte de un ambiente informático; para obtener un beneficio, por lo general de condición económica, causando un efecto negativo en la seguridad del sistema, que luego pasa directamente en los activos de la organización.



    Algunos de los tipos de ataques informáticos más frecuentes son:

    Trashing (cartoneo)



    Este ocurre generalmente cuando un usuario anota su login y password en un papelito y luego, cuando lo recuerda, lo arroja a la basura. Esto por más inocente que parezca es el que puede aprovechar un atacante para hacerse de una llave para entrar al sistema.

    Monitorización



    Este tipo de ataque se realiza para observar a la victima y su sistema, con el objetivo de establecer sus vulnerabilidades y posibles formas de acceso futuro.

    Ataques de autenticación



    Este tipo de ataque tiene como objetivo engañar al sistema de la víctima para ingresar al mismo. Generalmente este engaño se realiza tomando las sesiones ya establecidas por la víctima u obteniendo su nombre de usuario y password.

    Denial of Service(DoS)



    Los protocolos existentes actualmente fueron diseñados para ser hechos en una comunidad abierta y con una relación de confianza mutua. La realidad indica que es más fácil desorganizar el funcionamiento de un sistema que acceder al mismo; así los ataques de Negación de Servicio tienen como objetivo saturar los recursos de la víctima de forma tal que se inhabilita los servicios brindados por la misma.

    Modificación (daño)



    Esta categoría se refiere a la modificación desautorizada de los datos o el software instalado en el sistema víctima (incluyendo borrado de archivos). Borrado de Huellas: El borrado de huellas es una de las tareas más importantes que debe realizar el intruso después de ingresar en un sistema, ya que, si se detecta su ingreso, el administrador buscará como conseguir "tapar el hueco" de seguridad, evitar ataques futuros e incluso rastrear al atacante.

    Para evitar los ataques informáticos se han creado varios mecanismos de seguridad que evitan los problemas que estos causan algunos de ellos son:

    Mecanismos Preventivos



    Son aquellos cuya finalidad consiste en prevenir la ocurrencia de un ataque informático. Básicamente se concentran en el monitoreo de la información y de los bienes, registro de las actividades que se realizan en la organización y control de todos los activos y de quienes acceden a ellos.

    Mecanismos detectores



    Son aquellos que tienen como objetivo detectar todo aquello que pueda ser una amenaza para los bienes. Ejemplos de éstos son las personas y equipos de monitoreo, quienes pueden detectar cualquier intruso u anomalía en la organización.

    Mecanismos correctivos



    Los mecanismos correctivos se encargan de reparar los errores cometidos o daños causados una vez que se ha cometido un ataque, o en otras palabras, modifican el estado del sistema de modo que vuelva a su estado original y adecuado.

    Mecanismos disuasivos



    Se encargan de desalentar a los perpetradores de que cometan su ataque para minimizar los daños que puedan tener los bienes.

    Conclusión



    Debido a la constantes amenazas en que se encuentran los sistemas, es necesario que los usuarios y las empresas enfoquen su atención en el grado de vulnerabilidad y en las herramientas de seguridad con las que cuentan para hacerle frente a posibles ataques informáticos que luego se pueden traducir en grandes pérdidas.

    Es necesario mantener un estado de alerta y actualización permanente: la seguridad es un proceso continuo que exige aprender sobre las propias experiencias.

    Los ataques están teniendo el mayor éxito en el eslabón mas débil y difícil de proteger, en este caso es la gente, se trata de uno de los factores que han incentivado el número de ataques internos. No importando los procesos y la tecnología, finalmente el evitar los ataques queda en manos de los usuarios.

    Referencias:



    Borja,V. (2017). Seguridad informática. agosto 20, 2017, de Wikilibros Sitio web: https://es.wikibooks.org/wiki/Seguridad_inform%C3%A1tica

    López,E. (2015). Seguridad Informática. agosto 20, 2017, de UNAM Sitio web: http://redyseguridad.fi-p.unam.mx/proyectos/seguridad/Creditos.php