ATENCION: Los ejemplos que se van a mostrar y “tutoriales” tan solo tienen carácter educativo. En ningún aspecto comparto filosofías de invasión a la intimidad, ataques contra un sistema informático o cuestiones similares. En la medida que sea posible siempre se usarán ejemplos y formas que puedan ser usados por cualquier persona, de forma que pueda verificar los contenidos escritos. No obstante, por motivos más que obvios, materiales como contraseñas, nombres de usuarios o de hosts, serán omitidos o modificado en las capturas de pantallas realizadas (o las lineas escritas). Es decir, los ejemplos serán completamente reales, los datos mostrados a vosotros necesarios para poder pertrechar estos ejemplos no siempre lo serán (Sí lo serán los resultados). Para que esto conste de forma clara, todo material sensible modificado o falso estará resaltado en ROJO. Por motivos de seguridad, todo el material que sea expuesto aquí (exceptuando software propietario o libre, citaciones expresas o código de terceros) tanto texto, imágenes y código son propiedad del autor y está completamente prohibido su reproducción completa o parcial en otros lugares, espero que se comprenda.

 

Modelo OSI y TCP/IP

Antes de poder hablar de términos como IP, DNS, ARP, tramas, paquetes… es indispensable tener un conocimiento mínimo de como se constituye internet y de como funciona. Esa es la idea que nos trae hoy aquí. Estrictamente no es necesario conocer y comprender este tipo de términos a la perfección ni mucho menos, pero su conocimiento ayuda enormemente en cualquier tarea que tenga de forma directa o indirecta relación con una Red, como pueda serlo Internet. No obstante a la hora de tratar con prácticas como el Spoofing y el Sniffing (esta última especialmente) estos conocimientos sí pasan a ser imprescindibles.

Por ello vamos a centrar esta primera parte a comprender más o menos como se estructura Internet a un nivel, más que nada, teórico:

  • Modelo OSI y concepto de encapsulación
  • Capas/Niveles del modelo OSI
  • Modelo TCP/IP e Internet

 

 

Modelo OSI y concepto de encapsulación

En los setenta comenzaron a forjarse lo que serían las primeras redes entre diferentes sistemas. Pero como todo en esta vida, cada fabricante tenía su idea y para cada uno de ellos su idea era la mejor en comparación con el resto. La tecnología tiene que lidiar siempre con un problema siempre recurrente: La compatibilidad. Si una red se establece para poder interconectar entre sí una serie de diferentes dispositivos y/o sistemas, el problema era evidente… ninguna red era capaz de “hablar” con la red vecina, y solo mediante costosos equipos, recursos y otros hacían posible la operatividad entre ellos. Es así que fue necesario un acuerdo para establecer un modelo único por el cual regirse todos los fabricantes, de este modo sería mucho más simple crear interoperatividad entre sistemas diferentes. Así nació el modelo OSI.

La definición formal puede resultar un tanto confusa. OSI son las siglas Modelo de Interconexión de sistemas abiertos (Open System Interconnection), o incluso una definición más exacta podría darse como un modelo M.A.R.I.S.A. -> Modelo de Arquitectura de Referencia para la Interconexión de Sistemas Abiertos. Dicho de otro modo, de una forma más simple, podemos decir que el modelo OSI no es más que un modelo de referencia en el que se asientan ciertas ideas y sistemas para crear la conexión de múltiples sistemas entre ellos. Con este modelo de base, se comenzaron a crear protocolos y más protocolos… todo ello es lo que hace posible en última instancia lo que es Internet a día de hoy.

El modelo OSI se crea desde el inicio con la idea de una jerarquización y especialización clara de cada elemento que lo constituye. Es decir… cada elemento que va a jugar en OSI se intenta que sea aislado al resto, con una función bien definida. De este modo nacen los 7 niveles o capas (layers) en las que está constituida OSI. Cada capa layer en OSI está fuertemente especializada, tan solo se encargan de  recibir un dado de un layer adyacente, tratar el dato y enviar el dato al otro layer adyacente (si el layer es el último evidentemente no lo envía a ningun otro layer, al igual que si es el primero no lo recibe de otro).

Es importante recalcar el uso y función de cada una de estas capas, puesto que el conjunto de todos los protocolos que manejamos actúan de forma mayoritaria sobre una sola capa concreta del modelo OSI (algunos protocolos actúan en más de una capa, como pueda serlo por ejemplo Ethernet):


Esta imagen muestra perfectamente el modelo OSI y sus 7 capas o niveles. Pero antes de explicar la función de cada una hay que comprender como funciona.

Hemos dicho que la idea es que cada nivel sea especializado y en la medida de lo posible completamente independiente de los niveles superiores o inferiores. Esto se logra con el concepto de “Encapsulamiento”. Cada nivel no comprenderá ni tocará los datos que procedan de un nivel superior o inferior, lo tratará todo ello como una simple caja negra en la que no importa el contenido. Es por ello que cada unidad de información en cada nivel del modelo OSI posee un nombre distintivo. Existe no obstante un nombre genérico para todos ellos, PDU (Protocol Data Unit , o Unidad de datos del protocolo). Este término suele acompañarse con la letra al nivel que corresponde o el numero del nivel. Por ejemplo, la unidad de datos del novel 5 sería un 5PDU o SPDU. A partir del nivel 4 no obstante, cada nivel tiene un nombre también conocido diferente a PDU, aunque es igual de correcto usarlo. No obstante en informática está muy mal visto mezclar estos términos. Así, si nos encontramos en el nivel físico tan solo podemos hablar de bits. Frames si nos encontramos a nivel 2, paquete si estamos en nivel 3 o mensaje si estamos en nivel 4.

