traductor

lunes, 22 de julio de 2019

Protocolos e interfaces de comunicación: El internet

Hola, en esta segunda parte de la entrada de protocolos de comunicación me gustaría dedicarlo exclusivamente a explicar como se comunican nuestros dispositivos en una red gigante que usamos prácticamente todo el tiempo, el internet.

Terminología

Internet:

Es una red mundial de computadoras comunicadas entre sí, el dispositivo donde ves este blog hace parte de esa red.

World Wide Web:

La World Wide Web o WWW es una colección de documentos de hipertexto (Estructura que permite compartir y enlazar información por medio de enlaces, por ejemplo este blog está escrito en texto y en el están las referencias de los recursos multimedia que uso, como imágenes) accesibles a través de internet, las páginas web como este blog hacen parte de la World Wide Web.

Dirección IP:

Es una serie de números que identifica a los dispositivos conectados en una red, suele estar conformados por 4 números que van desde el 0 hasta el 255 separados por puntos, por ejemplo, 192.168.0.1, este número es único por cada dispositivo.

Dirección MAC:

Es un identificador único que tiene cada dispoitivo a nivel global y está formado por 6 números hexadecimales separados por el sino ":", por ejemplo: FF:FF:FF:FF:FF:FF.

NOTA: Las direcciones MAC son únicas por cada dispositivo registrado en el mundo, a diferencia de las IP que son números únicos por cada dispositivo en una red.

Cliente y Servidor:

Son los roles que adquieren los dispositivos que participan en la red, el servidor provee los servicios e información que el cliente le solicita.

Protocolos de internet:

Para transmitir información por internet hay una infinidad de protocolos dependiendo de lo que se necesite y por ello no voy a hablar de ellos en esta entrada, pero te recomiendo que los investigues por tu propia cuenta.

Servidores DNS:

Son un directorio de direcciones IP, sin ellas para acceder a un recurso en internet tendríamos que aprendernos la dirección  IP del servidor que lo contiene, pero estos servidores DNS se encargan de transformar una URL que es más fácil de memorizar por nosotros cómo "www.google.com" a "216.58.222.228"

Estructura de las redes

Una red es un conjunto de dispositivos conectados entre sí que se transmiten información entre sí. Para la conexión a internet, manejamos dos redes, una local manejada por un dispositivo llamado "Punto de acceso"que también sirve de intermediario entre los dispositivos de la red local y el exterior o internet.

Redes locales (LAN y WLAN):

Las redes locales son las que se forman en nuestros hogares y tienen forma de estrella, en el centro hay un dispositivo que une a todos llamado Punto de Acceso (Access Point) si la red es inalámbrica como el Wi-Fi (WLAN, Wireless Local Area Network) o Hub o Switch si la red es alámbrica como el ethernet que usa cables (LAN, Local Area Network), en mi caso mi Punto de Acceso y Hub (de ahora en adelante lo llamaré AP independientemente si la red es alámbrica o inalámbrica) es el dispositivo que usualmente llamamos módem.

Este AP asigna una dirección IP única a cada dispositivo conectado a su red y funciona de intermediario entre cada dispositivo.

NOTA: La dirección del AP en una red local se llama IP privada y suele ser 192.168.0.1, puedes consultar la tuya por medio del comando "ipconfig" en la consola de windows.
Red en forma de estrella, característica de las redes locales.

Internet:

Esta es la red exterior y donde se comunican todos los computadores del mundo, en el cada AP obtiene una dirección IP única que le asigna su proveedor de internet, esta dirección IP es diferente de la que usa el AP para comunicarse dentro de la red local (Por seguridad cada cierto tiempo tu proveedor de internet cambia tu dirección IP pública a menos de que se lo indiques, esta rotación de IP pública puede ser problemática si tienes un servidor en tu red local) y esta es la dirección IP que usamos en el mundo exterior y es la que usamos para acceder a una página web.

¿Qué sucede cuando me conecto a una página web?

Pues para sintetizar todo, voy a explicar paso a paso que sucede si me quiero conectar a "www.google.com":
1) Conecto mi computadora a mi red local.
2) Mi router bajo la IP privada 192.168.0.1 me asigna la IP 192.168.0.25.
3) Le digo a mi router que me quiero conectar a "www.google.com"
4) Mi router bajo la IP pública 62.130.34.1 busca en un servidor DNS la IP correspondiente a la URL "www.google.com" y obtiene que debe el servidor con esa URL tiene la IP pública 216.58.222.228.
5) El router se conecta a 216.58.222.228, le dice que me quiero conectar a el y le manda mis datos como el sistema operativo que uso, el navegador, las dimensiones de mi pantalla, etc.
6) El servidor 216.58.222.228 le manda a mi módem una página web que está adaptada a mi navegador gracias a los datos que mi módem le mandó en el paso 5.
7) Mi módem reenvía la página web que recibió en el paso anterior a mi computadora.
8) Mi computadora me muestra la página principal de Google.
Un ejemplo gráfico de como se estructura la red local.

