====== Fundamentos de Redes de Comunicación ====== Una red de comunicación es un conjunto de sistemas informáticos conectados entre sí, que por medio de dispositivos físicos envían y reciben información en forma de inpulsos electricos, ondas electromagnéticas, u otros medios. =====Conceptos básicos ===== ==== Direcciones ==== Para entender el funcionamiento debemos conocer que tipos de direcciones se utilizan. Principalmente tenemos dos tipos: * Direcciones **MAC**: Identifican una tarjeta de red. Es única en el mundo. * Direcciones **IP**: Identifican un equipo en la red pública (internet). Hay dos grupos: * Direcciciones IP públicas: son las direcciones ip que son accesibles desde internet. No se pueden repetir. * Direcciones IP privadas: son las direcciones ip privadas a nuestras redes locales y no son accesibles desde internet. Se pueden repetir. > **Direcciones IP** Actualmente se sigue utilizando la version 4 de estas direcciones. Están formadas por 4 bytes (32 bits), cada uno separada por un punto. Por lo que varían desde la 0.0.0.0 hasta la 255.255.255.255. Las direcciones ip privadas están en los rangos: * 10.0.0.0 - 10.255.255.255 (Clase A) * 172.16.0.0 - 172.31.255.255 (Clase B) * 192.168.0.0 - 192.168.255.255 (Clase C) El resto son públicas o reservadas. Cada red, tiene una dirección de red, y cada equipo dentro de esa red, tiene una dirección IP concreta dentro del rango de esa dirección de red. > **Direcciones MAC** Son direcciones formadas por 6 bytes en sistema hexadecimal (12 caracteres hexadecimales). Son la //matrícula// de la tarjeta de red y son únicas en el mundo. Los 6 primeros caracteres representan al fabricante y los 6 siguientes a la tarjeta. * 14:FA:3D:12:4B:C0 ====Protocolos ==== Conjunto de normas standard que especifican el método para enviar y recibir datos entre varios ordenadores. Un protocolo puede ser definido como las reglas que indican la sintaxis, semántica y sincronización de la información enviada. Los protocolos pueden ser implementados por hardware, software, o una combinación de ambos. Como existen lenguajes distintos entre ordenadores, dispositivos, fabricantes, desarrolladores, etc, los sistemas no se pueden comunicar sin la existencia de protocolos. La definición de cada protocolo está especificada en un documento llamado //RFC// (Request For Comment), y son publicados por el organismo //IETF// (Internet Engineering Task Force). ====Tipos de redes ==== Por alcance o extensión: * Red de área personal (PAN): Bluetooth, Infrarojos * Red de área local (LAN): Ethernet * Red de área metropolitana (MAN) * Red de área amplia (WAN): Internet * Red Virtual Privada (VPN) Por la arquitectura de las aplicaciones: * Redes igual a igual (peer-to-peer ó P2P) * Redes cliente-servidor Según su medio de conexión: * Redes cableadas: Ehernet, Telefónia tradicional * Redes inalámbricas: Wifi, Satelite, UMTS Según su forma de conmutación: * Conmutación de circuitos: Redes telefónicas * Conmutación de paquetes: Redes de datos ==== Topología de red ==== Se conoce como topología a la disposición de los dispositivos conectados para formar una red: * **Topología en estrella**: los nodos se conectan a un punto central (switch o hub). Es la más común en las redes de area local. {{ :unidad5:topologia_estrella.png?150 |}} * **Topología en árbol**: es una integración de topologías en anillo, de varios niveles. Es la topología habitual a la hora de crear redes de redes. {{ :unidad5:topologia_arbol.png?250 |}} ==== Componentes de una red ==== ===Cableado=== * UTP, STP (Par Trenzado), Conector RJ45 * Cable Telefónico, Conector RJ11 * Fibra Óptica ===Tarjetas (Interfaces) de red=== * Por cable (Ethernet) {{ :unidad5:ethernet-wired-interface.jpg?direct&500 |}} * Inalámbricas (802.11) {{ :unidad5:wifi-interface.jpg?direct&500 |}} ===Hub (Concentrador)=== Es un dispositivo que se utiliza para conectar ordenadores u otros dispositivos en una red cableada. Opera en el nivel de interfaz de red. Tiene una cantidad de puertos Ethernet y su funcionamiento consiste en reenviar cada paquete recibido desde un puerto, por todos los puertos restantes. {{ :unidad5:work-hub.gif?direct&350 |}} > Animación: Funcionamiento de un Hub Son dispositivos que están en desuso, debido a las ventajas del switch ===Switch (Conmutador)=== Al igual que el Hub, se utiliza para conectar dispositivos dentro de una misma red cableada. A diferencia del Hub, el Switch //aprende// en cuál de sus puertos se encuentra cada ordenador (Dir. MAC), y al recibir un paquete sabe por qué puerto concreto debe enviarlo para que llegue al equipo destinatario. {{ :unidad5:switch.jpg?direct&400 |}} {{ :unidad5:work-switch.gif?direct&350 |}} > Animación: Funcionamiento de un Switch ===Router (Enrutador)=== Se utiliza para unir redes distintas, permitiendo el enrutamiento de paquetes de una red a otra. Los paquetes que llegan a un router son evaluados y dependiendo de la dirección IP de destino, se enviarán por un puerto hacia un red o hacia otra. {{ :unidad5:router.png?direct&400 |}} * Router mutifunción doméstico: Son routers que solo permiten enrutar tráfico de dos redes distintas (la externa y nuestra red local). Además incorporan un switch de varios puertos y un punto de acceso wifi, con lo que permite enviar paquetes dentro de una misma red local. {{ :unidad5:router-multifuncion.jpg?direct&500 |}} ===ISP (Proveedor de acceso a internet)=== Son las empresas que nos proveen de un punto de conexión desde algún lugar físico (p.e. domicilio), y nos conectan con la red pública (Internet). Algunos de los ISP's más grandes en España son Telefónica, Vodafone, Orange, MasMovil, etc. Cada ISP posee una red formada por varias sub-redes mediante las que conecta a sus clientes. Este tipo de red se conoce como Sistema Autónomo (AS: Autonomous System). Es una especie de mini-internet que es gestionado por un ISP u otra compañía. Los distintos AS son conectados mediante puntos neutros o de intercambio de internet. Los AS también puede pertenecer a otras organizaciones como gobiernos, universidades, centros de investigación, grandes empresas, etc. ===IXP (Punto de intercambio de internet o punto neutro)=== Sirven como punto de intercambio entre las redes de los diferentes ISP's. Además, múltiples empresas se conectan a los IXP (universidades, ISP's, organizaciones, etc). Se utilizan para que los paquetes de las redes de los distintos proveedores (ISP) no necesiten viajar de continente para intercambiar sus datos. //Por ejemplo, si un cliente de la red de Telefónica, quiere acceder a un equipo o servidor de un cliente de la red de Vodafone, este intercambio de datos se hace a través de un punto de intercambio de internet.// Existen puntos de intercambio de internet a nivel nacional, continental, intercontinental, etc. * España * [[http://www.catnix.net/es/|CatNIX]] * [[https://www.espanix.net/es/index.html|ESPANIX]] * [[https://www.de-cix.net/en/locations/spain/madrid|DE-CIX]]: Mantenido por varios países * Europa * DE-CIX * [[https://www.linx.net/|LINX]] : Londres * [[https://www.ams-ix.net/ams|AMS-IX]] : Amsterdam * [[https://ix.br/|IX.br]] : Brasil [[https://www.internetexchangemap.com|Mapa mundial]] con los diferentes puntos de intercambio de internet. [[https://www.submarinecablemap.com| Mapa mundial]] de cable submarino, que conecta distintos países. ===== Arquitectura de red ===== A la hora de interconectar redes nos encontramos con el problema de tener diferentes tipos de red, diferentes dispositivos de red, diferentes equipos, etc. Para simplificar el problema, las redes se divididen en un conjunto de capas, de modo que cada capa tiene unas funciones más o menos delimitadas. Así se reduce la complejidad del diseño y de las aplicaciones que se utilicen. **La arquitectura de red se puede entender como el conjunto de capas o niveles, junto con los protocolos definidos en cada capa, que hacen posible que los diferentes dispositivos se comuniquen entre si.** La arquitectura de red engloba: * La forma como se conectan los nodos de una red, que suele conocerse como topología. * La manera de compartir información en la red que indican métodos de acceso a la red y reglas para evitar pérdida de información. * Unas reglas generales (protocolos) que establezcan, mantengan y permitan la utilización y comunicación de la información. Para estudiar la arquitectura de red dividiendola en capasde red se utilizan dos modelos de referencia: OSI, y TCP/IP ==== Modelos de referencia ==== Para estudiar la arquitectura de la red se definieron dos modelos o pilas de protocolos: El **modelo OSI** y el **modelo TCP/IP** {{ :unidad5:osi-tcpip.png?600 |}} Cada modelo divide el estudio de las funciones de una red en capas o niveles, agrupando en cada nivel una serie de protocolos. ==== Redes de conmutación de paquetes ==== Al enviar o recibir información en una red no se transportan archivos completos. Gracias a los protocolos de transporte, la información que queremos enviar o recibir se puede dividir en pequeños mensajes con un tamaño de unos 1500 //bytes//. De esta forma las redes pueden ser compartidas al mismo tiempo por infinidad de usuarios. Cada pequeño mensaje en el que se divide un archivo se denomina //paquete//. Los paquetes en los que se divide un fichero, se pueden enviar por caminos distintos dependiendo del tráfico de una parte de la red. Posteriormente cuando los paquetes lleguen al destino, se organizarán y se recompondrá el fichero original. Este proceso se conoce como **conmutación de paquetes**. {{ :unidad5:packet_switching.png?direct&500 |}} > Animación: Conmutación de Paquetes ===== Modelo TCP/IP ===== Hace referencia a los dos protocolos más importantes que componen la familia de protocolos de internet, que fueron de los primeros en definirse, y que son los dos más utilizados de la familia: IP y TCP. {{ :unidad5:protocolos_tcpip.png?400 |}} TCP/IP provee conectividad de extremo a extremo especificando cómo los datos deberían ser formateados, direccionados, transmitidos, enrutados y recibidos por el destinatario. ==== Encapsulamiento de paquetes ==== Como hemos visto, un fichero se divide en pequeños paquetes, y estos paquete se envían separados por la red, para volver a obtener el fichero completo en el destino. Para que esta tarea se pueda realizar cada paquete debe contener información como: * El fragmento con parte de los datos del fichero original * Nº de orden del paquete para poder ordenarlos y recomponerlos en el destino * Direcciones IP de origen y destino * Direcciones MAC de origen y destino En cada nivel, algunos protocolos se encargan de gestionar la información de alguno de los puntos anteriores, por lo que cada paquete debe tener una //cabecera// donde se indiquen estos aspectos. De este modo, cada protocolo le asigna su propia cabecera y construye su propio paquete, y este conjunto se le pasa al protocolo del nivel siguiente, que le asignará su propia cabecera con la información que él gestiona, y así sucesivamente, hasta enviar una secuencia de bits en forma de impulsos electricos por un cable, u ondas por el aire. {{ :unidad5:encapsulamiento_paquetes.png?direct&600 |}} ==== 1 - Nivel de Interfaz de Red ==== Engloba a los niveles físico y de enlace del modelo OSI. Se encarga del acceso y control al medio físico (cable, ondas, etc) ===Trama Ethernet=== Todos los paquetes que salen de una tarjeta de red van encapsulados siempre en una trama ethernet. Es el protocolo principal del nivel de enlace de red o de interfaz de red. Contiene las direcciones MAC de destino y de origen del dispositivo al que va dirigida la información que contiene. No contienen dirección IP, ya que en una red local se usan solo direcciones MAC para saber quien es el destinatario de un paquete. Además contiene información del protocolo del siguiente nivel que tiene encapsulado y un cógdigo de detección de errores (CRC). {{ :unidad5:ethernet_frame.png?700 |}} >Estructura de la trama Ethernet El campo EtherType indica un código que representa el protocolo encapsulado en la trama Ehernet. Podemos ver los diferentes códigos en [[https://en.wikipedia.org/wiki/EtherType|esta lista]]. ==Dirección MAC== Es un identificador de 48 bits que se agrupa en 6 bloques de 2 caracteres hexadecimales. Identifican una tarjeta de red concreta dentro de una misma red: los primeros 24 bits es el //id// del fabricante y los ultimos 24, el id de la tarjeta. Las direcciones MAC (Medium Access Control) se utilizan para dirigir paquetes desde un nodo a otro en una misma red (misma dirección de red). Del mismo modo que las direcciones IP se utilizan para dirigir paquetes entre distintas redes, las direcciones MAC se usan dentro de la misma red. **Dentro de una misma red, los paquetes no se envían a direcciones IP, sino a direcciones MAC**. Existen una dirección MAC especial: FF:FF:FF:FF:FF:FF. Se conoce como dirección MAC de **broadcast**, y cualquier paquete con dicha dirección es reenviado automáticamente a todos los equipos de una misma red. ===Protocolo ARP=== ARP (Address Resolution Protocol) es un protocolo que trabaja en la capa de enlace del nivel OSI, y se encarga de obtener a partir de una dirección IP, la dirección MAC de una tarjeta de red, dentro de una red local. ¿Para qué se necesita? Como hemos indicado anteriormente, cuando un paquete entra en una red local, solo podemos entregárselo a su destinatario si conocemos su dirección MAC. Al enviar un paquete entre diferentes redes, conoceremos la direccion IP del destinatario, pero no su dirección MAC. ARP se encarga de obtener averiguar la dirección MAC correspondiente a una IP. {{ :unidad5:arp_paquete.png?400 |}} >Estructura de paquete ARP Donde: * Sender HW Address y Target HW Addres son las direcciones MAC de origen y destino * Sender IP Address y Target IP Addres son las direcciones IP de origen y destino * Operation: es el tipo de paquete ARP: 1 es solicitud y 2 es respuesta ARP se basa en dos tipos de paquetes: * **ARP request** (pregunta): Este paquete se envía cuando conoces la dirección IP de un host, pero no su dirección MAC. Se envía a la dirección MAC de broadcast (FF:FF:FF:FF:FF:FF) y es recibida por todos los equipos de la red. Todos los equipos que no tengan la dirección IP destino contenida en el paquete, lo descartarán. * **ARP reply** (respuesta): Este paquete es enviado por el equipo que tiene la dirección IP de destino, y contestará con su dirección MAC. ====2 - Nivel de Internet==== ===Protocolo IP (incompleto)=== {{ :unidad5:ip-header.png?direct&400 |}} > Cabecera de paquete IP {{ :unidad5:enrutamiento_routers.png?500 |}} >Enrutamiento de paquetes ===Protocolo ICMP=== El protocolo de control de mensajes de internet (ICMP) es un subprotocolo del protocolo IP, encargado de notificar los errores o información que se produce al trabajar con paquetes IP. {{ :unidad5:icmp-header.png?direct&400 |}} >Formato paquete ICMP Los campos tipo y código nos indican el mensaje ICMP concreto que se está empleando. Algunos ejemplos: * **Echo Request**: [Tipo 8, código 0]. Se emplea para comprobar la conectividad IP con un host concreto de la red. Ante el envío de este mensaje de control se espera un respuesta //Echo reply// del host hacia el equipo desde el que se ha enviado. Si ante un //Echo Request// recibo un //Echo Reply//, significa que tengo conexión con dicha IP. * **Echo Reply**: [Tipo 0, código 0]. Es el mensaje de respuesta ante un mensaje //Echo Request// recibido. * **TTL Exceeded**: [Tipo 11]. Este mensaje se envía al emisor de un paquete que ha sido desechado por que su tiempo de vida ha sido superado. El tiempo de vida está definido en el campo //TTL// del paquete IP. Un paquete no puede estar indefinidamente en transito por la red, y en el momento en que un nodo encuentre un paquete con el TTL = 0, el paquete será desechado y se avisará al emisor de dicho paquete. * **Destination Unreachable**: [Tipo 3]. Se envía al emisor de un paquete cuando no es posible alcanzar una dirección IP. En el campo //código// se indica la razón del problema. ====3 - Nivel de Transporte (Incompleto)==== === Puertos=== ===Protocolo TCP=== {{ :unidad5:tcp_segmento.jpg?400 |}} >Formato Segmento TCP ===Protocolo UDP=== {{ :unidad5:upd_segment.png?400 |}} >Formato Segmento UDP ==== 4 - Nivel de Aplicación ==== ===Protocolo DNS=== El protocolo DNS (Sistema de nombres de dominio) es el encargado de averiguar la dirección IP de un nombre de dominio concreto (p.e. ssii.abrilcode.com -> [145.239.8.95]). Como hemos visto, los paquetes enviados entre diferentes redes, van dirigidos o vienen de una dirección IP, nunca de un nombre. {{:unidad5:dns_header.png?300 |}} >Paquete DNS * Campo **Preguntas**: La sección de preguntas (questions) contiene un campo del nombre que se está solicitando. * Campo **Respuestas**: En una respuesta desde un servidor DNS, la sección de respuestas contiene las entradas asociadas al nombre que se solicitó originalmente. Puede tener múltiples entradas, debido a que un nombre de dominion puede tener múltiples IPs asociadas. Cuando queremos acceder a una página web desde el navegador indicando su nombre (www.google.com), se envía un paquete DNS que preguntará por la dirección IP correspondiente a ese nombre. El servidor DNS que tengamos asignado, nos responderá con la dirección IP, y acto seguido podremos conectarnos a esa dirección. {{ :unidad5:dns-header.jpg?direct&600 |}} > Campos de la cabecera del paquete DNS La cabecera de un paquete DNS ocupa 12 bytes: * Los primeros 16 bits corresponden al ID de la consulta * Los siguientes 16 bits son parámetros del paquete * Campo **QR**: Es un //Flag// que indica consulta (0) o respuesta (1) * El resto de códigos y flags indican otros parámetros del paquete * Total Questions: Un entero de 16 bits que indica el nº de entradas de la sección "preguntas" * Total Answers: Un entero indicando el numero de respuestas en la sección "respuestas" * Cantidad de respuestas en la sección "autoridad" * Cantidad de respuestas en la sección "registros adicionales" ===Protocolo HTTP=== El protocolo HTTP es el encargado de trasmitir información de documentos HTTP, como html, php, javascript, etc, para visualizar el contenido de las páginas web. Este protocolo utiliza un paquete que se envía a un servidor web, solicitando la página web que queremos ver, y el servidor nos enviará mensajes HTTP con el contenido. {{ :unidad5:http-protocol.png?direct&500 |}} ===Protocolo DHCP=== DHCP hace referencia a Protocolo de configuración dinámica de host. Este protocolo es el encargado de que un servidor DHCP nos asigne dinámicamente una dirección IP en el momento en el que nos conectamos a un red local. Además nos asignará una puerta de enlace, una máscara de red, y unos servidores dns's. El servidor DHCP tiene una lista de direcciones IP dinámicas, y las va asignando a los clientes que las soliciten a medida que se van quedando libres. Los servidores DHCP suelen estár configurados en las redes locales a las que nos conectamos, o también se puede configurar en el router al que nos conectamos. Suelen ofrecer direcciones IP privadas. {{ :unidad5:dhcp-working.jpg?direct&450 |}} ===== Wireshark: Análisis del tráfico de una red ===== [[https://www.wireshark.org/|Wireshark]] es un analizador de paquetes por protocolos con interfaz gráfica, que permite capturar todos los paquetes que pasan (entran o salen) por una interfaz de red (tarjeta de red). {{ :unidad5:wireshark_icon.png?80|}} Es un programa de software libre con licencia pública de GNU (GPL) y es multiplataforma. No permite modificar la información que circula sobre la red, ni el envío de paquetes, solamente inspeccionar la información contenida en ellos. ==== Funcionamiento ==== Nada más abrir Wireshark, debo indicar la interfaz de red con la que quiero capturar paquetes. Si mi equipo tiene varias tarjetas de red (Tarjeta ethernet, tarjeta wifi, tarjeta virtualizadas de VBOX), indicaré la que quiera usar: {{ :unidad5:wireshark-interfaces.png?direct&600 |}} >Selección de interfaces de red Una vez seleccionada la tarjeta, para empezar a capturar paquetes con Wireshark pulsaré el primer botón de la barra de herramientas: {{ :unidad5:wireshark-botones.png?direct&400 |}} >Botones de inicio y parada En este momento se empezarán a //escuchar// todos los paquetes que pasen por la interfaz de red seleccionada. {{ :unidad5:wireshark-vista.png?direct&600 |}} > Ventana principal de Wireshark En esta ventana tenemos 3 partes diferenciadas: * Mensajes capturados: son los mensajes que han salido o han entrado por nuestra tarjeta de red, y han sido capturados por wireshark. En esta sección podemos ver principalmente 4 cosas: * IP origen: La ip desde la que llega el mensaje (campo del protocolo IP) * IP destino: la ip a la que va dirigido el mensaje (campo del protocolo IP) * Protocolo: Aunque un mensaje esté compuesto por varios protocolos, me indica el protocolo principal encapsulado en el paquete IP * Información: Información sobre el protocolo principal. * Sección de protocolos: Se muestra la información que contiene el paquete seleccionado, organizada por las secciones de cada protocolo que hay dentro de es paquete. Aquí podemos ver toda la información de cada protocolo que está encapsulado en el paquete. Podemos desplegar la parte referente a cada protocolo. * Mensaje completo recibido o enviado, en formato Hexadecimal, y en caracteres ASCII a su derecha === Trama Ethernet === Muestra la información contenida en el paquete Ethernet: direcciones MAC de origen y destino, y el tipo de protocolo de siguiente nivel que viene encapsulado. {{ :unidad5:wireshark-ethernet.png?direct&600 |}} >Información sobre la trama Ethernet del paquete seleccionado === Cabecera IP === Muestra la información de la cabecera IP que viene dentro de la trama Ethernet. Puedo ver las direcciones IP de origen y destino, el tiempo de vida (TTL), el protocolo que viene encapsulado dentro del paquete ip, etc. {{ :unidad5:wireshark-ip.png?direct&600 |}} >Información sobre el protocolo IP del paquete seleccionado === Paquete TCP === Muestra la información de la cabecera TCP que viene dentro del paquete IP. Muestra los puertos de origen y destino hacia los que va el paquete, información del órden del paquete, etc {{ :unidad5:wireshark-tcp.png?direct&600 |}} >Información sobre el protocolo TCP del paquete seleccionado ===== Análisis del funcionamiento de redes===== ==== Red Local ==== {{ vimeo>205550793?medium }} > Video: Protocolos ARP y DNS {{ vimeo>205548028?medium }} > Video: Protocolos TCP y HTTP ==== Red Pública (Internet) ==== {{ vimeo>205544467?medium }} >Video: Funcionamiento red pública ---- ===== Prácticas ===== - Análisis de protocolos del tráfico desde local a remoto. (Presentación en Video) - Análisis de protocolos del tráfico en una petición http. (Presentación en Video) ---- (c) {{date> %Y}} Fernando Valdeón