Para explicar el encapsulamiento, es necesario conocer esas PDU, puesto que explica perfectamente como funciona el modelo OSI y como un nivel envía información a otro:

Componentes PDU

El proceso de ascensión por los niveles es sencillo, el descenso de un dato sería exactamente igual pero en sentido contrario. Imaginemos que el nivel n+1 va a recibir un dato desde el nivel n. El nivel n realiza la función que tenga que realizar y cuando termina llama al nivel superior por medio del SAP (Punto de acceso al servicio) para enviar la información. Esa unidad de información se llama en dicho momento SDU del nivel n. Existen primitivas que realizan estas “llamadas” entre niveles, pero no compliquemos más el proceso. El caso es que ese nSDU justo antes de enviarse al nivel superior, es concatenado con un pequeño trocito de información adicional, llamado ICI (Interface Control Information, Información de Control de Interface) que es necesario para el paso de nivel. El nuevo bloque de información (ICI+SDU) pasa a llamarse IDU. En cuanto el IDU (Interface Data Unit, Unidad de datos de la Interface) cruza el nivel, el nICI es eliminado y el nSDU pasa a llamarse PDU del nivel n+1. Si fuese el nivel 3, se llamaría frame como ya hemos dicho. Un PDU es una unidad compuesta a su vez de una “cabecera” llamada PCI y el SDU. Este SDU por tanto contiene en realidad el PCI y el SDU del nivel n+2. La ÚNICA información por lo tanto que maneja el nivel n+1 será la PCI n+1. El SDU n+1 será enviado tal cual al nivel superior tal y como sucedió en el nivel n.

Dicho de otro modo, cada nivel tan solo se encarga de leer y eliminar, o añadir, la PCI de su nivel, dado que ICI es tan solo un trozo temporal de información que al final queda desechado. Es por ello que se llama al procedimiento encapsulamiento.

Visto de forma aun más resumida, imaginar que un navegador envía un dato a la red. El nivel de aplicación tomaría los datos enviados (7SDU) y le añadiría un PCI con información como el protocolo usado (HTTP), la longitud de los datos que se está enviando… El nivel de aplicación JAMÁS modificará por tanto el SDU entrante, ni siquiera mirará que datos son, simplemente recibirá el SDU y le añadirá en la PCI la información que tenga que añadirle. Despues de añadirle la PCI, la unidad pasará a llamarse 7PDU y será enviada por el SAP al nivel de presentación. Desde el punto de vista del nivel de presentación el proceso es exactamente igual al nivel de aplicación. El tan solo ve que recibe un SDU (que en este caso no sería más que la PCI+SDU del nivel de aplicación). Construye la 6PCI en el que especifica por ejemplo que los datos han sido cifrado por un algoritmo concreto o incluso encripta los datos (OJO!! si existe una encriptación o compresión de datos es evidente que el SDU es modificado) y la concatena con el 7SDU para formar el 6PDU, el cual es enviado al nivel inferior. El proceso continua hasta que al final en el nivel 1 todo es convertido en una mera secuencia de señales eléctricas enviadas por el cable de red. Cuando el otro extremo recibe la información, en realidad lo que está recibiendo sería algo como esto:

Encapsulamiento OSI

Aunque no se ha hablado anteriormente, un nivel puede no solo añadir una cabecera (PCI), sino que en algunas ocasiones y/o niveles encontramos que se añade al final del SDU una cola. Es el caso por ejemplo del nivel de enlace de datos. La capa física no obstante carece de PCI, ella es una mera intermediaria entre el medio y los datos lógicos.

Por último hay que añadir que aunque las dos imágenes anteriores son ciertas, existen mecanismos que no se han explicado, y que pueden ser usados en diferentes niveles si así se requiere por el protocolo. Es el caso de la segmentación/reensamblaje y la concatenación/separación:

Segmentación y Concatenación

En el caso de la segmentación, de un mismo SDU se forman diferentes PDU dentro del mismo nivel. Una vez que los diferentes PDU han sido creados se envía uno tras otro como si se tratase de PDUs diferentes de diferentes SDU. En el proceso inverso, el nivel n recibirá los diferentes PDU y los reemsamblará todos ellos en un solo SDU, que será el que se envíe al nivel superior.

La concatenación es diferente. En la concatenación se parte de diferentes SDU que producen diferentes PDUs. Esos PDUs se concatenan uno tras otro, y al finalizar es enviado todo el bloque, que corresponderá al SDU del siguiente nivel.

 

 

Capas/Niveles del modelo OSI

Capa 1, Capa Física