Esta explicación es muy superficial y sirve de introducción para quienes quieran indagar sobre este tema que es tan extenso, por lo que los invito a seguir investigando.

Gracias por leer esta entrada y cualquier duda u error que cometí déjenlo en los comentarios para que cada vez vaya mejorando, hasta la próxima entrada.

Protocolos e interfaces de comunicación

Hola a todos, en esta entrada me gustaría explicar los distintos protocolos o interfaces que usan algunos de nuestros componentes y accesorios electrónicos para comunicarse entre sí. Pero como de costumbre aclaremos unos términos antes de adentrarnos en el tema.

Terminología

Señal digital:

Son pulsos eléctricos que transmiten información binaria: 1 o 0, energía o no.

Señal análoga:

A diferencia de la digital, las señales análogas tienen muchos estados y no sólo 2 como la señales digitales.

En esta imagen podemos ver en la parte superior una señal digital (Tiene 2 estados) y en la inferior una señal analógica (Tiene múltiples estados).

Interfaz:

Es la conexión entre dos o más sistemas permitiendo su comunicación. Un ejemplo de estos es la interfaz USB, HDMI, PCI Express, etc.

Protocolo:

Son normas y pasos para la correcta comunicación entre sistemas.

RGB:

En el colegio nos enseñaron que los colores primarios eran el amarillo, azul y rojo, y que los demás colores los obtenemos mezclando estos 3 colores en distintas proporciones, pero cuando trabajamos con luz como en los monitores los colores primarios son el rojo, verde y azul (Red, Green and Blue) y en computación le asignamos valores de entre 0 a 255 a cada color (usualmente representamos análogamente al número 0 con 0 voltios o tierra y 255 con 5 voltios), por ejemplo:
* El color rojo es (255,0,0).
* El color verde es (0,255,0).
* El color azul es (0,0,255).
* El color blanco es (255,255,255) y el negro (0,0,0).
* El color rosado es (247,191,190).

Interfaces digitales:

Comunicación serial:

La comunicación serial consiste en mandar un bit a la vez por lo que nuestro bus de datos se compondría de una sola línea.

Algunas de las interfaces que se comunican por medio de puerto serial son:
-USB
-PCI Express
-Ethernet
-MIDI

Protocolo I2C:

Este es un protocolo serial bastante simple y ampliamente usado, en el los sistemas conectados pueden tener uno de dos rangos: el maestro (master) y el esclavo (slave), el maestro inicia la comunicación y el esclavo reacciona a las ordenes del maestro (Pueden haber múltiples maestros y esclavos). El protocolo tiene 2 buses uno para sincronizar relojes (SCL, Serial clock) y otro de datos (SDA, Serial data). El protocolo consiste en:
1) El maestro abre la comunicación (Coloca tanto la línea de datos como la de reloj en bajo).
2) El maestro manda la dirección del esclavo al que se quiere comunicar, esta debe ser de 7 o 10 bits.
3) El maestro manda un bit llamado: R/W (Read/Write), este bit le indica al esclavo si tiene que escribir o leer la información de su memoria (Read equivale a dejar SDA en alto y Write en bajo).
4) Si un esclavo tiene la dirección que mandó el maestro responde con un bit ACK/NACK (Acknowledge/No-Acknowledge o Recibido/No-recibido), este bit le informa al maestro que la información se mando correctamente (ACK equivale a dejar SDA en bajo NACK en alto).
5) El maestro manda un paquete de datos de 8 bits.
6) El esclavo manda un bit ACK/NACK para confirmar que la información se envió correctamente.
7) Se repiten el paso 5 y 6 hasta mandar la información completa.
8) El maestro cierra la comunicación (Coloca tanto SDA y SCL en alto).
Ejemplo de comunicación I2C.
Puede que parezca complejo pero no lo es, para demostrarlo la simpleza y la facilidad de usar el protocolo voy a colocar un ejemplo con un contexto bastante cotidiano:
Conectaste vía serial una memoria USB gestionada por un microcontrolador de rango maestro y un microcontrolador de rango esclavo llamado "1001011" con una pantalla y quieres mostrar una imagen llamada "Meme.jpg":
Maestro --> Abre líneas de comunicación (Paso 1).
Maestro --> "Hey 1001011" (Paso 2).
Maestro --> "Escribe en tu memoria esto" (Paso 3).
Esclavo --> "Ok" (Paso 4).
Maestro --> Manda los primeros 8 bits del archivo Meme.jpg (Paso 5).
Esclavo --> "Recibido" (Paso 6).
(Se repite el paso 5 y 6 hasta que se mande completamente Meme.jpg, en pocas palabras el paso 7)
Maestro --> Cierra líneas de comunicación (Paso 8).
Ahora el esclavo tiene el archivo Meme.jpg y muestra ese momazo en pantalla :D