Esta capa es la encargada de enviar o recibir el flujo de bits final por el cable (o por el aire en el caso de conexiones wireless).  Es decir, en este nivel no importa en absoluto el contenido de esos bits de información, no importa si son correctos o son erróneos, si existe manipulación de bits o no existe manipulación de bits. Aquí no importa el destino de los datos o el origen de ellos, simplemente se codifica el flujo de bits de la forma necesaria para poder ser enviados por el medio que se esté usando (O al contrario, decodificar las señales recibidas del medio y convertirlas en bits de datos). Si es una red Ethernet por el cable Categoría 5e+, si es un Modem ADSL por el cable de teléfono de dos hilos de toda la vida, si es por WIFI por el aire. Dicho de otro modo, se transforman los bits en señales eléctricas (o viceversa) que serán las que transporten la información por el medio subyacente.

El nivel físico es posiblemente el más sencillo de comprender en función, aunque no por ello no deja de tener una complejidad importante. Aquí podríamos decir que las especificaciones eléctricas/electrónicas/magnéticas de los dispositivos de red son imprescindibles, normativas, temperaturas de operación, ruido del medio, especificaciones y/o estándares… y tampoco significa que no existan protocolos a este nivel, todo lo contrario, la mayoría de los lectores conocerá muchos de estos protocolos que operan exclusivamente a este nivel: Ethernet (IEEE 802.3), WIFI (802.11 b/g/n/a), xDSL, ISDN, GSM… en definitiva los protocolos de punto inicial/final por así decirlo que hacen posible las comunicaciones. Por ejemplo, un Modem ADSL actua en la capa física, Modulando o DEModulando las señales que tendrá que enviar o recibir por el cable de teléfono, y tendrá que hacerlo según el protocolo ADSL.


Capa 2, Capa de Enlace de datos

Es una de las capas del nivel OSI que mayor trabajo soporta y con no pocas tareas a llevar a cabo. Dicho de un modo simplista se encarga de la transmisión de los datos al medio adyacente (o a la capa física o a la capa de red) de una forma fiable y eficiente. Tomará un paquete (nombre de la unidad de información del nivel de red) del nivel de red y lo convertirá en un frame o trama (unidad de dato del nivel de enlace de datos) que será convertido en un flujo de bits y señales eléctricas que serán enviadas gracias al nivel físico. Si el dato es ascendente, tomará el flujo de bits procedentes del nivel físico y lo transformará en una nueva trama que será enviada al nivel superior, al nivel de red.

Esta capa se divide a su vez en dos subcapas, llamadas LLC (Logical Link Control o Control de Enlace Lógico) y MAC (Media Access Control, o Control de Acceso al Medio). Según la subcapa las funciones son diversas. Por ejemplo, en la subcapa LLC se realizan tareas como de corrección/detección de errores (según protocolos, por ejemplo en Ethernet no se realiza detección de errores en este nivel, pero si en WIFI) o el control de flujo.

LLC:

-Detección/corrección de errores: Se encarga precisamente de eso, asegurarse que los datos que se van a trasmitir al medio están libre de errores, o que los datos recibidos desde el medio se encuentran libres de ello. Alguna de estas técnicas se ha hablado en el capítulo de encriptación y autentificación cuando se habló de checksums y CRC.

-Control de Flujo: Es necesario la implementación de sistemas que garanticen que las tramas sean enviadas en el orden correcto o al menos conocer que trama es la primera y cual es la segunda en caso de que sean recibidas en otro orden (lo cual es bastante normal). Por otro lado es necesario la creación de frames especiales que indiquen el éxito o fracaso de la recepción de un frame de datos, como pueden ser los frames o paquetes ACK, y gracias a estos ACK y otras técnicas es posible conocer no solo el orden de los frames, sino si es necesario reenviar alguno que se ha perdido o transmitido con errores o cuestiones similares.

-Multiplexación de protocolos: Digamos que es posible multiplexar (“unir”) en una misma trama diferentes protocolos, es decir que en una misma trama exista dos o mas tipos de informaciones diferentes, de modo que cuando se realiza el proceso inverso se obtienen dos tramas diferentes con funciones completamente diferentes. Pensar en ISP que emiten simultaneamente a sus suscriptores televisión y conexión a Internet, de forma simultanea. Esto es posible exactamente por este procedimiento, las tramas de televisión se multiplexan con las tramas destinadas al tráfico de internet, y el Modem/router del cliente identificará que información tiene que destinar para la televisión de pago y cual de la información pertenece a Internet (no televisión).

MAC:

-Control de Acceso al medio: Como su propio nombre indica. El nivel de enlace de datos necesita conocer como tiene que acceder al medio para poder enviar los datos. La capa física tan solo coloca los datos en el canal y no se preocupa absolutamente de nada, es el nivel de enlace de datos quien tiene que supervisar cuestiones como que el medio se encuentre disponible en dicho momento. ¿Por qué es esto necesario? Imaginar que sucedería si se pretende enviar un frame via WIFI al router si en dicho momento exactamente el router está recibiendo un frame de otro equipo. En tal caso se produciría una colisión. Por ello es necesario sistemas de control que supervisen esto. Los dos modelos más comunes que podemos encontrar es por ejemplo el estandar CSMA/CD que es el empleado en redes Ethernet o el estandar CSMA/CA usado en WIFI, las redes Token Ring y Token BUS están perdiendo fuelle en estos últimos años. Hay que tener en cuenta que la eficacia de estos sistemas no depende si uno es más sofisticado que otro o cual es mejor, sino cual es más idóneo para cada medio. Por ejemplo, en caso de Ethernet y CSMA/CD el procedimiento de control es muy simple

a) CSMA/CD: Se comprueba que nadie esté transmitiendo en dicho momento. Si el medio no está libre se vuelve a intentar. En cuanto el medio esté libre se envía el primer bit y el protocolo permite conocer si ha existido o no colisión. Si ha existido se intenta enviar de nuevo el bit. Si no ha existido colisión se procede a enviar el segundo bit. Así hasta completar el envío de toda la trama

b) CSMA/CA: Se envía al medio una trama especial (RTS) preguntando si el medio está libre. Cuando el medio lo esté, recibirá una trama especial CTS, momento en el que se enviará la trama. Una vez enviada la trama y recibido un ACK de trama recibida, se procederá a la espera de un tiempo aleatorio. Tras el cual se procederá al envío de la segunda trama y así sucesivamente.

-Sincronización de Frames: Si el control de flujo es necesario para la fiabilidad de los datos, igualmente es necesario un mecanismo que sea capaz de separar o crear las tramas como tales. Es decir, de un flujo de bits que procede del nivel físico saber donde comienza y donde termina una trama y localizar donde comienza y termina la siguiente. Del mismo modo se tiene que encargar de “marcar” la trama que se va a enviar para que el destino pueda del mismo modo conocer cual es el inicio y fin de las tramas.

-Direccionamiento MAC: la gran mayoría conoce lo que es una dirección IP, pero si acudimos al modelo OSI, IP es un protocolo de nivel de red. En realidad existe un direccionamiento a más bajo nivel basado en en un direccionamiento físico. Se denomina físico porque la trama como tal no se envía en realidad a una IP, sino a una interfaz física. Cada interfaz física por tanto posee una dirección física única en el mundo, y así sucede. Es lo que llamamos comúnmente como dirección MAC, que no es más que un identificador grabado en fábrica que se le asigna a cada dispositivo de red. Recordemos que cada nivel no comprende, ni tiene que hacerlo, que sucede por encima o por debajo de su nivel. De este modo el nivel de enlace de datos especificará (o leerá) en la trama el origen y destino de la trama a nivel físico. De este modo, el nodo de red que reciba la trama sabrá a quien tiene que destinarla, o si tiene simplemente que desecharla porque dicha trama no tiene nada que ver con él.

Este ID que denominamos como dirección MAC es un ID que administra la organización IEEE y que es necesario comprar si se desea crear con fines comerciales un dispositivo de red. Este ID está constituido por una cadena de 6 bytes hexadecimales, generalmente expresado como 00:11:22:33:44:55 o como AA-12-BB-34-CC-56. Cada adaptador físico posee su dirección MAC única, lo cual no quiere decir que esta pueda ser alterada por software de algún modo.

-QoS: En este nivel y subnivel se lleva a cabo una labor también importante, como es QoS (Quality Of Service o Calidad de Servicio). QoS son sistemas de priorización de tráfico. Dado que el ancho de banda queramos o no es limitado (no es infinito) es necesario en algún momento priorizar un tráfico frente a otro. De lo contrario se producirían errores de transmisión intolerables en cuestiones que requieran aplicaciones sensibles al tiempo. Por ejemplo solo hay que pensar en un software de monitorización de un paciente, en la que las órdenes se realizaran y recibiesen por red. En una aplicación similar no podríamos permitirnos el lujo de la existencia de retrasos en las señales debido a una sobrecarga en nuestra red. No podríamos permitir que (dado que el ancho de banda no es infinito) por leer el correo en nuestra red, descargar archivos o cualquier otra labor, pudiese relentizar dicha monitorización. Es necesario por tanto priorizaciones de tráfico. Así por ejemplo podríamos disponer de tráfico pesado pero que poco importa su retraso o completamente el caso concreto, tráfico muy ligero pero con un retraso mínimo. O tráfico normal pero para el que se requiere una sincronización y estabilidad absoluta.

-Otros: Existen otras funciones quizás menos conocidas o usadas de forma popular, como VLAN o la commutación de paquetes.

como protocolos que podemos indicar en el nivel de enlace de red tenemos desde Ethernet, ARP (que se verá exhaustivamente), Frame Relay, PPTP/L2TP…

 

Capa 3, Capa de Red

Quizás la capa más conocida de forma popular dado la importancia manifiesta del protocolo IP. Este nivel tiene 2 funciones principales:

-Encaminamiento: A fin de ser posible la comunicación entre dos dispositivos en la ubicación que sea, es necesario un sistema que sea capaz de destinar un paquete desde un origen a un destino por una ruta que sea la óptima según el momento o situación. Esta ruta puede variar por razones de latencia o simplemente congestión.

-Control de congestión: Dado que es importante conocer aquellas rutas que no son eficaces, es necesario disponer de mecanismos que puedan identificar dichos nodos y poder así establecer rutas diferentes

Hay que tener en cuenta que IP no es más que un protocolo más de este nivel, existen otros muchos protocolos que no requieren de una IP para poder ser usados, como por ejemplo IPX o ICMP. No obstante las redes que tenemos constituidas a día de hoy, la infinita mayoría, corresponde al modelo TCP/IP, en el que el protocolo IP está presente prácticamente en todo momento. Pero IP será tratado en otro momento de forma más exhaustiva.

Como hemos dicho existen otros protocolos de nivel de Red como pueda serlo IP, ICMP, IGMP, IPX…

 