Comunicación paralela:

Este tipo de comunicación digital es prácticamente igual a la serial sólo que tenemos más de una línea de datos por lo que podemos mandar más de un bit a la vez, un ejemplo de ello son los puertos paralelos que usábamos para conectar periféricos al computador, los puertos ISA que eran los PCI del pasado y el mismísimo PCI que usamos actualmente para conectar tarjetas de sonido, red, vídeo, capturadoras y demás expansiones a nuestro PC.
Puertos PCI, los puertos de expansión que usamos actualmente para conectar periféricos a nuestro computador. 

Interfaces analógicas:

Las señales analógicas ya no se usan tanto en la comunicación como antes, ya que son muy susceptibles al ruido electrónico generado por la estática, ondas de radio como la que usa mi celular para hacer llamadas y este ruido puede distorsionar mi información y por eso las señales análogas se usan con mucho cuidado, pero se usan y hay varias tecnologías que usan señales análogas pero estas han sido reemplazadas por otras soluciones digitales más rápidas y con menos riesgos de pérdida de información, un ejemplo que varios de nosotros aún usamos son los puertos VGA para transmitir vídeo o los jacks de audio como los que tienen los audífonos.

VGA (Video Graphics Array):

El puerto VGA lo hemos usado por varios años para transmisión de vídeo, actualmente esta interfaz está siendo reemplazada por soluciones digitales mucho más eficientes como HDMI o Displayport, pero aún hay un importante número que siguen usando VGA en sus monitores, como yo.
Puerto VGA.

Tabla con los pines y su descripción del puerto VGA en inglés (pinout).
En el puerto VGA  podemos destacar varios pines de interés:
 *Los pines 1-3 transmiten los valores de los colores rojo, verde y azul respectivamente.
 *Los pines 13 y 14 que controlan la sincronización horizontal y vertical respectivamente.
 *Los pines ID que sirven para que el monitor transmita su información técnica al computador como resolución, formato de imagen, tasa de refresco, fabricante, modelo, número de colores, etc. (Esto se hace vía serial y algunos fabricantes prefieren usar I2C para transmitir esta información de modo que usan el pin 12 como SDA y el pin 15 como SCL).

A grandes rasgos el VGA funciona así:
1) Se sincronizan los relojes de tanto el computador como del monitor.
2) El monitor informa sus datos vía serial al computador.
3) El computador manda los valores RGB de un pixel por los cables RED, GREEN y BLUE.
4) Por cada pulso del reloj se manda el valor RGB de un pixel hasta completar una línea.
5) Se manda un pulso por HSYNC (Sincronización horizontal) para dar a entender que se va a pasar a otra línea.
6) Se repite el paso 4 y 5 hasta completar la imagen en el monitor.
7) Se manda un pulso por VSYNC (Sincronización vertical) y por HSYNC para indicar al monitor que ya se completó todas las líneas que conforman la imagen.
8) Se procede a iniciar el dibujado de otra imagen.

En pocas palabras el monitor "Colorea" cada pixel desde la parte superior izquierda hasta la inferior derecha por cada imagen que vemos.

Como podemos ver los dispositivos que usamos a diario se comunican de una forma ordenada y coloqué estos ejemplos para motivarlos a que no vean la tecnología como algo muy complejo traído de otro mundo si no que investiguen e indaguen sobre este tema. Espero que les haya servido y cualquier inquietud o recomendación escríbela en los comentarios, gracias.

lunes, 15 de julio de 2019

El computador: Introducción y estructura interna

Hola, en esta entrada me gustaría explicar a más profundidad y actualizar una entrada sobre las partes del computador que subí hace 6 años así que vamos.

Introducción


Primero hay que definir que es un computador, sí googleamos la definición de computadora nos encontraremos algo como "Máquina electrónica capaz de almacenar información y tratarla automáticamente mediante operaciones matemáticas y lógicas controladas por programas informáticos" y no le falta razón, una computadora no es sólo esas torre que para gente no muy relacionada con el tema puede ser hasta "mágica" si no, que tanto nuestro celular desde las famosas "panelas" hasta celulares más potentes que mi computador de mesa, nuestro smartTV, portátil, servidores, las torres inmensas que la NASA usaba hace muchos años sólo para sus cálculos matemáticos, placas de desarrollo como el arduino y la raspberry pi, etc.