Capa 4, Capa de Transporte

Los niveles 1 2 y 3 están orientados a mantener una comunicación directa tan solo entre sí mismos y el nodo de red adyacente. A partir del nivel 4 la comunicación pasa a ser entre host y host. Toda la información que se trata en los niveles 1 2 y 3 es tan solo de interés para los nodos de red, e incluso estos mismos son los que la modifican según necesiten para poder ir encaminando, detectando y enviado el mensaje al destino final. la comunicación que mantienen los 3 primeros niveles por tanto se limita entre nodos adyacentes.

En el nivel 4 esto cambia. La unidad de información pasa a llamarse mensaje, y aquí ya no importa el destino o el origen del mensaje dado que de eso se encargarán otros niveles. El nivel 4 se preocupa tan solo en garantizar el correcto transporte y entrega de los datos al host destino, no al nodo de red siguiente, que eso es función del nivel de enlace de datos. Hay que tener en cuenta que a lo mejor el mensaje tiene que cruzar medio mundo, 20 routers para poder llegar al destino final. Eso es lo que no le importa a la capa de transporte, el no ve el destino como un punto del mapa del mundo, sino como un dispositivo que está a su lado y con el que quiere comenzar una comunicación. Es por ello que muchas de las funciones que realiza el nivel de red pueden ser encontradas en las funciones que realiza el nivel de enlace de datos. ¿Pero entonces no es algo redundante? ¿No sería suficiente con permitir un control similar en el nivel de enlace de datos? No. El nivel de enlace de datos tan solo garantiza un medio libre de errores y correcto entre nodos, no más allá. El nivel de transporte no garantiza un medio libre entre dos nodos, sino que su información es recibida de forma correcta en el destino. Sin este tipo de control en la capa de transporte, se podría enviar un mensaje por el mismo equipo de forma correcta, pero podría darse el caso que en el salto número 10 por el router 10 por el que transita el mensaje el mensaje se perdiese por una desconexión del mismo o por una congestión intensa. De cara al host origen, del nivel de enlace de datos, la trama fue correctamente recibida por el router 1, luego para él no existiría problema alguno. En cambio, el nivel de transporte se mantendría esperando para la recepción de los datos y jamás sabría que el mensaje se perdió en algún punto de la red.

Es por ello que las funciones que puede desempeñar la capa de transporte (Dependiendo siempre del protocolo usado) son muchas de ellas similares a las que encontramos en enlace de datos, aunque esta vez siempre entre hosts:

-Control de Flujo y Corrección/Detección de Errores: Tal y como fue explicado en el nivel 2

-Acceso múltiple: Comúnmente conocemos esto como “puertos”. Todos los niveles del modelo OSI tienen una primitiva (un elemento) llamado “Service Access Point” (SAP, punto de acceso al servicio) por el cual se accede al nivel superior/inferior. En el caso del nivel de transporte este SAP es lo que denominamos de forma coloquial “Puerto”. La funcionalidad de estos puertos no es otra que la de poder establecer conexiones múltiples de forma simultanea sin que unas infieran en otras. Es decir, se requieren diferentes accesos diferentes a este nivel. Se puede pensar que que este mecanismo podría ser necesario igualmente en otros niveles, pero no es así. Recordemos que por debajo del nivel de transporte está el nivel de red y a él le da exactamente igual el dato que esté recibiendo, el trata todos los mensajes que recibe del mismo modo, le da igual orden, prioridad, si tiene o no tiene errores… en cambio, para el nivel de red si es muy importante conocer que mensaje está destinado a cada puerto, dado que cada puerto será una comunicación que se está realizando de forma simultanea, tiene que conocer que mensaje es cada cual y a quien está destinado.

Podemos decir igualmente que existen dos tipos de protocolos en la capa de transporte, aquellos orientados a la conexión y aquellos no orientados a la conexión. Podemos decir que en el primer caso, la idea es que antes de transmitir los datos es necesario el establecimiento de una conexión antes de transmitir los datos y la finalización de esta al acabar. Por el contrario en aquellos no orientados a la conexión esto no es necesario, y cada mensaje es enviado sin necesidad de crear conexiones. Generalmente se usan protocolos de transporte orientados a conexión como TCP cuando los datos a transmitir requieren de cierta fiabilidad y control sobre ellos, mientras que lo común es usar protocolos no orientados a la conexión cuando lo que se requiere es simplemente el envío de datos sin importar siquiera si hay errores en la transmisión. Es el caso de UDP. Pensar por ejemplo en aplicaciones que es necesario controlar perfectamente la información, como por ejemplo a la hora de querer ver una página web, no queremos que la página se muestre mal. Por el contrario, podemos pensar en un juego online en el que se está transmitiendo de forma continuada y masiva las coordenadas de la posición de nuestro personaje al servidor. No sucedería realmente nada si algunos datos se pierden por el camino, dado que no son datos que podríamos entender como críticos. Otras muchas veces es preferible usar este tipo de protocolos y dejar que la aplicación en sí la que por otros mecanismos software verifique la fiabilidad de dichos datos.

De todos modos TCP/UDP será también extendido de forma amplia, y esto servirá más que nada como una “mera” introducción.

 

Capa 5, Capa de Sesión