Pero antes de analizar las partes de un computador actual veamos primero unos términos esenciales que voy a estar usando.

Terminología

Hardware:

Es la parte física del computador como el monitor, la board, los chips, etc.

Software:

Es la parte digital del computador y a diferencia del hardware no lo podemos ver ni tocar como los programas informáticos.

Sistema operativo:

El sistema operativo o SO es un conjunto de programas esenciales que brinda y gestiona recursos al usuario y demás software. Algunos SO populares son Windows, MacOS, Ubuntu, Windows mobile IOS, Android, etc.

Bit:

Un bit o dígito binario es literalmente un 1 o 0; verdadero o falso; si o no; arriba o abajo; mojado o seco, etc. Es de lo que se conforman los datos que usa un computador, nosotros usamos una lista de 10 símbolos para expresar números (Sistema decimal) pero el computador al ser digital sólo usa 2 estados (Hay energía eléctrica o no) que encaja perfectamente con el sistema binario.

Byte:

El byte es una unidad de información formada por 8 bits (Puede tener valores desde 0 hasta 255 en binario).

NOTA: Los múltiplos y submúltiplos del byte son potencias de base 2 y no base 10 como estamos acostumbrados. Por ejemplo, un kilómetro contiene 1000 metros que es el cubo de 10 (10 ^ 3 = 1000) pero un kilobyte contiene 1024 bytes que es 2 a la décima potencia (2  ^ 10 = 1024) así que un kilobyte tiene aproximadamente mil bytes y así en adelante.

Palabra:

La palabra es una unidad definida por el hardware y es la cantidad de bits que se usan en el procesamiento de datos o el tamaño de los buses de datos, estos son generalmente múltiplos de 2 bytes (4, 8, 16, 32, 64 y así en adelante). Cuando decimos que mi computador es de 64 bits es que cada palabra está formada por 64 unos o ceros. Por ejemplo, en un sistema de 8 bits el número 12 está representado por la palabra 00001100.

Buses:

Los buses son el medio por el cual los componentes se pasan información entre sí y están formados por pistas de cobre o cables.

Operaciones:

Las operaciones son las acciones que realiza algún componente como hacer una operación matemática o lógica o escribir o leer algo en memoria y son controladas por un reloj que se dedica a mandar un pulso eléctrico cada cierto tiempo para dar la orden de hacer una operación y la frecuencia del reloj se mide en Hertz (Cantidad de veces en un segundo). Por ejemplo, mi procesador tiene una frecuencia base de 2,93GHz y significa que mi procesador hace dos mil novecientos treinta millones de operaciones por segundo (2.930.000.000 Hz) 😱. 

Estructura interna del computador

Ahora sí estamos preparados para ver los componentes de un computador reciente.

Board:

La board es una placa de circuito impreso donde se montan los componentes del computador.
Motherboard Gigabyte GA-H55M-S2.

Puertos:

Son las interfaces donde podemos transmitir datos como los puertos USB (Son universales y los puedes usar para conectar de todo), VGA (Transmiten vídeo), Jacks 3mm (Transmiten audio), PCI (Se usan para conectar periféricos como tarjetas de red, GPUs, etc.), SATA (Se usan para transferencia de datos), RJ45 (Se usa para conectarte a una red vía ethernet), etc.

Chipset:

Son un conjunto de chips que permiten la comunicación entre los distintos componentes del computador. En la board de arriba el chipset es el H55 de intel y el chip llamado puente norte (Chip que coordina la comunicación del puerto PCI Express, el procesador y la memoria RAM) se encuentra bajo el disipador que dice "GYGABYTE".

Fuente de alimentación:

Este componente se encarga de transformar esa onda senoidal a muy alto voltaje (Corriente alterna) a una línea constante con voltajes fijos (-12V, -5V, 3,3V, 5V y 12V) para que las partes de nuestro computador se abastezcan de manera correcta y segura de energía para que puedan funcionar.

Memoria de acceso aleatorio (RAM):

Es una memoria con una velocidad de escritura y lectura muy alta pero es volátil (Almacena información cuando está alimentada pero apenas se desconecta la alimentación "apaga el computador" todo el contenido de la memoria se borra) y por esta razón no es usada para almacenar datos a largo plazo si no que es usada para guardar los programas en ejecución e información necesaria para que estos funcionen bien.

Memoria no volátil:

Son memorias dónde podemos guardar información permanente pero son muy lentas comparadas con la memoria RAM, Alguna de estas son:

Memoria Flash:

Son memorias más avanzadas que las EEPROM logrando mayores velocidades y capacidad de almacenamiento. Son usadas en las memorias USB, SD, microSD, SSD, en dispositivos portátiles cómo cámaras, grabadoras de audio, celulares, tablets, etc.

HDD:

HDD o como las llamamos en español: unidad de disco duro son dispositivos de almacenamiento que escriben la información de manera magnética en discos que giran a gran velocidad. Son muy resistentes pero lentos comparados con las memorias flash.

SDD :

SSD o unidades de estado sólido son dispositivos de almacenamiento de datos que usan memorias flash. Los SSDs al usar memorias flash son mucho más rápidos que los HDDs pero su costo es mayor y su vida útil es menor ya que la memoria flash tiene un número de lecturas y escrituras, luego de sobrepasado ese número puede pasar de todo como una pérdida total de datos. 

También entran otras cómo los CDs, DVDs, disquetes, memoria ROM, EPROM, EEPROM, etc.

Unidad central de procesamiento (CPU):

Ahora hablemos sobre unidades de procesamiento, entre ellos encontramos a dos personajes, los microprocesadores y microcontroladores, pero antes de diferenciarlos veamos unos cuantos bloques esenciales de ellos: 

ALU:

La ALU o Unidad aritmética lógica es un circuito que se encarga de ejecutar las operaciones aritméticas como suma o resta y lógicas como Y, O, NO.

EPROM:

EPROM (Erasable Programmable Read-Only Memory) es una memoria ROM (Read-Only Memory, una memoria que solamente podía ser leída pero no puede borrada o modificada) que se puede borrar y posteriormente re-escribir iluminando el chip con luz UV (Ultravioleta). Luego se crearon las EEPROM (Electrically Erasable Programmable Read-Only Memory) que es una EPROM que se puede borrar con electricidad. 

Caché:

Esta es una pequeña memoria que está entre la CPU y la memoria RAM  y es más rápida que esta última de modo que ahí la CPU guarda información que va a usar más adelante o de manera muy seguida, así ahorra tiempo al no guardar y pedirle esa información a la memoria RAM.

Periféricos I/O:

Son interfaces que podemos usar para que el microcontrolador pueda interactuar con el exterior. Como su nombre lo indica se pueden usar tanto como para ingresar información como para extraer información (Input/Output o en español Entrada/Salida). Un ejemplo de estos periféricos son las salidas de vídeo y audio, los pines del arduino o de una raspberry pi.

Ahora si podemos definir qué es un microprocesador y un microcontrolador:

Microcontrolador:

Un microcontrolador es un chip que contiene dentro de sí todos los componentes para funcionar por sí sólo (ALU, Memoria RAM y ROM y Periféricos I/O). Suelen ser bastante baratos y sirven para tareas básicas y que no manejen un elevado volumen de información.
Microcontrolador ATmega328p, usado en las placas de desarrollo Arduino UNO.

Microprocesador:

El microprocesador consiste en un chip pero que sólo contiene ALUs, memoria caché y componentes necesarios como unidades de control para que estas funcionen, por lo que es necesario conectarle la memoria RAM y no tiene periféricos. Estos chips suelen ser más costosos que los microcontroladores pero pueden soportar un volumen de datos muy alto.
Microprocesador Ryzen 7 1800x, usados en computadoras de escritorio.

Unidad de procesamiento gráfico (GPU):

Son procesadores de datos que se especializan en las operaciones de punto flotante (números decimales) necesarios para el procesamiento de gráficos de modo que se aligera la carga que debe soportar la CPU al no tener que dedicarse a estos cálculos que le cuestan tanto. Sus aplicaciones están desde cálculos matemáticos de punto flotante, renderización de gráficos, inteligencia artificial, la cartografía y demás tareas que requieran más de una tarea a la vez.
GPU de la tarjeta gráfica NVIDIA Geforce 6600 GT.

Diferencias entre CPU y GPU

Diferencias entre CPU y GPU por Nvidia.
Como podemos ver en la imagen la CPU tiene pocas unidades de procesamiento pero estas son muy avanzadas de modo que son muy buenas centrándose en una sola tarea a la vez, en cambio la GPU tiene muchas unidades de procesamiento pero estos son simples de modo que son especialistas en resolver problemas separandolos en muchas tareas simples.

Estás son las partes de un computador y si nos fijamos estamos rodeados de ellos y no sabíamos, espero que esta entrada les haya sido de ayuda y cualquier sugerencia inquietud o error que haya cometido comentenlo de modo que cada vez vayamos mejorando, Gracias.