La función de la capa de sesión no es otra que la de abrir, configurar, mantener y cerrar una sesión entre dos aplicaciones, generalmente en un esquema de aplicaciones cliente-servidor. En realidad ha sido un nivel poco usado, dado que la mayoría de las funciones de las que puede encargarse suelen ser aplicadas en la misma Capa 7, en nivel de aplicación. No obstante tenemos algunos protocolos tipo que nos muestran perfectamente de lo que hablamos, como el protocolo SSH (bastante usado) o SCP. Otro ejemplo común de ello es el protocolo de Microsoft NetBios para la resolución de nombres en redes Windows.

 

Capa 6, Capa de presentación

La función de la penúltima capa es preparar los datos para la capa final (en caso de una conexión entrante) y prepararlos para que sean enviados. Es por ello que esta capa se encarga fundamentalmente de tres funciones:

-Conversión de datos: Las redes pueden estar compuestas por diferentes sistemas que tratan los datos de manera diferente. Por ejemplo diferente codificaciones de caracteres. La capa de presentación es necesaria por tanto si se quiere que diferentes sistemas que usan codificaciones diferentes puedan hablar entre ellos.

-Compresión: Poco es necesario añadir. En el nivel de presentación puede ser necesario una compresión o descompresión de estos. Esto no quiere decir que cualquier compresión de datos en una red se sitúe en este nivel, aunque este nivel se debería de encargar de ello

-Cifrado: Los datos pueden necesitar un cifrado de datos o descifrado a este nivel. Aunque protocolos como SSL/TLS puedan ser usados a nivel de transporte, puedes ser usado igualmente en nivel de presentación, siendo posiblemente una solución más segura.

Protocolos que funcionen en este nivel? TLS o SSL para comenzar, aunque podemos citar también por su gran implementación “MIME”, protocolo usado ampliamente en la codificación de correos electrónicos.

 

Capa 7, capa de aplicación

Por último, el nivel de aplicación. Si el nivel físico hace de nexo entre los datos lógicos y meras señales eléctricas, el nivel de aplicación hace de nexo entre la aplicación y por tanto el usuario y la red. Es el nivel más cercano al usuario e interactua directamente con él. Posiblemente aquí encontremos la mayoría de los protocolos más conocidos, quizás excluyendo TCP o IP: HTTP, SMTP, POP, IMAP, DNS, FTP, DHCP… así un navegador web es el que interactua con el usuario para poder visionar una web, y el protocolo más cercano al usuario es por tanto HTTP y DNS. Si usamos un gestor de correo es SMTP, IMAP y POP los protocolos que hacemos uso para poder leer nuestro correo… estos protocolos interactuan directamente con nosotros, y serán las diferentes capas las que se irán transformando los datos hasta acabar convirtiéndolos en una mera sucesión de señales eléctricas que contienen toda la información necesaria para alcanzar el destino.

 

 

Modelo TCP/IP e Internet

A medida que ascendemos por los niveles del modelo OSI, comprobamos ciertos aspectos que pueden o podrían ser implementados en otros niveles, o agrupar varios de ellos por el poco uso que puede darse. Hay que tener en cuenta que el modelo OSI es tan solo un modelo de referencia, y por supuesto no se pensó en modo alguno en la existencia de Internet, y menos aun de lo que es Internet a día de hoy. Es por ello que del mismo modo que nació el modelo OSI, apareció el modelo TCP/IP, por supuesto basado íntegramente en el modelo OSI. Es más… el modelo TCP/IP que es el que es usado hoy en día es prácticamente el modelo OSI solo que simplificado y algunos pequeños cambios.

El modelo TCP/IP es el siguiente:

TCPIP Vs OSI

Como se aprecia, básicamente el modelo TCP/IP condensa los niveles de aplicación, presentación y sesión en tan solo un Nivel Aplicación. Por otro lado condensa los niveles Físicos y enlace de datos en un nivel de Enlace de datos (o acceso a la red). De este modo, el modelo TCP/IP pasa a tener tan solo 4 niveles diferentes, niveles que funcionan exactamente igual que en el modelo OSI, salvo los niveles de enlace de datos y aplicación que se encargarían también del peso restante.

Aunque el modelo TCP/IP se puede ver como una simplificación al modelo OSI, no podemos en ningún momento afirmar que el modelo TCP/IP sea siquiera compatible con OSI. Es cierto que las funciones de los diferentes niveles es el mismo con la diferencia de que algunos de ellos están condensados, pero existen muchas otras diferencias a menor escala que hace que cada día que pasa el modelo TCP/IP sea más diferente a OSI. Esto tiene también una explicación.

El modelo OSI es un modelo muy antiguo en lo que toca al ritmo galopante de nuestros días en cuestión de tecnología. Se crean o destruyen protocolos así hagan falta, e incluso muchos de ellos es complicado ubicarlos en un nivel concreto, tanto en OSI como en TCP/IP. Mientras que OSI es un modelo de referencia, TCP/IP es un modelo que podríamos llamar “en producción”, sujeto a modificaciones en el tiempo según las necesidades. Es cierto que la inmensa mayoría de estas necesidades se satisfacen con protocolos y/o técnicas diferentes, pero no tiene por qué limitarse a esto. Podemos ver OSI por tanto como un modelo rígido y TCP/IP como un modelo derivado de OSI que ha continuado por si mismo, aunque como hemos dicho, una vez más, es muy muy similar en forma y contenido a OSI.

Es evidente que el modelo TCP/IP tiene como características casi indiscutibles la necesidad del protocolo de red IP o el protocolo de transporte TCP. Pero dentro del modelo TCP/IP existe un conjunto bastante grande de protocolos, lo que se conoce como la pila (o stack) de protocolos TCP/IP. Muchos de ellos nos son más que conocidos: IP, ARP, DNS, TCP, UDP, ICMP, IGMP, IPsec,L2PT, PPTP… aunque es posible hacer funcionar una red TCP/IP con un conjunto limitado de esta pila de protocolos. Así, el modelo TCP/IP no solo es una arquitectura propia que explica como se pueden relacionar los diferentes protocolos entre sí, sino que especifica los diferentes protocolos que harán uso de dicho modelo.

Su importancia es evidente: Internet y redes LAN. Podríamos decir que Internet ha sido el gran logro, pero no hay nunca que olvidar las redes locales. Es cierto que Internet está constituida por el modelo TCP/IP, pero las redes LAN no tienen por qué estarlo. Por ejemplo aun se encuentran redes en IPX, lo que hace necesario elementos para la correcta interoperatividad entre diferentes modelos.

 

Para terminar este capítulo, hay que hablar de Internet. Modelo OSI, modelo TCP/IP, protocolos… toda esa teoría, conceptos y herramientas ha servido a día de hoy para poder constituir la red de datos más grande que se ha conocido (si excluimos el cerebro humano como red neuronal). Actualmente Internet se puede concebir como una red con vida propia. El éxito de Internet y su gran importancia desde el punto de vista de este escritor es que es la primera “construcción” humana de la cual TODOS formamos parte (al menos si así lo deseamos). Ese es el principal peligro que siempre acosará Internet y que esperemos que por siempre Internet pueda sortear la política o los intereses económicos.

¿Que es Internet? ¿Quien es el dueño? ¿Que es de los ISP?

Internet es una red abierta, libre, gratuita. Pero para poder mantenerla, expandirla y hacer un buen uso de ella, actualmente existen dos organizaciones sin animo de lucro que se encargan de ello. Podríamos verlos como “sus dueños”, aunque esta afirmación es completamente errónea.

La primera organización nacida relativamente ayer, en el 1998, es la encargada de la asignación de direcciones IP y de nombres de dominio, es la ICANN (Internet Corporation of Assigned Names and Numbers), de la cual pende una rama de ella conocida como IANA, la cual se encarga de parte de esta labor, aunque su papel era el de ser la misma ICANN antes de que esta fuese constituida como tal. Actualmente IANA se encarga principalmente de la coordinación del direccionamiento IP, los servidores DNS raíces o de cuestiones como los puertos TCP/UDP. Por el otro lado tendríamos a la IETF, que sería la organización que crea, elimina o modifica los protocolos del nucleo de TCP/IP, como pueda serlo el mismo protocolo IP, TCP, UDCP… si bien es cierto que muchos protocolos de Internet son mantenidos por otras entitades, la IETF tan solo se encarga de aquellos protocolos esenciales. Por ejemplo el cada día más próximo IPv6. Pese a la polémica siempre suscitada de si la ICANN debería de ser una organización americana o no, personalmente por ahora siempre han realizado una labor impecable.

Como vemos, Internet por tanto es la red que se forma con los mismos cientos de miles, millones de dispositivos conectados entre sí de una u otra forma, ya sean redes privadas o redes públicas. Así, cuando conectamos nuestro equipo a Internet, estamos formando parte en dicho momento de Internet. Quizás sea más fácil pensar en Internet como un cable interminable al cual el que quiera puede cuando quiera acercar el brazo y unirse, haciendo que al cable le crezca otro brazo más. Y aunque parezca lo contrario, es una red libre, nosotros no pagamos por el acceso sus infraestructuras… ¿o si? Para poder tener acceso a la red de redes necesitamos un ISP, un proveedor de servicios que nos alquila sus infraestructuras para poder conectarnos a ella. Podemos pensar que en u principio Internet no era más que un cable que conectaba dos universidades, una en Estados unidos y otra en ginebra. Podemos pensar que en algún momento se lanzó otro cable a otro pais en estados unidos, formando la primera pequeña rad de ordenadores interconectados y separados por cientos o miles de kilómetros. A esta imagen tan solo hay que añadirle ramas y más ramas y más ramas… universidades interconectadas entre ellas, infraestructuras y cableado que surcan los océanos… del mismo modo los ISP crean o mantienen sus propias redes, se conectan a los enlaces principales de internet, y así poco a poco se forma la mayor red de las redes:

Gracias al direccionamiento IP y a la eficiencia de los servidores de nombres de dominios, podemos acceder virtualmente a cualquier servidor público del planeta con tan solo conocer o su IP o su nombre de dominio de tenerlo. De ahí la importancia de la ICANN. No obstante, la ICANN delega en organizaciones regionales la gestión de las direcciones IP. Dicho de otro modo, mientras que la ICANN es la organización padre, las organizaciones regionales RIR (Regional Internet Registries) serían sus hijas. Existen 5 entidades registradoras de Internet, cada una de ellas se ocupa de una región diferente del planeta, de modo que ninguna se solapa. Es decir, cada una de estas RIR serían la máxima autoridad registradora IP, tan solo estando por encima de ellas la ICANN e IANA

  • RIPE NNC -> Se encarga de toda Europa y prácticamente toda Asia, excluyendo el Sur de esta.
  • AfriNIC -> Se encarga del continente Africano en su totalidad
  • APNIC -> Todo el Sur de Asia más toda Australia
  • ARIN -> América del Norte
  • LACNIC -> América Central y Sur América


Distribución de las Organizaciones RIR


Del mismo modo que se gestiona todo el direccionamiento IP, es gestionado todos lso nombres de dominio. Esto es necesario para el correcto funcionamiento de la Red, es fundamental. Esta función recae igualmente y en última instancia en la ICANN, aunque esta permite a empresas tanto públicas como privadas actuar como agentes registradores, por supuesto con todos los permisos pertinentes y todas las restricciones de cada caso. Así, la ICANN es la encargada de la gestión y control de los dominios de primer nivel, conocidos como Top-Level Domain o simplemente TLD

¿Pero que es un nombre de dominio? Un nombre de dominio no es más que un identificador asignado a un usuario (ya sea físico, empresa…) que generalmente se enlaza a una IP, de modo que su ubicación en Internet queda completamente definida por dicho identificador. El sistema de nombre de dominios es jerárquico, y debe de ser leído siempre de derecha a izquierda, donde cada punto separará los diferentes niveles del dominio.

Dicho esto, los dominios de primer nivel por tanto son aquellos identificadores que se encuentran a la derecha del todo, antes de encontrar el primer punto de separación. No obstante, los dominios de primer nivel no son infinitos como cabría esperar, existen dos grupos bien definidos de los dominios de primer nivel:

  • ccTLD (Country Code TLD): Podríamos traducirlo algo así como TLD regionales o traducirlo literalmente como TLDs por código de País (o algunas regiones), los cuales son los únicos dominios de primer nivel que poseen tan solo dos letras. La ICANN concede a cada País por tanto un dominio de primer nivel, correspondiente este a dos letras, que coinciden con un estandar ISO (exceptuando alguna que otra excepción por motivos históricos). Así por ejemplo, el dominio de primer nivel reservado para España es “.es” o para francia “.fr”. No obstante, cada País tiene el derecho de explotación de su dominio de primer nivel, dándose el caso de que algunos países lo vendieron a empresas por dinero.
  • gTLD (Generic TLD): TLDs genéricos. Todos ellos poseen tres o más caracteres, aunque la mayoría son de 3 y 4. Aquí de nuevo hay que hacer distinción entre 3 subgrupos:

    -Generales: Aquellos que dependen exclusivamente de la ICANN y regidos por sus respectivas normas de registro: .com .net .org .pro .bif .info .name
    -Patrocinados: dominios propuestos a la ICANN por agencias u organizaciones privadas por diferentes motivos, desde culturales, estatales… y algunos de ellos bien “pagados” a la ICANN: .aero .asia .cat .coop .edu .gov .int .jobs .mil .mobi .museum .tel .travel.
    -Infraestructura y Reservados: Son dominios de primer nivel que no se usan. Algunos se usan para pruebas, otros se mantienen por razones históricas: .example .invalid .localhost .test .arpa

Según lo explicado, para una persona física sería imposible registrar un dominio de primer nivel, dado que los administra tan solo la ICANN y hay los que hay. Cuando registramos dominios realmente lo que hacemos es en el mejor de los casos registrar dominios de segundo nivel, aunque muchas veces se confunde y se les llama de primer nivel. Así por ejemplo, el dominio Theliel.es no es un dominio de primer nivel, sino de segundo. El primer nivel es “.es”, el segundo nivel es “theliel.es”.

Los ccTLD son administrados de manera local por las agencias de cada Pais encargadas a ello, por ejemlo en españa la agencia encargada del registro y mantenimiento de los dominios .es es “nic.es” perteneciente al propio gobierno, lo que no quita que existan entidades intermediarias que son agentes registradores legales. Los gTLD no obstante, son gestionados por agencias o empresas privadas y por supuesto en última instancia por la ICANN. Pero esto no evita el problema de preguntarse como se enlazan esos nombres de dominio al sistema de direccionamiento IP. Y es ahí donde entra en juego el protocolo DNS y los servidores de nombres de dominios. Aunque DNS será explicado en el siguiente capítulo, si hay que comprender que es necesario ciertos servidores (llamados servidores raíces) que se encarguen del grueso de todo ello, de toda la mayoría de toda la gestión DNS. Es así por tanto que existen 13 servidores raíces esparcidos por todo el mundo, administrados tanto por compañías publicas como privadas, y por supuesto por seguridad, existe réplicas de la mayoría de ellos, para distribuir la carga y para sustitución en caso de fallo, avería o ataque Hacker. Todos ellos se denominan alfabeticamente comenzando por la primera letra: “letra.root-servers.net”, siendo la letra desde la A hasta la M:


Gracias a estos elementos explicados, Internet es posible. En el próximo capítulo veremos los protocolos más importantes que hacen que esto funcione y explicaremos un poco más como es posible que dos puntos cualesquiera del mundo puedan estar conectados en cualquier momento. Todo ello necesario para poder comprender más adelante algunas técnicas ya comentadas, como el Sniffing.