Redes de Ordenadores. Protocolos Antonio Salavert Casamor http://www.tonet.jazztel.es Página en blanco 2 http://www.tonet.jazztel.es 3 ÍNDICE 1.INTRODUCCIÓN................................................................................................................................................................8 1.1.EL PROCESO DE LA COMUNICACIÓN ........................................................................................................................................8 4.1.1.Esquema genérico..................................................................................................................................................9 4.1.2.Protocolos..............................................................................................................................................................9 4.2.REDES LAN / WAN.......................................................................................................................................................10 4.2.1.LAN......................................................................................................................................................................10 4.3.EJEMPLO DE LAN............................................................................................................................................................11 4.3.1.WAN.....................................................................................................................................................................11 4.3.2.Ejemplo de WAN..................................................................................................................................................12 4.3.3.MAN.....................................................................................................................................................................12 4.4.DISPOSITIVOS DE LAS REDES DE ORDENADORES.....................................................................................................................13 4.5. HALF-DUPLEX Y FULL-DUPLEX...........................................................................................................................................13 5. JERARQUÍA DE NIVELES............................................................................................................................................14 5.1.MODELO OSI (OPEN SYSTEM INTERCONNECTION)................................................................................................................14 5.1.1.¿Qué es?...............................................................................................................................................................14 5.1.2.Nivel de aplicación (7).........................................................................................................................................15 5.1.3.Nivel de presentación (6).....................................................................................................................................16 5.1.4.Nivel de sesión (5)................................................................................................................................................16 5.1.5.Nivel de transporte (4).........................................................................................................................................17 5.1.6.Nivel de red (3).....................................................................................................................................................17 5.1.7.Nivel de enlace (2)...............................................................................................................................................18 5.1.8.Nivel físico (1)......................................................................................................................................................19 5.2.NIVELES TCP/IP.............................................................................................................................................................19 5.2.1.Nivel de aplicación...............................................................................................................................................20 5.2.2.Nivel de transporte...............................................................................................................................................20 5.2.3.Nivel de Internet...................................................................................................................................................21 5.2.4.Nivel de red..........................................................................................................................................................21 5.3.REDES APPLE...................................................................................................................................................................21 5.4.TRANSMISIÓN DE LA INFORMACIÓN.......................................................................................................................................22 5.4.1.Encapsulación......................................................................................................................................................23 5.4.2.Nombres de los mensajes.....................................................................................................................................25 6.DISEÑO DE UN PROTOCOLO......................................................................................................................................26 6.1.LOS CINCO ELEMENTOS DE UN PROTOCOLO............................................................................................................................26 6.2.PRINCIPIOS GENERALES DEL DISEÑO DE UN PROTOCOLO..........................................................................................................26 6.3.DIEZ REGLAS DE DISEÑO.....................................................................................................................................................28 7.NIVEL FÍSICO..................................................................................................................................................................29 8. CONCEPTO DE SEÑAL.................................................................................................................................................30 8.1.TIPOS DE SEÑALES : CONTINUAS Y DISCRETAS........................................................................................................................30 8.2.DOMINIO TEMPORAL Y DOMINIO FRECUENCIAL.......................................................................................................................31 8.2.1.Ancho de banda....................................................................................................................................................32 8.3.TRANSMISIÓN ANALÓGICA Y TRANSMISIÓN DIGITAL.................................................................................................................33 8.3.1.Transmisión analógica.........................................................................................................................................33 8.3.2.Transmisión digital..............................................................................................................................................33 8.3.3.Resumen...............................................................................................................................................................34 8.4.VELOCIDAD DE MODULACIÓN, VELOCIDAD DE TRANSMISIÓN Y CRITERIO DE NYQUIST...................................................................34 8.4.1.Velocidad de propagación...................................................................................................................................34 8.4.2.Velocidad de transmisión.....................................................................................................................................35 8.4.3.Velocidad de modulación.....................................................................................................................................35 8.4.4.Relación entre velocidad de transmisión y de modulación.................................................................................35 8.4.5.Relación entre la velocidad de transmisión y las frecuencias.............................................................................35 http://www.tonet.jazztel.es 4 8.4.6.Criterio de Nyquist...............................................................................................................................................36 8.5.CONCEPTO DE DISTORSIÓN..................................................................................................................................................36 8.6.CONCEPTO DE ATENUACIÓN................................................................................................................................................37 8.7.FUENTES DE RUIDO............................................................................................................................................................39 8.7.1.EMI/RFI (Interferencia electromagnética/interferencia de la radiofrecuencia).................................................39 8.7.2.Diafonía (Crosstalk).............................................................................................................................................41 8.7.3.Ruido térmico.......................................................................................................................................................41 8.8.REFLEXIÓN DE LA SEÑAL....................................................................................................................................................42 9. LÍNEAS DE TRANSMISIÓN..........................................................................................................................................44 9.1.CABLE COAXIAL................................................................................................................................................................44 9.2.PAR TRENZADO.................................................................................................................................................................45 9.3.FIBRA ÓPTICA...................................................................................................................................................................46 10. MODULACIÓN..............................................................................................................................................................49 10.1.CONCEPTO DE MODULACIÓN.............................................................................................................................................49 10.2.TIPOS DE MODULACIÓN....................................................................................................................................................50 10.3.SEÑAL MODULADORA ANALÓGICA......................................................................................................................................51 10.4.SEÑAL MODULADORA DIGITAL...........................................................................................................................................52 11. CODIFICACIÓN DE CANAL......................................................................................................................................54 11.1.CODIFICACIÓN NRZ (NON RETURN TO ZERO)...................................................................................................................55 11.1.1.Codificación NRZ - L ........................................................................................................................................55 11.1.2.Codificación NRZ - I..........................................................................................................................................56 11.2.CODIFICACIÓN AMI BIPOLAR...........................................................................................................................................57 11.3.CODIFICACIÓN MANCHESTER............................................................................................................................................58 11.4.CODIFICACIÓN MANCHESTER DIFERENCIAL..........................................................................................................................59 11.5.CODIFICACIÓN B8ZS......................................................................................................................................................59 12. MODOS DE TRANSMISIÓN.......................................................................................................................................61 12.1. TRANSMISIÓN ASÍNCRONA................................................................................................................................................61 12.1.1.Sincronización de bit o de reloj.........................................................................................................................61 12.1.2.Sincronización de carácter................................................................................................................................62 12.1.3.Sincronización de trama....................................................................................................................................62 12.2. TRANSMISIÓN SÍNCRONA..................................................................................................................................................63 12.2.1.Sincronización de bit..........................................................................................................................................63 12.2.2.Sincronización de carácter................................................................................................................................64 12.2.3.Orientado al bit..................................................................................................................................................64 13. NIVEL DE ENLACE......................................................................................................................................................65 13.1. DETECCIÓN DE ERRORES.................................................................................................................................................65 13.1.1.Paridad simple...................................................................................................................................................66 13.1.2.Código Hamming...............................................................................................................................................66 13.1.3.Paridad longitudinal (LRC)...............................................................................................................................67 13.1.4.CRC (Cyclic Redundancy Check)......................................................................................................................68 13.2. SERVICIOS CONFIRMADOS Y NO CONFIRMADOS....................................................................................................................70 13.3. CONTROL DE ERRORES....................................................................................................................................................71 13.3.1.Control de errores manual.................................................................................................................................71 13.3.2.Echo checking....................................................................................................................................................71 13.3.3.Control de errores automático...........................................................................................................................71 13.3.4.Stop & Wait (Idle RQ)........................................................................................................................................72 13.3.5.Retransmisión continua (Continous-RQ)...........................................................................................................76 13.3.6.Repetición selectiva............................................................................................................................................78 13.3.7.Go-back-N..........................................................................................................................................................81 13.3.8.Piggy-backing....................................................................................................................................................82 13.4. CONTROL DE FLUJO........................................................................................................................................................83 13.4.1.Ventana deslizante (Sliding window).................................................................................................................84 14. REDES LAN (LOCAL AREA NETWORK)................................................................................................................89 14.1.INTRODUCCIÓN...............................................................................................................................................................89 http://www.tonet.jazztel.es 5 14.2. TOPOLOGÍAS.................................................................................................................................................................89 14.2.1.Topología bus.....................................................................................................................................................90 14.2.2.Topología en anillo............................................................................................................................................90 14.2.3.Topología en estrella.........................................................................................................................................90 14.2.4.Topología en estrella extendida.........................................................................................................................91 14.2.5.Estrella compartida y estrella conmutada.........................................................................................................91 14.3. IEEE 802.2................................................................................................................................................................92 14.4.CONMUTADORES / SWITCHES............................................................................................................................................94 14.4.1. Tipo Cut-Through Switching.............................................................................................................................95 14.4.2.Tipo Store-and-Forward Switching...................................................................................................................95 14.4.3.Conmutadores híbridos......................................................................................................................................96 14.4.4.Conmutación a nivel 2 y 3.................................................................................................................................96 15. PROTOCOLOS DE ACCESO AL MEDIO (MAC)...................................................................................................97 15.1.TOKEN RING..................................................................................................................................................................97 15.2. ETHERNET....................................................................................................................................................................99 15.2.1.Nivel físico........................................................................................................................................................100 15.2.2.Nivel MAC........................................................................................................................................................102 15.2.3.Tecnología CSMA/CD......................................................................................................................................103 15.2.4.Dominio de colisión ........................................................................................................................................106 15.2.5.Ventana de colisiones......................................................................................................................................107 15.3. PROTOCOLO FAST ETHERNET.........................................................................................................................................109 15.3.1.Nivel físico........................................................................................................................................................109 15.3.2.Repetidores.......................................................................................................................................................109 16. REDES INALÁMBRICAS...........................................................................................................................................111 16.1.PROTOCOLOS................................................................................................................................................................111 16.1.1.Protocolo 802.11a............................................................................................................................................111 16.1.2.Protocolo 802.11b............................................................................................................................................111 16.1.3.Protocolo 802.11g............................................................................................................................................112 16.1.4.Protocolo 802.11n............................................................................................................................................112 16.2.CANALES DE TRANSMISIÓN.............................................................................................................................................112 16.3.ARQUITECTURA LAN 802.11 ......................................................................................................................................113 16.4.PROTOCOLOS DE ACCESO AL MEDIO 802.11...................................................................................................................114 17.MODELO TCP/IP.........................................................................................................................................................117 17.1.IP V4 - INTERNET PROTOCOL.........................................................................................................................................117 17.1.1.Cabecera IPv4..................................................................................................................................................118 17.1.2. Fragmentación y ensamblado.........................................................................................................................120 17.1.3.Direccionamiento y clases IPv4.......................................................................................................................120 17.1.4.Máscaras..........................................................................................................................................................121 17.1.5.Enrutamiento....................................................................................................................................................122 17.2.IP V6 - INTERNET PROTOCOL VERSION 6..........................................................................................................................124 17.3.ICMP - INTERNET CONTROL MESSAGE PROTOCOL...........................................................................................................127 17.4.ARP - ADDRESS RESOLUTION PROTOCOL........................................................................................................................128 17.5.RARP - REVERSE ADDRESS RESOLUTION PROTOCOL.......................................................................................................130 17.6.TCP - TRANSMISSION CONTROL PROTOCOL.....................................................................................................................131 17.7.UDP - USER DATAGRAM PROTOCOL..............................................................................................................................139 18.REDES CLIENTE/SERVIDOR...................................................................................................................................141 18.1.INTRODUCCIÓN.............................................................................................................................................................141 18.2.ACCESO DEL CLIENTE A LA INFORMACIÓN..........................................................................................................................142 18.3.GESTIÓN DE LAS IDENTIDADES Y DE LOS PERMISOS DE ACCESO.............................................................................................142 18.3.1.Objetivos..........................................................................................................................................................143 18.3.2.Ampliación del Active Directory de Microsoft a entornos ajenos al mismo ..................................................144 18.3.3.La fragmentación de la gestión de las identidades y de los permisos de acceso dentro de un entorno distribuído ..................................................................................................................................................................145 19.REDES P2P (PEER-TO-PEER)...................................................................................................................................150 19.1.ELEMENTOS DE LAS REDES P2P......................................................................................................................................151 http://www.tonet.jazztel.es 6 19.2.ARQUITECTURA DE LAS REDES P2P.................................................................................................................................151 19.2.1.Modelo híbrido o centralizado.........................................................................................................................151 19.2.2.Modelo P2P puro o totalmente descentralizado..............................................................................................152 19.2.3.Modelo P2P mixto o semicentralizado............................................................................................................152 19.3.COMUNICACIÓN EN LAS REDES P2P.................................................................................................................................153 19.3.1.Búsqueda de pares, contenidos y servicios......................................................................................................153 19.3.2.Tablas Hash Distribuidas (DHT).....................................................................................................................154 19.4.SEGURIDAD..................................................................................................................................................................156 19.5.INFORMACIÓN...............................................................................................................................................................156 19.6.ANCHO DE BANDA.........................................................................................................................................................157 19.7.ALMACENAMIENTO........................................................................................................................................................158 19.8.CICLOS DE PROCESADOR................................................................................................................................................159 19.9.BITTORRENT................................................................................................................................................................159 19.9.1.Interfaz.............................................................................................................................................................160 19.9.2.Implementación................................................................................................................................................160 19.9.3.Publicando el contenido..................................................................................................................................160 19.9.4.Distribución de los usuarios............................................................................................................................161 19.9.5.Selección del fragmento...................................................................................................................................161 19.9.6.Algoritmos de choking.....................................................................................................................................162 19.10.E-MULE...................................................................................................................................................................163 19.10.1.Conexión del cliente al servidor....................................................................................................................164 19.10.2.Conexión cliente a cliente..............................................................................................................................164 19.10.3.Identificación del cliente................................................................................................................................165 19.10.4.Identificación del usuario..............................................................................................................................166 19.10.5.Identificación del fichero...............................................................................................................................166 19.11.SKYPE.......................................................................................................................................................................167 19.11.1.Componentes clave........................................................................................................................................168 19.11.2.Funciones.......................................................................................................................................................169 19.11.3.Inicio de sesión..............................................................................................................................................169 19.11.4.Búsqueda del Usuario....................................................................................................................................170 19.11.5.Establecimiento y desconexión de la llamada...............................................................................................170 20. REDES WAN (WIDE AREA NETWORK)...............................................................................................................171 20.1.INTRODUCCIÓN.............................................................................................................................................................171 20.2.CONMUTACIÓN DE PAQUETES POR CIRCUITO VIRTUAL..........................................................................................................171 20.3.TIPOS DE REDES WAN.................................................................................................................................................173 22.1.TIPOS DE ENLACES........................................................................................................................................................174 22.2.SISTEMAS DE TRANSMISIÓN DIGITAL..................................................................................................................................175 22.3.RDSI (RED DIGITAL DE SERVICIOS INTEGRADOS)...........................................................................................................175 22.4.FRAME RELAY.............................................................................................................................................................179 22.5.ADSL........................................................................................................................................................................180 22.6.MODEMS EN TELEFONÍA MÓVIL......................................................................................................................................184 22.7.CONMUTACIÓN DE PAQUETES POR DATAGRAMA..................................................................................................................185 22.7.1.Enrutador.........................................................................................................................................................186 22.7.2.Protocolo enrutable.........................................................................................................................................186 22.7.3.Protocolos de enrutamiento.............................................................................................................................187 23.ANALIZADORES DE PAQUETES.............................................................................................................................189 23.1.FUNCIONES..................................................................................................................................................................189 23.2.FUNCIONAMIENTO.........................................................................................................................................................189 23.3.MODO PROMISCUO O NO PROMISCUO................................................................................................................................190 23.4.FORMATO DE UN PAQUETE IP.........................................................................................................................................190 23.5.FORMATO DE UN PAQUETE TCP.....................................................................................................................................191 23.6.FORMATO DE UN PAQUETE HTTP...................................................................................................................................192 24.GESTIÓN DE REDES...................................................................................................................................................194 24.1.MONITORIZACIÓN DE LAS REDES......................................................................................................................................194 24.2.GESTIÓN POR NIVELES....................................................................................................................................................195 24.3.GESTIÓN DE ANCHO DE BANDA........................................................................................................................................196 24.3.1.Conocimiento de las líneas de comunicaciones ..............................................................................................197 http://www.tonet.jazztel.es 7 24.3.2.Monitorización Dinámica por Circuito...........................................................................................................197 25.SIMULADORES DE REDES.......................................................................................................................................198 25.1.ELEMENTOS DE UNA SIMULACIÓN DE REDES.......................................................................................................................199 25.2.TIPOS DE SIMULACIONES.................................................................................................................................................200 25.3.NS – NETWORK SIMULATOR...........................................................................................................................................200 25.4.SIMULADOR OMNET++...............................................................................................................................................201 25.5.SIMULADOR GNS3......................................................................................................................................................201 25.6.SSFNET.....................................................................................................................................................................202 25.7.GTNETS....................................................................................................................................................................202 26.PROGRAMANDO EN RED CON PYTHON.............................................................................................................204 26.1.INTRODUCCIÓN.............................................................................................................................................................204 26.2.USO BÁSICO DEL SOCKET................................................................................................................................................204 26.3.CREANDO UN SOCKET....................................................................................................................................................205 26.4.CONECTANDO UN SOCKET Y TRANSFIRIENDO DATOS............................................................................................................206 26.5.DANDO UN NOMBRE AL SOCKET......................................................................................................................................206 26.6.ESCUCHANDO Y ACEPTANDO CONEXIONES........................................................................................................................207 26.7.SOCKETS UDP............................................................................................................................................................207 26.8.CERRANDO EL SOCKET..................................................................................................................................................208 26.9.DISEÑANDO UN SERVIDOR TCP......................................................................................................................................208 26.10.EL CLIENTE TCP.......................................................................................................................................................209 26.11.APLICACIÓN DE TRANSMISIÓN DE UN FICHERO..................................................................................................................209 26.11.1.Envío de un texto desde un cliente a un servidor..........................................................................................209 26.11.2.Envío de un texto desde un cliente a un servidor..........................................................................................210 26.11.3.Envío de un fichero del cliente al servidor....................................................................................................212 http://www.tonet.jazztel.es 8 1. Introducción Para ampliar los conocimientos que se exponen en este libro, el autor recomienda los siguientes libros de los que es autor: – – Los protocolos en las redes de ordenadores de Edicions UPC y Almacenamiento de la información en los ordenadores en http:www.bubok.es 1.1. El proceso de la comunicación La comunicación es la consecuencia del intercambio de información entre distintos agentes. Sin comunicación, no hay posibilidad de intercambio de información. Así los elementos básicos de una comunicación son: • El emisor, es el elemento que envía la información y que genera los mensajes correspondientes que contienen la información que se quiere enviar. También al emisor se le conoce como origen de la información a enviar. • Un medio de transmisión, es el elemento a través del cual se envían los mensajes y que es el elemento básico de comunicación. • El receptor, es el elemento que debe recibir la información. Se le conoce también como elemento destino de la información. Hay 2 tipos de comunicaciones: • • Un emisor y un receptor. Un emisor y varios receptores. En este caso cada uno de los receptores recibirá la misma información procedente del emisor. Una red de ordenadores nace cuando se dispone de más de 1 ordenador y es necesario el intercambio de información entre ellos. Sin embargo normalmente la mínima composición de dos ordenadores, se extiende a muchos ordenadores, así en la red de redes, que es Internet, son miles los ordenadores interconectados. Cada ordenador está configurado para funcionar como emisor y como receptor, dependiendo de los programas que se están ejecutando en ellos. http://www.tonet.jazztel.es 9 4.1.1.Esquema genérico Otra forma de definir las redes es basándose en el llamado sistema cliente/servidor y que consta de los dos elementos siguientes: - Clientes, que son los ordenadores que emplean los usuarios de una LAN, y que son los que solicitan la información almacenada en los servidores. - Servidores, que son los ordenadores que contienen la información o recurso compartido. Estos ordenadores son las que proporcionan los medios para que el cliente obtenga la información que necesita. En este tipo de redes, el fallo de un ordenador cliente no afecta a los demás usuarios. También se conoce a estas redes con el nombre de proceso distribuido. Las aplicaciones se ejecutan en los ordenadores cliente y en el caso de aplicaciones cliente/servidor, se comunican con la parte de la aplicación que se ejecuta en el servidor. Hay 2 tipos de servidores: - servidor dedicado, que solo da servicios y - servidor no dedicado que hace de intermediario entre dos clientes. 4.1.2.Protocolos Los protocolos son los lenguajes que se emplean en las comunicaciones entre los dispositivos que forman las redes de ordenadores, es decir, son la base del intercambio de información entre dispositivos. Según el modelo de referencia OSI, protocolo es aquel conjunto de reglas y formatos que gobiernan las comunicaciones entre entidades que ejecutan funciones a un mismo nivel en diferentes sistemas abiertos. Así un protocolo es un conjunto de normas que se usan para componer los mensajes que contienen la información a transmitir. http://www.tonet.jazztel.es 10 Dado que estamos trabajando con redes digitales, la información y estructura de los protocolos siempre es binaria, es decir, está formada por unos y ceros. Así se dice que los datos se transmiten de forma empaquetada, y que viajan como mensajes. 4.2. Redes LAN / WAN Los conceptos de LAN y WAN son esenciales y básicos para entender como se interaccionan y relacionan los protocolos en las redes de datos. ¿Por qué se han de tener muy claros la distinción entre LAN y WAN? Porque los protocolos que se emplean son distintos, es decir, si es una WAN, además de los protocolos de LAN, se utilizan aquellos protocolos de WAN de acuerdo con el tipo de comunicaciones que se emplee. Las características básicas que los distingue son: – la distancia entre dispositivos – los protocolos que se emplean – las velocidades de transmisión y – los costes asociados 4.2.1.LAN Una LAN (Local Area Network) consiste en una red de ordenadores sin que exista entre ellos ninguna línea de comunicaciones propiamente dicha. La comunicación entre LANs sin líneas de comunicaciones emplea solamente los protocolos de LANs. http://www.tonet.jazztel.es 11 En cuanto a las velocidades en LAN son de Ethernet 10 Mbps, 100Mps, 1 Gbps, 10 Gbps Token Ring 4 Mbps, 16 Mbps Bps = bits por segundo En cuanto a los costes, una infraestructura de LAN es bastante más barata que una de WAN, en cuanto no se requiere de ninguna línea de comunicaciones. 4.3. Ejemplo de LAN Una LAN puede ser una sala con un servidor, varias estaciones de trabajo y una impresora compartida. En esta caso todos los dispositivos estarán conectados a un concentrador o conmutador. Esto se puede ampliar en el caso de una empresa que está en un edificio de varias plantas. En este caso, se requiere como mínimo un concentrador o conmutador por planta, y entre ellos se pueden unir mediante cable para que todos los dispositivos de cada planta sean una unidad. Como se ve no se contempla su acceso a Internet, ya que está conexión se corresponde a una WAN, ya que se requiere la necesidad de la existencia de una línea de comunicaciones. 4.3.1.WAN Una WAN (Wide Area Network) consta de 2 o más LANs conectadas entre si mediante líneas de comunicaciones. Los protocolos de estas líneas de comunicaciones son distintos de los que se utilizan en las LANs. El dispositivo con interfaces de LAN y WAN que comunica una LAN a otra a través de una línea de comunicación se denomina enrutador (router). En los enrutadores, cuando la información entra o sale de una interface LAN, se utilizan protocolos de LAN, pero si son interfaces de WAN, se emplean protocolos de WAN para comunicarse con el otro extremo. Por está razón estos dispositivos han de poder convertir internamente la información en base a protocolos de LAN a WAN y viceversa. En las comunicaciones, 1 kbps son 1000 bps, 1 Mbps son 1000000 bps y 1 Gbps son 109 bps. En una WAN, las velocidades oscilan entre los 33k bits por segundo en líneas analógicas hasta 2 Mbps en Frame Relay o E1, y ultimamente con ADSL se http://www.tonet.jazztel.es 12 alcanzan velocidades de hasta 10 Mbps. En el mundo de las comunicaciones digitales se están alcanzando velocidades superiores pero la relación precio/velocidad es muy superior a las LAN. En WAN el precio del ancho de banda es bastante más caro que en LAN. 4.3.2.Ejemplo de WAN Red corporativa con fábricas o distintos edificios de oficinas dispersos en la geografía. En cada fábica se dispone de una LAN, pero para poder intercambiar datos entre ellas, debido a la distancia, su conexión se debe hacer utilizando líneas de comunicaciones, que soportarán alguno de los protocolos WAN. 4.3.3.MAN Una MAN (Metropolitan Area Network) es un concepto intermedio entre LAN y WAN. En cuanto a distancias se corresponde a un ámbito metropolitano, es decir, de una gran ciudad o de un campus universitario. En cuanto a protocolos en general se emplean los de LAN o los de WAN dependiendo del tipo de enlace que se utiliza. Si el enlace corresponde a una línea de comunicaciones se emplean protocolos de WAN, de lo contrario se utilizan protocolos de LAN. Sin embargo dadas las distancias, siempre acostumbra a haber tramos de cables de fibra óptica y por tanto susceptible de empleo de protocolos asociados a esta tecnología. http://www.tonet.jazztel.es 13 4.4. Dispositivos de las redes de ordenadores Los dispositivos básicos son los ordenadores, que funcionan como clientes o servidores, así como las impresoras. Estos dispositivos se conectan a las redes mediante las tarjetas de red (NIC), que funcionan de acuerdo con los protocolos del nivel 2 OSI. Otros dispositivos son: - repetidores. Funcionan a nivel de hardware, es decir, el nivel 1 OSI, - concentradores o hubs. Funcionan según los protocolos del nivel 2 OSI, - conmutadores o switches. Funcionan según los protocolos del nivel 2 OSI, - puentes o bridges. Funcionan según los protocolos del nivel 2 OSI y - enrutadores o routers. Funcionan según los protocolos del nivel 3 OSI. 4.5. Half-duplex y full-duplex El intercambio de datos a través de una línea de transmisión se puede clasificar como simplex, half-duplex o full-duplex. La transmisión simplex consiste en la transmisión de las señales en una única dirección. En las redes de ordenadores no se emplea este tipo de transmisión. En la transmisión half-duplex solo una de las dos estaciones de un enlace punto a punto puede transmitir simultáneamente. Equivale a un puente con un solo carril y con circulación en ambos sentidos. En la transmisión full-duplex, las dos estaciones pueden enviar y recibir datos simultáneamente. Siguiendo el mismo ejemplo anterior, ahora el puente tendría 2 carriles, uno para cada sentido de circulación. http://www.tonet.jazztel.es 5. 14 Jerarquía de niveles En la actualidad todas las funciones necesarias para una transmisión de datos, se distribuyen de acuerdo con varios niveles, jeraquizados entre si. Así un protocolo solo pertenece a uno de estos niveles y se comunica con los protocolos de nivel superior y de nivel inferior. De esta manera un ordenador necesita tener instalados tantos protocolos como niveles, y cualquier dispositivo de nivel n, necesita tener instalados n protocolos. Así se dice que una pila de protocolos estructurada en base a un conjunto de niveles (con 1 o más protocolos) permite las comunicaciones entre dos aplicaciones. Los protocolos son independientes del hardware y del sistema operativo donde estén funcionando, aunque sus controladores si tienen que ver con el sistema operativo donde se están ejecutando. Las tarjetas de red dependen del hardware donde están instaladas, y basicamente dependen del tipo de bus de entrada/salida al que están asociadas. Las pilas de protocolos más conocidas son: - OSI (Open System Interconnection) - TCP/IP (Transmission Control Protocol / Internet Protocol) y - AppleTalk de Apple 5.1. Modelo OSI (Open System Interconnection) 5.1.1.¿Qué es? Este modelo ha sido y sigue siendo la referencia de todos los protocolos de redes de ordenadores incluso muchas veces en el ámbito de las comunicaciones. Por esta razón, se recomienda como base para poder organizar y entender los distintos tipos de protocolos y su ámbito de actuación. Se trata de un modelo dividido en niveles, cada una de los cuales realiza unas funciones determinadas. Las razones de esta división de las funciones de una red de ordenadores son las siguientes: - Los niveles dividen los aspectos de las operaciones de red en elementos menos complejos. - Los niveles permiten que los ingenieros especialicen sus esfuerzos de diseño y de desarrollo en funciones modulares. - Los niveles promueven la simetría en las distintas funciones modulares de red para que trabajen de forma conjunta. http://www.tonet.jazztel.es 15 - Los niveles evitan que los cambios en un nivel afecten a otros niveles, de manera que cada nivel pueda evolucionar de forma diferente. - Los niveles dividen la complejidad de la operativa de las redes en operaciones separadas de más fácil aprendizaje. Sin embargo, la evolución de los sistemas informáticos y las comunicaciones asociadas a ellas, hace que en algunos casos este modelo no sea aplicable. De todas maneras, como modelo de referencia sigue siendo plenamente válido. En 1978, la Organización Internacional de Estándares (ISO) publicó un conjunto de especificaciones que describía un sistema de arquitectura de red para interconectar distintos dispositivos. En 1984, esta misma organización publicó una revisión de este modelo y lo llamó modelo de referencia de Interconexión de Sistemas Abiertos (OSI - Open System Interconnection). Este modelo consta de 7 niveles : 7 Aplicación Proporciona los servicios de red a las aplicaciones del ordenador. 6 Presentación Funciones relacionadas con la representación de los datos. Conversión, codificación y compresión. 5 Sesión Funciones de control del diálogo entre clientes (sesiones). 4 Transporte Conexiones extremo a extremo. Segmentación 3 Red Direccionamiento y enrutamiento. 2 Enlace Acceso al medio. 1 Físico Transmisión de bits. En cuanto a los niveles 1, 2, 3 y 4 se les llama niveles de medios y a los niveles 5, 6 y 7, niveles de dispositivo. La frontera entre el nivel de transporte(4) y el nivel de sesión(5) es en realidad la frontera entre los protocolos del nivel de aplicación y los protocolos de los niveles más bajos. Mientras los niveles de sesión, presentación y aplicación tienen que ver con las funciones relativas a la aplicación, los cuatro niveles más bajos se refieren a los elementos del transporte de la propia red de datos. A continuación se describen las principales funcionalidades que deben tener los protocolos que funcionan según el nivel al que pertenecen. Así en la práctica resulta que el modelo OSI es un modelo teórico y no hay ningún protocolo que se ajuste de una forma específica a un solo nivel. Los protocolos existentes en la actualidad se ajustan al modelo OSI de forma aproximada. 5.1.2.Nivel de aplicación (7) Este nivel consta de las funciones que sirven para comunicar los procesos de aplicación con los servicios de red. Este nivel representa los servicios a disposición de las aplicaciones del usuario, como por ejemplo los programas para la http://www.tonet.jazztel.es 16 transferencia de ficheros (protocolo FTP), para el acceso a base de datos y para el correo electrónico (protocolo SMTP, MIME, POP3 y IMAP) entre otros muchos. El nivel de aplicación controla el acceso general a la red, el control de flujo y la recuperación de errores. Algunos protocolos de este nivel son: FTP, HTTP, X-Windows, SNMP, SMB, NetBIOS sobre TCP/IP, Telnet. 5.1.3.Nivel de presentación (6) El nivel de presentación consta de las funciones que convierten los datos, el vídeo, el sonido, los gráficos, etc. a un formato adecuado para su transmisión, es decir, es la conversión de los distintos formatos de datos a un formato común. Este nivel determina el formato utilizado para intercambiar datos entre equipos en red. En emisión, las funciones de este nivel convierten los datos desde un formato enviado por el nivel de aplicación a otro formato intermedio reconocido. En recepción, las funciones de este nivel convierten el formato intermedio a un formato útil para el nivel de aplicación de ese equipo. Así las funciones de este nivel de presentación son las responsable de convertir los formatos, traducir los datos, codificar los datos, cambiar o convertir el juego de caracteres y expandir los comandos gráficos. El nivel de presentación administra también la compresión de datos con el fin de reducir el número de bits que se necesita transmitir. Formatos de ficheros gráficos: TIFF, BMP, JPEG, GIF Codificación de caracteres: ASCII, EBCDIC Formato de ficheros de vídeo y sonido: MPEG, AVI, WAVE, MIDI, MP3 Es difícil encontrar protocolos que únicamente desarrollen funcionalidades de este nivel. Lo más habitual es que los protocolos del nivel de aplicación incorporen estas funcionalidades. 5.1.4.Nivel de sesión (5) Las funciones del nivel de sesión establecen, administran y finalizan las sesiones entre dos ordenadores que se están comunicando, es decir, controlan el diálogo entre dispositivos. Las funciones de este nivel permiten que dos aplicaciones de dos dispositivos distintos establezcan, usen y finalicen una conexión llamada sesión. Estas funciones realizan el reconocimiento de nombres y así como lo relacionado con la seguridad de la comunicación. http://www.tonet.jazztel.es 17 Las funciones del nivel de sesión proporcionan la sincronización entre las tareas de los usuarios mediante unos puntos de control en el flujo de datos. De esta forma, si la red falla, sólo es preciso retransmitir los datos posteriores al último punto de control. Las funciones de este nivel también llevan a cabo el control del diálogo entre los procesos de comunicación, regulando el flujo de transmisión, cuando, por cuanto tiempo, etc. Es difícil encontrar protocolos que únicamente desarrollen funcionalidades de este nivel. Lo más habitual es que los protocolos del nivel de aplicaciones incorporen estas funcionalidades. Unos protocolos con funcionalidades de únicamente este nivel serían: NFS (Network File System), X-Windows, RPC (Remote Procedure Call) y SQL (Structured Query Language) 5.1.5.Nivel de transporte (4) Los protocolos de este nivel son los responsables de entregar la información entre los extremos, es decir, entre el emisor o nodo origen al receptor o nodo destino. Las funcionalidades de los protocolos de este nivel son: - Fragmentar los mensajes largos recibidos de los protocolos de niveles superiores en unidades estructuradas llamadas segmentos. En la recepción se ensamblan los mensajes, volviéndose a obtener los mensajes con el mismo formato en que estaban en el dispositivo origen de este nivel. - Establecer la comunicación entre conexiones remotas - Enviar los segmentos del origen al destino. - Hay protocolos que incorporar un control de errores como el TCP y que por tanto se dice que estos protocolos son fiables, mientras que otros no es así como el UDP. Las funciones de este nivel deben proporcionar un control de flujo y un control de errores de la transmisión y participar en la solución de los problemas relacionados con la transmisión y la recepción de mensajes. El protocolo más extendido de este nivel es el TCP, así como el UDP y el SPX. También el protocolo NetBIOS/NetBeui realiza funciones de este nivel. 5.1.6.Nivel de red (3) Los protocolos de este nivel son los responsables de las funciones de direccionamiento y de control (p.e. enrutamiento) necesarias para mover los datos a través de la red. También estos protocolos tienen que establecer, mantener y finalizar las conexiones, incluyendo la conmutación de mensajes, el enrutamiento, http://www.tonet.jazztel.es 18 la congestión de mensajes, el ensamblaje de mensajes y la traducción de las direcciones lógicas a direcciones físicas. Las direcciones lógicas son aquellas que identifican cada una de las interfaces de los dispositivos y que permiten el direccionamiento de los mensajes. Su sintaxis varía según del protocolo de nivel de red de que se trate. El protocolo más extendido de este nivel es el IP (Internet Protocol), así como el IPX (Internetwork Packet Exchange) en las redes de Novell Netware. El protocolo NetBIOS/NetBeui realiza funciones de este nivel y el de transporte. También corresponden a este nivel los protocolos de enrutamiento como son: RIP, BGP, IGRP y OSPF entre otros. 5.1.7.Nivel de enlace (2) Los protocolos de este nivel son los responsables de proporcionar el tránsito de información sobre un medio de transmisión o sobre una tecnología de red. Por esta razón este protocolo está relacionado con el tipo de acceso al medio y con la topología de la red. Esto se consigue empaquetando los bits procedentes del nivel físico en bloques de datos, y enviando éstos con la necesaria sincronización y orden. Los protocolos de este nivel efectúan la detección y la corrección de errores que pueden producirse en el nivel físico. Las direcciones físicas son aquellas que identifican cada una de las interfaces de los dispositivos y que permiten distinguir unas de otras. En el caso de las redes de ordenadores, todas y cada una de las tarjetas de red de cada dispositivo, llevan asociadas un número, establecido de forma única por el propio fabricante. A este identificación se le conoce como dirección MAC (Media Access Control) y tiene una longitud de 6 octetos (48 bits). Esta dirección MAC consta de 2 partes: - Los primeros 3 octetos (24 bits), corresponden a un número identificativo del fabricante. Por ejemplo IBM es 10005A. La asignación de esta numeración está regida por el IEEE. - Los restantes 3 octetos, es un número dado por el propio fabricante y que no lo puede repetir en dos tarjetas o interfaces. Hay dos formatos para las direcciones MAC: 0000.0c12.3456 y 00-00-0c-12-34-56. Las funciones de los protocolos de este nivel son : - Inicialización. Establecimiento de una conexión activa sobre un camino físico ya existente. - Identificación. Proceso necesario para distinguir un receptor o un transmisor entre todos los que pueden estar presentes. - Sincronización a nivel carácter. - Fragmentación de los mensajes. http://www.tonet.jazztel.es - Control de error. - Recuperación de condiciones anómalas. - Terminación. - Control del enlace. 19 El protocolo más extendido de este nivel es el 802.3 o Ethernet. Otros protocolos son el 802.5 o Token Ring y el FDDI. En el mundo de las comunicaciones, los protocolos de este nivel son: HDLC, PPP, SMDS, ATM, xDSL, Frame Relay y RDSI entre otros. 5.1.8.Nivel físico (1) A este nivel corresponde la determinación de las especificaciones correspondientes a las características mecánicas, eléctricas y de procedimiento requeridas para establecer, mantener y desactivar los enlaces físicos. Por ejemplo, a este nivel se determina las características físicas de los conectores y de los cables que se emplean en las rede cableadas. El nivel físico relaciona las interfaces eléctrica, óptica, mecánica y funcional con el cable o con el medio aéreo. Sus funciones son : - Activación y desactivación de la conexión física. - Transmisión de unidades de datos del servicio físico. - Control de nivel físico. - Sincronización a nivel de bit. Las especificaciones de este nivel sirven para que los fabricantes de hardware hagan que sus dispositivos sean compatibles entre si, ya sean codificaciones, voltajes, conectores, cables, etc. 5.2. Niveles TCP/IP El Departamento de Defensa de EE.UU. (DoD) creó el modelo TCP/IP porque necesitaba una red que pudiera sobrevivir ante cualquier circunstancia, incluso una guerra nuclear. Supongamos que el mundo está en estado de guerra, atravesado en todas direcciones por distintos tipos de conexiones: cables, microondas, fibras ópticas y enlaces via satélite. Imaginemos entonces que se necesita que fluya la información o los datos, organizados en forma de mensajes, independientemente de la condición de cualquier nodo o red. El DoD desea que sus mensajes lleguen a destino siempre, bajo cualquier condición, desde un punto determinado a cualquier otro punto determinado. Este problema de diseño de difícil solución fue lo que llevó http://www.tonet.jazztel.es 20 a la creación del modelo TCP/IP, que desde entonces se ha transformado en el estándar a partir del cual se ha desarrollado Internet. El modelo TCP/IP consta de cuatro niveles: el nivel de aplicación, el nivel de transporte, el nivel de Internet y el nivel de red. Es importante observar que algunas de los niveles del modelo TCP/IP poseen el mismo nombre que los niveles del modelo OSI. El nivel de aplicación tiene diferentes funciones ya sea en el modelo OSI o en el modelo TCP/IP, aunque se le de el mismo nombre. Nivel TCP/IP Nivel OSI 5 Aplicación 5, 6, 7 4 Transporte 4 3 Internet 3 2 Red 2 1 Físico 1 5.2.1.Nivel de aplicación Los diseñadores del modelo TCP/IP acordaron que los protocolos de nivel superior deberían incluir las funcionalidades de los niveles de sesión y de presentación del modelo OSI. Así crearon un nivel de aplicación que maneja los protocolos de alto nivel y por lo tanto incluya los aspectos de representación, codificación y control de diálogo. El modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en un solo nivel y da por sentado que estos datos están correctamente empaquetados para el nivel siguiente. 5.2.2.Nivel de transporte El nivel de transporte se refiere a los aspectos de la calidad del servicio con respecto a la confiabilidad, al control de flujo y a la corrección de errores. Uno de sus protocolos, el TCP, ofrece distintas formas de alta calidad para crear comunicaciones de red confiables, sin problemas de flujo y con un nivel de error bajo. TCP es un protocolo orientado a la conexión. Mantiene un diálogo entre el origen y el destino mientras empaqueta la información del nivel de aplicación en unidades denominadas segmentos. Orientado a la conexión no significa que el circuito exista entre los ordenadores que se están comunicando, significa que los segmentos del nivel 4 viajan de un extremo a otro entre dos dispositivos para comprobar que la conexión existe lógicamente durante un determinado período de tiempo. El otro protocolo básico en esta nivel es el UDP, que se explica con detalles más adelante. http://www.tonet.jazztel.es 21 5.2.3.Nivel de Internet La finalidad de las funcionalidades del nivel de Internet es enviar los mensajes desde un origen de cualquier red, de forma a su destino. La ruta que seguirán a estos mensajes dependerá de las configuraciones de los nodos intermedios que son atravesados por estos mensajes.El protocolo que rige este nivel se denomina Internet Protocol (IP). En este nivel se determina la mejor ruta. Esto se puede comparar con un sistema postal, así cuando se envía una carta por correo, no se sabe cómo llega a su destino, ya que existen varias rutas posibles. Lo que le interesa es que la carta llegue. De este nivel son los protocolos: - ARP/RARP: mapeo de direcciones IP y MAC y viceversa - ICMP: control de mensajes de IP 5.2.4.Nivel de red Es la nivel que se ocupa de todos los aspectos que requiere que un paquete de nivel de Internet IP pase a través de un enlace físico. Equivale a las funcionalidades del nivel de enlace y nivel físico del modelo OSI. 5.3. Redes Apple AppleTalk es el nombre comercial utilizado para identificar las redes locales que conectan ordenadores Apple Macintosh. Los protocolos que utilizan son propietarios de Apple Computer. Sin embargo a nivel físico emplean el mismo protocolo especificado por la IEEE y el modelo de referencia OSI. La estructura de protocolos es la siguiente: Presentación AFP Sesión Transporte ADSP RTMP AEP Red Enlace ZIP ASP PAP ATP NBP DDP TokenTalk EtherTalk LocalTalk Protocolos a nivel de enlace El protocolo EtherTalk cumple las especificaciones del protocolo IEEE 802.3, el protocolo TokenTalk las del protocolo IEEE 802.5, y FDDI Talk las del FDDI. http://www.tonet.jazztel.es 22 Sin embargo el LocalTalk es específico de Apple y funciona en una topología de bus y con el método de acceso CSMA/CA. Protocolos a nivel de red El protocolo fundamental es el DDP. Sin embargo los protocolos NBP, ZIP y RTMP también se pueden considerar de nivel de red en cuanto usan los servicios del DDP. Este protocolo RTMP también sirve para intercambiarse la información de las tablas de enrutamiento entre enrutadores periódicamente. Protocolos a nivel de transporte Básicamente son dos: el ATP y el ADSP, el primero orientado a conexión y el segundo de tipo stream, es decir, transmisión sin mensajes de reconocimiento. Los demás protocolos como los ASP, AFP, PAP y AEP se pueden considerar de aplicaciones. 5.4. Transmisión de la información El modelo de referencia OSI describe como fluye la información a través de la red de los programas de aplicación de un ordenador a otro programa de aplicación en otro ordenador. Como ejemplo de esta transmisión según el modelo de referencia OSI, supongamos que el sistema A sea un ordenador, que tiene que enviar información al sistema B, que es otro ordenador. El programa de aplicación del sistema A comunica con el protocolo de nivel 7 del sistema A y le transmite la información que debe llegar al sistema B. A continuación envía esta información al protocolo del nivel 6 del mismo sistema A y así sucesivamente hasta alcanzar el protocolo de nivel 1 del sistema A. El nivel 1 es el que pone la información en el medio físico de la red. A continuación, esta información llega al sistema B porque están conectados físicamente. El protocolo del nivel 2 absorbe esta información, verifica que es para este sistema y a continuación transmite la información al protocolo de nivel 2 del http://www.tonet.jazztel.es 23 sistema B. Así asciende a través de los protocolos de los distintos niveles del sistema B en sentido inverso hasta llegar al programa de aplicación del propio sistema B. Así se dice que el protocolo de cada nivel del sistema A comunica con el protocolo de los niveles adyacentes del propio sistema A, y a su vez que el protocolo de cada nivel del sistema A se debe corresponder con el protocolo del mismo nivel del sistema B. Así el objetivo principal del protocolo de nivel 1 del sistema A es comunicarse con el protocolo de nivel 1 del sistema B; el protocolo de nivel 2 del sistema A comunica con el protocolo de nivel 2 del sistema B y así sucesivamente. El sistema de niveles del modelo OSI excluye la comunicación directa entre niveles iguales en distintos sistemas. Cada nivel del sistema A debe sin embargo relacionarse con los servicios de los niveles adyacentes del sistema A, con el fin de alcanzar la comunicación del mismo nivel del sistema B. Asumamos que el nivel 4 del sistema A debe comunicar con el nivel 4 del sistema B. Para hacer esto, el protocolo de nivel 4 del sistema A debe usar los servicios del protocolo de nivel 3 del sistema A. El nivel 4 se dice es el usuario del servicio, mientras que el nivel 3 es el proveedor del servicio. Los servicios del nivel 3 suministran al nivel 4 un punto de acceso (SAP), que es simplemente un punto donde se intercambian la información. En el modelo TCP/IP, es exactamente igual, excepto en que hay 5 niveles en vez de 7. 5.4.1.Encapsulación Ahora este apartado se centra en el modelo TCP/IP, es decir, un modelo basado en 5 niveles. ¿Cómo es el mensaje que circula por la red a nivel físico? Su contenido es un conjunto de bits con unos y ceros. Este contenido ha de tener una estructura bien determinada para que cada protocolo lo entienda y actúe en función de ello. Así todo mensaje de un protocolo consta de cabecera, datos y control de error. Cabecera Datos Control de error Volvamos al caso de una aplicación del sistema A que ha de transmitir información a la aplicación del sistema B. En principio la aplicación del sistema A prepara un mensaje de acuerdo con el formato del protocolo que se emplea a nivel 7. Por ejemplo, el envío de un fichero con el protocolo FTP. Esta información se transmite al protocolo de nivel 4. Un protocolo de nivel 4 sería por ejemplo el TCP. Ahora el formato del mensaje sería Cabecera Nivel 4 Datos http://www.tonet.jazztel.es 24 El protocolo de nivel 4 envía este mensaje al protocolo de nivel 3, por ejemplo, IP. Ahora el formato del mensaje es Cabecera Cabecera Nivel 3 Nivel 4 Datos Esto se repite con el nivel 2, con lo que el mensaje queda preparado para transmitirlo al nivel físico y que por tanto su estructura es Cabecera Cabecera Cabecera Nivel 2 Nivel 3 Nivel 4 Datos Control de error Este mensaje llegará con este formato o estructura al dispositivo destino y allí se deberá proceder al proceso inverso. El protocolo de nivel 2 del sistema B lee su cabecera y de ella extrae el protocolo de nivel 3 al que debe transmitir el mensaje. El protocolo de nivel 3 del sistema B repite el proceso de leer su cabecera y transmitir su mensaje al protocolo de nivel 4 indicado en su cabecera. Así llega finalmente la información a la aplicación correspondiente del sistema B. A continuación se detalla la estructura de un mensaje, obtenida de un analizador de redes, correspondiente a una red Ethernet, con protocolo de nivel 3 IP y de nivel 4 TCP. SUMARY Abs Time 1 15:35:58.5299 Destination Backbone B Source Score Summary DLC Ethertype=0800, size=60 by IP D=[36.54.0.11] S=[36.53.0.41] TCP D=515 S=1023 SYN SEQ=10139 DLC: -------------DLC Header ------------DLC: DLC: Frame 1 arrived at 15:35:58.5299 ; frame size is 60 (003C hex) bytes. DLC: Destination: Station IntrlnOO2C6O, Backbone B DLC: Source : Station 3Com 063885, Score DLC: Ethertype = 0800 (IP) DLC: IP: ---------------- IP Header -----------------IP: IP: Version = 4, header length = 20 bytes IP: Type of service = 00 IP: 000. .... = routine IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: ---- -0.. = normal reliability IP: Total length = 44 bytes IP: Identification = 29539 IP: Flags = ox IP: .0.. .... = may fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 14 IP: Protocol = 6 (TCP) IP: Header checksum = F0CA (correct) IP: Source address = [36.53.0.41] IP: Destination address = [36.54.0.11), Lindy http://www.tonet.jazztel.es 25 IP: No options IP: TCP: --------------- TCP header ------------------------TCP: TCP: Source port = 1023 TCP: Destination port = 515 (Remote print) TCP: Initial sequence number = 101396545 TCP: Data offset = 24 TCP: Flags = 02 TCP: ..0. .... = (No urgent pointer) TCP: ...0 .... = (No acknowledgment) TCP: .... 0... = (No push) TCP: .... .0.. = (No reset) TCP: .... ..1. = SYN TCP: .... ...0 = (No FIN) TCP: Window = 2048 TCP: Checksum = 0CEE (correct) TCP: TCP: Options follow TCP: Haximum segment size = 1024 Se trata de un mensaje sin datos. El inicio de la línea DLC corresponde al la cabecera de nivel 2 que en este mensaje corresponde al protocolo Ethernet. El indicativo de principio de línea IP corresponde a la cabecera del protocolo IP de nivel 3 y el resto es la cabecera del protocolo TCP de nivel 3. La cabecera de un nivel contiene una identificación del protocolo del nivel superior. En este caso en la cabecera de nivel 2 (DLC), el código 0800 corresponde al protocolo IP de nivel 3. Lo mismo sucede con la cabecera IP, donde se especifica el protocolo nº 6, que corresponde al protocolo TCP de nivel 4. 5.4.2.Nombres de los mensajes Es habitual en redes dar un nombre distintos a los mensajes en función del nivel del protocolo de que se trate. Lo más común es: - Mensaje (message) si es de nivel aplicación - Segmento (segment) si es de nivel 4 - Paquete (packet) si es de nivel 3 - Trama (frame) si es de nivel 2 El término PDU (Protocol Data Unit) es el nombre genérico de los mensajes pertenezca al nivel que sea el protocolo en cuestión. http://www.tonet.jazztel.es 26 6. Diseño de un protocolo 6.1. Los cinco elementos de un protocolo La especificación de un protocolo se compone de cinco partes bien diferenciadas. Para ser completa, cada especificación debe incluir de forma explícita: 1. El servicio a prestar por el protocolo 2. Los supuestos sobre el entorno en el que se ejecuta el protocolo 3. El vocabulario de los mensajes utilizados para implementar el protocolo 4. La codificación (formato) de cada mensaje en el vocabulario y 5. Las reglas de procedimiento que mantienen la coherencia de los intercambios de mensajes. 6.2. Principios generales del diseño de un protocolo Un diseñador se adherirá a la disciplina sólo si a cambio se puede obtener un producto más fiable, que se pueda demostrar y reproducir. A continuación se menciona los principios generales de diseño de sonido, que permite entrar en la segunda fase de desarrollo en el campo de la ingeniería de protocolos. Uno de los principios es la simplicidad, como es el caso de los protocolos ligeros. Un protocolo bien estructurado se puede construir a partir de un número pequeño de piezas bien diseñadas y bien entendidas. Cada pieza realiza una función y la realiza bien. Para entender el funcionamiento del protocolo debería ser suficiente comprender el funcionamiento de las piezas en las que se basa y la forma en que interactúan. Los protocolos que están diseñados de esta manera son más fáciles de entender y más fáciles de implementar de manera eficiente, y probablemente son más propensos a ser verificables y mantenibles. Un protocolo ligero es sencillo, robusto y eficiente. El caso de los protocolos ligeros soporta directamente el argumento de que la eficiencia y la verificabilidad no son ortogonales, sino preocupaciones complementarias. Otro principio es la modularidad basada en una jerarquía de funciones. Un protocolo que realiza una función compleja se puede construir a partir de piezas más pequeñas que se interactúan en una forma simple y bien definida. Cada pieza más pequeña es un protocolo ligero que se puede desarrollar, verificar, implementar y mantener por separado. Las funciones ortogonales no se mezclan, ya que se http://www.tonet.jazztel.es 27 diseñan como entidades independientes. Los módulos individuales no hacen suposiciones acerca del trabajo de los demás, o incluso de su presencia. Por ejemplo el control de errores y el control de flujo son funciones ortogonales. Ellas se resuelven mejor por distintos módulos ligeros que son completamente conscientes de la existencia de los demás. Ellos no hacen suposiciones acerca de la secuencia de datos, a menos que sea estrictamente necesario llevarlo a cabo en su función. Un esquema de corrección de errores no debe hacer suposiciones sobre el sistema operativo, las direcciones físicas, los métodos de codificación de datos, las velocidades de las líneas, o la hora del día. Esas preocupaciones, que deberían existir, se colocan en otros módulos, específicamente optimizados para ese propósito. La estructura resultante del protocolo es abierta, ampliable y modificable sin afectar el buen funcionamiento de los componentes individuales. Un protocolo bien construído no es un protocolo con un exceso de especificaciones, es decir, es un protocolo que no contiene ningún código desmesurado ni imposible de ejecutar. Un protocolo bien construído no es un protocolo con especificaciones incompletas. Así un protocolo incompleto puede provocar recepciones no especificados durante su ejecución. Una recepción no especificada se produce si llega un mensaje cuando el receptor no lo espera recibir ni puede responder a él. Un protocolo bien constrído está acotado: no puede exceder los límites conocidos del sistema, ni sobrepasar la limitada capacidad de las colas de los mensajes. Un protocolo bien construído ha de tener una estabilidad automática. Si un error transitorio y arbitrario cambia el estado del protocolo, el protocolo ha de volver siempre a un estado deseable en un número finito de transiciones, y a continuación reanudar el funcionamiento normal. Del mismo modo, si un protocolo se inicia en un estado arbritario del sistema, siempre debe alcanzar uno de los estados previstos dentro de tiempo finito. Finalmente un protocolo bien construído ha de tener la capacidad de auto-adaptarse. Por ejemplo, puede adaptar la tasa a la cual envía los datos y la tasa a la cual el receptor puede recibirlos. Por ejemplo un método de control de la tasa se puede utilizar para cambiar la velocidad de una transmisión de datos o su volumen. Otro principio es la robustez del protocolo. No es difícil diseñar protocolos que trabajen en circunstancias normales. Es lo inesperado lo que los reta. Esto significa que el protocolo debe estar preparado para desenvolverse adecuadamente en cada acción posible y con cada posible secuencia de acciones en todas las condiciones posibles. El protocolo debe hacer sólo un mínimo de suposiciones sobre su entorno para evitar la dependencia respecto de las características particulares que podrían cambiar. Por ejemplo, muchos protocolos de nivel de enlace que fueron diseñados en la década de 1970 ya no funcionan correctamente si se utilizan en líneas de muy alta velocidad de datos, en el rango de los Gbp. Un diseño robusto funciona automáticamente con la nueva tecnología sin necesidad de cambios importantes. Así la mejor forma de robustez no es diseño sobredimensionado, sino que se debe añadir la funcionalidad de las nuevas condiciones previstas. Otro principio es la consistencia del protocolo. Hay algunas formas en las que los protocolos pueden fallar. Las tres más importantes son: – Puntos muertos. Los estados en los que no se puede ejecutar el protocolo, por ejemplo porque todos los procesos del protocolo esperan condiciones que no se puedan cumplir. http://www.tonet.jazztel.es de ejecución 28 – Bucles. Las secuencias indefinidamente. que se pueden repetir – Finales inadecuados. La finalización de la ejecución de un protocolo sin que se cumplan las condiciones de finalización adecuadas. En general, la observancia de estos criterios no se puede verificar mediante una inspección manual de la especificación del protocolo. Herramientas muy potentes son necesarias para prevenir o detectar estos fallos. 6.3. Diez reglas de diseño Estas diez reglas de diseño son: 1. Asegurarse de que el problema está bien definido. Todos los criterios de diseño, los requisitos y las limitaciones se deben enumerar antes del inicio del diseño. 2. Definir el servicio que se realiza en todos los niveles de abstracción antes de decidir qué estructuras deben usarse para realizar estos servicios. 3. Diseñar la funcionalidad externa antes de la funcionalidad interna. Primero considerar la solución como un caja negra y decidir cómo se debe interactuar con su entorno. A continuación decidir a cómo se puede organizar la caja negra. Probablemente consta de cajas negras más pequeñas que pueden ser refinadas de una forma similar. 4. Hacerlo sencillo. Los protocolos complejos son más difícil de verificar su funcionamiento que los simples. También son más difícil de implementar y son menos eficientes. Ha de haber pocos problemas realmente complejos en el diseño del protocolo. Los problemas que aparecen como complejos, son a menudo varios problemas simples a la vez. El trabajo de los diseñadores es el de identificar los problemas más simples, separarlos y luego resolverlos de forma individual. 5. No conectar lo que es independiente. Separar las preocupaciones ortogonales. 6. No introducir lo que no es material. No restrinjir lo que es irrelevante. Un buen diseño ha de ser fácilmente ampliable. Un buen diseño resuelve una clase de problemas en lugar de una sola instancia. 7. Antes de la implementación de un diseño, construir un prototipo de alto nivel y verificar que se cumplen los criterios de diseño. 8. Implementar el diseño, medir su rendimiento, y si es necesario, optimizarlo. 9. Comprobar que la implementación final optimizada es la prevista en el diseño de alto nivel. 10. No saltarse las reglas del 1 a la 7. http://www.tonet.jazztel.es 29 7. Nivel físico El nivel físico es el encargado de la transmisión de las cadenas de bits no estructuradas sobre el medio de transmisión o el medio físico. A este nivel corresponde la determinación de las especificaciones correspondientes a las características mecánicas, eléctricas y de hardware requeridas para establecer, mantener y desactivar los enlaces físicos. Por ejemplo, a este nivel se determina las características físicas de los conectores y de los cables que se emplean en las redes. El nivel físico relaciona las interfaces eléctrica, óptica, mecánica y funcional con el cable, si se trata de redes cableadas. Sus funciones son : – Activación y desactivación de la conexión física. – Transmisión de unidades de datos del servicio físico. – Control de nivel físico. – Sincronización a nivel de bit. Las especificaciones de este nivel sirven para que los fabricantes de hardware, hagan que sus dispositivos sean compatibles entre si, ya sean conectores, cables, etc. Por lo tanto las especificaciones de este nivel están directamente relacionadas con la topología de la red. Así se desarrollan en los capítulos siguientes, los temas relacionados con este nivel físico y que son: – los conceptos de señal – los conceptos de transmisión analógica y digital – los medios de transmisión y – los tipos de codificación http://www.tonet.jazztel.es 8. 30 Concepto de señal El término "señal" se refiere a un voltaje eléctrico, un patrón luminoso o una onda electromagnética modulada, dependiendo del medio utilizado. Esta señal varía en función del medio de transmisión de que se trate y se propaga a través del mismo medio de transmisión. Se caracteriza por ser un valor en función del tiempo s(t), es decir, su valor varía a lo largo del tiempo. Si esta señal es un voltaje o una intensidad de corriente, es fácilmente relacionable con la potencia. 8.1. Tipos de señales : continuas y discretas Señal continua Es aquella señal en la que su intensidad varía suavemente con el tiempo, es decir, no presenta discontinuidades. Matemáticamente si s(t) es la función temporal correspondiente, y a su vez es continua, se cumplirá que limt->a s(t) = s(a) para cualquier valor de a. Por ejemplo la función s(t)=A sen 2 π fs t es una función continua. Señal continua Ejemplo de señales continuas puede ser la voz, las imágenes de TV, etc. Un tipo especial de señal continua son las señales periódicas. Señal discreta Es aquella señal en la que su intensidad se mantiene constante durante un determinado intervalo de tiempo, tras el cual la señal cambia a otro valor constante, es decir, presenta discontinuidades o saltos en el tiempo. http://www.tonet.jazztel.es 31 Señal discreta Otro ejemplo es el caso de una onda cuadrada. Una señal discreta es la utilizada en la transmisión de datos binarios. 8.2. Dominio temporal y dominio frecuencial Cualquier señal, ya sea continua o discreta, se expresa como una función del tiempo (dominio temporal) o como una función de la frecuencia (dominio frecuencial), en tanto en cuanto se puede descomponer como la suma de frecuencias, cada una de ellas con un factor. Por ejemplo la función temporal s(t) = A sen 2πfst, tiene su equivalencia en la función frecuencial s(f) = A para f =fs y cero para las demás frecuencias. Mediante la transformada de Fourier, se puede descomponer cualquier señal temporal en una señal constituida por componentes senoidales de distintas frecuencias, por tanto, cualquier función temporal tiene su equivalencia en una función frecuencial. Así si s(t) es una función temporal, su función frecuencial es http://www.tonet.jazztel.es 32 ⌠ s(f) = s(t) e – j 2 π ft dt ⌡ Por tanto, para cada señal se puede decir que hay una función en el dominio temporal que determina la amplitud de la señal en cada instante de tiempo. Igualmente, hay una función en el dominio frecuencial que especifica las frecuencias constitutivas de la señal. 8.2.1.Ancho de banda Una transmisión siempre se hace a una frecuencia determinada. Sin embargo en la realidad es imposible transmitir solo con una frecuencia fija. La razón es que siempre hay distorsiones e interferencias, y la descomposición de la señal en frecuencias (transformada de Fourier) consta de una frecuencia principal y otras frecuencias de menor potencia. El ancho de banda es el rango de frecuencias alrededor de la frecuencia principal y en la que está confinada la mayor parte de la energía de la señal. http://www.tonet.jazztel.es 33 Hay distintos criterios para su evaluación, y los más utilizados son - el criterio de potencia mitad, equivalente a la banda de los 3 dB - el criterio de equivalencia de la señal rectangular - el criterio de valor nulo a valor nulo - el criterio de potencial fraccional, que es el adoptado por la FCC. Deja fuera el 0,5% por cada extremo, es decir, es el 99% - los valores del 35 ó 50 dB - el criterio de ancho de banda absoluto, es el equivalente del 100%, por lo que es utópico. Si se transmiten todas las frecuencias, el receptor podrá reconstruir fielmente la señal origen. Si se restringe el rango de frecuencias que se transmiten, la señal a reconstruir por el receptor diferirá en más o menos con la original. Así en la práctica, no es ncesario transmitir todas las frecuencias para que el receptor pueda reconstruir la señal con una fiabilidad suficiente. 8.3. Transmisión analógica y transmisión digital 8.3.1.Transmisión analógica La transmisión analógica es la transmisión de señales independientemente de su contenido. Se pueden transmitir señales continuas o discretas. El receptor debe recibir la señal del transmisor con la máxima fiabilidad. Si las señales son continuas, se pueden transmitir fácilmente y de una forma poco costosa en banda base, es decir, sin ningún tipo de modulación. Modulación es la alteración sistemática de una onda sinusoidal, llamada señal portadora, en función de las características de otra señal, llamada moduladora. Esta señal es la que contiene la información que se transmite. El empleo de modulación permite desplazar el ancho de banda de la señal en banda base hacia otra zona del espectro como es el caso de la multiplexación por división de frecuencias. Si la transmisión analógica es de señales discretas, es necesario el empleo de modems (modulador/demodulador) que convierta las señales discretas en señales analógicas, antes de realizar su transmisión. 8.3.2.Transmisión digital La transmisión digital es la transmisión de símbolos con cierto grado de exactitud en un tiempo determinado. A este intervalo se le llama tiempo de símbolo. La información son bits, y un grupo de ellos representan a cada símbolo. Un bit tiene dos estados: 0 y 1. Cada uno de ellos puede equivaler a un voltaje, así por ejemplo el 0 corresponder a un voltaje positivo +V y el 1 al mismo volyaje pero con signo negativo –V. http://www.tonet.jazztel.es 34 En el caso de los símbolos, con n bits, se pueden representar 2n símbolos o a la inversa, ¿cuántos bits se necesitan para representar M símbolos? N = log2 M bits Ahora si a cada símbolo, le ha de corresponder un nivel de tensión, en el caso de un símbolo representado por 2 bits, una posible combinación de voltajes sería Símbolo Tensión 11 +V1 10 +V2 01 -V2 00 -V1 La transmisión de señales discretas es la transmisión característica de las redes de ordenadores. Con el fin de regenerar la señal, que se atenua a lo largo de un recorrido, se emplean repetidores. Si las señales son continuas, primero tienen que ser digitalizadas. Luego se pueden transmitir tal cual o aplicando algún tipo de modulación. 8.3.3.Resumen Transmisión analógica Transmisión digital Señal continua En banda base o con Antes de la transmisión, se modulación. deben digitalizar las señales continuas. Señal discreta No se usa Es una transmisión directa con o sin codificación. 8.4. Velocidad de modulación, velocidad de transmisión y criterio de Nyquist 8.4.1.Velocidad de propagación Se define la velocidad de propagación Vp como la velocidad a la que se transmite la señal a través de un medio de transmisión. Esta velocidad de propagación determina el tiempo de propagación de la señal y unicamente depende de la distancia a recorrer entre el emisor y el receptor. http://www.tonet.jazztel.es 35 Asi si llamamos tp al tiempo de propagación, su valor viene determinado por la fórmula tp = distancia / Vp 8.4.2.Velocidad de transmisión Se entiende por velocidad de transmisión Vt al número de bits que se transmiten por unidad de tiempo. Su unidad es bits por segundo (bps). Esta velocidad depende de las características de los equipos de transmisión y recepción. Si la transmisión de 1 bit dura Tb segundos, la velocidad de transmisión Vt = 1/Tb bps Así el tiempo de transmisión de n bits valdrá t t = n / Vt 8.4.3.Velocidad de modulación Se entiende por velocidad de modulación Vm al número de símbolos que se transmiten por unidad de tiempo. Su unidad son los baudios. Si la transmisión de 1 símbolo dura T s segundos, la velocidad de modulación valdrá Vm = 1/Ts baudios 8.4.4.Relación entre velocidad de transmisión y de modulación La relación entre la velocidad de transmisión Vt y la velocidad de modulación Vm es el número de bits n que se emplean para la representación de un símbolo. V t = Vm · n Así si cada bit representa un símbolo, es decir, n = 1, en este caso la velocidad de transmisión Vt es igual a la velocidad de modulación Vm De la misma forma con n=2, es decir, que cada símbolo se represente por 2 bits, entonces Vt = 2 Vm. 8.4.5.Relación entre la velocidad de transmisión y las frecuencias Si el tiempo de símbolo Ts disminuye, su frecuencia fs aumenta, dado que fs = 1 / Ts, y por consiguiente aumenta la velocidad de modulación. Si el tiempo de símbolo Ts aumenta, su frecuencia fs disminuye, dado que fs = 1 / Ts, y por consiguiente disminuye la velocidad de modulación. http://www.tonet.jazztel.es 36 8.4.6.Criterio de Nyquist Según Nyquist, en un sistema sin ruido y dado un ancho de banda Bw, la velocidad máxima de modulación Vm que se puede transmitir es Vm = 2 B w en el caso de señales de un solo nivel. Así con un canal de voz de 3100 Hz, la velocidad máxima de modulación es 6200 bps. En el caso de señales multinivel, la capacidad máxima de canal que se necesita es Cmax = 2 Bw log2 M donde Vm la velocidad de transmisión y M el número de niveles. Por ejemplo, en el ejemplo anterior, si M=8, valor frecuente en los modems, C = 2 · 3100 · log2 8 = 2 · 3100 · 3 = 18600 bps 8.5. Concepto de distorsión Una señal mientras se transmite y circula através de un medio, varía de forma, con lo que el receptor no recibe exactamente lo mismo que el emisor ha enviado. A esta fenómeno se le llama distorsión. Hay dos tipos de distorsiones: lineal y del retardo. Distorsión lineal Es el fenómeno producido porque el módulo de la función de transferencia no es constante y como consecuencia de lo cual no todas las frecuencias son transferidas con el mismo valor. Distorsión del retardo Es el fenómeno producido porque la velocidad de propagación varía con la frecuencia de la señal y en consecuencia cada una de las frecuencias no tarda el mismo tiempo en llegar al destino. Así si el retardo es muy grande, se puede producir lo que se llama interferencia intersimbólica (ISI), es decir, puede haber solapamiento de señales de distintas frecuencias, porque hay frecuencias que llegan antes que la frecuencia base o principal y otras llegan después de la frecuencia base o principal. A esta distorsión del retardo, también se le llama dispersión, ya que en este caso la señal se ensancha con el tiempo. La dispersión se puede solucionar a través del un diseño adecuado de los cables, limitando su longitud y detectando cuál es la impedancia adecuada. En el caso de la fibra óptica, la dispersión se puede controlar http://www.tonet.jazztel.es 37 utilizando luz láser con una longitud de onda muy específica. En el caso de las comunicaciones inalámbricas, la dispersión se puede reducir al mínimo a través de las frecuencias que se usan para realizar la transmisión. Fluctuación de fase Todos los sistemas digitales disponen de relojes que son los que marcan el ritmo de procesamiento de sus sistemas. Así cada CPU contiene un reloj que por un lado marca la velocidad de procesamiento y por otro lado controla la frecuencia de los bits transmitidos y recibidos. Si el reloj del dispositivo origen no está sincronizado con el reloj del dispositivo destino, se producirá una fluctuación de fase de temporización. Esto significa que los bits llegarán un poco antes o después de lo esperado. La fluctuación de fase se puede solucionar mediante una serie de complicadas sincronizaciones de reloj, incluyendo sincronizaciones de hardware y software, o de protocolo. Latencia La latencia, también denominada demora, es el tiempo que tarda la señal en llegar desde el emisor y al receptor. Esta latencia tiene dos causas principales: • la velocidad de propagación y • el procesamiento de las señales dentro de los dispositivos. Esto sucede cuando se trata de un dispositivo de enrutamiento. La función principal de este tipo de dispositivos es reencaminar una señal que le llega, para a continuación reenviarla. Por esta razón el dispositivo que recibe la señal, debe analizarla y esto lleva tiempo. Este tiempo es una latencia. 8.6. Concepto de atenuación Atenuación es la pérdida de la potencia de la señal como consecuencia de recorrer una distancia a través de un medio durante una transmisión. Esto significa que si se trata de un voltaje de una señal de 1 bit, esta señal pierde amplitud a medida que recorre la distancia a recorrer entre el emisor y el receptor. Una selección cuidadosa de los materiales y una geometría (forma y posicionamiento) del cable puede disminuir la atenuación eléctrica, aunque no se puede evitar que se produzcan pérdidas cuando se trata de una transmisión por cable debido al efecto de la resistencia eléctrica. La atenuación puede afectar a una red dado que limita la longitud de los cables de la red a través de la cual se envia un mensaje. Si el cable es demasiado largo o demasiado atenuante, un bit que se envía desde el origen puede parecer un bit cero para el momento en que llega al destino. La atenuación también se produce en las señales ópticas, dado que la fibra óptica absorbe y dispersa parte de la energía luminosa a medida que el pulso luminoso, un bit, se desplaza a través de la fibra. Esto se puede reducir considerablemente mediante el empleo de una longitud de onda determinada. Esto también se puede http://www.tonet.jazztel.es 38 reducir dependiendo del tipo de fibra utilizada. A pesar de todo la atenuación de la señal es inevitable. La atenuación también se produce con las ondas de radio y las microondas, ya que éstas son absorbidas y dispersadas por moléculas específicas de la atmósfera. La atenuación At se mide como la relación entre la potencia del emisor Pe y la potencia del receptor Pr At = Pe / Pr La unidad de medida de la atenuación es el decibelio y se define como el valor del cociente entre dos niveles de señal, tomando a uno como referencia. Así por ejemplo si tenemos una potencia P con una unidad de medida cualquiera, y otra Pref con la misma unidad de medida, si queremos expresar su relación en decibelios, emplearemos la fórmula P (dB) = 10 log10 P / Pref Dado el carácter logarítmico del decibelio, la expresión de la atenuación en decibelios es At = Pe (dB)- Pr (dB) Si α es el parámetro de calidad de un cable, es decir, el número de db/km, entonces At = α · D = Pe (dB) - Pr (dB) Tres consideraciones respecto a la atenuación: - La señal recibida debe tener suficiente energía para que la electrónica del receptor pueda detectar e interpretar la señal adecuadamente, es decir, la interprete de forma que coincida con su valor original. - Para poder ser reproducida con suficiente fiabilidad, la señal debe conservar un nivel suficientemente mayor que el ruido, es decir, la relación señal/ruido debe ser lo más alta posible. - La atenuación es una función creciente de la frecuencia. Con el fin de regenerar esta pérdida de potencia, se instalan los llamados amplificadores. Son equipos electrónicos que aumentan la potencia recibida por un factor de ganancia G. En este caso si la potencia de entrada al amplificador es Pe y la de salida Ps, G = Ps / Pe o en dB, sería G = Ps - Pe Así si la potencia de entrada es de 1 mW y la de salida 1 w, G = 1 / 0,001 = 1000 y en dB, G = 10 log10 1000 = 30 dB http://www.tonet.jazztel.es 39 8.7. Fuentes de ruido El ruido es un conjunto de señales no deseadas que interfieren a las señales eléctricas, ópticas o electromagnéticas que se transmiten. Ninguna señal eléctrica se produce sin ruido, sin embargo, lo importante es mantener la relación señal/ruido (S/N) lo más alta posible, de forma que la proporción del nivel de ruido sobre la amplitud de la señal sea la menor posible, porque de esta manera la distorsión es menos sensible. En otras palabras, cada bit recibe señales adicionales no deseadas desde varias fuentes. Demasiado ruido puede corromper un bit, haciendo que un 1 binario se transforme en un 0 binario, o un 0 en un 1, y por tanto que se corrompa el mensaje. Los aparatos que generan ruido son por ejemplo: las luces fluorescentes, las estufas, las radios, los filtros de aire, los televisores, los ordenadores, los sensores de movimiento, los radares, los motores, los interruptores, los aparatos de soldadura, los dispositivos electrónicos de encendido automático de todo tipo,etc. El ruido puede clasificarse según su origen en - ruido impulsivo (EMI, ...) - diafonía (crosstalk) y - ruido térmico. El ruido se mide calculando la relación señal/ruido en decibelios. Así se define la relación señal/ruido como S/N = 10 log10 (Potencia de señal / Potencia de ruido) Una relación señal/ ruido (S/N) alta significará una señal de alta calidad. 8.7.1.EMI/RFI (Interferencia electromagnética/interferencia de la radiofrecuencia) Las fuentes externas que pueden disminuir la calidad de las señales eléctricas que se transmiten por un cable son los sistemas de iluminación, los motores eléctricos y los sistemas de radio. Estos tipos de interferencia pueden generar una interferencia electromagnética (EMI) y una interferencia de la radiofrecuencia (RFI). En los cables con varios conductores en cada uno de ellos, cada conductor puede actuar como una antena. Cuando esto sucede, el conductor absorbe las señales eléctricas de los demás conductores y de las fuentes eléctricas ubicadas fuera del cable. Si el ruido eléctrico resultante alcanza un nivel lo suficientemente alto, puede ser difícil para las tarjetas de red discriminar el ruido de la señal de datos. Esto es un problema especialmente porque la mayoría de las LAN utilizan frecuencias en la región de 1-100 MHz, que es la banda de las señales de la radio FM y las señales http://www.tonet.jazztel.es 40 de televisión y también muchos otros aparatos tienen sus frecuencias operativas en estas bandas. Para comprender de qué manera el ruido eléctrico de cualquier origen causa un impacto en las señales digitales, imaginemos que se desea enviar datos, representados por el número binario 1011001001101, a través de una red. El ordenador convierte el número binario en una señal digital. La señal digital se transmite a través de los medios de la red hacia el destino. El destino como es un ordenador, estará cerca de un toma de corriente eléctrica que es alimentada por cables largos neutros y con conexión a tierra. Estos cables actúan como una antena a efectos del ruido eléctrico. Como el chasis del ordenador destino se utiliza tanto para la conexión a tierra como para la conexión a tierra de referencia de señal, este ruido interfiere con la señal digital que recibe el ordenador. Así podría suceder que el ordenador destino en vez de leer 1011001001101, podría leer la señal como 1011000101101, es decir, que los bits 7 y 8 resultasen cambiados. Evidentemente el ordenador actuaría de forma difstinta. A diferencia de los sistemas que utilizan cable de cobre, los sistemas inalámbricos son particularmente propensos a la interferencia electromagnética y a la interferencia de la radiofrecuencia. Para evitar el problema de la conexión a tierra de referencia de la señal, es importante trabajar en estrecha relación con el contratista eléctrico y la compañía de electricidad, con el fin de obtener la mejor y la más corta conexión eléctrica a tierra. Al trabajar con el contratista eléctrico, se debe solicitar la instalación para cada área de oficina de paneles separados de distribución de electricidad, también conocidos como disyuntores. Dado que los cables neutros y de conexión a tierra de cada toma de corriente se juntan en el disyuntor, al tomar esta medida aumentarán las posibilidades de acortar la longitud de la conexión a tierra. Si bien el instalar paneles individuales de distribución de electricidad para cada grupo de ordenadores aumentará el costo primario del cableado eléctrico, esto reducirá la longitud de los cables de conexión a tierra y limitará varios tipos de ruido eléctrico que enmascaran las señales. Hay varias formas de limitar la interferencia electromagnética (EMI) y la interferencia de la radiofrecuencia (RFI). Una forma consiste en aumentar la sección de los cables conductores. Otra forma sería mejorar el tipo de aislante empleado. Sin embargo estos métodos aumentan el tamaño y el costo de los cables, sin mejorar demasiado la calidad. Dos de las técnicas que los diseñadores de cables han usado con éxito para disminuir la EMI y la RFI, son el blindaje y la cancelación. En el caso de un cable que utiliza blindaje, cada par de hilos o grupo de pares de hilos se recubre de una malla o un papel metálico. Este blindaje actúa como barrera contra las señales de interferencia. Sin embargo, al igual que el uso de conductores de mayor sección, el uso de revestimientos de malla o papel metálico aumenta el diámetro del cable y en consecuencia también aumentan los costos. En cuanto a la cancelación, es la técnica más comúnmente empleada para proteger los cables de las interferencias indeseables. Cuando la corriente eléctrica fluye a través de un cable, crea un pequeño campo magnético circular a su alrededor. La http://www.tonet.jazztel.es 41 dirección de estas líneas de fuerza magnética se determina por la dirección en la cual fluye la corriente a lo largo del cable. Si dos cables forman parte del mismo circuito eléctrico, los electrones fluyen desde la fuente de voltaje negativo hacia el destino a lo largo de un cable. Luego los electrones fluyen desde el destino hacia la fuente de voltaje positivo a lo largo del otro cable. Cuando dos cables de un circuito eléctrico se colocan uno cerca del otro, los campos magnéticos de un cable son el opuesto exacto del otro. Así los dos campos magnéticos se cancelan entre sí. También se cancelarán cualquier otro campo magnético externo. El hecho de trenzar los cables puede mejorar el efecto de cancelación. Si se usa la cancelación en combinación con cables trenzados, los diseñadores de cables pueden brindar un método efectivo para proporcionar un autoblindaje para los pares de hilos dentro de los medios de la red. 8.7.2.Diafonía (Crosstalk) Cuando el ruido eléctrico del cable tiene origen en las señales de otros conductores del cable, se dice que hay diafonía. Cuando dos hilos están colocados uno muy cerca del otro y no están trenzados, la energía de un hilo puede trasladarse al hilo adyacente y viceversa. Esto puede provocar ruido en ambos extremos de un cable. En realidad existen muchas formas de diafonía que se deben tener en cuenta al desarrollar las redes de ordenadores. En inglés diafonía es NEXT (near-end Xcrosstalk). El efecto de la diafonía aumenta con la frecuencia, porque a frecuencias más altas, se propaga más energía. Por el contrario, disminuye con la longitud. 8.7.3.Ruido térmico El ruido térmico es debido al movimiento aleatorio de electrones dentro de los cables. Este ruido térmico es inevitable pero por lo general es relativamente insignificante su valor en comparación con las señales digitales. Se dice que el ruido es blanco si su densidad espectral es plana para todas las frecuencias. Según Shanon, en un sistema con ruido, la capacidad máxima del canal, en bps, es la máxima velocidad a la que se puede transmitir la información con una probabilidad de error acotada. Es decir Shannon amplía en trabajo de Nyquist a sistemas con ruido y que por tanto se ajustan más a la realidad. Así la definición de capacidad máxima de canal es C = Bw log2 (1 + S/N ) siendo Bw el ancho de banda en hz y S/N la relación señal / ruido en valores absolutos. Si la velocidad de transmisión Vt es inferior a la capacidad de canal C, se puede encontrar un esquema de codificación con una probabilidad de error acotada. http://www.tonet.jazztel.es 42 Si la velocidad de transmisión Vt es superior a la capacidad de canal C, no es posible transmitir información sin errores. Por ejemplo, supongamos que tenemos un canal telefónico con un ancho de banda Bw de 4 kHz y una relación señal/ruido de 30 dB. Con el fin de aplicar la fórmula de Shanon, primero debemos transformar el valor de la relación señal/ruido a valores absolutos. 30 = 10 log10 (S/N) por tanto 3 = log10 (S/N) y en consecuencia S/N = 1000 C = 4000 log2 (1 + 1000) = 4000 log2 1001 = 4000 · ( log10 1001 /log10 2) C = 4000 · (3,000434 / 0,301030) = 39869 bps Este es el límite de un canal telefónico. 8.8. Reflexión de la señal Para comprender la reflexión de una señal, nos tenemos que imaginar una soga extendida y sostenida por una persona en cada extremo. Luego imaginemos que una persona le envía a la otra persona un "pulso" o un mensaje de 1 bit. Si se observa cuidadosamente, se verá que una pequeña onda (pulso) vuelve (se refleja) hacia el que originó el pulso. Esta reflexión se produce en las señales eléctricas. Cuando los pulsos de voltaje, o bits, tropiezan con una discontinuidad, se pueden producir reflexiones de la energía. Si no se controla cuidadosamente este efecto, esta energía puede interferir con bits posteriores. Recordemos que aunque en este momento estamos considerando sólo 1 bit a la vez, en las redes reales se envian millones y miles de millones de bits por segundo, lo que requiere tener en cuenta este pulso de energía reflejado. Según el cableado y las conexiones que utiliza la red, las reflexiones pueden o no ser un problema. La reflexión también se produce en el caso de las señales ópticas. Las señales ópticas reflejan si tropiezan con alguna discontinuidad en el medio, como en el caso de un conector enchufado a un dispositivo. Este efecto se puede apreciar de noche, al mirar a través de una ventana. Usted puede ver su reflejo en una ventana aunque la ventana no es un espejo. Parte de la luz que se refleja desde su cuerpo se refleja en la ventana. Este fenómeno también se produce en el caso de las ondas de radio y las microondas, ya que detectan distintas capas en la atmósfera. Para un funcionamiento óptimo de la red, es importante que los medios de transmisión tengan una impedancia específica para que concuerden con los componentes eléctricos de las tarjetas de red. A menos que los medios de transmisión tengan la impedancia correcta, la señal experimentará una determinada reflexión y se creará la interferencia correspondiente. A continuación se pueden producir múltiples pulsos reflejados. Ya sea que el sistema sea eléctrico, óptico o inalámbrico, la falta de acoplamiento en cuanto a la impedancia puede provocar http://www.tonet.jazztel.es 43 reflexiones. Si se refleja suficiente energía, un bit que puede tener dos estados 0 ó 1, se pueden confundir debido a toda la energía adicional que se genera a su alrededor. http://www.tonet.jazztel.es 9. 44 Líneas de transmisión La línea de transmisión es el camino físico a través del cual se propaga la señal. La transmisión de datos entre un emisor y un receptor siempre se realiza a través de una línea de transmisión. Los medios de transmisión se pueden clasificar como guiados y no guiados. En los medios guiados, las ondas se transmiten confinándolas a lo largo de un medio físico, tales como pares trenzados, cables coaxiales y fibras ópticas. Por el contrario, los medios no guiados proporcionan una forma de transmitir las ondas electromagnéticas pero sin encauzarlas, como por ejemplo en la propagación a través del aire, el mar o el vacío. Los medios guiados pueden ser: • con cable de cobre: coaxial o par trenzado • de fibra óptica: multimodo y monomodo Los medios no guiados son por ejemplo las redes inalámbricas, las emisiones de radio y TV, y las transmisiones via satélite. 9.1. Cable coaxial El cable coaxial está formado por un núcleo de cobre rodeado por un aislante, una malla metálica que hace de apantallamiento y una cubierta exterior. El apantallamiento protege la señal transmitida contra las interferencias de señales externas indeseadas o ruidos. El cable coaxial es más robusto frente a las interferencias y a la atenuación que el par trenzado. El blindaje forma parte del circuito de datos. http://www.tonet.jazztel.es 45 Hay 2 tipos básicos de cable coaxial: - Fino. Tiene un grosor de 6 mm y se conecta directamente a las tarjetas de red. La distancia recomendable máxima es de 185 m. y una impedancia de 50 ohm. - Grueso. Tiene un grosor de 12 mm. y su distancia máxima recomendable es de 500 m. También tiene una impedancia. 50 ohm. No se conecta directamente a las tarjetas de red, por lo que utiliza un transceptor, que consiste en una caja que pinza al coaxial grueso por un lado, y por el otro tiene un conector, al cual se conecta el cable coaxial a la tarjeta de red. Este conector es conocido como AUI. Los conectores de los cables coaxiales son conocidos como BNC (British Naval Connector), y hay de 3 tipos: cilíndrico, en T y terminador. 9.2. Par trenzado El cable de par trenzado más sencillo está formado por 2 conductores de cobre enttrelazados entre sí y con una cubierta aislante. Hay 2 tipos: sin apantallar (UTP) y apantallados (STP). El UTP tiene una impedancia de 100 ohm y el STP de 150 ohm. El cable STP, a diferencia del cable coaxial, la malla de apantallamiento no forma parte del circuito de datos. El cable apantallado STP mejora la respuesta a las interferencias respecto al UTP, pero por el otro lado disminuye el ancho de banda máximo soportado. Sus especificaciones corresponden a la norma 568 de EIA/TIA, y de acuerdo con ésta hay 7 categorías: - Categoría 1. Empleado solo en voz. - Categoría 2. Consta de 4 pares trenzados y solo se recomiendan hasta 4 Mbps. - Categoría 3. Consta de 4 pares trenzados y solo se recomiendan hasta 10 Mbps. - Categoría 4. Consta de 4 pares trenzados y solo se recomiendan hasta 16 Mbps. - Categoría 5. Consta de 4 pares trenzados y solo se recomiendan hasta 100 Mbps. - Categoría 6. Consta de 4 pares trenzados y solo se recomiendan hasta 250 Mbps. - Categoría 7. Consta de 4 pares trenzados y solo se recomiendan hasta 600 Mbps. Se recomiendan distancias máximas de 100 m. Los conectores que se emplean son el RJ-11 de 4 hilos y el RJ-45 de 8 hilos. http://www.tonet.jazztel.es 46 Tabla de atenuaciones máximas en dB de un cable de 305 m. a 20ºC Frecuencia (Mhz) 1 4 10 16 20 25 100 Categoría 3 7,8 17 30 40 - Categoría 4 Categoría 5 6,5 6,3 13 13 22 20 27 25 31 28 32 67 9.3. Fibra óptica Este cable consiste en un núcleo, que es la fibra óptica propiamente dicha, y un revestimiento o cladding. No solo se fabrican cables de una sola fibra, sino también agrupaciones de cables de más de una fibra. Este medio físico consiste en la transmisión de la información mediante la luz. En la actualidad hay de 2 tipos: monomodo y multimodo. El término multimodo indica que pueden ser guiados muchos modos o rayos luminosos cada uno de los cuales sigue un camino distinto dentro de la fibra óptica. Las fibras multimodo son las habituales y tienen un diámetro del núcleo superior a 10 micras. Su distancia máxima recomendada es de 10 km. Las fibras monomodo solo permiten la propagación de un único modo o rayo, el cual se propaga directamente sin reflexión. Estas fibras tienen un diámetro del núcleo inferior a 10 micras. Se recomienda distancias máximas de 100 Km. Las características ópticas, geométricas y de transmisión se recogen en las recomendaciones del CCITT, tales como las G.651 y G.652 http://www.tonet.jazztel.es 47 Sus ventajas son: - bajas pérdidas, y en consecuencia necesidad de menor número de repetidores - gran anchura de banda, y en consecuencia bajo coste por canal - resistencia a radiaciones e inmunidad a las interferencias electromagnéticas, es decir, no necesita apantallamiento - estable con la temperatura - bajo precio Sus inconvenientes son: - necesidad de radios de curvatura amplios para disminuir de forma importante las atenuaciones - difícil de empalmar (conectorización y empalmes). Tipos: empalme, fusión, mecánico, pigtails - difícil de intervenir en cuanto a reparaciones. En cuanto a los conectores, existen básicamente 6 tipos: - SMA. Anclaje por rosca y sólo se utiliza en fibras multimodo. Pérdidas de 1 dB en 50/125 micras. - Bicónico. Anclaje por rosca. Pérdidas de 0,6 dB en 50/125 micras. - ST. Anclaje por bayoneta. Pérdidas de 0,3 dB en 50/125 micras. - Mini BNC. Anclaje por bayoneta y sólo se utiliza en fibras multimodo. Pérdidas de 0,7 dB en 59/125 micras. - FC/PC. Anclaje por guía y rosca. Pérdidas de 0,1 dB en 50/125 micras. - SC. Anclaje por push-pull. Pérdidas de 0,3 dB en 50/125 micras. http://www.tonet.jazztel.es 48 En la actualidad lo caro son las interfaces, y hay 2 tipos de focos de emisión: - LED para fibra multimodo y - Láser para fibra monomodo. La atenuación en las fibras ópticas es producida por tres causas: dispersión, debida a defectos microscópicos de la fibra; absorción, debida a materiales no deseados de la fibra y flexión debida a las curvaturas. A continuación se expone un ejemplo del cálculo de una transmisión por fibta óptica. Se trata de un emisor con una potencia de -14 dB y un receptor con una sensibilidad de -29 dB. Entre ellos se ha tendido un cable de fibra óptica de 2500 metros, habiendo 4 empalmes por fusión en este tramo. Los conectores que se emplean son ST y se calcula el margen del diseño. Para ello es necesario el cálculo de las pérdidas totales. Potencia de transmisión -14 dB Sensibilidad del receptor -29 dB Ganancia disponible del sistema: 15 dB 4 empalmes por fusión (0.1 dB cada uno): 0.4 dB 2500 metros de cable de fibra óptica (3.5 dB/Km): 2 conectores ST (0.5 dB máx. por conector): Total de pérdidas: Margen de diseño: 8.75 dB 1.0 dB 10.15 dB 4.85 dB Como podemos ver disponemos de 4.85 dB de margen. Es recomendable que se disponga de un margen de 3 dB, ya que los valores utilizados para las pérdidas pueden variar debido a efectos de temperatura, extensiones del enlace, empalmes adicionales debido a restauraciones de emergencia. http://www.tonet.jazztel.es 49 10. Modulación 10.1.Concepto de modulación La modulación consiste en modificar la onda senoidal correspondiente a la frecuencia base, llamada señal portadora, por distintos parámetros o la combinación de varios de ellos. Los parámetros posibles en cuanto a generar una modulación son: la amplitud, la frecuencia y la fase. Modulación por amplitud En una onda modulada por amplitud, la amplitud de las oscilaciones de radiofrecuencia se varía de acuerdo con la información que se quiere transmitir. Modulación por frecuencia En la modulación por frecuencia, se varía la frecuencia instantánea de la onda de radiofrecuencia de acuerdo con la señal que se desea transmitir, mientras que se mantiene constante la amplitud de la onda. Por ejemplo, si se quiere transmitir una onda senoidal de 500 Hz por medio de la modulación por frecuencia de una portadora de 1.000.000 Hz, se variará la frecuencia instantánea entre 1.000.010 y 999.990 Hz a razón de 500 Hz. La agrupación de varias señales con frecuencias centrales muy cercanas permite la transmisión simúltanea y diferenciada de estas señales a través de un mismo medio de transmisión. A esto se le llama multiplexación por división de frecuencias (FDM). http://www.tonet.jazztel.es 50 Cada una de las señales que constan de una frecuencia central y un pequeño rango de frecuencia a su alrededor se la llama canal. Modulación por fase Una onda modulada por fase es una onda en la cual se varía el valor de la fase de referencia de modo que su magnitud sea proporcional a la amplitud instantánea de la señal moduladora. 10.2.Tipos de modulación El cuadro resumen de los distintos tipos de modulaciones en comunicaciones es el siguiente: Señal moduladora Analógica Señal Análogica portadora Digital Banda base Digital Banda base Modulaciones lineales: AM, FSK ASK DBL, BLU, BLV, QM PSK Modulaciones angulares: PM DPSK QPSK y FM MPSK QAM TCM PAM, PDM No es modulación. DM DPCM Modulaciones digitales adaptativas http://www.tonet.jazztel.es 51 10.3.Señal moduladora analógica Modulaciones lineales AM: Modulación de amplitud. La amplitud de la señal es en función de la señal moduladora. Se utiliza en radiofusión y tiene el inconveniente de que es muy sensible al ruido. DBL: Modulación de doble banda lateral. En inglés, DSB. Es como la anterior, con la diferencia de que no se transmite la señal portadora. BLV: Modulación de banda lateral única En inglés SSB. Es como la DBL anterior, pero que en este caso se filtra una de las 2 partes del espectro. Esto conlleva la necesidad de un ancho de banda más pequeño. Se utiliza mucho en la multiplexación por frecuencia para telefonía. BLV: Modulación de banda lateral vestigial. En inglés, VSB. Es como la anterior, pero en la parte filtrada, se deja algo de señal, lo que facilita su demodulación. QM: Modulación en cuadratura. Con esta modulación se pueden transmitir 2 informaciones al mismo tiempo. En este tipo de modulación, el problema es la sincronización de las 2 informaciones, dado que esta modulación se basa en el ángulo de fase de la señal. Modulaciones angulares PM: Modulación de fase FM: Modulación de frecuencia. Tiene mejor relación señal/ruido que la AM, pero necesita de mayor ancho de banda. Modulación digital Consiste en la conversión de una información analógica en una secuencia de caracteres discretos. Esto consta de 2 operaciones fundamentales: el muestreo y su cuantificación. PAM (Pulse Amplitude Modulation) : modulación analógica por impulsos en función de su amplitud. Es poco utilizada por ser muy sensible a la perturbaciones. PDM (Pulse Duration Modulation) : modulación analógica por impulsos en función de su duración. PPM (pulse Position Modulation) : como la PDM, pero la duración de los impulsos es más corta. PCM (Pulse Code Modulation) : Modulación por impulsos codificados. Consiste en un muestreo por frecuencia y una cuantificación de M niveles. Esta técnica se utiliza para codificar las señales analógicas telefónicas, por ejemplo, la banda de voz de http://www.tonet.jazztel.es 52 300 Hz a 3400 Hz, y se muestrea con una frecuencia de 8 kHz y 256 niveles. También se utiliza en la transmisión de música y de TV. DM : Modulación Delta. Se caracteriza porque su velocidad de transmisión coincide con la frecuencia de muestreo. DPCM : Modulación PCM diferencial. 10.4.Señal moduladora digital Banda base Es el caso en que la señal de datos se envía directamente a la línea. Modulación FSK ( Frequency-Shift Keying) Es una modulación por desplazamiento de la frecuencia. Solo se puede emplear para baja velocidad, máximo 7200 bps. Modulación ASK (Amplitud-Shift Keying) Es una modulación por desplazamiento de la amplitud. No se utiliza por ser muy sensible a los ruidos. Velocidad máxima 1200 bps. A veces se usa en conjunción con PSK y FSK. Modulación PSK (Phase-Shift Keying) Es una modulación por desplazamiento de fase y por esta razón solo se puede utilizar en sistemas síncronos, porque se deben sincronizar las fases del emisor y del receptor. Se alcanzan velocidades de hasta 7200 bps. Modulación DPSK (Differential Phase-Shift Keying) Es una modulación por desplazamiento de fase diferencial, es decir, en este caso, no se toman los valores absolutos de fase sino sus diferencias. Esta modulación facilita la sincronización y es poco sensible al ruido. Su velocidad habitual de transmisión es de 1200 bps. Modulación QPSK (Quadrature Phase-Shift Keying) Es una modulación de fase en cuadratura o modulación cuatrifásica diferencial. Modulación MPSK (Multi Phase-Shift Keying) Es una modulación multifásica. http://www.tonet.jazztel.es 53 Modulación QAM (Quadrature Amplitude Modulation) Es una modulación de amplitud en cuadratura. Se utiliza en los modems con recomendación V.29 Modulación TCM (Trellis Coded Modulation) Esta modulación es análoga a la QAM, pero antes de modular se hace una codificación. Esta modulación se usa en la recomendación V.32 http://www.tonet.jazztel.es 54 11. Codificación de canal El elemento básico de la información de las redes de datos es el dígito binario 1, denominado bit o pulso. Un bit, en un medio eléctrico, es una señal eléctrica que corresponde al 0 binario o al 1 binario. Esto puede ser tan sencillo como 0 voltios para el 0 binario y +5 voltios para el 1 binario, o una codificación más compleja. En el caso de las señales ópticas, el 0 binario se codifica como una intensidad baja, o sin luz (oscuridad). El 1 binario se codifica como una intensidad luminosa alta (brillo) o con otros modelos más complejos. En el caso de las señales inalámbricas, el 0 binario podría ser una ráfaga breve de ondas y el 1 binario podría ser una ráfaga de ondas de mayor duración, u otro modelo más complejo. En la práctica, estos bits se transmiten codificados siguiendo distintas técnicas de codificación. Esta técnicas se pueden agrupar en dos tipos: - codificaciones digitales. En estos casos se emplean señales discretas de baja frecuencia mediante dispositivos del tipo paso bajo. - modulaciones digitales. En estos casos se emplean señales continuas y los dispositivos pueden ser de paso bajo o de paso banda. Si son de paso bajo sólo podrán pasar las frecuencias bajas, y si es de paso banda, es un rango de frecuencias concreto y determinado. Estas son propias de los sistemas de comunicaciones. Las codificaciones digitales sin modulación son las que se emplean en las transmisiones de las redes de ordenadores cableadas siendo sus características más importantes: - El ancho de banda Bw que utilizan. Recordemos los conceptos de velocidad de modulación y velocidad de transmisión. La ausencia de componentes de altas frecuencias significa que se necesita menos ancho de banda para su transmisión. - La robustez de la señal. - Influencia frente al ruido medido con el concepto de la relación señal/ruido (SNR). - La facilidad de sincronización. Si ayudan o no a sincronizar el reloj de los dispositivos. - La necesidad de envío de señales con o sin componentes continuas. Las codificaciones digitales más habituales son : NRZ, AMI bipolar, Manchester y B8ZS. También se usan otras como el 4B/5B en FDDI, el HDB3, etc. http://www.tonet.jazztel.es 55 11.1.Codificación NRZ (Non Return to Zero) La codificación NRZ, código sin retorno a cero, es la codificación más sencilla. En general para transmitir un bit (0 o 1), es suficiente codificar un valor con una señal alta y el otro valor con una señal baja, por ejemplo +5 o +3,3 V para el 1 binario y 0 V para el 0 binario. En el caso de las fibras ópticas, el 1 binario puede ser un LED o una luz láser brillante, y el 0 binario la oscuridad o sin luz. En el caso de las redes inalámbricas, el 1 binario puede significar que hay una onda portadora y el 0 binario que no hay ninguna portadora. Un inconveniente de esta codificación es que no se puede distinguir el estado de reposo o el de no transmisión con la transmisión de un cero. Para ello es conveniente usar un tercer nivel y esto es lo que incorpora la codificación NZR, donde un 0 es una señal alta (+V) y el 1 una señal baja (-V) y el estado de no transmisión es por ejemplo 0 V. Estado Tensión Reposo 0 0 +V 1 -V Las codificaciones NRZ son las más fáciles de implementar y además se caracterizan por hacer un uso eficaz del ancho de banda. Se usan con frecuencia en las grabaciones magnéticas más que en aplicaciones de transmisión de señales. Hay de dos tipos. NRZ - L y NRZ – I 11.1.1.Codificación NRZ - L El significado de NRZ-L es Non Return to Zero Level. En este caso, un bit 0 se codifica como un nivel de tensión alto (+V) y un bit 1 con un nivel de tensión bajo (V). Estado Tensión Reposo 0 0 +V 1 -V http://www.tonet.jazztel.es 56 A continuación hay un ejemplo de codificación de la cadena 01001100011 +V -V 0 1 0 0 1 1 0 0 0 1 1 Sus características son: - Fácil de implementar. - Robusto frente al ruido por su componente continua. - No tiene capacidad de sincronización. - Posibilidad de pérdida de la polaridad de la señal. Si se empleara una codificación diferencial sería más difícil esta pérdida, ya que en este caso la señal se codifica a partir de los elementos de señal adyacentes. 11.1.2.Codificación NRZ - I El significado de NRZ-I es Non Return to Zero Invert on ones. En este caso, un bit 0 se codifica como sin transición al principio del intervalo del bit y un bit 1 como una transición al principio del intervalo del bit. Estado Tensión Reposo 0 0 Sin cambio 1 Con cambio Antes -> Después 0 0 1 No cambia No cambia 1 Cambia Cambia A continuación hay un ejemplo de codificación de la cadena 01001100011 +V -V 0 1 0 0 1 1 0 0 0 1 1 http://www.tonet.jazztel.es 57 La codificación NRZ-I es un ejemplo de codificación diferencial. En la codificación diferencial, en lugar de determinar el valor absoluto, la señal se decodifica comparando la polaridad de los elementos de señal adyacentes. Sus características son: - Es igual a una componente continua en el caso de una cadena de ceros - Sin problemas con la polaridad debido al empleo de codificación diferencial. - Mejora la sincronización con los unos pero no con los ceros. 11.2.Codificación AMI bipolar Las codificaciones bipolares son de tipo multinivel, es decir, usan más de dos niveles de señal. El significado de la AMI bipolar es bipolar with Alternative Mark Inversion. En este caso, un bit 0 se codifica como la ausencia de señal, es decir, 0 voltios y un bit 1 como nivel +V o -V, alternando según los unos sucesivos. Estado Tensión Reposo 0 0 0 1 Cambia en función de la tensión del último bit Antes -> Después 0 1 0 0 0 1 +V o -V +V o -V A continuación hay un ejemplo de codificación de la cadena 01001100011 +V -V 0 1 0 0 1 1 0 0 0 1 1 http://www.tonet.jazztel.es 58 Sus características son: • La codificación de los unos facilita la detección de errores. • Facilita el grado de sincronización. • Hay problemas en el caso de una cadena larga de ceros. 11.3.Codificación Manchester La codificación Manchester da como resultado que el 0 se codifique como una transición de alto a bajo y que el 1 se codifique como una transición de bajo a alta. Dado que tanto los 0 como los 1 dan como resultado una transición en la señal, el reloj se puede recuperar de forma eficaz en el receptor. No depende del bit anterior. La codificación Manchester define un 0 como una señal alta durante la primera mitad del período y baja durante la segunda mitad. Las normas definen al 1 como una señal que es baja para la primera mitad del período y alta para la segunda mitad. En la codificación Manchester el 0 se codifica como una transición de baja a alta y el 1 como una de alta a baja. Como tanto los 0 como los 1 tienen como resultado una transición de la señal, el reloj se puede recuperar efectivamente en el receptor. Sus características son: - Inmunidad al ruido. - No hay componente continua en ningún caso. - Mantiene la sincronización, es decir, no hay necesidad de reloj en cuanto hay transición en medio del bit. - Peor ancho de banda Bw que la codificación NRZ http://www.tonet.jazztel.es 59 11.4.Codificación Manchester diferencial La codificación Manchester combina datos y reloj en símbolos de bit, que se dividen en dos mitades, con la polaridad de la segunda mitad siempre inversa a la de la primera mitad. Así con la codificación Manchester diferencial, el 0 se codifica como una transición al principio del intervalo, mientras que el 1 se codifica como sin transición al principio del intervalo. Como tanto los 0 como los 1 producen una transición de señal, el reloj puede, en efecto, recuperarse en el receptor. Sus características son: - Inmunidad al ruido. - No hay componente continua en ningún caso. - Mantiene la sincronización, es decir, no hay necesidad de reloj en cuanto hay transición en medio del bit. • Necesita un mayor ancho de banda Bw que el Manchester sin diferencial ya que trabaja a doble frecuencia de la velocidad de la red 11.5.Codificación B8ZS El significado de sus siglas es Bipolar with 8 Zeros Substitution. Se basa en el AMI bipolar, con la excepción de que modifica la cadena de 8 ceros seguidos, dando lugar a un intervalo de señal continua muy grande, con una muy probable pérdida de sincronización del reloj. La cadena de 8 ceros seguidos se sustituye por una cadena 000VB0VB donde - B es polaridad normal, es decir, se codifica como un 1 normal - V es la violación de código, es decir, se codifica como un 1 inverso http://www.tonet.jazztel.es 60 Así tendríamos Por lo tanto las reglas son: – Si aparece un octeto con todos ceros y el último valor de tensión anterior a dicho octeto fué positivo, codificar dicho octeto como 000+-0-+ – Si aparece un octeto con todos ceros y el último valor de tensión anterior a dicho octeto fué negativo, codificar dicho octeto como 000-+0+- http://www.tonet.jazztel.es 61 12. Modos de transmisión La transmisión digital consiste en una transmisión serializada de un conjunto de bits, por lo que es necesario que los dispositivos transmisor y receptor funcionen de una forma ordenada, de forma que el receptor pueda distinguir cada una de las partes del mensaje recibido. En general, esta forma ordenada se consigue de 2 formas: síncrona y asíncrona. 12.1. Transmisión asíncrona Este tipo de transmisión consiste en que el tiempo de inicio de transmisión del grupo de bits es impredecible. Entre la transmisión de un grupo de bits y la siguiente transmisión no se transmite nada. En este caso siempre hay una forma de identificar el inicio y el final de la información útil mediante uno o más bits adicionales. Es por ejemplo el caso de una comunicación entre el teclado y un ordenador. La polaridad de los bits de inicio (start) y de fin (stop) debe ser diferente de forma que así siempre haya una transición. También en este tipo de transmisiones la eficiencia es menor porque se envían unos bits adicionales sin llevar información útil. Se emplea en transmisiones de baja velocidad y se utiliza cuando se transmite durante intervalos aleatorios, por ejemplo, un teclado. Lo habitual de esta transmisión es su orientación a carácter y a trama. 12.1.1.Sincronización de bit o de reloj En la transmisión asíncrona, el reloj del receptor corre asíncronamente respecto a la señal de entrada. Pero con el fin de sincronizar el emisor y el receptor, el reloj del receptor funciona a una frecuencia varias veces la velocidad de transmisión, siendo habitual 16 veces. Así es más facil conseguir conocer el centro de la señal del bit transmitido. Así si Vt es la velocidad de transmisión, el tiempo de transmisión de 1 bit tb vale 1/Vt. Si fr es la frecuencia del reloj, es decir, fr = N · Vt y el tiempo de reloj tr valdrá tr= 1 / fr = 1 / (N · Vt ) = tb / N Cuanto más alto sea N, habrá mejor sincronización. http://www.tonet.jazztel.es 62 12.1.2.Sincronización de carácter Se trata de enviar los caracteres de forma secuencial y a su vez poder determinar cual es el primer bit y el último que conforman el carácter, de acuerdo con las distintas codificaciones de carácter existentes (ASCII, EBCDIC,etc.). Este tipo de sincronización tiene que decidir cuando empieza la información de un carácter y cuando termina. La situación de reposo es el estado 1, por ejemplo en la codificación NRZ-L es la tensión baja. El bit de inicio o start siempre es 0, porque el estado de reposo es 1. En cuanto a la parada, siempre termina con 1 o más bits 0 con el fin de provocar al menos un salto y poder resincronizar el reloj. La polaridad de los bits de start y stop han de ser opuestos. Con esta sincronización no todos los bits transmitidos son datos propiamente dichos, por lo que debemos definir la eficiencia de transmisión Et como la relación entre el número de bits de información y el número de bits totales. Et = nº bits de información / nº bits totales En consecuencia, la velocidad efectiva de transmisión Vef vale Vef = Et · Vt Por ejemplo si se transmite 1 carácter ASCII (8 bits), con 1 bit de inicio (start) y 2 bits de final (stop), la eficiencia de transmisión Et vale Et = 8 / (1+8+2) = 8 / 11 = 72,7 % Este esquema no es muy exigente en cuanto a los requisitos de temporización. Si se transmiten caracteres de 8 bits, incluido el bit de paridad, y el receptor es un 5% más rápido o lento que el emisor, el octavo muestreo estará desplazado un 45% que aún es un valor aceptable. Pero si la velocidad de transmisión es de 10000 bps, el tiempo de bit es 0,1 ms. Si el receptor está desincronizado un 6%, es decir, 6 µs por cada bit, el octavo bit lo leerá erróneamente. En realidad tenemos dos errores, uno que el último bit muestreado lo leerá incorrectamente el receptor y dos que la cuenta de bits puede estar desalineada. A este error se le llama de delimitación de trama y también se llama el efecto ISI. 12.1.3.Sincronización de trama En este caso se trata de determinar no solo el inicio y el final de cada carácter sino también poder determinar el inicio y el final de cada trama, es decir, se necesita la sincronización de trama. En estos casos lo habitual es encapsular los caracteres útiles entre 2 caracteres especiales, no imprimibles, llamados STX (start-of-text) que indica el inicio de la http://www.tonet.jazztel.es 63 trama y ETX (end-of-text) que indica el final de la trama. Estos caracteres también se conocen con el nombre de caracteres de control de la transmisión. STX Caracteres imprimibles ETX Sin embargo, si se transmiten datos binarios, estos caracteres no son suficientes por lo que se les precede de otro carácter especial denominado DLE (data link escape) DLE STX Datos binarios DLE DLE Datos binarios DLE ETX Con el fin de detectar una posible combinación de bits que coincidan con el carácter DLE, el emisor en este caso repite esta combinación. Es lo que se conoce como stuffing. 12.2. Transmisión síncrona En la transmisión síncrona, las señales digitales se transmiten a una velocidad constante, de acuerdo con las señales de un reloj. La información transmitida contiene las señales del reloj, permitiendo así la sincronización del reloj del receptor con el reloj del emisor. Aunque no hayan datos a transmitir, siempre se está enviando como mínimo la señal de sincronización. En una transmisión síncrona, - la información transmitida se codifica para facilitar su sincronismo. - todas las tramas van precedidas de 1 o más octetos o caracteres con el fin de que el receptor interprete correctamente el inicio y el fin de las tramas. - el contenido de cada trama se encapsula entre un par de caracteres reservados u octetos para que haya sincronización. Por tanto tenemos unos octetos de sincronización entre tramas y unos octetos de inicio y fin de trama añadidos a la información útil de la trama. Este tipo de transmisión se usa orientada a bit y orientada a carácter. 12.2.1.Sincronización de bit En la sincronixzación de bit, el reloj del receptor debe funciona síncronamente con el reloj del emisor. En este caso, no se emplean bits de inicio ni de fin, que son propios de una transmisión asíncrona. La sincronización se consigue de una de las formas siguientes: - Una que la información del reloj esté incluida en la señal transmitida y que el receptor extraerá u - Otra que el receptor tenga un reloj local pero que se sincronice mediante lo que se conoce como "digital phase-lock-loop". http://www.tonet.jazztel.es 64 En el primer caso, es necesario que haya una codificación apropiada como la AMI bipolar, la Manchester o la Manchester diferencial. En el segundo caso, se extrae de la codificación NRZ-I. 12.2.2.Sincronización de carácter Se trata del sincronismo de caracteres o bloques de ellos. En este caso no hay bits de inicio ni de fin. La sincronización se consigue mediante la adición de dos o más caracteres de control conocidos como SYN, que es un carácter no imprimible. Este carácter tiene dos funciones: - permitir al receptor obtener el bit de sincronización. - permitir al receptor la sincronización del carácter. Como en la transmisión asíncrona, el carácter o bloque de caracteres está encapsulado en los caracteres especiales STX y ETX. Sin embargo ahora el STX estará precedido por un o más caracteres SYN. SYN SYN STX Caracteres imprimibles ETX Si se transmiten datos binarios, estos caracteres no son suficientes por lo que se les precede de otro carácter especial, denominado DLE (data link escape) SYN SYN DLE STX Datos binarios DLE DLE Datos binarios DLE ETX Con el fin de detectar una posible combinación de bits que coincidan con el carácter DLL, el emisor en este caso repite esta combinación. Es lo que se conoce como stuffing. 12.2.3.Orientado al bit El método anterior orientado al carácter es de una eficiencia bastante baja en cuanto a la transmisión de datos binarios. Por ello se ha diseñado otro método orientado al bit que es más eficiente. Se trata de una transmisión orientada al bit y consiste en un flag de inicio y de un flag de final. Este flag consta de 8 bits con una combinación específica y que es la 01111110 En realidad el transmisor antes de enviar el flag de inicio, envía una cadena de unos y al final, después del flag de final, también envía otra cadena de unos. Ahora también habrá stuffing, pero será en el caso de que hayan 5 unos seguidos. En este caso después de 5 unos seguidos siempre se inserta un cero. Por ejemplo si se ha de transmitir la cadena 0111111111101, se envía 011111011111001 Los 2 bits cero en negrita se debe convertir en unos en recepción. http://www.tonet.jazztel.es 65 13. Nivel de enlace A nivel de enlace, en los modelos OSI y TCP/IP, se debe definir el formato de las tramas o mensajes que se envían por la red. Así las informaciones digitales de las que estamos tratando, su elemento básico es el bit, y la transmisión no es bit a bit, sino por grupos de bits, que se llaman tramas a nivel físico (nivel 2). Su formato general es el siguiente Cabecera Datos Control de error es decir, siempre constan de tres partes: – Una cabecera. En este grupo de bits se especifica la información accesoria de la trama, pero no por accesoria tan importante como los datos que se transmiten. – Los datos, en inglés, payload. – Un control de error, con el fin de que el receptor no solo detecte que hay un error en la trama, sino que también haya la posibilidad de recuperarlo sin necesidad de que se reenvíe esta trama. 13.1. Detección de errores Los datos están formados por P bits significativos. Si queremos detectar errores en una transmisión, tenemos que recurrir a la redundancia de los mismos, es decir, a añadir más bits a los P significativos, pero a coste de disminuir su rendimiento. Así el envío de P bits se transforma en el envío de P+Q bits, siendo Q el número de bits redundantes empleados. Al código P+Q se le llama palabra código (code word) y a la transformación de P en Q, código detector de errores. Por tanto la cantidad de bits enviados es P+Q y esta palabra código es la que verifica el receptor si es válida o no. La tasa de error de bit (BER - Bit Error Rate) es el factor que se emplea para medir el nivel de errores en una transmisión. Si Pb es la probabilidad de que un solo bit se corrompa, se define la tasa de error de bit BER a la probabilidad de error de un bit en un intervalo de tiempo dado. En el caso de un bloque de n bits, la probabilidad Pf de bloque erróneo es Pf = 1 - (1 - Pb)n Hay dos técnicas básicas de detección de errores: − La FEC (Forward Error Control) que permite la detección del error y su corrección y http://www.tonet.jazztel.es − 66 La Feedback / Backward Error Control que permite la detección pero no su corrección. Es el caso de la los códigos de error basados en la paridad simple, la paridad longitudinal LRC y el CRC. Se entiende por burst errors o ráfaga de bits erróneos cuando son erróneos una cadena de bits contiguos. 13.1.1.Paridad simple Consiste en añadir 1 bit a cada carácter y a este bit se le llama bit de paridad. Para el cálculo del bit de paridad a partir de los bits a transmitir hay dosmétodos básicos: − Paridad par. En este caso el bit de paridad es 0, si el número de unos es par y 1 si es impar. La suma total de unos es par. − Paridad impar. En este caso el bit de paridad es 0, si el número de unos es impar y 1 si es par. La suma total de unos es impar. Esta codificación se emplea en las transmisiones orientadas a carácter y sólo permiten la detección de un único error y sin posibilidad de corrección. 13.1.2.Código Hamming La utilización de paridad simple solo permite la detección de un bit erróneo, pero no su corrección porque no puede saberse cual de los bits que conforman el carácter es el bit erróneo, es decir, en que posición está. Para su corrección se necesita el empleo de una mayor redundancia. Por ejemplo, si se transmiten caracteres de 7 bits, con 3 bits adicionales es posible la corrección de bits erróneos. En esto es lo que se basa el código Hamming. Se entiende por distancia Hamming a la mínima distancia (número de bits diferentes) entre dos palabras código. Así si dh es la distancia Hamming utilizada y n es el número de bits erróneos, − La cantidad máxima de bits erróneos detectables es n = dh -1 y − La cantidad máxima de bits erróneos corregibles n = ( dh -1) / 2 Si la distancia Hamming dh es 2, y por tanto − − el número máximo de bits erróneos detectables es n = dh - 1 = 1 el número máximo de bits erróneos corregibles es n = (dh - 1) / 2 = 0 Este es el caso del empleo de paridad simple. ¿Cómo se calcula la distancia Hamming? http://www.tonet.jazztel.es 67 Como se ha dicho más arriba, es el número de bits distintos y por tanto su cálculo se hace aplicando la función XOR y contando el número de unos. Supongamos que tenemos cuatro palabras código y sus contenidos son 000000 111111 001101 110100 La distancia Hamming del conjunto será la mínima. Así el número de bits distintos entre los dos primeros es 6, y su distancia Hamming 6. Entre el primero y el tercero hay 3 bits distintos y por tanto su distancia Hamming es 3. A continuación el cuadro expone la distancia Hamming de cada pareja 1 2 3 4 1 -- 6 3 3 2 6 -- 3 3 3 3 3 -- 4 4 3 3 4 -- La distancia Hamming del conjunto será la menor de ellas ya que es el caso peor, por tanto en el ejemplo es 3. Si la distancia Hamming dh es 3, − el número máximo de bits erróneos detectables es n = dh - 1 = 2 − el número máximo de bits erróneos corregibles es n = (dh - 1) / 2 = 1 13.1.3.Paridad longitudinal (LRC) Con este tipo de detección de errores, además del empleo del bit de paridad, se introduce un nuevo carácter de paridades llamado BCC (Block Check Character). Así cada n caracteres incluído su bit de paridad, se envía otro carácter el BCC que es una combinación de los bits que componen los n caracteres. Supongamos que transmitimos 3 caracteres, cada uno con su bit de paridad y necesitamos calcular el carácter BCC que debemos transmitir a continuación con su bit de paridad. En la tabla siguiente, se muestra este cálculo, y para ello se ha utilizado paridad par en horizontal, es decir, el bit de paridad de cada carácter y paridad par para el cálculo del BCC. http://www.tonet.jazztel.es 68 B6 B5 B4 B3 B2 B1 B0 P 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 En consecuencia el carácter BCC sería 10000100 y en este caso se transmitiría 11000110 11010100 01101001 10000100 13.1.4.CRC (Cyclic Redundancy Check) Esta metodología permite la detección de más de 1 bit erróneo. Se entiende por error burst al número de bits entre dos bits erróneos consecutivos incluidos éstos. Si Pb es la probabilidad de error de un bit y Pf la probabilidad de una trama errónea, entonces Pf = 1 - (1 - Pb ) L siendo L el número de bits de una trama. Si Pb · L << 1, entonces la probabilidad de trama errónea es Pf = 1 - (1- Pb) L ≅ Pb · L De hecho si L-> ∞ , es decir, si la trama es muy larga, entonces (1 - Pb) L ≅ 0, y por tanto la probabilidad de trama errónea Pf = 1, es decir, cuanto más larga es la trama más probable que haya un bit erróneo. La teoría del CRC consiste en que dada una trama de k bits, el transmisor genera además una secuencia de n bits, denominada FCS (Frame Check Sequence), de tal manera que la trama resultante, de n + k bits, sea divisible por algún número predeterminado. El receptor hará la operación inversa, es decir, dividirá la trama recibida por este número y si el resto es cero, es indicativo de que no hay errores. Por ejemplo, el transmisor envía el número 1234 y además un 9, que lo ha obtenido de dividir 1234 por 35. Cuando llega al receptor el 1234 y el 9, como éste sabe que el valor de referencia es 35, verifica que coincide. Si es así no hay errores y el número 1234 es el correcto. Si por el camino, el número 1234 se hubiera modificado y convertido en otro, se podría detectar. Evidentemente no siempre es detectable el error porque únicamente verifica el resto y no es suficiente. En las transmisiones digitales basadas en bits, una buena forma de entenderlo es usando la representación polinómica. Una trama de k bits se puede representar por http://www.tonet.jazztel.es 69 un polinomio de grado k -1, donde los coeficientes del polinomio son los bits de la trama M(x) = sk-1 xk-1 + sk-2 xk-2 + . . . +s1 x + s0 Donde sk = 0 si el bit de la posición k es 0 y sk =1 si el bit vale 1. Por ejemplo la trama 10110, se representa por el polinomio M(x) = x4 + x2 + x A continuación se debe definir el número de bits L de que constará el FCS. Con este dato, se genera un polinomio generador G(x) de grado L, para que de esta forma el resto sea de grado L – 1. Este polinomio es el que se empleará para dividir el polinomio resultante del contenido de la trama. CRC = resto ( (M(x) · xL ) / G(x) ) En recepción, se debe realizar la operación inversa. Esta operación en aritmética de módulo 2 equivale al XOR exclusivo. La ventaja de este mecanismo es que permite detectar: − Todos los errores de 1 bit − Todos los errores dobles siempre que el polinomio de referencia tenga al menos tres 1 − Cualquier número impar de bits erróneos siempre que el polinomio de referencia contenga el factor (x + 1) − Cualquier error burst cuya longitud sea menor que la longitud del polinomio divisor, es decir, menor o igual que la longitud de la FCS − La mayoría de los error burst de longitud mayor que la longitud del FCS. Los polinomios de referencia más frecuentes son CRC-12 x12+x11+x3+x2+x+1 Se utiliza para la transmisión de tramas de caracteres de 6 bits y genera una FCS de 12 bits. CRC-16 x16+x15+x2+1 Es habitual en la transmisión de tramas de caracteres de 8 bits. CRC-CCITT x16+x12+x5+1 Es habitual en la transmisión de tramas de caracteres de 8 bits. CRC-32 X32+x26+x23+x22+x16+x12+x11+ Es muy utilizado en las LAN. x10+x8+x7+x5+x4+x2+x+1 http://www.tonet.jazztel.es 70 Ejemplo Supongamos que se quiere enviar la secuencia de bits 11100110 y emplear un CRC de 4 bits. Por ello el polinomio generador ha de ser de grado 4 y supongamos que es G(x) = x4 + x3 + 1 Para calcular los 4 bits del CRC, primero transformaremos la secuencia de bits a enviar en el polinomio correspondiente, en este caso será M(x) = x7 + x6 + x5 + x2 +x Ahora el CRC es el resto de la división M(x) · x4 / G(x), y en este caso será x11 + x10 + x9 + x6 + x5 | x4 + x3 + 1 x11 + x10 + x7 | x7 + x5 + x4 + x2 + x x9 + x7 + x6 +x5 x9 + x8 + x5 x8 + x7 + x6 x8 + x7 + x4 x6 + x4 x6 + x5 + x2 x5 + x4 + x2 x5 + x4 + x x2 + x Por tanto el resto siempre tiene un grado inferior al del polinomio generador. El CRC estará compuesto por los coeficientes del polinomio resto resultante, es decir, en este caso será la secuencia 0110 13.2. Servicios confirmados y no confirmados Cuando un emisor envía un mensaje, puede ser que el mensaje llegue al receptor o no. Así en algunos casos, el emisor quiere tener una confirmación del receptor en cuanto ha recibido el mensaje. La razón de tener esta confirmación es de que si no ha llegado, tenga razones para poderlo volver a enviar. Así se entiende por servicios confirmados aquellos en que el receptor contesta si la recepción ha sido correcta o no en cuanto a las tramas enviadas por el receptor. De lo contrario estamos ante un servicio no confirmado. En realidad esta confirmación o no está directamente ligada al control de errores y al control de flujo. En cuanto al control de errores, en cuanto se detecta una trama errónea, es necesario volverla a transmitir, ya que en general no se emplean mecanismos de corrección de errores, porque penalizan mucho la eficiencia. http://www.tonet.jazztel.es 71 En cuanto a la recuperación de errores hay dos técnicas básicas: − Stop and wait (Idle RQ) y − Continous RQ o protocolos de retransmisión continua y dentro de éstos, hay los de repetición selectiva (selective repeat) y de go-back-N A continuación se detalla el funcionamiento de cada una de estas técnicas. Otro problema que aparece en el nivel de enlace de datos y en otros niveles, es como controlar la velocidad a la que se transmite la información de forma que el receptor tenga siempre recursos (p.e. buffers) necesarios para recoger la información. A esto se le denomina control de flujo. En cuanto al control de flujo, la técnica más empleada es la de la ventana deslizante (sliding window). 13.3. Control de errores 13.3.1.Control de errores manual Se trata de un control de error realizado por el usuario. Por ejemplo cuando el usuario se equivoca al teclear un carácter, pulsa la tecla de borrado, de forma que el programa no tenga en cuenta el carácter enviado con anterioridad. En realidad no hay un borrado propiadamente dicho, sino lo que se sucede es que se añade a la secuencia un carácter (DEL) que le indica al receptor que el carácter anterior no lo debe tener en cuenta. 13.3.2.Echo checking Este control de errores se utiliza en la ejecución de aplicaciones remotas. El terminal remoto que recibe un carácter, devuelve un eco del mismo al emisor que consiste en el mismo carácter recibido. Esto permite al emisor verificar si el carácter enviado es correcto y a la vez es una confirmación de que el carácter ha llegado a su destino. En caso afirmativo, envía el carácter siguiente y en caso negativo, vuelve a enviar el mismo carácter. 13.3.3.Control de errores automático En este tipo de control de errores, si el receptor detecta errores, pide automáticamente la retransmisión del bloque, trama o carácter enviado. La detección del error se realiza mediante alguno de los métodos ya mencionados y es el que emplea en la transmisión de tramas en las redes de ordenadores. Así en el caso de los servicios confirmados, que es cuando hay la posibilidad de control de errores, se contempla el hecho de la retransmisión de la información y que se conoce con el nombre de repetición automática ARQ (Automatic Repeat Request). Hay dos técnicas para realizarlo: http://www.tonet.jazztel.es − − 72 Stop and wait (idle RQ). Se usa básicamente en transmisiones orientadas a carácter. Hay dos tipos: − retransmisión implícita − retransmisión explícita Continous RQ o de retransmisión continua. Se usa básicamente en transmisiones orientadas a bit. Hay dos tipos: − repetición selectiva (selective repeat). En este caso la retransmisión también puede ser implícita o explícita. − Go-back-N. Normalmente solo es explícito. 13.3.4.Stop & Wait (Idle RQ) Retransmisión implícita En este caso el transmisor después de enviar una trama de información, espera recibir una trama de reconocimiento (ACK) antes de enviar la trama siguiente. Para ello el transmisor utiliza un temporizador TOUT para el control del tiempo transcurrido desde el envío. La necesidad de este temporizador es que si no llegase nunca la trama de reconocimiento ACK, el transmisor quedaría bloqueado y esperaría eternamente. La razón por la que el transmisor no recibe la trama de reconocimiento puede ser • porque se ha perdido la trama de información, caso B del ejemplo, http://www.tonet.jazztel.es 73 • porque se ha perdido la trama de reconocimiento ACK, caso C del ejemplo, o • porque ha llegado con errores. Si existe el temporizador TOUT, cuando expira, el transmisor vuelve a retransmitir la trama Ik e inicializa el temporizador de nuevo. Logicamente el valor de inicialización del temporizador debe ser lo más pequeño posible, pero lo suficiente grande para dar tiempo a que lleguen las tramas de reconocimiento. Si el valor es muy grande, la penalización en caso de error puede ser importante. Retransmisión explícita En este tipo de retransmisión, cuando el receptor detecta una trama corrupta, envía al transmisor una trama del tipo NAK (Negative Acknoledgement), es decir, el transmisor puede recibir • tramas de reconocimiento normales ACK y • tramas de reconocimiento negativo NAK. Parámetros de evaluación del protocolo Tiempo de propagación tp es el tiempo que tarda en ir la información desde el transmisor al receptor. Es el tiempo de viaje y depende del medio de transmisión. tp = D / V p siendo D la distancia entre el transmisor y el receptor, y Vp la velocidad de propagación del medio. Tiempo de transmisión tt de trama se define como tt = L / Vt siendo L el tamaño de la trama en bits y Vt la velocidad de transmisión. El tiempo de transmisión de una trama ACK sería tack = Lack / Vt Tiempo de proceso tproc es el tiempo en que el transmisor o el receptor tarda en procesar una trama. En general tproc << tt , tp. Por ejemplo cuando llega una trama al receptor, el tiempo de proceso es el tiempo que tarda en verificarala y enviar la trama de reconocimiento. Tiempo del ciclo Tc es el tiempo transcurrido entre que el primer bit sale del transmisor hasta que se recibe el último bit de la trama ACK. En la figura se representa una trama de datos con una devolución de una trama de reconocimento por parte del receptor. Esto es un ciclo completo de transmisión y el tiempo de ciclo, de acuerdo con la figura, es http://www.tonet.jazztel.es 74 Tc = 2 tp + tt + tack Tiempo de espera Tespera es el tiempo transcurrido desde que el último bit de la trama ha salido hasta que llegue el último bit de la trama ACK. Tespera = 2 tp + tack Este tiempo de espera siempre debe contemplarse ante el posible evento de que el emisor no reciba el correspondiente mensaje de reconocimento, ya sea porque la trama de datos no ha llegado al receptor o porque la trama de reconocimento se ha perdido durante la transmisión. Si este tiempo de espera no existiera, en caso de error, el emisor esperaría indefinitivamente la respuesta y por lo tanto se quedaría colgado. En cuanto a los tiempos del temporizador Twt variarán del momento en que se active: • Si el temporizador se activa al comenzar la transmisión de la trama, su tiempo Twt debe ser mayor que el tiempo de ciclo Tc . • Si el temporizador se activa al acabar la trama, su tiempo Twt debe ser mayor que el tiempo de espera Tespera . Si se considera que tack << tp , en este caso el tiempo del temporizador Twt debe ser mayor que 2 tp Se define la eficiencia del protocolo U como un factor de utilización que se calcula como el cociente del tiempo de transmisión y el tiempo de ciclo. U = tt / Tc Si definimos como a = tp / tt , este parámetro a es una medida indicativa de la distancia entre el emisor y el receptor, ya que para una misma trama el tiempo de transmisión es independiente de la distancia. http://www.tonet.jazztel.es 75 Si además tack << tp, tt entonces Tc = 2 tp + tt + tack ≈ 2 tp + tt = tt · (1+ 2 a) Y la eficiencia U vale U = 1 / (1 + 2 a ) Por otro lado se define como velocidad efectiva Vef a Vef = U · Et · Vt siendo U la eficiencia del protocolo, Et la eficiencia de la transmisión (asíncrona, síncrona, código de error, ...) y Vt la velocidad de transmisión. Consideraciones 1) Este método es útil cuando la distancia sea lo más corta posible, ya que su peso más importante es la velocidad de transmisión. 2) Hasta aquí se ha calculado la eficiencia del protocolo sin tener en cuenta las retransmisiones. Si Nr es el número medio de retransmisiones, el tiempo de ciclo con retransmisiones valdrá T'c = Nr · Tc siendo Tc el tiempo de ciclo sin retransmisiones y suponiendo que tack << tt , tp T'c = Nr · ( 2 tp + tt + tack) = Nr · tt · (1 + 2 a ) y en consecuencia U = 1 / (Nr · (1 + 2 a)) Así si hay muchas retransmisiones, Nr es muy grande, la eficiencia U es prácticamente 0. Si expresamos Nr en términos de probabilidad de trama errónea y por tanto de la probabilidad de bit erróneo Pf = 1 - (1 - Pb ) n siendo n la longitud en bits de la trama, se demuestra que Nr = 1 / (1 - Pf) Por ejemplo, si Pf = 0,5, Nr = 2, es decir, la mitad de las tramas son erróneas, suponiendo que todas las tramas ACK son correctas. En este supuesto la eficiencia U vale http://www.tonet.jazztel.es 76 U = ( 1- Pf ) / ( 1 + 2 a) 3) En cuanto a la posibilidad de que el receptor recibe más de una copia de la misma trama, se resuelve porque en este caso los protocolos incluyen en su cabecera un número de secuencia. Este número de secuencia es un campo y dependerá de su longitud la cantidad de números de secuencia que se pueden manejar. El número de secuencia de la trama que sale del transmisor N(S) está incluida dentro de la trama, así esta tendrá como estructura SOH N(S) STX Datos ETX BCC y el mismo número de secuencia de vuelta N(R) debe estar incluida en las tramas ACK y NAK y por tanto su formato es Trama ACK ACK N( R ) BCC Trama NAK NAK N( R ) BCC Se demuestra que este tipo de control Stop-and-wait es bueno para distancias cortas y también tiene la ventaja de necesitar un buffer mínimo. 13.3.5.Retransmisión continua (Continous-RQ) El problema del método Stop-and-wait es que si el tiempo de propagación tp es alto, la eficiencia disminuye de forma significativa, ya que el transmisor se queda mucho tiempo bloqueado. Es el caso de la existencia de distancias largas entre el transmisor y el receptor, ya que el tiempo de propagación es proporcional a esta distancia. El método de retransmisión continua (Continous RQ) lo que hace es incrementar la capacidad de almacenaje (buffers) y así transmitir de forma continua sin parar mientras no se queden los buffers llenos. Estos buffers se emplean pues para almacenar tramas que todavía no han sido reconocidas. El receptor también dispone de buffers para almacenar tramas que puede recibir como copia debido al funcionamiento del protocolo. En este método las tramas, tanto las normales como las de reconocimiento ACK y las de no reconocimiento NAK, deben ir numeradas con el fin de poder aparejarlas. Así en la figura las tramas normales vienen identificadas por I(N) donde N es el número de secuencia que las identifica. Una trama de reconocimiento ACK(N) también debe contener un número de identificación para poder conocer de que trama se trata. De forma análoga sucede con las tramas de no reconocimiento NAK(N). http://www.tonet.jazztel.es 77 Funcionamiento La secuencia del funcionamiento de este control de error de tramas es el siguiente: 1) El transmisor envía tramas de forma continua sin esperar la recepción de las tramas de reconocimiento ACK. En el buffer del transmisor se almacenan las tramas pendientes de reconocimiento y se manejan mediante el sistema FIFO. 2) Si el receptor recibe una trama correctamente, devuelve una trama de reconocimiento ACK con la identificación N de esta trama I. 3) Cuando el transmisor recibe la trama de reconocimiento ACK de una trama I, la elimina de su buffer. 4) El receptor almacena las tramas I en una lista de recepción (buffer) para que sean procesadas. La eficiencia de los protocolos de retransmisión continua, si no hay errores, es Up = 1 Si se producen errores, habrá retransmisiones y esto se hace con alguna de las técnicas siguientes: − Repetición selectiva (Selective Repeat), consiste en retransmitir sólo las tramas incorrectas − Go-back-N, que consiste en repetir la retransmisión a partir de la última trama correcta. http://www.tonet.jazztel.es 78 13.3.6.Repetición selectiva Con este método de control de errores, el transmisor sólo retransmite las tramas incorrectas y para ello hay dos maneras de hacerlo: • mediante retransmisión implícita, es decir, en este caso el receptor reconoce las tramas correctas y el transmisor deduce cuales han sido incorrectas. • mediante retransmisión explícita, es decir, en este caso el receptor reconoce las tramas correctas y también es él quien deduce cuales han sido incorrectas. Por esta razón, en este caso, el receptor envía mensajes de reconocimiento ACKs y de reconocimiento negativo NAKs. Retransmisión selectiva implícita Si el transmisor recibe tramas de reconocimento ACK, significa que la trama enviada ha llegado correctamente. http://www.tonet.jazztel.es 79 Supongamos que la trama IN+1 sea corrupta, y por tanto que el receptor ha enviado tramas de reconocimento ACK de las tramas N, N+2, N+3, N+4. El transmisor al no recibir una trama de reconocimiento ACK de la trama N+1, deduce que el receptor no dispone de ella por alguna razón, y por lo tanto debe retransmitirla. El transmisor no transmite nuevas tramas hasta que retransmite las que tiene como no reconocidas. Así el transmisor elimina la trama N+2 del buffer y retransmite la trama N+1 antes de la N+5. A continuación el receptor recibe la trama N+1 y la reconoce. Pero, ¿qué sucede si la trama ACKN es corrupta? En este caso el transmisor ha detectado correctamente la tramas N-1 y N+1, en cuanto que ha recibido las correspondientes tramas de reconocimiento ACKN-1 y ACKN+1. Ante esta situación, el transmisor decide volver a retransmitir la trama IN Si el receptor detecta que una trama es copia de una que ya recibió, la descarta, pero debe reenviar la trama de reconocimiento ACK correspondiente al transmisor para que éste la elimine de su lista de retransmisión. Retransmisión selectiva explícita Este tipo de retransmisón, llamada también retransmisión acumulada, consiste en que una trama de reconocimento ACK no solo es un reconocimiento de una trama sino también de todas las anteriores. En este caso las tramas corruptas se reconocen con una trama de reconocimiento negativo NAK, cosa que no sucede con una retransmisión implícita. http://www.tonet.jazztel.es 80 Así puede verse en la figura de que no hay las tramas de reconocimiento de las tramas identificadas por N+1, N+2 y N+3. Supongamos que la trama IN+1 llega corrupta. En este caso el receptor habrá enviado una trama de reconocimento ACKN y una trama de reconocimiento negativo NAKN+1 http://www.tonet.jazztel.es 81 A continuación el transmisor al recibir la trama de reconocimento negativo NAKN+1, reenvía la trama IN+1. El receptor la recibe y continúa enviando tramas de reconocimento ACK. En este caso como los reconocimientos son acumulados, puede enviar una trama de reconocimiento ACKN+4, ya que ello presupone que ha recibido correctamente las tramas N+1, N+2, N+3 y N+4. Consideraciones En este tipo de control de errores, no se mantiene el orden de recepción, ya que la trama N+1 se recibe después de las tramas N+2, N+3, ... Por tanto las tramas tiene que estar identificadas, para que el receptor las pueda ensamblar en el orden correcto. También en este caso, el tiempo de procesamiento de tramas en el receptor es mayor porque requiere de una ordenación previa, antes de ensamblar los contenidos de los datos de las tramas. También implica la necesidad de más temporizadores para evitar un bloqueo del transmisor. En la retransmisión implícita, si la última trama es corrupta, se necesita detectarlo de alguna forma la no recepción de su trama de reconocimento ACK. Si la retransmisión es explícita, se tiene que prever el hecho de que se pierda una trama de reconocimiento negativo NAK. 13.3.7.Go-back-N Este método de control de errores permite mantener el orden de las tramas en el recepctor y así ahorrar en buffers a la hora de reensamblar las tramas fuera de orden. Para ello es necesario usar retransmisión explícita, es decir, tramas de recocimiento ACKs acumuladas. Supongamos que la trama IN+1 ha llegado corrupta pero que se han recibido tramas posteriores N+2, etc. http://www.tonet.jazztel.es 82 En este caso el receptor envía una trama de reconocimiento negativo NAKN+1 para que el transmisor empiece a retransmitir a partir de la trama N+1. El receptor descarta cualquier trama que le llegue después de la N+1. A continuación el transmisor entra en modo retransmisión y reenvía otra vez las tramas N+1, N+2, N+3, ... y el receptor envía las tramas de reconocimiento correspondientes ACKN+1, ACKN+2, … ¿Qué sucede si se pierde una trama de reconocimento ACK? Supongamos que la trama de reconocimento ACKN+1 se pierde o es corrupta, pero que el transmisor recibe la trama de reconocimento ACKN+2 correctamente. En este caso el transmisor al no recibir una trama de reconocimento negativo NAK, supone que todas las tramas hasta la N+2 han llegado correctamente. En este caso también se necesitan más temporizadores por si se pierden tramas de reconocimento negativo NAKs. Con todo esto, ya vemos que la repetición selectiva es más eficiente ya que solo retransmite las tramas corruptas, pero por otro lado tiene el inconveniente de que necesita más buffers. El método de control de errores Go-back-n necesita menos buffers que otros métodos pero desperdicia capacidad del ancho de banda ya que retransmite información que ya había llegado correctamente. 13.3.8.Piggy-backing Algunos protocolos en vez de devolver tramas de reconocimiento ACK y de reconocimiento negativo NAK como tales, aprovechan el flujo de vuelta para http://www.tonet.jazztel.es 83 incorporar en él, el reconocimiento o no de las mismas, es decir, en las tramas de vuelta se incluye el reconocimiento o no de las tramas recibidas. De esta forma se aumenta la eficiencia global del sistema. En los protocolos, siempre hay una conversación entre los dos extremos. Entonces puede darse el caso de que en un mismo instante, se quiera enviar un mensaje del receptor al transmisor y a su vez también hay una trama de reconocimiento a enviar. Si hay piggy-backing, no se envían dos tramas, sino solo una con las información de ambas tramas. En contraposición las tramas de información deben incluir un campo con el número de secuencia y un campo de reconocimiento. El protocolo HDLC usa esta técnica llamada de piggy-backing. En estos caso el tiempo de ciclo Tc vale Tc = tp + tt +tp + tt = 2 ( tp + tt ) 13.4. Control de flujo El objetivo del control de flujo es controlar la velocidad de transmisión de las tramas de un enlace, de tal forma que siempre haya recursos, por ejemplo buffers, suficientes para almacenar las tramas recibidas. Si la salida de tramas por unidad de tiempo del transmisor es mayor que la que puede procesar el receptor, significa que si no se regula aquella salida, se perderán tramas en recepción, lo que conlleva a nuevas retransmisiones y en consecuencia a una pérdida de rendimiento. Esto también puede ocurrir en algún dispositivo intermedio de la red, como puede ser un enrutador. Esto implica la posibilidad de bloqueo del transmisor en el caso de que las tramas salgan a demasiada velocidad y que se puedan desbordar los buffers de recepción. Es el caso de que las prestaciones del transmisor y del receptor sean diferentes. Hay distintas posibilidades de control de flujo tales como: − Echo checking. En este caso además de controlar los posibles errores, este método permite controlar el flujo, ya que si los buffers se llenan, se para el envío de ecos y el transmisor se bloquea hasta que vuelva a recibir un eco. − X-OFF/X-ON o también llamado In-bound-flow-control. Este método es un complemento del método anterior y consiste en que muchas veces aunque el receptor deja de enviar ecos, el transmisor sigue enviando caracteres. En este caso la forma de bloquear el transmisor, es enviando al receptor un carácter de control X-OFF, que hace cesar el envío de caracteres. Para reanudar la transmisión, el receptor envía un carácter de control X-ON al transmisor. − Out-of-band-control. Este método se utiliza en las líneas de transmisión analógicas y se le conoce como la norma V.24. Para ello se emplean los http://www.tonet.jazztel.es 84 comandos RTS (request to send) y CTS (Clear to send). También en el caso de las impresiones, es decir, entre ordenador e impresora, se utiliza este método, ya que la impresora es un dispositivo mucho más lento que los ordenadores a los que está asociada. − Mecanismos de ventanas. De estos mecanismos el más conocido y empleado es el de ventana deslizante que se desarrolla a continuación. 13.4.1.Ventana deslizante (Sliding window) Este control de flujo permite la existencia de un número máximo de tramas de información esperando su confirmación en el transmisor. A este número se le llama ventana de transmisión kT. La información de cada trama en espera de su confirmación está contenida en esta ventana. Cuando la ventana de transmisión se agota, el transmisor se bloquea. Así podríamos decir que el control de errores Stop-and-wait es en realidad un control de ventana deslizante de kT = 1 En general se define un límite inferior de ventana Linf (LWE - Lower Window Edge) y un límite superior de ventana Lsup (UWE - Upper Window Edge). Al inicio de la transmisión, ambos valores valen cero Linf = Lsup = 0 Cuando el transmisor quiere transmitir una trama: − Si Lsup - Linf < kT entonces incrementa el valor de Lsup en 1 y a continuación transmite la trama, es decir, primero verifica que la ventana no esté agotada. − Si Lsup - Linf = kT, el transmisor se bloquea, dado que la ventana está agotada, y no transmite la trama. − Si el transmisor recibe una trama de reconocimiento ACK, entonces incrementa el valor de Linf en 1. En este caso el transmisor si estaba bloqueado, se desbloquea. Por lo tanto • L sup es el número de tramas enviadas y • L inf es el número de tramas reconocidas Se define la ventana de recepción kR como el número máximo de tramas que pueden ser almacenadas en recepción. El valor de la ventana del receptor debe estar relacionada con la ventana del transmisor y así se representa en la tabla siguiente dependiendo del método de control de flujo utilizado. http://www.tonet.jazztel.es 85 Ventana del Ventana del transmisor receptor Stop-and-wait 1 1 Repetición selectiva K K Go-back-N K 1 Para calcular el valor mínimo en el lado receptor, nos tenemos que situar en el caso peor. Por ejemplo en el caso de repetición selectiva, sería que se perdieran las tramas de reconocimiento ACK. Por esta razón si la ventana del transmisor es K, la del receptor también como mínimo debe ser K. Además en el caso de repetición selectiva es así porque las tramas pueden llegar desordenadas. Cálculo de la ventana óptima de transmisión En retransmisión continua nos interesa seguir manteniendo eficiencias cercanas al 100%. Si introducimos un control de flujo, ¿qué ventanas necesitamos para que el transmisor no se quede nunca bloqueado en condiciones normales? Recordemos que el tiempo de ciclo vale Tc = 2 tp + tt + tack Ahora el tiempo máximo de transmisión es el tiempo que el emisor puede transmitir hasta que se agota el buffer de transmisión y por tanto vale kT . tt Por tanto en este caso la eficiencia U vale U = ( kT· tt ) / Tc = ( kT · tt ) / ( 2 tp + tt + tack ) < 1 Por otro lado interesa que las tramas de reconocimiento ACK lleguen antes de que se agote la ventana. Recordemos que cuando llega una trama de reconocimiento ACK, se incrementa el valor del límite inferior de ventana Linf. La solución óptima es aquella en que la eficiencia U vale 1, luego U = ( kT · t t ) / T c = 1 kT óptima = Tc / tt Si k < kopt entonces U = ( kT · tt ) / Tc < 1 Si k ≥ kopt entonces U = 1 y además el transmisor nunca se bloquea. Desarrollando el valor de KT óptimo, resulta kopt = Tc / tt = ( Tespera + tt ) / tt = ( Tespera / tt ) + 1 http://www.tonet.jazztel.es 86 siendo Tespera = 2 tp + tack , si suponemos que el temporizador se activa cuando sale el último bit de la trama. Numeración de las tramas El objetivo de la numeración de las tramas sirve para poder relacionar las tramas de reconocimiento con la trama que quiere reconocer en el caso de que haya varias tramas pendientes de reconocimiento y además en este caso el orden de recepción no tiene porque coincidir con el de envío. Si no se usasen ventanas se podría utilizar una numeración con rango infinito. Limitando el número de tramas que pueden ser transmitidas, limitamos también el rango de números de secuencia que se pueden usar. El número de secuencia es un campo de n bits en la trama. Con n bits, podemos secuenciar 2n números N = 2n números de secuencia Para calcular el valor máximo necesario de N nos debemos situar en el caso peor, que sería cuando todas las tramas de reconocimiento ACK se pierden y por tanto al receptor le llegan todas las tramas repetidas. Caso de Stop-and-wait Si se emplea el método Stop-and-wait, con un bit para la numeración de tramas es suficiente (n=1), porque solo se necesitan dos números de secuencia (N=1), el 0 y el 1, es decir, • si todo va bien, ahora usa 0, y a continuación el 1 • si es necesario la repetición, si había mandado una trama con número de secuencia 0, vuelve a enviar la misma trama con número de secuencia 0, y lo mismo si el número de secuencia fué 1. Caso de repetición selectiva Si se emplea el método de repetición selectiva, ahora kT = k , es decir, el transmisor envía toda su ventana de transmisión ( k tramas) y se queda bloqueado esperando la primera trama de reconocimiento ACK de la secuencia. Para calcular el máximo valor de N nos hemos de situar en el caso peor que es si el receptor envía las tramas de reconocimiento ACK pero que todas están corruptas. En este caso el transmisor retransmite toda la secuencia cuando han saltado los temporizadores. ¿Cómo sabe el receptor si esta nueva secuencia es la repetición de la anterior debido a que todas las tramas de reconocimiento ACK están corruptas o es una nueva secuencia? La manera de hacerlo es enviando unos nuevos números de secuencia distintos a los de la primera serie. Así en este caso el número de secuencia debe ser mayor que el tamaño de la ventana. N = 2n ≥ 2 kT kT <= N / 2 = 2n-1 http://www.tonet.jazztel.es 87 Ahora pues nos encontramos que el valor de la ventana kT debe ser un compromiso entre la desigualdad kT <= N/2 y la condición vista anteriormente de kT ≥ kopt Por ejemplo si se emplean 3 bits para la numeración de tramas (n = 3), el valor máximo de números de secuencia es 8 (N = 8) y en este caso por un lado kT <= N / 2 = 4 pero por el otro supongamos que kopt = 24 En este supuesto no hay solución óptima porque para kT = 24, el número de bits n necesario para la numeración de tramas es 24 = N/2 N=48 48= 2n-1 por tanto n = 6 bits. Caso de Go-back-N Si se emplea el método Go-back-N, el supuesto peor es cuando el transmisor envía toda la ventana y el receptor reconoce todas las tramas pero determina que son corruptas. Ahora el transmisor reenvía otra vez todas las tramas. Al receptor le basta reconocer el primero de la nueva secuencia ya que si la primera trama I0 fuera la incorrecta, el receptor descartaría automáticamente el resto de la secuencia. Por tanto en este caso N ≥ kT + 1 Por ejemplo si n = 3 , N = 8 y el tamaño de la ventana vale kT <= N – 1 = 7 Pero por otro lado si kopt = 24, entonces k + 1 ≥ N y 25 ≥ N = 2n n= 5 bits Utilización del enlace Como ya hemos visto, si U es la utilización del enlace U =1 si kT ≥ kopt U = ( kT · tt ) / Tc si kT < kopt Por otro lado: - Los números de secuencia pueden tener un gran impacto en la eficiencia si no están bien diseñados. - La elección de la ventana de retransmisión tiene un gran impacto en el cálculo del número medio de retransmisiones, recordemos que Tc’ = Nr · Tc http://www.tonet.jazztel.es 88 Caso de repetición selectiva Si se utiliza el método de repetición selectiva, el numero de retransmisiones vale Nr = 1 / ( 1 – Pf) siendo Pf la probabilidad de trama corrupta. En este caso el valor de utilización U del enlace vale U = 1 / Nr si kT ≥ kopt U = ( kT · tt ) / ( Nr · Tc ) si kT < kopt Caso de Go-back-N Si se utiliza el método Go-back-N, cuando una trama está corrupta se han de retransmitir más de una trama. Si Nr es el número medio de tramas retransmitidas para conseguir éxito, se demuestra que Nr = ( 1 – Pf + k · Pf ) / ( 1 – Pf ) Y por tanto la utilización del enlace U valdrá U =1 / Nr = ( 1 – Pf ) / (1 – Pf + k · Pf ) si kT ≥ kopt U = ( k · tt ) / (Nr · Tc ) = k ( 1 – Pf ) tt / Tc · ( 1 – Pf + k · Pf ) si kT < kopt En el caso de k ∞ , k · Pf 0, entonces para k ≥ kopt U = ( 1 – Pf ) y por tanto coincide con el valor del caso de repetición selectiva. http://www.tonet.jazztel.es 89 14. Redes LAN (Local Area Network) 14.1.Introducción LAN (Local Area Network) es una red que conecta directamente entre sí equipos situados en un ámbito geográfico local (unos centenares de metros o unos pocos Km). Suele ser administrada localmente por la misma empresa que dispone de la red, es decir, se trata de una red privada. Ofrece velocidades de transmisión altas, del orden de los Mbps y en la actualidad se llega al Gbps. El medio de transmisión es compartido por todas las estaciones, por consiguiente es necesario el uso de un protocolo de enlace que permita a las estaciones acceder de forma coherente al medio. Las LANs se dividen en: - LANs cableadas y que se caracterizan porque usan un medio guiado y - LANs no cableadas que se caracterizan porque usan medios no guiados. El componente básico de una LAN es la tarjeta de red (NIC: Network Interface Cards) y sus controladores: las NICs implementan el hardware de red (nivel físico y enlace) de la LAN mientras que los controladores implementan los programas del protocolo a nivel de enlace. Si la LAN es cableada, tiene como componentes adicionales: − El cable: medio guiado (coaxial, par trenzado o fibra óptica). Los cables se instalan siguiendo los estándares de cableado estructurado (norma EIA 568) y − Los conectores: es lo que permite conectar la tarjeta de red al cable. 14.2. Topologías La topología es la estructura que forman el medio de transmisión y los ordenadores conectados al medio. Hay tres topologías físicas básicas: - Bus: típicas de las redes Ethernet antiguas - Anillo: típicas en las redes Token Ring y FDDI - Estrella: utilizadas en todas las LAN actuales en substitución de los buses y los anillos. http://www.tonet.jazztel.es 90 14.2.1.Topología bus Punto de vista físico En esta topología, cada dispositivo está conectado a un cable común y los dispositivos comunes son aquellos que permiten que el dispositivo se una o se conecte al único medio compartido. Una de las ventajas de esta topología es que todos los dispositivos están conectados entre sí y, de ese modo, se pueden comunicar directamente. Una desventaja de esta topología es que la ruptura del cable hace que la red quede partida en dos de forma inaccesible una parte de la otra. Punto de vista lógico Una topología de bus permite que todos los dispositivos de red puedan ver todas las señales de todos los dispositivos del bus, lo que puede ser ventajoso si se desea que todos los dispositivos obtengan esta información. Sin embargo, puede representar una desventaja ya que es común que se produzcan problemas de tráfico y colisiones. 14.2.2.Topología en anillo Punto de vista físico La topología en anillo muestra todos los dispositivos que están conectados directamente entre sí por medio de cables en lo que se denomina una cadena margarita. Punto de vista lógico Para que la información pueda circular, cada estación debe transferir la información a la estación adyacente. 14.2.3.Topología en estrella Punto de vista físico La topología en estrella tiene un nodo central desde el que salen todos los enlaces. La ventaja principal es que permite que todos los demás nodos se comuniquen entre sí de manera conveniente, ya que el nodo central puede actuar como gestor. La desventaja principal es que si el nodo central falla, toda la red se desconecta. Según el tipo de dispositivo de red que se usa en el centro de la red en estrella, las colisiones pueden representar un problema. Punto de vista lógico El flujo de la información puede ser transferido o no a todos los nodos de la red, en función del tipo de dispositivo que sea el nodo central. Si este nodo central es un http://www.tonet.jazztel.es 91 concentrador, que se caracteriza por ser un nodo pasivo, todos los nodos verán todos los flujos venga del nodo que venga. Pero si el nodo central es un conmutador, que se caracteriza por ser un nodo activo con su procesador, este puede establecer filtros de forma que se impongan restricciones de tránsito al flujo de información. Un inconveniente de este tipo de topología es que el fallo del nodo central hace que toda la red deje de funcionar. 14.2.4.Topología en estrella extendida Punto de vista físico La topología en estrella extendida tiene una topología en estrella central, con cada uno de los nodos finales de la topología central actuando como el centro de su propia topología en estrella. La ventaja de esto es que el cableado es más corto y limita la cantidad de dispositivos que se deben interconectar con cualquier nodo central. Punto de vista lógico La topología en estrella extendida es sumamente jerárquica, y busca que la información se mantenga local. Esta es la forma de conexión utilizada actualmente por el sistema telefónico. 14.2.5.Estrella compartida y estrella conmutada En cuanto a los dispositivos a los que se conectan los ordenadores de una red, hay dos filosofías: − Por difusión (Broadcasting) o compartido (Shared). − Por conmutación (Switching). En cuanto a topologías, por los dispositivos que las definen en las LANs son − Estrella compartida. En este caso se emplean concentradores o hubs (repetidores multipuerto) que son dispositivos pasivos. Internamente la conexión es en estrella o mediante un bus interno. Se usa en las redes Ethernet. Es un dispositivo que funciona por difusión, es decir, cuando una estación transmite una trama, el concentrador propaga esta trama por todos los puertos de salida de forma que todas las estaciones reciben una copia de la trama. − Estrella conmutada. En este caso se emplean conmutadores o switches, que son dispositivos activos dotados de un procesador. Internamente es una estrella o bus interno. La trama transmitida por una estación es transmitida por un puerto determinado dependiendo de la dirección de la estación (dirección MAC). Estos dispositivos disponen de las tablas necesarias para realizar esta funcionalidad. http://www.tonet.jazztel.es 92 14.3. IEEE 802.2 El proyecto 802 de IEEE define las especificaciones del nivel de enlace más extendido en las LANs. Este nivel de enlace se divide en dos subniveles: – – el subnivel MAC (Medium Access Control), que es un nivel 1 (físico) y el subnivel LLC (Logical Link Control). El subnivel MAC tiene como funcionalidades: • El envío y la recepción de tramas. • La asignación de una dirección a cada ordenador. • Una detección de errores y • La implementación del protocolo de acceso al medio. Emplea tres clases defunciones primitivas en cuanto a su relación con el subnivel LLC: • Request. Se trata de solicitar algún servicio por parte del subnivel LLC al subnivel MAC, por tanto, siempre es en la dirección desde el subnivel LLC al MAC. Esta primitiva incluye la dirección de destino, el tipo de servicio solicitado y los datos a enviar. • Indication. Se trata de tramas con datos o avisos del subnivel MAC al LLC . • Confirmation. Estas tramas se envían al subnivel LLC desde el subnivel MAC, indicándole que las tramas por el enviadas, ya han sido enviadas al medio y a su vez incluyen información del tipo de fallo o no de la trama Request. El subnivel LLC está entre el nivel MAC y el nivel 3 (red) y sus funcionalidades son: • La posibilidad de servicios confirmados. • Un control de error. • Un control de flujo. • Entramar y multiplexar jerarquías de protocolos de nivel superior (e.g. SPX/IPX, TCP/IP, …). El protocolo 802.2 se corresponde con el subnivel LLC del proyecto 802 dentro del nivel de enlace (2) del modelo OSI. Por un lado interopera con los protocolos 802.3, 802.5,etc. del subnivel MAC del nivel de enlace (2) y por otro con los protocolos de nivel de red (3). Nivel 3 Nivel 2 IP LLC MAC IPX NetBIOS 802.2 802.3 802.5 Otros http://www.tonet.jazztel.es 93 Este protocolo 802.2 no se refleja en los mensajes que circulan por las redes, porque son internos, es decir, van dentro del propio dispositivo como un controlador. Sus direcciones origen y destino, conocidas como SAPs, se corresponden a los protocolos de nivel 3 de los dispositivos origen y destino. El subnivel LLC inicia el intercambio de señales de control, organiza el flujo de datos, interpreta los comandos, genera respuestas y gestiona las funciones de control de errores y su recuperación. Este protocolo 802.2 ofrece 3 tipos de servicio distintos: • Tipo 1 : sin reconocimiento y no orientado a conexión. También se llama modo de operación datagrama del usuario. Es el más usado por ejemplo en redes TCP/IP. No hay reconocimiento por parte del receptor, ni el emisor espera este reconocimiento, porque se consideran las redes suficientemente fiables. Por esta razón, los servicios del nivel transporte, es decir, de nivel superior, los que tienen que proporcionar el control de error. • Tipo 2 : orientado a conexión. En este caso, se establecen circuitos virtuales entre el dispositivo que envía y el dispositivo que recibe. Es el caso del protocolo HDLC en modo ABME (Asyncrhonous Balanced Mode Extended). En este caso, hay primero el establecimiento del enlace y luego durante la transmisión, hay una detección de errores, su recuperación y un control de flujo. • Tipo 3 : con reconocimiento y no orientado a conexión. En este caso no hay circuitos virtuales. Este tipo resulta especialmente interesante para las LAN de alta velocidad como FDDI y concretamente para los protocolos de gestión de la LAN. La estructura del mensaje es SAP destino SAP origen Control Datos Donde • SAP destino es un campo de 8 bits, de los cuales 6 representan la dirección propiamente dicha. El bit 8 es el indicativo de I/G (individual o grupo). La dirección significa la puerta del protocolo LLC correspondiente con el protocolo de nivel de red del dispositivo destino. • SAP origen es un campo de 8 bits. El bit 8 es 0 o 1, si el mensaje es un comando o una respuesta. La dirección que utiliza 6 bits, significa la puerta del protocolo LLC correspondiente con el protocolo de nivel de red del dispositivo origen. • Control, campo de 1 o 2 octetos donde se especifica la función del comando de solicitud o respuesta, así como el tipo de LLC empleado. Su contenido se parece mucho al del protocolo SDLC, así hay 3 tipos de formatos: sin secuencia, supervisor y de información. • Datos. http://www.tonet.jazztel.es 94 En cuanto a la dirección SAP, un dispositivo puede tener más de un SAP asociado a ella para un nivel específico, igual que un dispositivo puede tener más de una sesión activa mediante un SAP. Los procesos de los niveles superiores usan los servicios del protocolo 802.2 a través de puntos de acceso al servicio (SAP - Service Access Points). Estos SAP identifican los protocolos del nivel de red que deben recibirlo, en el caso de pasar mensajes de nivel 2 al 3. Sin embargo si es al contrario, es decir, un mensaje que pasa del nivel 3 al 2, el SAP destino es el protocolo de nivel de red del dispositivo de destino. Algunos valores de SAP son los siguientes: APPN TCP/IP SNA X.25 SNAP 04 06 08 7E AA Vines IPX NetBIOS RPL Ungerman-Bass BC E0 F0 F8 FA 14.4.Conmutadores / Switches Al principio de la existencia de las redes de ordenadores, se utilizaba un concentrador o hub, al cual se conectaban todos los ordenadores de la red. Así cuando un ordenador emitía un mensaje, todos los ordenadores de la red lo recibían y solo contestaba el ordenador cuya dirección MAC coincidía con el campo destino del mensaje. Estos concentradores o hubs eran elementos pasivos, es decir, no tenían ninguna capacidad de procesamiento. La siguiente fase consiste en sustituir los concentradores o hubs por conmutadores o switches. Estos dispositivos tienen capacidad de procesamiento, por lo que internamente pueden disponer de capacidad de filtrado y enrutamiento. Así cuando un ordenador envía un mensaje y llega al concentrador, este dispositivo de acuerdo con sus instrucciones internas lo envía hacia una o más salidas. Estas instrucciones internas pueden ser de filtrado o enrutamiento, es decir, a diferencia de los concentradores, un mensaje enviado por un ordenador no es visto por todos los ordenadores conectados al conmutador. Así estos conmutadores se caracterizan por: • Incrementar el ancho de banda de la LAN. • El uso del “Spanning Tree Algorithm” para evitar bucles cerrados en el caso de varios conmutadores conectados entre si. Este algoritmo lo emplea el protocolo que permite a los conmutadores intercambiarse las tablas de direcciones MAC que hay en cada puerto. http://www.tonet.jazztel.es 95 Hay dos tipos de conmutadores o switches: - Cut-Through Switching - Store-and-Forward Switching 14.4.1. Tipo Cut-Through Switching Este tipo de conmutador retransmite las tramas después de que algunos bits acaban de ser recibidos, es decir, antes de leer toda la trama, ya empieza a retransmitirla. Esta es la razón por la que reenvía cualquier tipo de trama, ya sean correctas o no, tales como: - “runt frames”. Se entiende por “runt frame”, una trama con un tamaño menor al tamaño mínimo de un paquete Ethernet (64 octetos). Si la retransmisión de la trama es después de leer más de 64 octetos, el propio switch puede detectar las runt frames. - Tramas erróneas. Este tipo de conmutadores se congestionan fácilmente. 14.4.2.Tipo Store-and-Forward Switching Este tipo de conmutador retransmite tramas después de recibir todos los bits de la trama. Se caracteriza por: - No retransmitir tramas erróneas y “runt frames” . - No se congestiona tan fácilmente como un conmutador Cut-Through. - Desventaja: mayor latencia debido al almacenamiento previo de toda la trama. Estos conmutadores emplean tres clases de topologías de almacenamiento: - Buffers de entrada: problema Head Of Line (HOL). - Buffers de salida: puede haber congestión si los buffers son pequeños. - Buffers compartidos: si es necesario permite implementar otras disciplinas de planificación a FIFO. - Combinación de las distintas topologías. http://www.tonet.jazztel.es 96 14.4.3.Conmutadores híbridos También existen conmutadores híbridos de los tipos anteriores. Por ejemplo un conmutador del tipo Store-and-Forward y Cut-Through. En este caso depende de las circunstancias del estado y tráfico de la red, emplea un tipo u otro. Así podemos establecer que • Si no hay congestión y la tasa de errores es pequeña, emplea el método CutThrough. • Si hay congestión o la tasa de errores es alta, emplea el método Store-andForward. • Conmutación adaptativa: la decisión de usar Cut-Through o Store-andForward se toma trama-a-trama. 14.4.4.Conmutación a nivel 2 y 3 Existen dos métodos de conmutación de tramas de datos: - conmutación a nivel 2 y - conmutación a nivel 3. La conmutación es el proceso de tomar una trama que llega de una interfaz y enviar a través de otra interfaz. Los enrutadores utilizan la conmutación de nivel 3 para enrutar un paquete; los conmutadores utilizan la conmutación de nivel 2 para enviar tramas. La diferencia entre la conmutación de nivel 2 y nivel 3 es el tipo de información que se encuentra dentro de la trama y que se utiliza para determinar la interfaz de salida correcta. Con la conmutación de nivel 2, las tramas se conmutan tomando como base la información de la dirección MAC. Con la conmutación de nivel 3, las tramas se conmutan tomando como base la información del protocolo de nivel de red. Si el conmutador de nivel 2 no sabe dónde enviar la trama, realiza una solicitud de broadcast de la trama desde todos sus puertos hacia la red a fin de saber cuál es el destino correcto. Una vez que vuelve la trama de respuesta, el conmutador aprende la ubicación de la nueva dirección y agrega dicha información a la tabla de conmutación. http://www.tonet.jazztel.es 97 15. Protocolos de acceso al medio (MAC) Se trata de aquellos protocolos cuyas funcionalidades corresponden al nivel de acceso al medio (MAC) y que a su vez corresponde a un subnivel del nivel de enlace según el modelo OSI. En la actualidad hay los tres tipos siguientes: • Paso de testigo. Los protocolos de este tipo consisten en que una estación no transmite hasta que está en posesión de un token y que además esté libre. • Aleatorios. Los protocolos de este tipo consisten en que cuando una estación quiere transmitir, transmite sin verificar si el medio está ocupado o no. • Reserva. Los protocolos de este tipo se caracterizan porque la estación transmisora verifica si el medio está ocupado antes de transmitir, es decir, que mientras una estación está transmitiendo, tiene el medio reservado hasta que finaliza su transmisión. Es el caso de los protocolos CSMA/CD que emplea Ethernet y CSMA/CA del protocolo IEEE 802.11 15.1.Token Ring Esta tecnología de red de área local fue diseñada originalmente por IBM en los años 70 y estandarizada por el IEEE con el nombre IEEE 802.5. La especificación IEEE 802.5 es prácticamente idéntica a la red Token Ring de IBM y absolutamente compatible con ella. Este protocolo está en la actualidad en desuso por razones de mercado, aunque aún existen instalaciones con este protocolo. Tecnológicamente es mejor que el protocolo Ethernet, porque permite un mayor aprovechamiento del ancho de banda (hasta un 90%, contra un 30% del Ethernet). Sin embargo el precio de los http://www.tonet.jazztel.es 98 dispositivos y el no haber superado los 16 Mbps, hace que no hayan nuevas redes con este protocolo. En cuanto a su topología: • Físicamente es una estrella (MAUs: Multistation Access Unit). • Lógicamente es un anillo por paso de testigo (token). El código Manchester Diferencial es el que se usa para codificar la señal que contiene los datos binarios, que son transmitidos a velocidades de 4 o 16 Mbps (velocidades estándar del IEEE). En la implementación de redes Token Ring de IBM, se recomienda cable apantallado STP aunque también se puede usar el cable sin apantallar UTP. El cable de fibra óptica multimodo es otra opción de cableado. Este anillo consta de un conjunto de repetidores conectados entre sí con enlaces half-duplex punto-a-punto formando un lazo cerrado. Cada estación se conecta al repetidor con un enlace full-duplex punto-a-punto. Soporta como máximo 260 estaciones por anillo y los anillos se pueden unir mediante puentes o bridges. El acceso al anillo es controlado por un token que circula continuamente por el mismo. El equipo que quiera transmitir datos, esperará que le pase el token y a su vez que esté libre. Cuando le llega el token, el equipo lo cambia por un mensaje, al que le añade los datos y lo transmite. Si el equipo de destino está activo, copiará el mensaje, lo marcará como copiado, y lo reenviará al equipo transmisor. Este equipo descargará los datos y liberará el token al anillo. Repetidores multipuerto o MAU/CAU Los repetidores regeneran la señal y la retransmiten. Los repetidores pueden estar en tres estados distintos: • En estado de transmisión. Es el estado del repetidor perteneciente a la estación transmisora. La estación transmite una trama que el repetidor regenera y retransmite al siguiente repetidor. • En estado de escucha. Es el estado de aquellos repetidores conectadas a las estaciones receptoras. Estos repetidores además de regenerar y retransmitir las tramas hacia el siguiente repetidor, copian la trama y la retransmiten a la estación en el caso de que la dirección MAC destino pertenezca a la estación a la que están conectadas. En este estado es posible modificar bits de las tramas si el algoritmo de acceso al medio lo considera necesario. • En estado de cortocircuito. Es el estado en el que el repetidor se comporta como un cable, es decir, es como si no existiese un repetidor. Es el caso de que en un conector del concentrador no haya conectado ningún dispositivo. Métodos de liberación del testigo El acceso al medio del Token Ring se basa en el paso de testigo (token passing). Este algoritmo consiste en que sólo puede transmitir la estación que posee una http://www.tonet.jazztel.es 99 trama especial llamada testigo (token). Una vez transmitida la trama, la estación libera el testigo que pasa a la siguiente estación. Así se repite el proceso continuamente. Hay tres métodos de liberación del testigo: • Single Packet: la estación transmisora libera el testigo cuando recibe el último bit de la trama, es decir, el último bit de la trama ha dado la vuelta completa al anillo. • Single Token: la estación transmisora libera el testigo cuando recibe el primer bit de la trama, es decir, el primer bit de la trama ha dado la vuelta completa al anillo. • Multiple Token: la estación transmisora libera el testigo inmediatamente después de haber transmitido el último bit de la trama. 15.2. Ethernet Ethernet o IEEE 802.3 es el protocolo más utilizado actualmente en el mundo de las redes de ordenadores por razones de economía. Desde su introducción en el mercado en los años 70, se ha implantando en un gran abanico de ámbitos de todo tipo. Inventado por Xerox en los años 70 y llevado al mercado con el nombre de Ethernet V.1, el protocolo fue desarrollado en un foro donde estaban las empresas DEC, Intel y Xerox. Este foro sacó en los años 80 una nueva versión de Ethernet llamada Ethernet (DIX) V2. También se hizo pública su arquitectura y así de la mano del Institute of Electrical and Electronics Engineers (IEEE), ha llegado a ser un estándar internacional de facto. El IEEE ratificó el estándar Ethernet DIX V2 con ligeras modificaciones y lo denominó IEEE 802.3. El estándar IEEE 802.3 ha sido también aprobado por otras organizaciones tales como el American National Standards Institute (ANSI) y el International Organization for Standardization (ISO 8802-3). Así hay 4 versiones de este protocolo que son las siguientes: Ethernet Esta versión corresponde a la versión original DIX y su posterior versión II 802.3 Corresponde al protocolo 802.3 sin empleo del protocolo 802.2. Este protocolo lo empleó Novell Netware cuando aún no estaban aprobadas las especificaciones del protocolo. 802.3 - 802.2 LLC Es el protocolo 802.3 pero que necesita del protocolo 802.2 para su funcionamiento. http://www.tonet.jazztel.es 802.3 - 802.2 LLC - SNAP 100 Ethernet SNAP extiende el encabezado IEEE 802.2 agregando un encabezado de Protocolo de acceso de subred (SNAP) que proporciona un código de "tipo de encapsulamiento" similar al definido en la especificación de Ethernet Versión II y utilizado con TCP/IP y AppleTalk. Las principales ventajas del protocolo Ethernet / 802.3 son : • Amplia elección de equipos. • Bajo precio de los mismos. • Alta velocidad de transmisión. En cuanto a su topología: • Físicamente es una estrella (hub o concentrador). • Lógicamente es una estrella. El acceso al medio utiliza el método CSMA/CD (Carrier Sense Multiple Access with Collision Detection). Este método se basa en escuchar el medio para ver si está ocupado por alguna trama de alguna estación antes de transmitir tramas. A pesar de que se escuche el medio, las tramas pueden “colisionar” en el medio con lo que en este caso es necesario retransmitirlas. Otro método similar es el CSMA/CA, que consiste en informar de forma previa a la red de que se va a transmitir. Con ello se evitan colisiones, pero disminuye la eficiencia de la red, ya que hay una información adicional que se transmite y que no son datos propiamente dichos. 15.2.1.Nivel físico Ethernet forma una familia que abarca Ethernet (10 Mbps), Fast Ethernet (100 Mbps) y Gigabit Ethernet (1 Gbps, 10 Gbps) sobre cables de cobre apantallados STP y sin apantallar UTP, y de fibra óptica multimodo y monomodo. El método de codificación de las señales es la Manchester, es decir, el tiempo de bit se divide en dos mitades, siendo su transición en función del contenido del bit, así • el 1 corresponde a una transición baja-alta y • el 0 a una transición alta-baja http://www.tonet.jazztel.es 101 Medios de transmisión La velocidad del protocolo Ethernet es de 10 Mbps. Sus medios de transmisión definidos en sus especificaciones cintemplan 4 configuraciones básicas: 10Base2, 10Base5, 10BaseT y 10BaseF. El significado del número a la izquierda es su velocidad. En cuanto el código a su derecha, corresponde a la máxima distancia en cientos de metros o a la clase de medio de transmisión empleado. a) 10 Base2 En este caso se trata de redes Ethernet que emplean cable coaxial de tipo thin, de aquí que también se las conozca como Thinnet o Cheapnet. El empleo de este tipo de cableado hace que los dispositivos se conecten en bus (segmento) y el empleo de taps (impedancias de 50 Ω) en sus extremos. El tipo de conector es BNC-T. Este conector conecta la tarjeta de red (NIC) de la estación al cable coaxial. La distancia máxima recomendada es de 200 m. b) 10Base5 En este caso se trata de redes Ethernet que emplean cable coaxial de tipo thick, de aquí que también se las conozca como Thicknet. En el caso de tener un 10Base5 se usa un transceiver para conectar la tarjeta de red al cable. El hardware está repartido entre la tarjeta de red y el transceiver. En este caso los conectores que se emplean son los AUI (Attachment Unit Interface). La distancia máxima recomendada es de 500 m. c) 10BaseT Las configuraciones básica 10BaseT emplea cable de cobre con par trenzado sin apanatallar UTP-3 y UTP-5. Los concentradores implementan internamente un bus. Las estaciones se conectan generalemente con cable sin apantallar UTP y conector RJ45 entre las tarjetas de red de la estación y el puerto del concentrador. d) 10BaseF La configuracione básica 10BaseF emplea fibra óptica. Los conectores son del tipo SC o ST. 10BaseF define 3 variantes: • 10BaseFP (passive star): repetidor óptico pasivo con un máximo de 33 nodos y 1Km/segmento. http://www.tonet.jazztel.es • • 102 10BaseFL (link): interconecta nodos o repetidores con un límite de 2 Km. 10BaseFB (backbone): interconecta repetidores hasta 2 Km entre ellos con transmisión síncrona (hasta 15 repetidores en cascada), excediendo el límite de la regla 5-4-3. Se usa para interconectar múltiples concentradores en cascada y así incrementar la longitud de la red excediendo la regla de que sólo haya 5 segmentos de red conectados entres sí. 15.2.2.Nivel MAC El formato de trama es algo diferente de si se trata del protocolo Ethernet-II o el Ethernet IEEE 802.3. Los formatos de los mensajes para Ethernet y IEEE 802.3 son distintos, sin embargo, ambos protocolos usan el mismo medio y el mismo método de acceso. Esto significa que los equipos de la red pueden compartir ambos formatos en el bus común, pero no se pueden comunicar entre sí. La estructura del mensaje 802.3 / Ethernet es la siguiente : Preámbulo Sincroni- Dirección Dirección zación destino origen Tipo Datos PAD Control de error Donde • Preámbulo - 7 octetos. Permite que la electrónica de señalización del nivel físico pueda sincronizar con la electrónica de recepción de mensajes. En contenido de cada octeto es 10101010 • Sincronización (SFD-Start Frame Delimiter) - 1 octeto. Indica que porción de datos del mensaje vienen a continuación en la transmisión del mismo. Su contenido es 10101011 • Dirección destino (DA) - 48 bits. Se corresponde a la dirección MAC (Media Access Control). Tres tipos de direcciones destino son posibles : individual, de multicast y de broadcast. La individual contiene una única dirección de un nodo concreto de la red. La de multicast significa que se usa un grupo de direcciones. La de broadcast es una forma especial de multicast, pero para todos los nodos de la red. • Dirección origen (SA) - 48 bits. Su significado es el mismo que la dirección destino. • Tipo - 16 bits. Este campo identifica el tipo de protocolo del nivel superior. Los fabricantes deben registrar sus protocolos de acuerdo con el estándar Ethernet. Cada protocolo registrado tiene un identificador de 2 octetos. En el protocolo 802.3, este campo corresponde a la longitud del mensaje. La identificación del protocolo de nivel superior en el caso del protocolo 802.3 se realiza en las direcciones SAP del protocolo 802.2, por ejemplo 0x0800 si es protocolo IP o 0x0806 si es protocolo ARP. • Datos - Este campo contiene los datos a transmitir y su longitud oscila entre 38 y 1482 octetos. Ethernet asume que los niveles superiores asegurarán http://www.tonet.jazztel.es 103 que el tamaño mínimo de mensaje sea de 46 octetos. Si se emplea el protocolo 802.2, dentro de este campo se incluye la cabecera de este protocolo. • PAD - campo de relleno. IEEE 802.3 (y Ethernet) especifican un tamaño mínimo de mensaje de 64 octetos. Sin embargo, el 802.3 permite que el campo de datos sea inferior a los 46 octetos requeridos para que la longitud total sea como mínimo de 64 octetos. Por ello el 802.3 añade los caracteres de rellenos necesarios para cumplir este requisito. • Control de error - 32 bits. Se emplea el método de control de error CRC-32. En el caso del protocolo 802.3 con 802.2, el campo de datos se desglosa en: • SAP destino. • SAP origen. • Control, campo de 1 ó 2 octetos. El protocolo 802.3 con SNAP desglosa su campo de datos en: • SAP destino. • SAP origen. • Control, campo de 1 ó 2 octetos. • Id. Organización, 3 octetos. • Tipo, 2 octetos. Corresponde al tipo de protocolo de nivel superior, así para IP, es 2048 y para ARP, 2054. El tamaño de trama es como mínimo de 64 octetos y como máximo 1518 octetos. 15.2.3.Tecnología CSMA/CD CSMA/CD (Carrier Sense Multiple Access con Detección de Colisión) es el nombre de la tecnología utilizada en el bus del protocolo Ethernet /IEEE 802.3 para controlar la operación de la red. Su esquema de funcionamiento está detallado en el esquema adjunto. Fase de transmisión Cuando la estación transmisora quiere enviar una trama, • primero debe montar la trama con la información recibida del protocolo del nivel superior. http://www.tonet.jazztel.es 104 • A continuación verificar si el medio está libre. Si otro dispositivo está transmitiendo, debe esperar a que termine su transmisión. • En el caso de que esté libre, verificar que el tiempo IPG que ha de transcurrir entre la transmisión de dos tramas consecutivas ha transcurrido. La razón de este tiempo IPG es con el fin de que una estación esté mucho tiempo transmitiendo y no deje transmitir a otra. • Transmitir el primer bit de la trama y a continuación comprobar si hay colisión. Esta colisión puede existir en cuanto dado que hay una distancia entre dispositivos y en consecuencia un retardo, hace que aunque se verifique que el medio esté libre, otra estación también puede estarlo verificando casi simultaneámente. En este tiempo del retardo podrían ponerse a transmitir ambas. • Esta transmisión de bits y su verificación de colisión se realiza durante toda la transmisión de la trama. http://www.tonet.jazztel.es 105 Fase de colisión Si hay colisión, la estación que la detecta, envía una señal de jamming consistente en varios bits que fuerzan a que la colisión se prolongue durante un tiempo suficiente para que se enteren todas las estaciones del segmento. A continuación la estación que quiere transmitir, deja transcurrir un tiempo aleatorio o tiempo de backoff, y vuelve a intentar la transmisión pendiente. El componente aleatorio de este tiempo es para minimizar la probabilidad de nuevas colisiones. Este tiempo de backoff es un múltiplo del tiempo de bit y vale t = k x 512 x tb siendo k un valor entero aleatorio y tb el tiempo de bit. http://www.tonet.jazztel.es 106 Estos intentos también son controlados por un contador, que una vez superado un umbral establecido intentos, da la trama por no transmitida. La probabilidad de una colisión es proporcional a • El número de dispositivos conectados al bus. • La frecuencia de transmisión. • El tamaño de los mensajes y • La longitud de los cables de la red. Fase de recepción Mientras un dispositivo no emite, está en estado de escucha. Cuando detecta la presencia de una señal en la red, inhibe la posibilidad de transmisión del mismo. Con los bits de preámbulo de la trama, obtiene la sincronización necesaria para leerla. Lo primero que obtiene es la dirección MAC de destino de la misma y la compara con la suya. En caso afirmativo, la dirección MAC origen, la dirección MAC destino y los datos son enviados al buffer para su procesamiento. A continuación verifica el código de error de la trama, dándola por correcta o errónea.También verifica la longitud de la trama, y si es más pequeña de 64 octetos la descarta. Si lo que lee es consecuencia de colisión, envía una secuencia de jamming y deja de transmitir. Valores de los parámetros Es habitual en Ethernet el empleo de los siguientes valores: Límite de intentos de transmisión = 16 Tamaño de la señal de jamming = 48 bits IPG = 9,60 µs (96 bits) 15.2.4.Dominio de colisión Dominio de colisión es aquel conjunto de dispositivos conectados físicamente entre si, pero que en cada instante solo uno de ellos puede transmitir. Al área en el que cuando se produce una colisión, se propaga la señal diciendo que hay una colisión, se le llama Dominio de Colisiones. En el caso de un concentrador, todos los dispositivos conectados a él forman un dominio de colisión. Si tenemos varios concentradores conectados entre si, en este caso solo hay un dominio de colisión. Sin embargo, si la unión de 2 concentradores se hacen mediante el uso de un puente o un enrutador, cada concentrador es un dominio de colisión. http://www.tonet.jazztel.es 107 15.2.5.Ventana de colisiones Cuando se utiliza el protocolo Ethernet en una LAN, y debido a la tecnología de detección de colisiones CSMA/CD, existe técnicamente un tamaño mínimo de trama. La razón es que si una estación transmite, y se produce una colisión porque otra estación también está transmitiendo, ¿cuando tiempo se tarda en conocerse? La situación peor, es decir, la del tiempo máximo es lo que se llama la ventana de colisiones. Este tiempo máximo es el que transcurre: • • desde que se propaga el primer bit de la trama de una estación más el tiempo que tarda en propagarse el primer bit de la señal de jamming de la otra estación que ha detectado primero la colisión. Hay que dar tiempo a que si se produce una colisión entre las dos estaciones más lejanas el primer bit de la trama llegue a la estación más lejana (el tiempo de propagación Tp ), que ésta detecte la colisión y transmita su jamming (otro tiempo de propagación Tp ). En esta situación límite, si cuando llega el primer bit de la señal de jamming a la primera estación, ésta ya ha transmitido toda la trama, no detectará la colisión y dará por entregada correctamente dicha trama, cuando en realidad no ha sido así porque ha habido colisión. La ventana de colisión, también llamada tiempo de vulnerabilidad Tv , nos permite conocer durante cuanto tiempo el sistema es vulnerable a las colisiones dado que una estación ha transmitido una trama. Así la ventana de colisión es de dos veces el tiempo de propagación máximo, teniendo en cuenta el viaje de ida y vuelta de la trama y el caso peor que corresponderá al caso de las dos estaciones más alejadas. Ventana de colisión = 2 · Tp max Por otro lado se define como diámetro de la red (DR) a la distancia entre los dos dispositivos más alejados. Por todo lo expuesto el tamaño mínimo de trama L min vale L min = ventana de colisión / T b Siendo T b el tiempo de bit y la ventana de colisión Ventana de colisión = 2 · T p max = 2 · ( DR / v p) Siendo v p la velocidad de propagación. El protocolo 802.3/Ethernet ha establecido el tamaño mínimo de trama en 64 octetos, es decir, 512 bits. http://www.tonet.jazztel.es 108 En consecuencia para la velocidad de 10 Mbps, el diámetro máximo de red es Ventana de colisión = L min · T b = 512 . (1 / 10000000) = 0,0000512 seg. DR = (0,0000512 · v p ) / 2 = 0,0000256 · v p La velocidad de propagación depende del medio de transmisión empleado, que puede ser cable de cobre o fibra óptica. Para 100 Mbps, el diámetro máximo de red vale DR = (0,00000512 · v p ) / 2 = 0,00000256 · v p Es decir, 10 veces menos. Sin embargo el empleo de concentradores activos, introduce unos retardos por cada uno de ellos que se encuentren entre los dos dispositivos más alejados. Por esta razón en estos casos la ventana de colisión vale Ventana de colisión = 2 · T p max + suma de retardos de los enlaces + suma de los retardos de los repetidores + retardo NIC 1 + retardo NIC 2 Siendo el retardo NIC, el tiempo de procesamiento en la tarjeta de red del dispositivo. Las configuraciones básicas definen el tamaño máximo de un segmento Ethernet, en 10Base2 es de 185 mt, en 10Base5 es de 500 mt, en 10BaseT es de 100 mt y en 10BaseF depende si se emplea fibra multimodo o monomodo. Si queremos aumentar el tamaño de la red (Diámetro de la Red) hasta su tamaño máximo (Diámetro Máximo de la Red) hay que utilizar repetidores. Las configuraciones básicas definen cual es el diámetro máximo de la red: en un 10Base2 es de 1 Km y en un 10Base5 es de 2.5 Km. Primitivas Las funciones necesarias para el funcionamiento del protocolo se llaman primitivas y en el caso del protocolo 802.3/Ethernet son: − request. Esta función consiste en una solicitud del protocolo 802.3/Ethernet al protocolo de nivel superior, que en la actualidad es el 802.2 − Indication. Esta función consiste en recibir una notificación de sucesos procedente del protocolo de nivel superior. En la actualidad es el 802.2 − Confirm. Esta función consiste en una respuesta a una solicitud del protocolo de nivel superior, es decir, el 802.2 http://www.tonet.jazztel.es 109 15.3. Protocolo Fast Ethernet 15.3.1.Nivel físico La característica más importante es su velocidad de 100 Mbps. Para obtener esta velocidad hay que usar codificaciones digitales más complejas. La estructura de la trama es exactamente igual que la del protocolo Ethernet 802.3. Los tipos de medio de transmisión son: • 100BaseTX. El medio de transmisión es cable de cobre sin apantallar UTP clase 5 usando 2 pares trenzados. Es posible usar cable apantallado STP pero no lo recomiendan. El conector que se emplea es RJ-45. Su codificación es MLT-3. La transmisión es full-duplex. • 100BaseFX. El medio de transmisión es cable de fibra óptica. Su codificación es la misma que el protocolo FDDI, es decir, 4B/5B-NRZI. La transmisión es full-duplex. • 100BaseT4. El medio de transmisión es cable de cobre sin apantallar UTP clase 3. La señalización 4T+ emplea un par de hilos para detectar la colisión y los otros 3 pares para la transmisión de datos. Soporta operación fullduplex. La especificación IEEE 802.3u para redes 100BaseT4 permite un máximo de dos repetidores y un diámetro máximo de red de 200 m. Tanto los concentradores como los conmutadores permiten puertos con las velocidades de 10 y 100 Mbps (puertos en 10Base y puertos en 100Base). Además es posible conectar un 10BaseT a un 100BaseTX/T4. La tarjeta de red (NIC) usa un mecanismo de autonegociación, que consiste en un pulso eléctrico de integridad que le permite detectar si las tarjetas son de velocidad de 10 Mbps o 100 Mbps. 15.3.2.Repetidores El protocolo Fast Ethernet define dos tipos de repetidores: clase I y clase II. El repetidor clase I está pensado como un concentrador 100BaseT/F al que sólo hay conectados estaciones, pero no otro repetidor. Sus características son: • Solo se puede emplear un repetidor Clase I en una red Fast Ethernet. • Permite puertos T4, TX y FX en el mismo repetidor. Si queremos conectar dos concentradores 100Base hay que definir un estándar que cumpla los requisitos Ethernet, es decir, un Máximo Diámetro de la Red dependiente de la ventana de colisiones. Ese estándar es el clase II. El clase II se puede usar como un solo repetidor o conectado a un segundo repetidor (también http://www.tonet.jazztel.es 110 clase II) a través del llamado “up-link port”. Este cable tiene una longitud máxima de 5 metros que es la máxima distancia que se permite entre dos concentradores 100Base. Eso hace que los clase II no sean muy utilizados. Si queremos aumentar el número de puertos de un clase I dentro del mismo dominio de colisiones, podemos usar otra técnica distinta a la de interconectar dos concentradores: usar repetidores apilables (en inglés “stackable”).. Sus características son: • Uno o dos repetidores Clase II en un red Fast Ethernet. • Los dos repetidores se conectan con un puerto de 5 m. • Todos los puertos son T4. • Todos los puertos son TX y FX. Repetidores apilables Un concentrador apilable es un clase I que interconecta los buses internos a través de una conexión interna (“Intra-hub connection”). De esta forma escalamos el repetidor para que permita más puertos 100Base dentro del mismo dominio de colisiones. Se llaman apilables porque los repetidores se colocan uno encima de otro. Notar que la conexión Intra-hub no es una conexión entre dos puertos 100Base, las tramas no tienen que ser traducidos por el nivel físico, sino que se transmiten digitalmente por el bus. Se puede ver como un alargamiento del bus interno, por consiguiente no es una conexión entre dos concentradores. La desventaja que tiene esta técnica es que los concentradores apilables no están estandarizados, por lo que deben ser del mismo fabricante para que la conexión Intra-hub sea compatible. http://www.tonet.jazztel.es 111 16. Redes inalámbricas El protocolo estándar IEEE 802.11 define el nivel físico y el nivel de acceso al medio (MAC) para una red de area local inalámbrica. Este estándar define tres niveles físicos distintos para las redes inalámbricas 802.11, cada uno operando en un rango de frecuencias distintas y a velocidades diferentes. En la actualidad hay dos normas la IEEE 802.11b y la IEEE.11a. La empleada habitualmente es la primera y su compatibilidad viene regida por la etiqueta Wi-Fi. Protocolo IEEE 802.11b: Trabaja en la frecuencia de 2,4 Ghz con una velocidad máxima de transmisión de 11 Mbps y modulación DSSS. Protocolo IEEE 802.11a: Trabaja en la frecuancia de 5 Ghz y velocidades de transmisión hasta 54 Mbps. Su modulación es OFDM. 16.1.Protocolos 16.1.1.Protocolo 802.11a El protocolo 802.11a utiliza el mismo protocolo del nivel de enlace y el mismo formato de trama que el estándar original, pero a nivel físico emplea la modulación OFDM. Opera en la banda de los 5 GHz con una velocidad máxima de 54 Mbps, con un código de corrección de errores, lo que da un rendimiento real neto de unos 20 Mbps Dado que la banda de 2,4 GHz es muy utilizada, la utilización de la banda de 5 GHz es ventajosa. Sin embargo la alta frecuencia de la portadora tiene un inconveniente: el rango efectivo total del protocolo 802.11a es menor que el del protocolo 802.11b/g. En teoría, las señales del protocolo 802.11a se absorben más fácilmente por las paredes y otros objetos sólidos que encuentra en su camino debido a que su longitud de onda es más pequeña y, como resultado de ello, no puede penetrar tanto como las señales del protocolo 802.11b. En la práctica, el protocolo 802.11b tiene normalmente una myor rango a velocidades bajas. 16.1.2.Protocolo 802.11b El protocolo 802.11b tiene una tasa de transmisión máxima de 11 Mbps, y utiliza el mismo método de acceso que el estándar original. Los productos con el protocolo 802.11b aparecieron en el mercado a principios del año 2000, ya que el protocolo 802.11b es una extensión directa de la técnica de modulación definida en el estándar original. El aumento en el rendimiento del protocolo 802.11b le llevó a una rápida aceptación. Los dispositivos con el protocolo 802.11b sufren interferencias de otros dispositivos http://www.tonet.jazztel.es 112 que operan en la banda de los 2,4 GHz. Los dispositivos que operan en la banda de 2,4 GHz son: hornos microondas, dispositivos Bluetooth, monitores de bebés, y teléfonos inalámbricos. 16.1.3.Protocolo 802.11g En Junio de 2003, fue ratificado este protocolo 802.11g. Funciona en la banda de 2,4 GHz como el protocolo 802.11b, pero utiliza la misma modulación OFDM que el protocolo 802.11a. Opera a una velocidad máxima de 54 Mbps con códigos de corrección de errores incluídos o una tasa media de 22 Mbps compatible con el hardware del protocolo 802.11b. El protocolo 802.11g fue rápidamente adoptado por los consumidores a partir de Enero de 2003, mucho antes de la ratificación, debido al deseo de tasas de datos más altas. En el verano de 2003, la mayoría de los productos doble banda del protocolo 802.11a/b se convirtieron para poder trabajar de forma conjunta con los productos del protocolo a y b. Al igual que el protocolo 802.11b, el protocolo 802.11g sufre interferencias de otros dispositivos que operan en la banda de los 2,4 GHz, por ejemplo, los teclados inalámbricos. 16.1.4.Protocolo 802.11n El protocolo 802.11n es una enmienda que mejora los estándares 802.11 anteriores y añade las antenas MIMO (multiple-input multiple-output). El protocolo 802.11n funciona tanto en la banda de 2,4 GHz y en la banda de 5 GHz. El IEEE ha aprobado la enmienda, que fue publicada en Octubre de 2009. Antes de la ratificación final, las empresas ya estaban migrando al protocolo 802.11n basado en los productos con la certificación de la Wi-Fi Alliance que cumplen con el borrador del año 2007 del protocolo 802.11n. 16.2.Canales de transmisión El protocolo 802,11 divide cada una de las bandas que utiliza en canales, de manera análoga a cómo se subdividen las bandas de radio y televisión de difusión. Por ejemplo, la banda de 2,4000-2,4835 GHz se divide en 13 canales separados de 5 MHz, con el canal 1 centrado en los 2,412 GHz y el canal 13 en los 2,472 GHz. El protocolo 802.11b se basa en las formas de onda DSSS que utilizan 22 MHz y que no tienen bordes abruptos. En consecuencia sólo tres canales no se solapan. Incluso ahora, los dispositivos que se venden con los canales 1, 6 y 11 como opciones prefijadas. En cuanto al protocolo 802.11g hay cuatro canales que no se http://www.tonet.jazztel.es 113 solapan y son los canales 1, 5, 9 y 13. En la actualidad hay cuatro, porque las señales del protocolo 802.11g utilizan 20 MHz con una modulación OFDM. La disponibilidad de los canales está regulado por cada país, y está limitado en parte por la forma en que cada país tiene asignado su espectro radioeléctrico. En Japón se permite el uso de todos los 14 canales para el protocolo 802.11b, mientras que otros países como España solo permiten inicialmente los canales 10 y 11 y Francia sólo permite los canales 10, 11, 12 y 13. En la actualidad, ya permiten los canales del 1 al 13. Norteamérica y algunos países de América Central y Sudamérica sólo permiten los canales del 1 al 11. Además de especificar la frecuencia central de cada canal, el protocolo 802,11 especifica también una máscara espectral que define la distribución de potencia permitida a través de cada canal. La máscara requiere que la señal se atenúe por lo menos 30 dB a ± 11 MHz de la frecuencia central, para que los canales tengan de forma efectiva 22 MHz de ancho. Una consecuencia de esto es que las estaciones sólo se puede los canales cuarto o quinto sin solapamientos, normalmente los canales 1, 6 y 11 en América, y en teoría los canales 1, 5, 9 y 13 en Europa, aunque también es normal los canales 1, 6, y 11. Otra cuestión es que los canales del 1 al 13 requieren efectivamente requieren la banda 2,401-2,483 GHz, por ejemplo, en el Reino Unido desde 2,400 hasta 2,4835 Ghz, en los Estados Unidos desde 2,402 hasta 2,4735 GHz, etc Puesto que la máscara espectral sólo define restricciones de potencia de salida de hasta ± 11 MHz de la frecuencia central, y con un valor de -50 Db, a menudo se supone que la energía del canal se extiende más allá de estos límites. Es más correcto decir que, dada la separación entre los canales 1, 6 y 11, la señal de cualquier canal debe ser suficientemente atenuada para interferir mínimamente con un transmisor en cualquier otro canal. 16.3.Arquitectura LAN 802.11 Los principales componentes de la arquitectura LAN no cableada 802.11 se encuentran representados en la figura siguiente. El bloque fundamental de esta arquitectura es la celda, conocida como BSS (Basic Service Set). Una celda BSS consta de una o más estaciones inalámbricas y una estación central base, conocida como AP (Access Point) en la terminología del protocolo 802.11 http://www.tonet.jazztel.es 114 Las estaciones inalámbricas, que pueden ser fijas o móviles, y la estación central base se comunican entre ellas mediante el protocolo IEEE 802.11. Múltiples APs se pueden conectar juntos mediante redes cableadas, conformando lo que se llama un Sistema de Distribución (DS). Un Sistema de Distribución (DS) es una sola red 802 a efecto de los protocolos de niveles superiores, ya que la parte inalámbrica emplea el protocolo 802.11 y en la parte cableada el Ethernet o 802.3. A este tipo de arquitectura se le denomina “modo infraestructura” Las estaciones IEEE 802.11 también se pueden agrupar para formar una red “ad hoc” como se puede ver en la figura siguiente. Así una red “ad hoc” es una red sin control central ni conexiones con el mundo exterior. En este caso la red además de no disponer de cable alguno, no emplea ningún Punto de Acceso (AP). BSS 16.4.Protocolos de Acceso al Medio 802.11 Igual que en una red Ethernet cableada 802.3, las estaciones en una red inalámbrica IEEE 802.11 deben coordinar sus accesos y el uso del medio de transmisión compartido, que en este caso es la frecuencia radio. El protocolo IEEE 802.11 es un protocolo de tecnología CSMA/CA (Carrier Sense Multiple Access ) con Prevención de Colisión. Un protocolo CSMA consiste en que una estación antes de enviar una trama, verifica si el medio está ocupado. En la especificación del protocolo 802.11, el nivel físico monitoriza el nivel de energía de la frecuencia de radio con el fin de determinar si hay otra estación transmitiendo y además suministra la información de detección de portadora al protocolo del subnivel MAC correspondiente. Si el medio está libre durante un tiempo igual o mayor que el valor del parámetro DIFS (Distributed Inter frame Space), entonces una estación está autorizada a transmitir. Como en el caso de un protocolo de acceso aleatorio, la trama será recibida correctamente en la estación de destino si no han habido interferencias durante la transmisión desde la estación origen. Cuando una estación receptora ha recibido correctamente y completamente una trama de la cual era el destinatario, a continuación espera un corto período de tiempo, conocido como el parámetro SIFS (Short Inter Frame Spacing) y luego envía una trama de reconocimiento explícito al transmisor. Este reconocimiento a nivel de enlace de datos permite al transmisor saber si el receptor ha recibido correctamente la trama de datos enviada al receptor. Este reconocimiento explícito es necesario porque, a diferencia del protocolo Ethernet cableado, el transmisor http://www.tonet.jazztel.es 115 inalámbrico no puede determinar por si mismo si la transmisión de la trama fué recibida satisfactoriamente en destino. La transmisión de la trama por la estación transmisora y su reconocimiento subsiguiente por la estación destino se representa en la figura siguiente. En esta figura se ilustra el caso cuando el transmisor escucha el medio para verificar si está libre. ¿Qué sucede si el medio está ocupado? En este caso, la estación realiza un proceso de backoff similar al del protocolo Ethernet. En el caso de que la estación detecta que el medio está ocupado, demorará su acceso hasta que el medio esté libre. Una vez detecta que el medio está libre durante un tiempo igual o mayor que el valor del parámetro DIFS, la estación espera un tiempo adicional de backoff. Una vez ha transcurrido el tiempo de backoff, la estación transmite la trama. Como en el protocolo Ethernet, el temporizador aleatorio de backoff sirve para evitar el inicio simultáneo de transmisión de varias estaciones, es decir, con el fin de evitar sucesivas colisiones después de un tiempo de inactividad DIFS. Como en el protocolo Ethernet, el tiempo de backoff es el doble cada vez que la transmisión de una trama experimenta una colisión. A diferencia del protocolo Ethernet 802.3, el protocolo 802.11 no implementa la detección de colisiones. Hay dos razones para ello: • La posibilidad de detectar colisiones requiere la posibilidad de enviar y recibir al mismo tiempo, cosa que no sucede en el protocolo 802.11. No puede enviar su propia señal y recibir otra simultaneamente con el fin de determinar si las transmisiones de otra estación están interfiriendo con la propia transmisión. • El hecho de que, si una estación tuviese detección de colisión y no la detectara cuando envía, puede haber una colisión en el receptor y no detectarla. Esta situación resulta que es una de las características del medio inalámbrico. Supongamos que la estación A está transmitiendo a la estación B y que también al mismo tiempo la estación C está transmitiendo a la estación B. En el caso de que estemos frente al problema de la estación escondida (hidden terminal), las obstrucciones físicas en el entorno pueden hacer que A y C no puedan escuchar las transmisiones de la otr estación, aunque las transmisiones de A y C con destino a B se estén interfiriendo entre ellas. http://www.tonet.jazztel.es 116 Una segunda situación en el que no es posible detectar las colisiones en el receptor es el “fading” o atenuación de la señal a medida que se propaga a través del medio inalámbrico. Dadas estas dificultades para detectar las colisiones en el receptor, los diseñadores del protocolo IEEE 802.11 desarrollaron un protocolo de acceso al medio para evitar las colisiones (CSMA/CA), en vez de detectar y recuperarse de las colisiones (CSMA/CD). Primero la trama del protocolo IEEE 802.11 contiene un campo de duración en que la estación transmisora indica explicitamente la cantidad de tiempo que su trama será transmsitida en el medio. Este valor permite a las demás estaciones determinar la cantidad mínima de tiempo, llamado NAV (Network Allocation Vector), durante el cual retrasarán su acceso al medio. El protocolo 802.11 también puede usar una trama corta de control RTS (Request To Send) y una trama corta CTS (Clear To Send) para reservar el acceso al medio. Cuando un transmisor quiere enviar una trama, puede enviar primero una trama RTS al receptor, indicando la duración del paquete de datos y el paquete de reconocimiento ACK. Un receptor que recibe una trama RTS responde con una trama CTS, dando un permiso explícito al transmisor para enviar. Entonces todas las demás estaciones que oyen las tramas RTS y CTS, saben que hay una transmisión pendiente de datos y así pueden evitar la interferencia con estas transmisiones. Un transmisor de protocolo IEEE 802.11 puede operar ya sea usando las tramas de control RTS/CTS, o simplemente enviando sus datos sin usar antes la trama de control RTS. El uso de las tramas RTS y CTS ayudan a evitar colisiones de dos maneras: • Debido a que la trama CTS transmitida por el receptor será oida por todas las estaciones dentro del radio de acción del receptor, la trama CTS ayuda a evitar el problema de las estaciones escondidas y el problema de la atenuación o “fading”. • Debido a que las tramas RTS y CTS son cortas, una colisión de una trama RTS o CTS durará un tiempo muy pequeño. Fijémonos que cuando las tramas RTS y CTS se transmiten correctamente, es seguro que en la transmsión de datos subsiguiente y de la trama ACK no hay colisiones. http://www.tonet.jazztel.es 117 17. Modelo TCP/IP En la actualidad la expansión de Internet ha hecho que el protocolo TCP/IP sea un estándar de facto en las redes de ordenadores. El modelo TCP/IP consta fundamentalmente de los protocolos siguientes: IP ICMP TCP UDP ARP RARP Internet Protocol Internet Control Message Protocol Protocolo de nivel 3 Protocolo de nivel 3, responsable de la generación de mensajes Transmission Control Protocol Protocolo de nivel 4 User Datagram Protocol Protocolo de nivel 4 Address Resolution Protocol Protocolo de nivel 3, dada una dirección IP busca su dirección MAC Reverse Address Resolution Protocolo de nivel 3, que Protocol realiza la operación inversa del protocolo ARP Como se ve en la tabla anterior, los protocolos IP, ICMP, ARP y RARP funcionan a nivel de red según el modelo de referencia OSI, mientras que los protocolos TCP y UDP funcionan a nivel de transporte. 17.1.IP v4 - Internet Protocol La especificación del protocolo IPv4 se encuentra en - La RFC 791 Internet Protocol y - La RFC 950 Internet Standard Subnetting Procedure. IP es un protocolo que funciona a nivel de red (3) según el modelo de referencia OSI, es decir, se interrelaciona con los protocolos que funcionan a nivel de enlace (2) por debajo y a nivel de transporte (4) por arriba. Los protocolos de nivel de enlace son cualesquiera que soporten el estándar IEEE 802 e incluso cualquier otro protocolo de los que habitualmente se emplean en los sistemas de comunicaciones y que ya se han explicado anteriormente. En cuanto a los protocolos de nivel de transporte, el protocolo IP solo se entiende con el TCP y el UDP, que a su vez enlazan con los protocolos de aplicaciones. Las dos características básicas del protocolo IPv4 son: - Es un protocolo no fiable, es decir, no realiza un control de mensajes perdidos ni duplicados y http://www.tonet.jazztel.es - 118 No está orientado a conexión. Esto significa que los mensajes IP pueden llegar desordenados e incluso pueden llegar duplicados si la red es mallada, porque el camino que siguen para ir del dispositivo origen al de destino puede variar en función del estado de la red. Una de las razones por las que este protocolo IP es no orientado a conexión, es porque así se minimiza la dependencia de otras redes que utilizan redes jerárquicas orientadas a conexión. Cuando un dispositivo envía un mensaje IP, inserta en el mismo la dirección IP origen y la dirección IP destino en su cabecera. A continuación examina la dirección IP destino y la compara con la tabla de enrutamiento local. En función de esto, hay 3 posibles soluciones : - pasar el mensaje a un nivel más arriba del propio dispositivo - enviarla a la red a través de su interface o - tirarlo, es decir, no enviarlo. 17.1.1.Cabecera IPv4 Los mensajes IPv4 constan de una cabecera, un campo de datos de longitud variable y un tercer campo de control de error. Los campos de la cabecera son los siguientes: Versión Longitud Servicio Identificación Supervivencia Tamaño Flags Protocolo Fragmentación Control de error Dirección origen Dirección destino Tipo Longitud Opción Opciones Opciones Relleno Datos donde − Versión del IP, en este caso la 4, 4 bits − Longitud, 4 bits. Corresponde al tamaño de la cabecera del mensaje en mensajes de 32 bits. − Servicio, 1 octeto. Es una indicación de la calidad de servicio requerida, es decir, si tiene prioridad o no, se puede retrasar o no, etc. − Tamaño del mensaje, 4 octetos. Es la longitud total del mensajes, es decir, la longitud de la cabecera más los datos y se expresa en octetos. http://www.tonet.jazztel.es 119 − Identificación, 2 octetos. Un número único asignado por el emisor. Esta identificación permite el ensamblado de mensajes fragmentados si los hubiera, ya que todos los fragmentos tienen la misma identificación. − Flags, 3 bits. Dos bits DF y NF. El primero indica si el mensaje se puede o fragmentar o no y el segundo indica si es el último mensaje de la fragmentación o es uno intermedio. − Fragmentación, 13 bits. Se utiliza con los mensajes fragmentados. Su valor indica la posición relativa de cada mensaje fragmentado. − Supervivencia, 1 octeto. Utilizado para indicar el tiempo máximo que se le permite a un mensaje circular por la red. Es lo que también se llama tiempo de vida. Cuando un mensaje es procesado por un enrutador, éste resta uno al valor original. − Control de error, 4 octetos. Suma de pruebas complementada a uno de la cabecera IP para detectar posibles errores. − Protocolo, 1 octeto. Indica el protocolo de nivel de red (3) del que procede o se dirige. Algunos valores en decimal son: 1 4 6 8 17 29 36 ICNP IP (IP encapsulado en IP) TCP EGP UDP ISO-TP4 XTP • Dirección origen/destino, 4 octetos. La dirección origen y destino se mantiene siempre según va progresando por la red. La dirección destino permite encaminar el mensaje a través de los diferentes enrutadores que interconectan las redes. • Opciones. Es un campo de longitud variable e implementa elementos de seguridad, control etc.. Algunas de estas opciones son: o Source routing. Si esta opción está activa, en el campo opciones se indica el camino que debe seguir el mensaje hasta llegar a su destino. Para ello se anotan las diferentes direcciones IP en estos campos de opciones. o Record route. En este caso el campo opciones se va rellenando con las direcciones de los dispositivos que va atravesando el mensaje hasta llegar a su destino. o Time stamp. Esta opción fuerza a los enrutadores a grabar la hora (contador de 32 bits en unidades de milisegundos) en la que pasa el mensaje por este dispositivo y esto se hace en el campo opciones. También se rellena con la dirección IP del dispositivo en cuestión. http://www.tonet.jazztel.es 120 17.1.2. Fragmentación y ensamblado Las distintas redes interconectadas entre si no tienen por que utilizar el mismo tamaño de mensaje (MTU), así por ejemplo en Ethernet lo habitual son tamaños del orden de 1500 octetos y en las redes Token Ring, de 4096 octetos. Por definición el tamaño máximo de un mensaje del protocolo IP es de 64K octetos. Cuando la longitud del mensaje del protocolo IP es mayor que el del protocolo de nivel de enlace, es preciso realizar una fragmentación del mensaje IPv4. Este proceso se realiza en el propio dispositivo origen y cada fragmento se encamina a su destino de forma independiente, siendo responsabilidad del dispositivo de destino su ensamblado. El proceso de fragmentación en el dispositivo origen consiste en: • Comprobar el bit DF del campo IP para ver si está permitida su fragmentación. Si no lo está se descarga el mensaje, es decir, no se transmite. • En función del tamaño máximo permitido por la red física, se divide el campo de datos en varios segmentos. • Con estos mensajes del campo de datos del mensaje original, se forman nuevos mensajes, cuyo cabecera IP es idéntica a la original excepto en: * El bit de más datos (MF) se pone a uno, excepto el del último mensaje. * En el campo de fragmentación, se indica la posición de cada fragmento. * Se recalcula el campo de longitud. * Se recalcula el control de error. En el dispositivo destino se ensamblan todos los mensajes con la información fragmentada. Para ello se utiliza el campo de identificación y el de fragmentación. El primero para saber todos los mensajes que corresponden a la misma fragmentación y el segundo para saber el orden en que se deben ensamblar. El sistema final utiliza un buffer de recepción que liberará en caso de transcurrir un tiempo determinado y no haber llegado todos los mensajes correspondientes. Debido al propio funcionamiento del protocolo IP, se pueden producir situaciones de pérdida de mensajes, duplicado de los mismos, la llegada al destino fuera de secuencia, o con errores. En todos estos casos es el protocolo de nivel superior, es decir, un protocolo de nivel de transporte quien se encarga del tratamiento de la pérdida o duplicación de la información. 17.1.3.Direccionamiento y clases IPv4 http://www.tonet.jazztel.es 121 El protocolo IPv4 utiliza un modelo de direccionamiento, de forma que a cada interfaz de cada dispositivo se le asigna una dirección independientemente de su dirección MAC, que es la que utilizan los protocolos de nivel de enlace. La dirección IP destino es un dato que debe ser suministrado por las aplicaciones que corren en el propio dispositivo al protocolo IP. La dirección IP origen es un parámetro del propio controlador del protocolo IPv4. Estas direcciones IP constan de 32 bits y para su representación se emplea la notación decimal de puntos (X.X.X.X). Ésta consiste en 4 números decimales separados por un punto, por ejemplo 194.110.100.200 El ámbito de cada valor es de 0 a 255, dado que corresponden a 1 octeto, o sea, 8 bits. Su representación hexadecimal sería C2.6E.64.C8 y la representación binaria 11000010.01101110.01100100.11001000 El valor más a la derecha sólo puede oscilar entre 1 y 254 porque el 255 está reservado a la dirección de broadcast y el 0 es indicativo de toda la subred. En Internet, para acomodar la estructura de direccionamiento a las diferentes necesidades de utilización, el ámbito de direcciones IP se ha agrupado en clases de acuerdo con el criterio siguiente: Clase Prefijo Sufijo Clase A: 0 + 7 bits para red y 24 para los dispositivos Clase B: 10 + 14 bits para red y 16 para los dispositivos Clase C: 110 + 21 bits para red y 8 para los dispositivos Clase D: 1110 + 28bits para multicasting Clase E: 1111 + 28 bits experimental De esta forma la simple inspección de una dirección IP permite conocer a que clase pertenece, así los rangos de direcciones IP correspondientes a cada clase son: Clase A: de la 0.0.0.0 Clase B: de la 128.0.0.0 a la 191.255.255.255 Clase C: de la 192.0.0.0 a la 223.255.255.255 Clase D: de la 224.0.0.0 a la 238.255.255.255 Clase E: de la 240.0.0.0 a la 247.255.255.255 17.1.4.Máscaras a la 127.255.255.255 http://www.tonet.jazztel.es 122 Con posterioridad a la definición inicial del protocolo IP, se definen lo que se conoce como máscaras. Estas máscaras constan de 4 octetos (32 bits), igual que una dirección IP y debido a como se utilizan deben contener unos a la izquierda y ceros a la derecha, es decir, no pueden haber mezclas de unos y ceros. En Internet es habitual el empleo de las siguientes máscaras para cada clase: Clase Máscara A 255.0.0.0 B 255.255.0.0 C 255.255.255.0 Si a una dirección IP aplicamos la máscara con el operador AND, en realidad dividimos la dirección IP en 2 partes: - La parte izquierda que corresponde a la identificación de la red física, y - La parte derecha que identifica al dispositivo dentro de cada red. Con las máscaras introducimos el concepto de número de red dentro del campo de dirección IP. Es característico del protocolo IPv4, el hecho de que las máscaras no viajan en los mensajes IP, es decir, se emplean de forma local en cada dispositivo. 17.1.5.Enrutamiento El protocolo IP es un protocolo de enrutamiento en cuanto sus mensajes son encaminados según el contenido de unas tablas que contienen cada uno de los dispositivos de la red. A estas tablas, se les denomina tablas de enrutamiento. Estas tablas de enrutamiento se utilizan cuando un mensaje de protocolo IP tiene que salir de un dispositivo. ¿Cómo llega el mensaje al protocolo IP? Hay 2 posibles caminos: - puede proceder de protocolos de nivel superior del propio dispositivo o - puede haber entrado por una interface de un enrutador, es decir, procedente de un protocolo de nivel inferior, el cual lo debe encaminar para que siga su camino. Así una vez que el protocolo IP ha confeccionado su mensaje, su controlador debe decidir por cual de sus interfaces debe salir. La decisión de cual es la interface de salida se calcula mediante el empleo de la tabla de enrutamiento del dispositivo. Para ello vamos a emplear el ejemplo siguiente. Se trata de un ordenador con una tarjeta de red con dirección IP 192.168.0.5, máscara 255.255.255.0 y puerta de enlace 192.168.0.254 http://www.tonet.jazztel.es 123 Su tabla de enrutamiento es la siguiente: Dirección de red Máscara Puerta de enlace Interface 0.0.0.0 0.0.0.0 192.168.0.254 192.168.0.5 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 192.168.0.0 255.255.255.0 192.168.0.5 192.168.0.5 192.168.0.5 255.255.255.255 127.0.0.1 127.0.0.1 192.168.0.255 255.255.255.255 192.168.0.5 192.168.0.5 255.255.255.255 255.255.255.255 192.168.0.5 192.168.0.5 Cada línea de la tabla es una solución posible, así para cada dirección de red con su máscara, le corresponde una puerta de enlace y una interface por la que debe salir el mensaje IP. Vamos a analizar cada una de sus líneas que corresponde a una posible solución: - La dirección de red 0.0.0.0 con máscara 0.0.0.0 es la solución por defecto, es decir, si no cumple ninguna de las otras soluciones, el mensaje IP será enviado a la puerta de enlace 192.168.0.254 por la interface 192.168.0.5 - La dirección de red 127.0.0.0 con máscara 255.0.0.0 siempre se reserva como dirección IP interna o de localhost. Por esta razón siempre se encamina a la propia dirección IP interna 127.0.0.1. En este caso el mensaje IP no sale por ninguna interface y por tanto no es necesario que esté conectado a una red. - La dirección de red 192.168.0.0 y máscara 255.255.255.0 corresponde a la red donde está conectado el dispositivo. Por esta razón, si la dirección IP destino corresponde a esta red, debe salir por su interface 192.168.0.5 y no debe ser dirigida a la puerta de enlace. El objetivo de la puerta de enlace es enviar el mensaje a otras redes distintas de la suya 192.168.0.0 - La dirección de red 192.168.0.5 y máscara 255.255.255.255 corresponde a la propia interface, por lo que el mensaje IP se envía a la dirección IP interna 127.0.0.1 - La dirección de red 192.168.0.255 y máscara 255.255.255.255 corresponde a la dirección de broadcast de esta red, por lo que los mensajes IP con dirección IP destino 192.168.0.255 deben salir por la interface 192.168.0.5 - La dirección de red 255.255.255.255 y máscara 255.255.255.255 es una dirección de broadcast general y como tal los mensajes IP con esta dirección IP destino deben salir por la interface 192.168.0.5 Una vez explicado el significado de la tabla de enrutamiento, vamos a explicar como el protocolo IP encuentra la solución de por cual interface debe enviar cada mensaje IP. Esto lo realiza tomando la dirección IP de destino de cada mensaje y la http://www.tonet.jazztel.es 124 compara con cada una de las direcciones de red de la tabla aplicándole la máscara correspondiente con el operador lógico AND. Supongamos una dirección IP de destino 192.168.0.100. En la tabla siguiente, la columna resultado consiste en aplicar la máscara de cada línea a la dirección IP destino 192.168.0.100, es decir, resultado = 192.168.0.100 AND máscara Dirección de red Máscara Resultado Interface 0.0.0.0 0.0.0.0 0.0.0.0 192.168.0.5 127.0.0.0 255.0.0.0 192.0.0.0 127.0.0.1 192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.5 192.168.0.5 255.255.255.255 192.168.0.100 127.0.0.1 192.168.0.255 255.255.255.255 192.168.0.100 192.168.0.5 255.255.255.255 255.255.255.255 192.168.0.100 192.168.0.5 Si comparamos la columna dirección de red y resultado, hay 2 posibles soluciones, la primera y la tercera. Como la solución solamente puede ser una, se elige la que tiene la máscara con más unos a la izquierda en representación binaria, por tanto la solución es la tercera y el mensaje IP es enviado a la interface 192.168.0.5 En el caso de un enrutador, se hace exactamente lo mismo, lo que sucede es que en estos casos hay más de una interface posible. También en el caso de los enrutadores, el mensaje IP no se procesa si su tiempo de vida es cero. 17.2.IPv6 - Internet Protocol version 6 La versión 4 del protocolo IP tiene entre otros problemas que: - el número actual de direcciones IP está saturado y - no contempla la implantación de ningún tipo de seguridad. Por esta razón se ha definido la versión 6, con unas especificaciones bastantes diferenciadas y que se encuentran detalladas en la RFC 2460. Así el protocolo IPv6 tiene como características más significativas las siguientes: - Un mayor espacio de direcciones - Globalmente un direccionamiento único y jerárquico, basado en prefijos más que en clases de direcciones, permitiendo así unas tablas de enrutamiento más pequeñas y eficientes. - Un mecanismo para la autoconfiguración de las interfaces de las redes. - Soporte para encapsulación propia y de otros productos. http://www.tonet.jazztel.es 125 - Clases de servicios que distinguen los tipos de datos. - Soporte de enrutamiento multicast mejorado, preferentemente frente al broadcast. - Lleva incorporado autenticación y encriptación. - Métodos de transición desde el protocolo IPv4. - Métodos de compatibilidad para coexistir y comunicar con el protocolo IPv4. Estructura del mensaje El formato del mensaje del protocolo IPv6 es muy diferente del de la versión 4 del protocolo IP. En principio como todos los protocolos, consta de una cabecera y un campo de datos. Sin embargo en este protocolo, la cabecera consta de una parte básica y fija en cuanto a estructura, y de varias cabeceras adicionales y opcionales. La estructura de la cabecera principal es Versión Clase de tráfico Etiqueta de flujo Longitud Cabecera siguiente Límite de saltos Dirección IP origen Dirección IP destino Datos donde - Versión, 4 bits. Contiene el número 6 indicativo de esta versión. - Clase de tráfico, 4 bits. Clase de tráfico de 0 a 7. Los mensajes con esta prioridad no se envían si hay congestión. Clase de tráfico de 8 a 15. Se intentan enviar estos mensajes aunque haya congestión. - Etiqueta de flujo, 24 bits. Se emplea para etiquetar los distintos tipos de flujo, con el fin de darles un tratamiento diferencial. - Longitud, 16 bits. Es la longitud del mensaje en octetos exceptuando esta cabecera. - Cabecera siguiente, 8 bits. Indica el tipo de cabecera que hay a continuación de la principal. Los posibles valores entre otros son 0 Opciones Hop-by-Hop 41 IPv6 http://www.tonet.jazztel.es 43 Enrutamiento IPv6 44 Fragmento Ipv6 45 Protocolo Protocol) IRP 46 Protocolo Protocol) RSVP 50 Protocolo Payload) ESP 51 Autenticación Ipv6 58 Mensaje ICMP IPv6 59 Sin cabecera 60 Opciones de destino (Interdomain (Resource 126 Routing Reservation (Encapsulating Security - Límite de saltos, 8 bits. Equivale al tiempo de vida de la versión 4, pero ahora en cantidad de saltos. - Dirección IP origen, 128 bits. - Dirección IP destino, 128 bits. - Datos, que incluyen más cabeceras. Se puede observar si se compara con la estructura del mensaje del protocolo IPv4 que: - La alineación ha pasado de 32 bits a múltiplos de 64. - El campo de longitud de cabecera ha desaparecido y es reemplazado por otro de longitud del mensaje (2 octetos) sin la cabecera. La longitud de la cabecera principal es fija y consta de 40 octetos. - El tamaño del campo de direcciones pasa de 4 a 16 octetos cada uno de ellos. - La información de la fragmentación pasa a formar parte de las cabeceras auxiliares. - El campo tiempo de vida se sustituye por un campo de limitación de número de saltos (1 octeto). - El campo tipo de servicio es reemplazado por 2 campos: uno de clase de tráfico y otro de etiqueta de flujo. El campo clase de tráfico permite a los enrutadores clasificar los mensajes y establecer prioridades. - El campo protocolo es reemplazado por un campo que especifica el tipo de cabecera adicional o extendida (1 octeto). http://www.tonet.jazztel.es 127 Cabecera opcionales Su estructura básica es la siguiente: Cabecera siguiente Longitud Datos donde - Cabecera siguiente, 8 bits. Identificación del tipo de cabecera que está a continuación de ésta. - Longitud, 8 bits. Longitud de esta cabecera opcional. - Datos. La estructura de este campo es variable en función del tipo de cabecera de que se trate. Direccionamiento Sus especificaciones se encuentran detalladas en la RFC 2373. Cada dirección IP consta de 128 bits (16 octetos) y su sintaxis es igual a la de la versión 4, es decir, 16 números del 0 al 255 separados por un punto, o también en hexadecimal, como 8 valores separados por dos puntos(:). Como los números de teléfono, es habitual el dividir la dirección en dos, un prefijo y la dirección IP propiamente dicha. La dirección IP interna equivalente a la 127.0.0.1 deIPv4 es ::1 y la de una dirección IPv4 es ::dirección IPv4. Hay un rango reservado a direcciones globales con estructura jerarquizada y consiste en el prefijo 001. 17.3.ICMP - Internet Control Message Protocol ICMP es un protocolo que se describe en la RFC 792 y está actualizada en la RFC 950. Es un protocolo que funciona en el nivel de red (3) según el modelo de referencia OSI y se basa en el protocolo de red IP. Cuando un enrutador o un dispositivo destino debe informar al dispositivo origen de errores en el procesado de los mensajes del protocolo IP, usa el protocolo ICMP para informar del tipo de error al dispositivo origen. Esto no siempre es bueno, porque a veces el dispositivo origen no puede hacer nada según del error de que se trate. http://www.tonet.jazztel.es 128 El protocolo ICMP se caracteriza por : − El uso del protocolo IP como protocolo de más bajo nivel, es decir, los mensajes ICMP se encapsulan en mensajes IP. Sin embargo el protocolo ICMP es una parte integral del protocolo IP y debe ser implementado en cada mensaje del protocolo IP. − Informar de algunos errores, es decir, no hace el protocolo IP más seguro. Los mensajes pueden perderse, sin tener información vía ICMP. La seguridad del protocolo IP debe llevarse en protocolos de más alto nivel. − Informar de errores de cualquier mensaje del protocolo IP, excepto de los propios mensajes ICMP. − En el caso de fragmentación, los mensajes del protocolo ICMP solo informan de errores del fragmento cero. − Los mensajes del protocolo ICMP nunca se envían como respuesta de un mensaje que tenga dirección IP origen que no sea de un dispositivo en concreto, es decir, que no sea ni bucle, ni broadcast ni multicast. − Los mensajes del protocolo ICMP nunca se envían como respuesta a mensajes de error de ICMP. Estructura del mensaje Los mensajes ICMP su estructura es la misma que la de un mensaje IP excepto en que el tipo de servicio es cero y el campo de protocolo es un 1 indicativo del protocolo ICMP. Esta es la razón por la que el protocolo ICMP se considera de que es un protocolo de nivel de red. El campo de datos contiene los campos siguientes: - Tipo, 8 bits. Contiene la identificación del tipo de mensaje. - Código, 8 bits. Contiene más detalle del tipo de mensaje - Datos - Control de error, 16 bits 17.4.ARP - Address Resolution Protocol El sistema de direccionamiento del protocolo IP plantea un problema desde el punto de vista de direccionamiento del nivel físico (1). Por ejemplo en una red local basada en el protocolo Ethernet, dos dispositivos solo pueden comunicarse si se conocen sus respectivas direcciones físicas (MAC). Así cuando un dispositivo desea enviar un mensaje, a nivel del protocolo IP, debe rellenar el campo de la dirección IP origen con su propia dirección IP que conoce y lo mismo sucede en el caso del protocolo Ethernet, donde se ha de rellenar la dirección MAC origen y que http://www.tonet.jazztel.es 129 también el mismo conoce. La cosa cambia cuando se trata de rellenar el campo de la dirección IP destino. Obviamente el dispositivo origen la ha de conocer. Pero en el caso de la dirección MAC destino, ¿cómo la puede conocer? Para ello, se ha creado el protocolo ARP que es el encargado de dada una dirección IP, buscar la dirección MAC que le corresponde. El protocolo ARP es un protocolo de nivel de red (3) según el modelo de referencia OSI y sus especificaciones estan desarrolladas en la RFC 826. El protocolo ARP permite encontrar las direcciones físicas basándose en las direcciones IP de los dispositivos. Para ello se realiza primeramente una emisión broadcast de un mensaje de control conteniendo entre otros datos la dirección IP que se desea localizar. Todas los dispositivos de la red reciben este mensaje, pero solamente aquel cuya dirección IP coincida, responde con otro mensaje de control. Este mensaje contiene la dirección física (MAC) de dicho dispositivo. Al recibirse la respuesta, el primer dispositivo "aprende" la dirección física (MAC) del segundo. Esta información se mantiene en memoria caché para posteriores envíos. Las entradas en la memoria caché se asocian a un temporizador para permitir la modificación dinámica de la dirección física de los dispositivos porque - la dirección IP puede ser cambiada por necesidades de operación y - la dirección física MAC también cambia si se cambia su tarjeta de red. En UNIX, se puede usar el comando arp –a para obtener el contenido de la tabla ARP. La duracion de una entrada es del orden de unos 20 minutos. - arp [-vn] [-H type] [-i if] -a [hostname] - aucanada% arp –a teix.ac.upc.es (147.83.35.110) at 00:20:E1:10:4f:34 [ether] on eth0 arenys5.ac.upc.es (147.83.35.2) at 00:10:F8:B3:E4:00 [ether] on eth0 En Windows, tambien hay el comando arp y su sintaxis para la visualizacion de la tabla ARP es ARP -a Las llamadas al protocolo ARP proceden de los protocolos de nivel de enlace, ya que estos son los que reciben los paquetes del protocolo IP con sus direcciones IP, y que para construir su trama requieren de las direcciones MAC equivalentes a estas direcciones IP. El algoritmo para el envío del protocolo ARP es el siguiente: - Dada una dirección IP, primero consultar en la tabla ARP del propio dispositivo. - Si se encuentra dicha dirección IP, utilizar la correspondiente dirección física. - Sí no está, enviar una solicitud ARP de broadcasting. Temporizar y reenviar si no se recibe respuesta. http://www.tonet.jazztel.es 130 El proceso de recepción de mensajes de búsqueda del protocolo ARP funciona de la siguiente manera: – – Al recibir una solicitud del protocolo ARP, si la dirección IP corresponde al equipo: – Se almacenan las direcciones IP y las direcciones físicas recibidas en la tabla ARP del propio dispositivo. – Se rellena el campo correspondiente de la dirección física del dispositivo. – Se envía un mensaje de respuesta con su dirección física. Sí la dirección IP no es la del dispositivo, se almacena la dirección IP y la dirección física correspondiente en su tabla ARP para posibles usos futuros. Un posible problema que puede aparecer en las redes TCP/IP es el denominado "tormenta de broadcast". Cuando un dispositivo envía un comando ARP buscando una determinada dirección, puede provocar una cadena de mensajes ARP por parte del resto de los dispositivos. Normalmente esto se produce cuando algunas de los dispositivos conectados a la red no cumplen exactamente las mismas reglas en situaciones muy particulares. En el caso de que todos los dispositivos utilicen el subdireccionamiento pueden repetir el comando ARP intentando buscar el dispositivo en su subred. Estructura del paquete El mensaje ARP corresponde al campo de datos del protocolo de nivel de enlace de la red en cuestión. Así si es una red 802.3/Ethernet con protocolo 802.2 SNAP, los campos SAP origen y destino contienen el número 170, y el campo de tipo de Ethernet 2054, indicativo de que se trata de un mensaje ARP. Por esta razón se considera de que es un protocolo de nivel de red según el modelo de referencia OSI. Los campos de la dirección física del destino van a 0 en el mensaje de búsqueda. El dispositivo destino insertará aquí su dirección física en el mensaje ARP de respuesta. 17.5.RARP - Reverse Address Resolution Protocol Las especificaciones del protocolo RARP están descritas en la RFC 903. El protocolo RARP permite asignar direcciones IP a dispositivos sin unidades de disco y así resolver este problema. Para ello se utilizan mensajes del mismo tipo que los del protocolo ARP. Todos los dispositivos con interface de red tiene una dirección física MAC pero en nuestro caso, estos dispositivos no disponen de dirección IP, por lo que no pueden http://www.tonet.jazztel.es 131 comunicarse con protocolos de niveles superiores al de enlace. Por esta razón este protocolo RARP funciona a nivel de red (3) según el modelo de referencia OSI. El proceso comienza cuando un dispositivo envía una solicitud de dirección IP. En la respuesta se indica además de la dirección IP, la dirección física del dispositivo y a continuación se pone en estado de espera de una respuesta por parte de uno o varios servidores RARP que le indiquen su dirección IP. También debemos tener en cuenta, de que si los servidores RARP están fuera de servicio, los dispositivos pendientes de ellos, no podrán conectarse a la red. El mensaje RARP corresponde al campo de datos del protocolo de nivel de enlace de la red en cuestión. Así si es una red 802.3/Ethernet con protocolo 802.2 SNAP, los campos SAP origen y destino contienen el número 170, y el campo de tipo de Ethernet 32821, indicativo de que se trata de un mensaje RARP. Por esta razón se considera de que es un protocolo de nivel de red según el modelo de referencia OSI. El protocolo RARP tiene “frame type = 0x8035” y “op= 3” en los mensajes de request y “op=4” en los mensajes de reply. A diferencia de los mensajes de reply del protocolo ARP son del tipo broadcast, los mensajes de reply de RARP son unicast. 17.6.TCP - Transmission Control Protocol El protocolo TCP es un protocolo que funciona a nivel de transporte según el modelo de referencia OSI y como tal por una parte enlaza con los protocolos de nivel super o de aplicación y por otro con el protocolo de nivel de red IP. Es un protocolo que no se entiende con otros protocolos de nivel de red tales como IPX, NetBIOS, etc. El protocolo TCP se describe básicamente en la RFC 793. También se desarrolla, amplia y complementa en las RFC siguientes: - RFC 1122, amplía y actualiza algunos conceptos. - RFC 813, describe la gestión de ventanas, - RFC 816, describe como aislar los fallos y como recuperarlos - RFC 879, desarrolla los tamaños máximos de los mensajes - RFC 896, comenta el tema de la congestión Este protocolo TCP tiene como características principales: - Es un protocolo orientado a conexión - La realización de recuperación de errores - El control de flujo y http://www.tonet.jazztel.es - 132 Empleo de conexión full duplex. El protocolo TCP funciona mediante una comunicación full duplex, es decir, suministra flujo de datos concurrentes en ambas direcciones El objetivo principal del protocolo TCP es suministrar un circuito lógico fiable y un servicio de conexión entre pares de procesos de distintos dispositivos. No asume la fiabilidad de los protocolos de nivel inferior como el IP, es decir, el TCP debe garantizar por si mismo la fiabilidad de sus mensajes. Desde el punto de vista de las aplicaciones, el protocolo TCP transfiere un flujo continuo de octetos a través de la red. La aplicación no tiene que preocuparse con la fragmentación de los datos en bloques. El protocolo TCP hace si es necesario la segmentación, agrupando los octetos en segmentos TCP, que son pasados al protocolo IP para su transmisión a destino. A veces una aplicación necesita estar segura de que todos los datos han pasado al protocolo TCP con el fin de ser transmitidos a su destino. Por esta razón, existe una función push, que cuando se activa, se envían todos los segmentos TCP almacenados en el buffer del dispositivo origen al dispositivo destino. La función de cierre normal de la conexión incluye la función push. De esta forma se garantiza de que no se queda nada en el buffer pendiente de envío. Puertos El protocolo TCP es un protocolo de nivel de transporte y como tal debe intercambiar los datos con los distintos protocolos a nivel de aplicación. Este intercambio será a doble dirección, es decir, del protocolo de aplicación al protocolo TCP y viceversa. Por esta razón el protocolo TCP debe poder distinguir los distintos protocolos de aplicación existentes. Esto se realiza mediante la definición de puerto. Un puerto TCP equivale a un buffer para cada protocolo de aplicación del dispositivo en cuestión. Para un mismo protocolo pueden definirse más de un puerto. Así el protocolo POP, deja sus datos en el puerto 110, datos que procesa el protocolo TCP. A la inversa, cuando llega un mensaje POP al protocolo TCP de este dispositivo, el protocolo TCP los deja en el puerto 110. En una transmisión de información entre dos dispositivos, el mensaje TCP contiene un campo que identifica el número del puerto del dispositivo origen y otro con el número del puerto del dispositivo destino, y que no tienen porque coincidir. Puerto 1 Puerto 2 Protocolo TCP Protocolo IP Puerto 3 http://www.tonet.jazztel.es 133 El empleo de puertos equivale pues a un efecto de multiplexación cuando se transmiten mensajes al exterior y de desmultiplexación cuando se pasan a nivel superiores al de transporte. Esto permite que varios protocolos de aplicaciones puedan transmitir y recibir simultáneamente desde el protocolo TCP. En Internet, los números de los puertos TCP se dividen en 3 rangos y pueden encontrarse en la dirección de Internet http://www.iana.org/assignments/portnumbers y son: - Los Bien Conocidos (de 0 a 1023), asignados por el IANA - Los Registrados (de 1024 a 49151) y - Los Dinámicos y Privados ( de 49152 a 65535). Cabecera TCP Los mensajes TCP constan de una cabecera, un campo de datos de longitud variable y un tercer campo de control de error. Los campos de la cabecera son los siguientes: Puerto origen Puerto destino Número de secuencia Número de reconocimiento Tamaño Flags Control de error Ventana Indicador de urgencia Opciones Datos • Puertos de origen / destino, 16 bits. Estos campos contiene el número de los puertos de los dispositivos origen y destino de la conexión TCP. Estos dos valores junto con las direcciones IP de origen y destino contenidas en la cabecera del protocolo IP, constituyen la conexión entre procesos ULP, que será única en la red. • Números de secuencia, 32 bits. Contiene un valor que representa el número de secuencia del primer octeto de datos del mensaje. Si el indicador SYN está activo, el campo número de secuencia será el inicial (ISN), por lo que el primer mensaje de datos tendrá el número ISN+1. • Número de reconocimiento, 32 bits. Si el indicador ACK está activo, este campo contendrá el valor del siguiente número de secuencia que el transmisor del mensaje está esperando recibir. • Tamaño, 4 bits. Indica el número de palabras de 32 bits de la cabecera TCP. http://www.tonet.jazztel.es • 134 Indicador de control. Son condiciones que se emplean en el establecimiento, mantenimiento y finalización de las conexiones y están representadas cada una de ellas por un bit. URG: ACK: PSH: RST: SYN: FIN: Indicador de urgencia. Este mensaje incluye un reconocimiento (ACK). Activación de la función push. Reinicio de le conexión. Sincronización de los números de secuencia. Indicativo de que no hay más datos del transmisor. • Ventana, 16 bits. Se emplea en los mensajes ACK, y especifica el número de octetos de datos, comenzando en el número contenido en el campo del número de validación, que el transmisor del segmento es capaz de aceptar. • Control de error, 16 bits. Es el complemento a uno de la suma de los complementos a uno de la cabecera y el campo de datos. • Indicador de urgencia, 16 bits. Solamente es significativo cuando el bit URG está activo. Contiene el valor del offset positivo desde el número de secuencia del octeto que va a continuación de los datos urgentes. • Opciones. Existen solamente tres opciones definidas: o Fin de opciones, con el valor de opción 0 o No operación, con el valor de opción 1. o Tamaño máximo de segmento con el valor de opción 2. Esta opción se utiliza en la solicitud de conexión inicial. Fases del protocolo TCP El protocolo TCP está orientado a conexión, por lo que antes de enviar los datos propiamente dichos, debe establecer la conexión entre los dispositivos origen y destino y cuando ha terminado la transmisión de datos, debe cerrar esta conexión. Así en la operación del protocolo TCP podemos distinguir tres fases: el establecimiento de la conexión, la fase de transmisión de datos y la finalización de la conexión. Vamos a detallar cada una de estas fases. a) Fase de establecimiento de la conexión o sincronización Las aplicaciones indican su disponibilidad a aceptar conexiones solicitando al protocolo TCP el establecimiento de un estado "pasive open”. En esta solicitud se debe indicar el número de puerto local. Establecido el estado de “pasive open”, el puerto identificada se mantendrá en estado de escucha "listen" hasta la recepción de su apertura activa. Cuando una aplicación quiere establecer una conexión con otra aplicación de otro ordenador que se encuentra en estado "listen", solicitará un "active open" a su aplicación local, indicando la dirección IP y el número de puerto del otro ordenador http://www.tonet.jazztel.es 135 junto con su número de puerto local. Para ello el protocolo TCP enviará un mensaje de sincronización "SYN" en el que incluirá las direcciones IP y los puertos de los ordenador origen y destino, el número de secuencia del siguiente octeto de datos que espera recibir y otros datos opcionales. El protocolo TCP del ordenador destino comparará los valores recibidos con sus número de puertos en escucha salientes, y si algún valor coincide, enviará otro mensaje de sincronización SYN con un mensaje de reconocimiento ACK, las direcciones IP y el número de secuencia del primer octeto de datos que espera recibir. Este mensaje se confirma a su vez mediante otro mensaje SYN-ACK, con lo que queda la conexión establecida. El ordenador destino, cuyo protocolo TCP está en estado de escucha, pasará al estado de conexión establecida al recibir este tercer mensaje. Si el mensaje SYN inicial no recibe el mensaje de reconocimiento ACK debido a problemas en la red o que el ordenador destino no se encuentra en estado de escucha para el puerto solicitado, cuando el correspondiente temporizador llega a cero, se hará un reintento, repitiéndose un cierto número de veces. Si al final no puede establecerse la conexión, el protocolo TCP del ordenador origen notificará el fallo de la conexión mediante un mensaje "open failure" a la aplicación que había realizado la solicitud del propio ordenador origen. b) Fase de envío de datos Una vez establecida la conexión, el protocolo TCP soporta un flujo de datos fullduplex entre las aplicaciones del ordenador origen y el ordenador destino que se comunican. El flujo de datos que genera el ordenador origen respeta la secuencia de origen. Cuando no sea posible la entrega de los datos dentro de los límites impuestos por los temporizadores del protocolo TCP, este notificará a su aplicación local el fallo del servicio y finalizará la conexión. El flujo de datos se controla numerando cada octeto que se transmite a través de la conexión establecida. Este mecanismo también sirve para la ordenación de los datos, la detección de duplicaciones, la aceptación y el mecanismo de ventana deslizante en el ordenador destino. La información de control es también numerada y se controla su secuencia. Todos los datos que se transmiten deben ser validados por el prdenador destino. Para controlar esto, se emplean temporizadores en el controlador del protocolo TCP, que al vencimiento de los cuales sin aceptación del ordenador destino, se procede a la retransmisión de los datos. Los valores particulares de los temporizadores, los contadores de retransmisión y la frecuencia de las aceptaciones dependen de cada implementación en particular. El mecanismo de detección de error, basado en el control de error de 16 bits incluido en la cabecera del protocolo TCP, permite recuperar los errores mdeiante un sencillo mecanismo que consiste en descartar los mensajes erróneos, siendo retransmitidos por el ordenador destino al no recibir la correspondiente aceptación. http://www.tonet.jazztel.es 136 c) Fase de finalización de la conexión Normalmente la finalización de las conexiones del protocolo TCP sigue un orden. Esto requiere la sincronización de ambos extremos para garantizar que toda la información correspondiente al canal full-duplex es transmitida y validada antes del cierre final de la conexión. La solicitud de finalización se realiza mediante un mensaje "close request", que indica que la aplicación local ha completado su transferencia de datos. Una vez solicitado el cierre de la conexión, el ordenador origen no enviará más información por la conexión en proceso de cierre, y comprobará que todos los datos enviados sean aceptados por el ordenador destino. El protocolo TCP del ordenador origen enviará un mensaje FIN para notificar el cierre al ordenador destino, que a su recepción lo notificará a su aplicación local mediante un mensaje "closing indication". A continuación, el ordenador destino enviará un mensaje FIN-ACK con lo que el ordenador origen transmite un mensaje "close request" a su aplicación, momento en que ésta enviará un mensaje FIN. Temporizadores En todos los protocolos es importante conocer que temporizadores se emplean y en base a que parámetros se rigen cada uno de ellos. En el caso del protocolo TCP, es importante conocer estos temporizadores, porque muchas veces su conocimiento y su análisis explican el porque algunos mensajes no llegan nunca a su destino, o se http://www.tonet.jazztel.es 137 requiere una nueva retransmisión de los mismos, con lo que los tiempos de respuesta aumentan. El protocolo TCP utiliza 7 temporizadores en cada conexión, y son los siguientes: 1 ) Un temporizador arranca cuando se envía una señal de sincronización (SYN) con el fin de establecer una nueva conexión. Si al cabo de 75 segundos no se ha recibido respuesta, se aborta dicho intento de conexión. 2 ) Otro temporizador arranca cuando el protocolo TCP del ordenador origen empieza a enviar datos, es decir, una vez ya establecida la conexión. Si no hay reconocimiento por parte del ordenador destino, el protocolo TCP del ordenador origen retransmite los datos. El valor de este temporizador se calcula dinámicamente y varía en función de las retransmisiones. Su valor oscila entre 1 y 64 segundos. 3 ) Los mensajes de reconocimiento (ACK) tardan 200 ms. en enviarse a partir del instante que el ordenador sabe que las tiene que enviar, es decir, se añade un retardo. Si hay más datos a enviar, se envían con el mensaje de datos. 4 ) Cuando la ventana llega a cero, arranca otro temporizador mientras no se envían nuevos datos. Si el protocolo TCP del ordenador origen continua sin poder enviar datos porque el ordenador destino no contesta a una ventana de valor cero, y el temporizador también llega a cero, el ordenador origen envía 1 octeto de datos con el fin de verificar que la ventana sigue abierta. 5 ) Hay un temporizador llamado keepalive, que obliga al otro extremo a responder. De esta forma un ordenador conoce si el ordenador en el otro extremo de la conexión está en línea, es decir, activo. 6) Temporizador FIN_WAlT_2. Cuando una conexión pasa del estado FIN_WAlT_1 al FIN_WAlT_2 la conexión no puede enviar más datos, estableciéndose este temporizador en 10 minutos. Pasado este tiempo, si no ha habido el cambio de estado correspondiente, la conexión se pierde. El objetivo de este temporizador es que no quede en permanente estado FIN_WAlT_2 7) También entra en juego otro temporizador cuando se entra en estado TIME_WAlT. Transcurrido este tiempo sin un cambio de estado, la conexión se cierra. Para entender como funcionan estos 3 últimos temporizadores, debemos conocer como funciona el cierre de una conexión que en principio siempre es solicitado por el ordenador origen. Para ello el ordenador origen envía un mensaje FIN al ordenador destino. En este instante el ordenador origen entra en estado FIN_WAIT_1, en espera de recibir el mensaje de reconocimiento ACK del ordenador destino, quedando este en estado CLOSE-WAIT. Cuando el ordenador origen lo recibe pasa a estado FIN_WAIT_2. Cuando se quiere cerrar la sesión, el ordenador destino también envía al ordenador origen un mensaje de FIN, quedando en estado LAST-ACK. Cuando el ordenador origen lo recibe, pasa a estado TIME-WAIT, a la vez que envía un mensaje de reconocimiento ACK al ordenador destino. http://www.tonet.jazztel.es 138 Reconocimientos y retransmisiones El protocolo TCP asigna un número de secuencia a cada mensaje que transmite, consistente en la posición del primer octeto que envía respecto a todos los datos a enviar. Por ejemplo, supongamos que tienen que transmitirse 96234 octetos. Si el número de secuencia es 11200, significa que el primer octeto de datos de este mensaje corresponde al 11200 de todos los datos a transmitir. Por otro lado, el ordenador destino envía reconocimientos periódicos de los mensajes que va recibiendo. Si el mensaje de reconocimiento ACK no es recibido en un tiempo preestablecido, el ordenador origen los retransmite pero solo a partir del número de secuencia del mensaje que no ha recibido reconocimiento. También el protocolo TCP del ordenador destino usa los números de secuencia para ensamblar los segmentos cuando llegan sin orden y a su vez eliminar los duplicados si los hubiere. Control de flujo. Ventanas. Se entiende por control de flujo a la sincronización que se establece entre dos dispositivos que se transmiten datos. En el caso del protocolo TCP, cuando el ordenador destino envía un mensaje de reconocimiento ACK al ordenador origen, también le notifica del número de octetos que puede recibir después del último mensaje TCP recibido, sin provocar saturación ni overflow en sus buffers internos. Esto es lo que se llama ventana o windowing. De esta forma el ordenador origen aumenta o disminuye el flujo de transmisión de datos, con el fin de optimizar el tiempo de respuesta. A mayor tamaño del mensaje, menor segmentación y por tanto el tiempo de transmisión es menor. Sin embargo, un mayor tamaño de mensaje comporta una mayor probabilidad de errores durante la transmisión. De aquí que se negocie este tamaño entre el ordenador origen y el ordenador destino durante la transmisión. Ejemplo del tráfico TCP http://www.tonet.jazztel.es 139 17.7.UDP - User Datagram Protocol UDP (User Datagram Protocol) es un protocolo descrito en la RFC 768. Es un protocolo que funciona en el nivel transporte (4) del modelo de referencia OSI. Sus relaciones con los protocolos a nivel de aplicación es escasa, es decir, hay pocos protocolos de nivel 7 que lo emplean como protocolo de transporte. En cuanto a los protocolos de nivel inferior, es decir de red, sólo se entiende con el protocolo IP. UDP es un protocolo alternativo al protocolo TCP, sin embargo a diferencia de éste no es ni fiable, ni hace control de flujo ni control de errores, por lo que solo se recomienda en redes con sistemas de transmisiones fiables. UDP es un protocolo no orientado a conexión, es decir, no hay un establecimiento previo de la conexión Este protocolo UDP aporta un procedimiento para que los programas de aplicación puedan enviar mensajes a otros programas con un mínimo de mecanismo de protocolo. El protocolo UDP se orienta a transacciones, y tanto la entrega como la protección ante duplicados no se garantizan. El protocolo UDP puede ser considerado como poco pesado, por lo que no genera sobrecargas, sin embargo requiere que la aplicación se haga cargo de la recuperación de errores. Las aplicaciones que envían mensajes UDP a otro ordenador necesitan identificar la aplicación de este ordenador destino, ya que los mensajes se dirigen normalmente a ciertos procesos y no al sistema en general. Los mensajes UDP constan de una cabecera, un campo de datos de longitud variable y un tercer campo de control de error. Los campos de la cabecera son los siguientes: Puerto origen Puerto destino Longitud Control de error Datos donde − Puerto Origen, 16 bits. Indica el puerto del dispositivo origen. Es opcional y si no se utiliza, se inserta un valor cero. − Puerto Destino, 16 bits. Especifica el puerto del dispositivo destino. − Longitud, 16 bits. Es el tamaño, en octetos, del mensaje incluida la cabecera. http://www.tonet.jazztel.es 140 − Control de error, 16 bits. Es un conjunto de bits de comprobación. Con el fin de calcular de una manera más fiable el campo control de error, se hace a partir de la confección de una pseudo-cabecera UDP que no se transmite. Esta pseudo-cabecera contiene la dirección IP del ordenador origen, la dirección IP del ordenador destino, el código del protocolo UDP en el protocolo IP (17) y la longitud del mensaje UDP. La razón de la inclusión de las direcciones IP hará que sea más fiable en cuanto se garantiza mejor el reconocimiento por parte del dispositivo destino. En cuanto a los puertos que utiliza, su funcionamiento es exactamente igual que el protocolo TCP, sin embargo tienen otros números. En Internet, el número de estos puertos también esta reglamentado y es habitual que tengan el mismo número que el puerto TCP. Los principales protocolos a nivel de aplicación que utilizan este protocolo UDP a nivel de transporte son: - el DNS (Domain Name Server) - el TFTP (Trivial File Transfer Protocol) - el SNMP (Simple Network Management Protocol) y - el programa Ping http://www.tonet.jazztel.es 141 18. Redes Cliente/Servidor 18.1.Introducción En una red de ordenadores que sigue el modelo cliente/servidor, los ordenadores de la red se clasifican en dos tipos: servidores y clientes. La información que manejan los clientes, como debe ser compartida por varios de ellos, se almacena en los servidores. De esta forma en los ordenadores de los clientes, la información almacenada se considera que no es necesaria para el funcionamiento de la empresa en cuestión. De esta forma, solo debe asegurarse la información contenida en los servidores, ya sea mediante copias de seguridad o de centros de respaldo. Caso de un sólo servidor En este supuesto, en el servidor debe haber una base de datos que contenga de cada cliente que pueda acceder a su información, el nombre y la contraseña que autoriza su acceso. Por otro lado, debe haber una base de datos en el servidor, que contenga para cada cliente o grupos de ellos los nombres y los directorios a los que pueden acceder del servidor. Además se ha de tener en cuenta que los ficheros tienen distintas características mediante las cuales el acceso de cada cliente o grupos de ellos puede ser distinto. Hay tres tipos muy claros que son: – sin acceso – acceso de sólo lectura – acceso total, que permite la modificación de su contenido. Así debe haber otra base de datos donde cada fichero o directorio, diga que para cada cliente o grupo, que tipos de acceso tiene. Estos permisos de los ficheros depende del sistema de ficheros esté implementado en el servidor. Estos sistemas de ficheros también dependerán del sistema operativo del servidor. Caso de más de un servidor En este caso, la cuestión se complica en cuanto uno de los servidores debe ser el principal y por lo tanto ha de tener las funcionalidades explicadas anteriormente. Los servidores secundarios deben coordinarse con el principal, ya que de lo contrario, el cliente debería darse de alta en cada uno de los servidores con la consiguiente complicación que ello conllevaría. http://www.tonet.jazztel.es 142 18.2.Acceso del cliente a la información De forma general, cuando un cliente necesita una información almacenada en un servidor, la solicitará y el servidor la servirá en función del reconocimiento del cliente, mediante su nombre y su contraseña, y la verificación de los permisos que tiene concedidos a este cliente para este fichero. a) Caso de un fichero ofimático En este caso, si el cliente sólo tiene acceso de lectura, el servidor lo enviará al cliente pero no le permitirá su devolución, ya sea con o sin cambios. Si el permiso del cliente le autoriza a modificar el contenido del fichero, cuando el cliente haya realizado todas las modificaciones, devolverá el fichero al servidor. En este caso, el servidor debe controlar la posibilidad de que más de un cliente pueda realizar modificaciones. Por esta razón en estos caso, la solicitud de un fichero por parte de un cliente, ha de bloquear las modificaciones por parte de otros clientes. Este bloqueo no debe ser a efectos de sólo lectura. b) Caso de una información contenida en una base de datos En este caso, el cliente solo solicita una parte de la información contenida en la base de datos, con una mayor o menor elaboración. Cuidado también en las modificaciones del cliente de la información contenida en la base de datos. Las principales bases de datos que soportan el lenguaje SQL, las modificaciones se realizan en base a la tecnología de las colas de espera. c) Caso de una información solicitada a un servidor web En principio los ficheros de un servidor web son de sólo lectura, y no se requiere la identificación del cliente solicitante. Sin embargo estos ficheros que envía un servidor web ante una solicitud de un cliente son de dos tipos: – ficheros con información fija y ficheros que se generan de acuerdo con la petición realizada por el cliente. En este caso, quiere decir que en el servidor web hay una base de datos, de la cual se extraerá la información solicitada por el cliente, se elaborará, y se enviará un fichero de sólo lectura con esta información elaborada. – 18.3.Gestión de las identidades y de los permisos de acceso Durante estos últimos años, la solución de la gestión de las identidades y de los permisos de acceso (en inglés, Identities and Access Management - I&AM) se ha desarrollado a través de una infraestructura centralizada integrada. Este concepto combina los procesos de negocio, sus políticas y sus tecnologías que permiten a las empresas: http://www.tonet.jazztel.es • proporcionar un acceso seguro a cualquier recurso, • un control eficiente de este acceso, • responder rápidamente a las relaciones cambiantes, • proteger la información confidencial de los usuarios no autorizados. 143 Así las tres cuestiones importantes que concurren hoy en día dentro de las organizaciones de los departamentos de la Tecnología de la Información en cuanto a este tema son: • La gran base instalada de ordenadores, estaciones de trabajo y servidores, basados en Windows ha llevado a la adopción del Active Directory y el amplio despliegue de aplicaciones basadas en Active Directory como Microsoft Exchange. • Los departamentos de la Tecnología de la Información gestionan de forma creciente entornos heterogéneos basados en un organización centralizada para la seguridad, el cumplimiento y la reducción de costes. La actividad de fusiones y adquisiciones también sigue presentando desafíos impredecibles de integración en plazos muy ajustados. Al mismo tiempo, las herramientas de gestión de las identidades y de los permisos de acceso y las prácticas no han seguido el ritmo de la creciente diversidad de plataformas, en particular a través de los muchos nuevos vendedores de Linux y las distribuciones. • Las empresas se enfrentan a una proliferación de almacenes de las identidades, las cuentas de usuario y las contraseñas. Esto ha llevado a mayores costos administrativos, mayores riesgos de seguridad, problemas con cumplir con los requisitos de cumplimiento normativo y una disminución en la satisfacción del usuario final y la productividad. 18.3.1.Objetivos Durante los últimos años, las organizaciones han desarrollado sus negocios a través de Internet, lo que aumenta las necesidades del acceso a su red. Esto crea el reto de mantener dos restricciones opuestas: ser más flexible y mantener un entorno seguro. a) Ampliar el acceso a los sistemas de información. Para hacer negocios, las empresas tienen que abrir su red, es decir, hacer más accesible y no sólo a los clientes, sino también a sus socios. Cada vez más usuarios y aplicaciones traen una preocupación crítica a estas empresas, que es garantizar y mantener la seguridad de los activos y la protección de la privacidad, mientras que se identifican las partes autorizadas. Para llevar a cabo estas operaciones, las empresas necesitan herramientas eficientes de gestión y políticas de seguridad. La ausencia de un método centralizado para la gestión de las identidades y los permisos de acceso es una fuente de riesgos operacionales. b) Crear relaciones con las diferentes identidades. Las organizaciones pueden tener que gestionar las crecientes relaciones con los diferentes tipos de http://www.tonet.jazztel.es 144 comunidades: empleados, clientes y socios de negocios. Todos estos tipos de poblaciones tienen necesidades diferentes. Para los empleados, el enfoque se hace sobre la productividad, lo que significa un rápido acceso a los recursos adecuados. Para los clientes, un punto crítico es la seguridad de acceso web, incluyendo la facilidad de uso y privacidad y la confidencialidad de la transacción. Por último, para los socios del negocio, la prioridad es la definición de modelos de confianza y los acuerdos bilaterales para permitir el acceso a la información confidencial entre cada organización. Sin una propuesta de gestión integrada de las identidades y de los permisos de acceso que implica los sistemas de la Tecnología de la Información y los servicios Web, las empresas no serán capaces de gestionar correctamente la seguridad de estas poblaciones diferentes. c) Gestionar múltiples identidades. A medida que crece el número de aplicaciones de negocio, los usuarios y los administradores de sistemas se enfrentan a un gran número de contraseñas para hacer su trabajo. Además de consumir mucho tiempo para que un usuario inicie la sesión en los diferentes sistemas operativos, los servicios de directorio o las aplicaciones, el elevado número de identidades, nombres de usuario y contraseñas, aumentan los costos del soporte a los usuarios en el tratamiento de las solicitudes relacionadas con la identidad. Otro problema con la proliferación de identidades es poner en marcha una política de contraseñas fuertes para evitar la fácil adivinación de las contraseñas o prevenir a los usuarios de escribirlas en un papel. En esta situación, las organizaciones deben hacer hincapié en una metodología de inicio de sesión eficiente. d) Gestionar el ciclo de vida de los usuarios. El rápido crecimiento de la población de usuarios hace que la tarea de gestionar los usuarios sea más complicado. Dentro de los entornos más amplios, las empresas tienen que gestionar de forma eficaz el ciclo de vida de cada usuario individual, así como mantener el control de la seguridad, a pesar de los frecuentes cambios de sus puestos de trabajo. La creación de nuevas cuentas con privilegios adecuados a los recursos adecuados, y la modificación de los privilegios asociados a un usuario cuando cambia su puesto de trabajo o desactivar cuentas obsoletas para los empleados/contratistas/socios/clientes, cuando estas cuentas ya no son necesarias, tienen que realizarse de manera eficiente y en una forma segura. Si no es así, esto puede generar un número inmanejable de permisos, pérdida de la productividad y podría llevar a problemas graves de seguridad. 18.3.2.Ampliación del Active Directory de Microsoft a entornos ajenos al mismo En un típico entorno de las Tecnología de la Información, la heterogeneidad es la norma, no sólo en lo relacionado con los sistemas operativos de servidor dentro de una organización, sino también en lo que respecta a las aplicaciones de software y a las bases de datos que se ejecutan en los servidores. La realidad es que los entornos mixtos de Windows, UNIX, Linux y Mac son un hecho en casi todos los departamentos de la Tecnología de la Información. Y esto seguirá así, ya que tanto http://www.tonet.jazztel.es 145 Linux como Windows seguirán creciendo en los centros de datos y se desplegarán aplicaciones basadas en Java y en web. No es de extrañar que la interoperabilidad entre estas plataformas sea una preocupación muy importante para los administradores de los departamentos de las Tecnologías de la Información. Las organizaciones desean servidores heterogéneos y aplicaciones "plug and play" por lo que no se tiene que gastar tiempo y presupuesto actuando como un integrador de sistemas o teniendo que administrar manualmente un número cada vez mayor de sistemas y aplicaciones de forma individual. Además las organizaciones quieren aprovechar las inversiones existentes en sus presupuestos que les obliga a hacer más con menos. Esta necesidad de la interoperabilidad en plataformas mixtas de aplicaciones de Windows, UNIX, Linux, Mac, Web, bases de datos y aplicaciones empresariales es probablemente más importante en lo que respecta a la gestión de las identidades y de los permisos de acceso. La gestión de las identidades es un conjunto de procesos y tecnologías que intervienen en el almacenamiento de la información de las identidades de usuario y la concesión de derechos sobre la base de las reglas de autenticación y de autorización. La administración de los permisos de acceso permite a las organizaciones de manera determinista otorgar a los usuarios un acceso adecuado a los recursos corporativos, independientemente de la plataforma que se está utilizando. 18.3.3.La fragmentación de la gestión de las identidades y de los permisos de acceso dentro de un entorno distribuído En un entorno Windows, Microsoft ofrece una solución integral de gestión de las identidades a través del Active Directory. Muchos departamentos de las Tecnologías de la Información han invertido mucho dinero en la implementación del Active Directory como reemplazo de la estructura de dominio de Windows NT 4.0 o como parte de las implementaciones de Windows XP y Microsoft Exchange 2003. De hecho, de acuerdo con una serie de analistas de la industria, la migración a Windows Server y el despliegue del Active Directory estan entre los puntos más presupuestados para todos los departamentos de las Tecnologías de la Información en los últimos años. El despliegue actual del Windows Server 2003 y también del Windows 2008 se prevé que sea uno de los principales puntos presupuestados. La inversión en Active Directory es tan importante que el Gartner Group predice que "a finales de 2010, al menos el 90 por ciento de las empresas grandes y medianas habrán implementado el Active Directory en su infraestructura interna." Active Directory se ha convertido en el directorio por defecto para muchos usos dentro de la red corporativa. Por ejemplo en muchas organizaciones todos los usuarios corporativos tienen cuentas de Active Directory para permitir el correo electrónico corporativo y controlar el acceso a los recursos de red, como impresoras y ficheros compartidos. En cuanto al entorno UNIX/Linux, ninguna solución de gestión de las identidades goza de algo parecido al Active Directory en el entorno Windows. Así los departamentos de las Tecnologías de la Información deben hacer frente a una gran http://www.tonet.jazztel.es 146 cantidad de almacenes de identidades desplegados por las plataformas en UNIX/Linux, incluyendo: 1. El uso significativo de la gestión local de los ficheros de texto /etc/passwd en los sistemas individuales. 2. Un pesado uso del obsoleto Network Information Service (NIS) de Sun y otras soluciones anticuadas como el directorio de Netscape. 3. 4. El uso de los directorios basados en LDAP, como OpenLDAP. Mientras que las soluciones de gestión de las identidades existen para las redes Apple Mac, representan otro sistema de identidades para que la gestione el personal de los departamentos de las Tecnologías de la Información. Muchas de las características clave de integración de plataforma cruzada que necesitan los administradores carecen de las soluciones que vienen de Microsoft y Apple. Las funciones de control de acceso están integrados en el Active Directory y son muy utilizadas para administrar el acceso a los recursos de un entorno Windows. Sin embargo, existen pocas soluciones para ampliar el control de acceso a los entornos que no son de Windows. Los administradores de los departamentos de las Tecnologías de la Información se enfrentan a menudo con la implementación de soluciones propietarias que son costosas y difíciles de manejar. A medida que se lanzan nuevas aplicaciones Java y web en las distintas plataformas, tales como Apache, JBoss, Tomcat, IBM WebSphere y BEA WebLogic, los desarrolladores están creando aún más almacenes de identidades mediante el uso de ficheros de texto o de tablas en bases de datos. Las plataformas de bases de datos como DB2 de IBM e Informix, junto con las aplicaciones empresariales como SAP, añaden otra serie de almacenes de identidades. Por lo tanto, la cuestión es que en la mayoría de las organizaciones, la gestión de las identidades y de los permidsos de acceso para los sistemas, las aplicaciones y las bases de datos de un entorno UNIX, Linux y Mac, está bastante fragmentado en comparación con un entorno Windows. La gestión de la identidad y el acceso en entornos heterogeneos debe tener una solución. Una pregunta obvia es: ¿Por qué no han sido capaces las organizaciones de estandarizar una solución de gestión de las identidades y los permisos de acceso? La respuesta descansa en varios obstáculos: • La falta de interoperabilidad. Muchos almacenes de las identidades y los servicios de directorio simplemente no operan unos con otros. El control de acceso multiplataforma es difícil de implementar, especialmente si los distintos sistemas de autenticación y de autorización se utilizan en cada plataforma. Los sistemas de políticas que están vinculadas a los almacenes de las identidades tienden a ajustarse a los sistemas operativos individuales en lugar de la política en toda la empresa. http://www.tonet.jazztel.es 147 • Falta de soporte de la plataforma. Muchas de las soluciones líderes, como Microsoft Active Directory, sólo funcionan en un subconjunto de plataformas que ha implementado una organización. Y en el caso de la plataforma Windows, una organización debe implementar el Active Directory. Como denota Gartner Group, "... no hay más remedio ... si se implementan los servidores Windows 2000 o Windows 2003, se va a implementar Active Directory." Sin embargo, históricamente el Active Directory sólo ha sido utilizado para las redes de Windows. • Falta de coordinación. En algunos casos, los grupos que están aislados uno de otro en una organización instalan soluciones difrentes de servidores y de aplicaciones. Esto puede hacer incompatible el despliegue de múltiples soluciones puntuales. • Falta de transparencia. Los desarrolladores internos de las nuevas aplicaciones a menudo no tienen los medios para interoperar con los almacenes de identidades existentes. Cuando existen las API, los desarrolladores tienen que realizar un gran esfuerzo para desarrollar las complejas capacidades de integración en que se basan los metadirectorios o la sincronización. Esto deja a varios almacenes de identidades intactos, lo que requiere un continuo drenaje de recursos de mantenimiento al tiempo que añade otro nivel de complejidad. • Falta de capacidades delegadas de administración. La administración de los departamentos de las Tecnologías de la Información puede necesitar aislar la gestión de determinados almacenes de identidades y asignar derechos privilegiados a determinados administradores para un subconjunto de toda la organización. Si se emplea una gestión centralizada de las identidades y de los permisos de acceso, el sistema tendría que ser lo suficientemente flexible para dar cabida a la administración delegada de los administradores de la gestión de las identidades y los permisos de acceso. Está claro que es difícil moverse a una única solución de gestión de las identidades y los permisos de acceso. Sin embargo, una reducción significativa de los almacenes de las identidades en la red corporativa puede mejorar significativamente la productividad del usuario final, reducir los costes operativos, mejorar la seguridad y que sea mucho más fácil cumplir con los requisitos regulatorios. Frente a los aspectos discutidos anteriormente, las organizaciones de los departamentos de las Tecnologías de la Información tienen por lo menos tres opciones para resolver esta crisis de gestión de las identidades y de los permisos de acceso. 1) No hacer nada y vivir con un ambiente balcanizado. La desventaja de esta estrategia son los costos y riesgos potenciales documentados anteriormente. Sin embargo, muchas organizaciones se sienten forzados a esta situación debido a la falta de una solución que se ajuste a su presupuesto y no requiere cambios intrusivos en los sistemas existentes o en la existentes prácticas empresariales. http://www.tonet.jazztel.es 2) 3) 148 Tratar de implementar una solución de sincronización costosa y compleja. Muchas soluciones de gestión existentes siguen este enfoque. Dejan a los sistemas existentes donde están e instalan soluciones que mapean y sincronizan la información del usuario y los derechos de acceso entre los diferentes sistemas incompatibles. A menudo, estas soluciones de mapeo se ven facilitadas por una base de datos que mantiene los vínculos de la credencial entre cada sistema. Los problemas con este enfoque son numerosos: • Las implementaciones de estas soluciones son muy complejas, y con frecuencia requieren una base de datos relacional para proporcionar el mapeo de datos. La gestión de los departamentos de las Tecnologías de la Información todavía se carga con el mantenimiento de registros duplicados en múltiples sistemas de identidad. En muchos casos, las contraseñas u otros datos sensibles se sincronizan a través de la red sin encriptar. • Estas soluciones suelen ofrecer unas bajas capacidades de denominador común a través de los sistemas de las identidades. Por ejemplo, sólo pueden gestionar los nombres de usuario y sus contraseñas, dejando a los departamentos de las Tecnologías de la Información que busquen otra solución puntual a las necesidades de directorio, control de acceso o la ejecución de la política. • Estos soluciones son muy caras de adquirir, implementar y mantener. Si una organización cuenta con 30 sistemas de identidad, se seguirían manteniendo los 30 sistemas de identidad. Además la organización cargaría con el costo adicional de comprar y mantener las soluciones de sincronización. En muchos casos los gastos son altos y aumentan la complejidad, dejando a los beneficios potenciales de este tipo de solución en cuestión. Ampliar un almacén existente de las identidades como sustitución de los distintos depósitos existentes de las identidades en lo que sea posible. El objetivo sería empezar construyendo un sistema de directorio centralizado mediante la selección de un sistema de identidades que tenga una probada trayectoria y una clara dirección de futuro, y hacer que el sistema único de identidades reemplace y/o consolide los sistemas existentes de identidades en el tiempo. La consolidación y la centralización de los sistemas de identidades ofrece unos claros beneficios en términos de productividad, ahorro de costes, seguridad y presentación de informes. La pregunta difícil de responder ha sido: ¿qué almacén de identidades tiene el potencial para cubrir esta necesidad? Dado que el Active Directory es una parte inseparable del entorno Windows y que la mayoría de las organizaciones ya lo tienen implementado, y que Microsoft se ha comprometido a la aplicación de importantes recursos para mejorar sus prestaciones y su escalabilidad, es el candidato ideal para asumir el papel de un sistema de administración centralizada de identidades de un sistema. Sin embargo Microsoft centra sus esfuerzos en la plataforma Windows y no proporciona una solución integral para el servicio de otras plataformas. Así las organizaciones se han visto obligadas a utilizar otros almacenes de identidades para plataformas ajenas http://www.tonet.jazztel.es 149 a Microsoft. Por lo tanto este tercer enfoque más práctico no se ha podido implementar hasta ahora. http://www.tonet.jazztel.es 150 19. Redes P2P (Peer-to-peer) El término anglosajón P2P (Peer-to-Peer) suele ser traducido al castellano como “entre pares”. Sin embargo, y según el diccionario, peer significa en inglés “par, igual”. Luego la traducción correcta es entre iguales o de igual a igual, aunque lo más normal es referirse directamente al acrónimo P2P. Básicamente una red P2P se refiere a una red que no tiene clientes y servidores fijos, sino una serie de nodos que se comportan a la vez como clientes y como servidores de los demás nodos de la red. Este modelo de red contrasta con el modelo cliente-servidor tradicionalmente empleado en las aplicaciones de Internet. Así, en una red P2P todos los nodos se comportan igual y pueden realizar el mismo tipo de operaciones; pudiendo no obstante diferir en cuanto a su configuración local, su velocidad de proceso, su ancho de banda y su capacidad de almacenamiento. El P2P no es un concepto nuevo aunque gracias a muchos factores como la gran explosión de ordenadores conectados a Internet, el rápido incremento de ancho de banda disponible por los usuarios, la mayor potencia de cálculo y la capacidad de almacenamiento de los ordenadores personales y la proliferación de fuentes de información y contenidos diversos a través de la Red han hecho que esta tecnología sea por fin conocida por la inmensa mayoría de los internautas. A continuación describiremos los conceptos fundamentales de las redes P2P. En cuanto a sus aplicaciones se pueden clasificar en: – Aplicaciones de compartición de ficheros, siendo las más conocidas Shareaza, BitTorrent, Ares, BearShare, Kazaa, Morpheus, Limewire, Emule, WinMX entre otras. – Aplicaciones de programas colaborativos – Motores de búsqueda en las webs – Aplicaciones de transmisión de voz e imagen – Aplicaciones de computación distribuida – Aplicaciones relacionadas con las copias dde seguridad – Aplicaciones de distribución de contenidos, etc. Más adelante se describen de forma breve tres aplicaciones P2P muy conocidas, dos relacionadas con la compartición de ficheros BitTorrent y Emule y la otra relacionada con la transmisión de voz e imagen Skype. http://www.tonet.jazztel.es 151 19.1.Elementos de las redes P2P El elemento fundamental de toda red P2P es un par o un igual, y es la unidad de procesamiento básico de cualquier red P2P. Un par es una entidad capaz de desarrollar algún trabajo útil y de comunicar los resultados de ese trabajo a otra entidad de la red, ya sea directa o indirectamente. Existen dos tipos de pares: - Pares simples: Sirven a un único usuario final, permitiéndole proporcionar servicios desde su dispositivo y empleando los servicios ofrecidos por otros pares de la red. Los pares suelen tener una naturaleza dinámica y heterogénea, es decir se conectan a la red de forma intermitente y tienen capacidades muy distintas. - Superpares: Ayudan a los pares simples a que encuentre otros pares o a otros recursos de los pares. Los pares lanzan solicitudes de búsqueda de recursos a los superpares y los superpares les indican donde conseguirlos. Generalmente los superpares tienen una naturaleza estática, se encuentran conectados normalmente a la red y son fácilmente accesibles. Otro elemento es el concepto de grupo de pares, Un grupo de pares es un conjunto de pares formado para servir a un interés común u objetivo dictado por el resto de pares implicados. Los grupos de pares pueden proporcionar servicios a sus miembros pares que no son accesibles por otros pares de la red P2P. Considerando un sistema P2P en el que todos los clientes pueden hablar el mismo conjunto de protocolos, el concepto de grupo de pares es necesario para dividir el espacio de la red. Los servicios proporcionan una funcionalidad útil que se consigue mediante la comunicación de los distintos pares. Esta funcionalidad o aplicación para el usuario puede ser transferir un fichero, proporcionarle información de estado, realizar un cálculo o comunicarse con otro usuario. Los servicios se pueden clasificar en servicios de pares y servicios de grupo de pares: - Servicios de pares: funcionalidades ofrecidas por un par concreto de la red a otros pares, si el par se desconecta el servicio se cae. - Servicios de Grupo de pares: funcionalidades proporcionadas por varios miembros del grupo consiguiendo así acceso redundante al servicio. Si un par del grupo se cae el servicio sigue estando disponible. 19.2.Arquitectura de las redes P2P 19.2.1.Modelo híbrido o centralizado http://www.tonet.jazztel.es 152 La primera generación de redes P2P empleaba una estructura de red cliente/servidor. El servidor central mantiene una base de datos con información de los ficheros servidos por cada par. Cada vez que un cliente se conecta o desconecta de la red, la base de datos se actualiza. Todos los mensajes de búsqueda y control son enviados al servidor centralizado. El servidor centralizado compara la solicitud de sus clientes con el contenido de su base de datos y envía las correspondencias al cliente en cuestión. Una vez que es informado de las correspondencias, el cliente contacta con el par directamente y accede al recurso solicitado. Proporciona un rendimiento muy elevado a la hora de localizar recursos siempre y cuando el servidor esté bien dimensionado, sin embargo es muy costoso y el servidor es un elemento crítico en cuanto a la seguridad. 19.2.2.Modelo P2P puro o totalmente descentralizado La segunda generación de redes P2P usa un modelo distribuido donde no existe ningún servidor central y todos los nodos tienen el mismo estatus. Cada nodo actúa como servidor y como cliente en la red. Como es evidente, cada par dentro de esta arquitectura trata de mantener un cierto número de conexiones con otros pares durante todo el tiempo. Este conjunto de pares conectados transporta el tráfico de la red, que está conformado esencialmente por peticiones y las respuestas a estas peticiones, y varios mensajes de control que facilitan el descubrimiento de otros nodos. A pesar de que el número de saltos de la red es potencialmente infinito, permanece limitado por un tiempo de vida máximo (TTL-Time To Live), relacionado con el máximo número de saltos que puede dar un mensaje. Por cada nodo o par por el que circula el mensaje de petición se decrementa en una unidad el TTL descartándose la petición si esta llega a cero. El modelo P2P puro es más robusto al no depender de un servidor central, además más económico. La principal desventaja es el elevado tiempo y la sobrecarga de ancho de banda que suponen las búsquedas de información en la red. Además puede ser que el recurso buscado ni siquiera pueda ser encontrado aunque exista. 19.2.3.Modelo P2P mixto o semicentralizado La mayoría de aplicaciones P2P consideradas de tercera generación emplean un modelo mixto. Dentro de este modelo, ciertos pares de la red son seleccionados como superpares y ayudan a gestionar el tráfico dirigido hacia otros pares. Los superpares cambian dinámicamente a medida que nuevos pares se conectan. En este modelo cada nodo cliente mantiene sólo un pequeño número de conexiones abiertas y cada una de esas conexiones es a un superpar. Así mismo los superpares están conectados entre si. http://www.tonet.jazztel.es 153 Esta nueva topología virtual tiene el efecto de hacer la red escalable, mediante la reducción del número de nodos involucrados en el encaminamiento y manejo de los mensajes, así como la disminución del volumen de tráfico entre ellos. Además la velocidad de respuesta a las solicitudes dentro de un entorno mixto es comparable al de un entorno P2P centralizado. 19.3.Comunicación en las redes P2P Para que la comunicación tenga lugar es importante poder identificar los pares, grupos de pares y los contenidos en la red. En los sistemas P2P tradicionales, algunos de estos identificadores se basaban en detalles específicos de los protocolos de transporte, por ejemplo, un par puede ser identificado mediante su dirección IP y un puerto TCP. Sin embargo esta representación es inflexible e incapaz de proporcionar un sistema de identificación independiente de la red de transporte subyacente. 19.3.1.Búsqueda de pares, contenidos y servicios La búsqueda de información (pares, contenidos y servicios), dada la ausencia de un conocimiento global de los datos y recursos involucrados, es un aspecto fundamental en entornos P2P, así como es también uno de sus grandes problemas. Un sistema de búsqueda de información en una red P2P debe soportar búsquedas flexibles, eficientes tolerantes a fallos, y ofrecer garantías de que todo lo que existe puede ser encontrado; también debe ser capaz de tratar con escalabilidad, dinamismo y heterogeneidad de estos entornos distribuidos. La búsqueda se realiza en tres niveles: - Búsqueda en caché (Sin descubrimiento): Cada par mantiene una caché de recursos previamente descubiertos. Este método es muy fácil de implementar y reduce enormemente la cantidad de tráfico generado por cada par en la red. La caché debe eliminar las entradas que han superado un tiempo de vida máximo o aquellos recursos que dejan de estar disponibles. Se suele implementar como una cola FIFO (First In – First Out). Este método es el más usado para encontrar superpares y pares en el momento previo de conexión a la red. En la mayoría de las aplicaciones P2P, la forma más sencilla de asegurar que un par en concreto pueda encontrar a un superpar es descargar en el par un listado actualizado de superpares. - Búsqueda directa: Los pares en caso de no encontrar la información en su caché, pasará a preguntar directamente a otros pares de la red con los que tenga conexión directa, usando métodos de broadcast y multicast. Es la forma de búsqueda usada en modelos P2P puros o totalmente descentralizados. http://www.tonet.jazztel.es 154 - Búsqueda indirecta: Los superpares actúan como fuente de información de localización de pares y otros recursos conocidos. Además esos hacen la búsqueda en nombre del par. Es la búsqueda usada en arquitecturas mixtas o semidescentralizadas. 19.3.2.Tablas Hash Distribuidas (DHT) Las tablas hash distribuidas son un componente esencial de las redes P2P, y han tenido un efecto revolucionario en la descentralización de estas redes. Las topologías caóticas de red de la primera generación de protocolos P2P ha sido sustituida por arquitecturas más escalables y con mejores propiedades gracias a las DHT. Una DHT realiza básicamente las funciones de una tabla hash, que básicamente se resumen en dos operaciones, almacenar el par valor y clave en la tabla, y dada una clave buscar su valor. Un ejemplo típico de tabla hash es un diccionario donde las palabras son claves y sus definiciones los valores. Lo que se pretende con las DHT es distribuir el almacenamiento y la búsqueda de la tabla hash a múltiples máquinas. A diferencia de un modelo cliente/servidor en el que se basan las arquitecturas de replicación de datos, todos los nodos son iguales que pueden unirse y dejar la red libremente. A pesar del aparente caos producido por el cambio de los miembros en la red, DHT garantiza su funcionamiento. Para comenzar nuestro estudio sobre el diseño de una DHT, comenzaremos con una lista doblemente enlazada. Cada nodo en la lista es una máquina en la red y cada nodo mantiene una referencia al siguiente y al nodo previo. Para definir este orden a cada nodo de la red se le asigna un Identificador (ID) de k bits, de forma aleatoria y único. En la mayoría de los protocolos es un ID de k=64 bits, suficientemente grande para que no se produzcan colisiones. Por lo tanto se define el nodo siguiente como aquel que tiene el ID superior más cercano al suyo propio y el nodo anterior el que tiene el ID inferior mas cercano al suyo propio. La única excepción es para el nodo con ID mayor que tiene como siguiente al ID menor, y al nodo ID menor que tiene como anterior al nodo con ID mayor También es importante definir la distancia entre dos nodos, que por ejemplo, puede consistir en calcular la distancia entre dos nodos con identificadores a y b, como la diferencia entre sus identificadores. Hay otras formas mejores de medir la distancia. Para construir una DHT, cada nodo tiene una tabla hash estándar, y las operaciones de almacenar y consultar el valor, se realizarán en el nodo apropiado de la red. Una manera simple de determinar cual es el nodo apropiado para una clave en particular es la misma que para determinar cual es el sucesor de un nodo con un ID particular. Primero tomamos la clave que puede ser el nombre de un recurso, como el contenido de un fichero, y el valor su ubicación) y realizamos una función hash para generar una clave de exactamente k bits, el mismo número de bits que el ID. Tratamos ese numero como un ID de nodo y determinamos cual es su nodo sucesor empezando en cualquier punto en el anillo y desplazándose en sentido horario hasta que se encuentre el nodo cuya ID sea la más cercana pero todavía http://www.tonet.jazztel.es 155 superior que la clave en particular. El nodo encontrado es el responsable de almacenar y buscar para esa clave en particular. Las funciones hash para generar la clave deben tener la propiedad de generar claves con igual probabilidad en todo el rango de IDs, para que la distribución sea lo mayor posible y no sobrecargar un nodo en particular. Este diseño DHT es simple pero suficiente para el propósito de una tabla hash distribuida para una red de nodos estáticos. Una cosa a tener en cuenta en el código es que en una DHT real cada nodo debería estar en un ordenador diferente y todas las llamadas entre ellas se deben comunicar mediante algún protocolo de red. Para hacer más útil este diseño, se tiene que añadir la posibilidad de que los nodos puedan unirse y dejar la red, ya sea intencionadamente o en caso de fallo. Para ello se debe establecer un protocolo de entrada/salida de la red. El primer paso para entrar a formar parte de la red es buscar el sucesor del nuevo nodo ID usando el protocolo de búsqueda en cuestión. El nuevo nodo debería insertarse entre el nodo sucesor y antecesor y hacerse responsable de la parte de claves que le corresponde de su predecesor. Para garantizar el correcto funcionamiento durante la unión del nodo, los nodos no cambiarán sus punteros hasta que no se hayan copiado todas las claves que le corresponden al nuevo nodo. En cuanto a la salida de la red también es muy simple, el nodo que deja la red, copia toda su información a su predecesor y este cambia su puntero de nodo siguiente al mismo del nodo que abandona la red. En caso de caída del nodo, el nodo anterior al nodo caído, tendrá que iniciar un proceso de salida para volver a establecer el anillo. También cabe destacar que en caso de caída de un nodo, la información almacenada en dicho nodo deja de estar disponible temporalmente. Los distintos protocolos establecen mecanismos de almacenamiento de la información pasado un tiempo para que la información vuelva a estar disponible. Sin embargo este protocolo no está del todo optimizado, ya que para encontrar un recurso en la red se pueden dar tantos saltos como número de nodos como máximo, siendo el número de saltos medio n/2, donde n es el número de nodos. Para resolver esto, una modificación al protocolo es que cada nodo en lugar de apuntar únicamente al siguiente nodo, tenga una tabla donde apunte a k nodos. La distancia entre el ID del nodo que almacena la tabla y los IDs de los nodos apuntados se incrementa de forma exponencial. Para que la búsqueda logarítmica funcione, la tabla de punteros necesita estar actualizada. Una tabla de punteros a nodos mal actualizada no tiene porque perjudicar a la búsqueda, siempre y cuando todos los nodos tengan el puntero al siguiente nodo actualizado, aunque en el caso de estar la tabla mal actualizada, no funcionará la búsqueda logarítmica. Así cada nodo tiene k punteros a otros nodos. Cuando se hace una búsqueda, hay que decidir cual de los k nodos apuntados se elige en el siguiente salto. Para cada nodo, se buscará en la tabla de punteros a nodos aquel que tenga la menor distancia a la clave. http://www.tonet.jazztel.es 156 Otra propiedad útil para una DHT es la posibilidad de actualizar la tabla de punteros de forma pasiva, haciendo búsquedas de forma pasiva para refrescar la tabla. Otra de las mejoras que se le puede añadir al protocolo es la posibilidad para un nodo de añadir mas punteros a nodos en su tabla, cuando contacta con otros nodos durante la búsqueda, ya que en el proceso de búsqueda se establece la comunicación con el nodo reduciendo la sobrecarga en la red. Desafortunadamente estas tablas de punteros son unidireccionales, o lo que es lo mismo, la distancia no es simétrica entre dos nodos y por lo tanto un nodo como norma general no estará en la tabla de nodos apuntados de los nodos a los que el apunta. Una solución a este problema es remplazar la distancia entre nodos definida anteriormente, por la operación XOR entre las IDs de los nodos siendo así la distancia(A,B)=distancia(B,A). Si A está en la tabla de punteros de B entonces B está en la tabla de A. Esto significa que los nodos pueden actualizar sus tablas de punteros guardando la tabla de los nodos a los que consulta, reduciendo así la cantidad de tráfico. 19.4.Seguridad Frecuentemente el uso compartido de los recursos tiene lugar entre iguales que no se conocen entre si y, como resultado de ello, no confían necesariamente entre si. En muchos casos, el uso de las aplicaciones P2P requiere reconocer los accesos de las terceras partes a los recursos de un sistema interno, por ejemplo, con el fin de compartir los ficheros o los ciclos de procesador. El abrir un sistema de información para comunicar con las terceras partes o concederles acceso, puede tener efectos contrarios a la seguridad. Frecuentemente esto sucede en los mecanismos de seguridad convencionales, como la posibilidad de burlar el software de un cortafuego. Otro ejemplo más es la comunicación vía el software de mensajería instantánea. A menudo, en este caso, la comunicación tiene lugar sin hacer uso de la encriptación. Como resultado de ello, se pone en peligro la cuestión de la seguridad en cuanto a la confidencialidad. Las técnicas y los métodos para suministrar la autenticación, la autorización, la comprobación de disponibilidad, la integridad de los datos y la confidencialidad, están entre las cuestiones clave relacionadas con las infraestructuras P2P. 19.5.Información En cuanto a la información a intercambiar en las redes P2P hay que tener en cuenta: la información de presencia, la gestión de documentos y la colaboración. ● Información de presencia: La información de presencia juega un papel muy importante en cuanto a las aplicaciones P2P. Es decisiva en la autoorganización de las redes P2P porque suministra la información sobre que nodos y que recursos están disponibles en la red. Permite que los nodos establezcan contacto directo con otros nodos y la pregunta sobre los recursos. Un ejemplo ampliamente distribuído de aplicaciones P2P que usan http://www.tonet.jazztel.es 157 esencialmente la información de presencia son los sistemas de mensajería instantánea. Estos sistemas ofrecen a los nodos la oportunidad de pasar información vía la red, como si estuvieran disponibles para los procesos de comunicación. El uso de la información de presencia es interesante en el uso compartido de los ciclos de procesador y en los escenarios relacionados con los ordenadores omnipresentes y la disponibilidad de información. Independientemente las aplicaciones pueden reconocer que nodos están disponibles a ellas dentro de un red de ordenadores y determinar como las tareas intensivas de computación se pueden distribuir entre los ciclos de procesador libres de los respectivos nodos. Consecuentemente, en los entornos de computación ubicuos, es útil si un dispositivo móvil puede reconocer de forma independiente a estos nodos que están disponibles en su entorno, por ejemplo, con el fin de solicitar servicios Web, información, almacenamiento o ciclos de procesador. ● Gestión de documentos: Habitualmente, los DMS (Document Management Systems), que están organizados de forma centralizada, permiten el almacenamiento, la gestión y el uso de los datos compartidos. Sin embargo solo es posible acceder a los datos que han sido colocados en el repositorio central del DMS. Como resultado de ello, se requiere un esfuerzo adicional para crear un índice centralizado de los documentos importantes. La experiencia muestra que una gran porción de los documentos creados en una empresa, se distribuyen entre los ordenadores sin un repositorio central que tenga conocimiento de su existencia. En este caso, el uso de redes P2P puede ayudar a resolver esta cuestión. ● Colaboración: el trabajo en grupo basado en P2P permite la gestión de documentos a nivel de grupos de trabajo cerrados. Como resultado de ello, los miembros de un equipo se pueden comunicar síncronicamente, mediante reuniones online conjuntas y editar documentos compartidos, síncrona o asíncronamente. En el trabajo en grupo basado en cliente/servidor, las correspondientes areas de trabajo para la gestión de los datos centrales se han establecido y se han administrado en el servidor para cada grupo de trabajo. Con el fin de evitar esta tarea adicional de administración, se pueden usar las redes P2P para el trabajo en colaboración. 19.6.Ancho de banda Debido al hecho de que están subiendo continuamente las demandas de capacidad de transmisión, en particular debido al incremento de los datos multimedia de gran tamaño, se hace más y más importante el uso efectivo del ancho de banda. Actualmente, en la mayoría de los casos, se usan principalmente las propuestas centralizadas de forma que los ficheros están en un servidor de un proveedor de información y se transfieren desde allí al cliente solicitante. En este caso, surge un problema cuando espontáneamente se incrementa la demanda, lo que ejerce una influencia negativa en la disponibilidad de los ficheros debido a la aparición de cuellos de botella y al desarrollo de las colas de espera. Sin incurrir en una administración adicional significativa, las propuestas basadas en P2P consiguen un http://www.tonet.jazztel.es 158 mejor balanceo de la carga tomando ventaja de las rutas de transmisión que no están plenamente explotadas. También facilitan el uso compartido del ancho de banda suministrado por los proveedores de información. 19.7.Almacenamiento Actualmente DAS (Direct Attached Storage), NAS (Network Attached Storage) o SAN (Storage Area Networks) son los conceptos de diseño principales usados para almacenar datos en una empresa. Estas soluciones tienen inconvenientes como el uso ineficiente del almacenamiento disponible, de la carga adicional en la red de la empresa o de la necesidad de personal especialmente entrenado y de las soluciones de copias de seguridad adicionales. Sin embargo la creciente conectividad y la creciente disponibilidad de ancho de banda permiten formas alternativas de gestión de almacenamiento que resuelven estos problemas y requieren menos esfuerzo de administración. Con las redes P2P de almacenamiento, se asume generalmente que solo se usará una porción del disco duro disponible de un ordenador de usuario. Una red P2P de almacenamiento es un conjunto de ordenadores, formado en base a las redes existentes, que comparten todo el almacenamiento disponible en la red. Entre los sistemas que están disponibles para explicar la forma como trabajan las redes P2P de almacenamiento son PAST, Pasta y OceanStore. Tienen similitudes básicas en la forma que se construyen y se organizan. Con el fin de participar en una red P2P de almacenamiento, cada nodo recibe un par de llaves pública/privada. Con la ayuda de una función hash, la llave pública se usa para crear un número de identificación único para cada peer. Con el fin de tener acceso a almacenar en otro ordenador, el nodo tiene o que hacer disponible parte de su propio almacenamiento o pagar una tasa. De acuerdo con esta contribución, cada nodo tiene asignado un volumen máximo de datos que puede aportar a la red. Cuando se almacena un fichero en la red, se asigna un número de identificación único, creado con una función hash del nombre del contenido del fichero respectivo, así como de la llave pública del propietario. El almacenamiento del fichero y su búsqueda en la red tiene lugar en la forma descrita antes en el modelo encaminaniento del documento. Además también se almacena un número de réplicas de ficheros determinado libremente. Cada nodo recupera su propia versión actual de la tabla de encaminamiento que se usa para el almacenamiento y la búsqueda. El nodo verifica la disponibilidad de sus vecinos a unos intervalos establecidos con el fin de establecer que nodos ya no están en la red. De esta forma los nuevos nodos que han entrado en la red también son incluídos en la tabla. Para coordinar las redes P2P de almacenamiento, se han de generar y distribuir pares de claves a los nodos respectivos y se ha de monitorizar el uso del almacenamiento. Por medio de la réplica de ficheros y de la distribución aleatoria de los números de identificación a los nodos usando una función hash, la red P2P de almacenamiento se asegura automáticamente que se almacenan varias copias del mismo fichero en distintas localizaciones geográficas. No se requiere una administración adicional o http://www.tonet.jazztel.es 159 una solución de copia de seguridad adicional para conseguir la protección contra un incidente local o una pérdida de datos. También este procedimiento reduce la trascendencia de un problema que es la característica de las redes P2P: en las redes P2P no hay garantía de que un determinado nodo estará disponible en la red en un instante determinado. En el caso de las redes P2P de almacenamiento, esto podría hacer que no hubiese ningún nodo disponible en la red que tuviera almacenado el fichero que se está solicitando. Sin embargo incrementando el número de réplicas almacenadas en distintas localizaciones geográficas, se puede mejorar la probabilidad de que al menos haya un nodo disponible en la red. Los bajos costes de administración, como consecuencia del carácter auto-organizativo de las redes P2P de almacenamiento y del hecho que se requieran soluciones de copias de seguridad adicionales, son entre otras las ventajas que ofrecen estos nuevos sistemas con una gestión de almacenamiento eficiente. 19.8.Ciclos de Procesador Reconociendo que no se usa con frecuencia toda la potencia de computación disponible de las entidades de la red, hubo una primera iniciativa para manejar la potencia de computación usando aplicaciones P2P. Al mismo tiempo, se ha ido incrementando el requerimiento de una computación de alto rendimiento, es decir, las operaciones de computación en el campo de la bioinformática, la logística o el sector financiero. Usando las aplicaciones P2P para el manejo de los ciclos de procesador, es posible conseguir una potencia de computación que aún los supercomputadores más caros dificilmente pueden suministrar. Esto se efectúa formando un grupo de ordenadores independientes en red, en que un solo ordenador es transparente y todos los nodos de la red se combinan en un solo ordenador lógico. Las respectivas propuestas sobre el uso coordinado de liberación y compartición de recursos de computación distribuídos en organizaciones dinámicas y virtuales que se extienden por una sola institución, normalmente caen bajo el término de grid computing. El término grid computing es una analogía a las redes de potencia habituales. Así estaría disponible a un usuario la cantidad más grande posible de recursos, en particular la potencia de computación, idealmente sin restriciones ni problemas de localización. 19.9.BitTorrent El sistema de distribución de ficheros BitTorrent utiliza como método de búsqueda la eficiencia de Pareto. Con esto se logra un mayor nivel de robustez y una mejor utilización de los recursos que con otra técnica cooperativa conocida actualmente. Así cuando se solicita una página web en Internet, todo su coste se carga al servidor donde está almacenada aquella página, dado que es quien sirve la página. Con BitTorrent, el fichero a descargar se ha fragmentado, y sus fragmentos se encuentran repartidos entre distintos ordenadores que están conectados a Internet. Así ahora cuando un cliente se quiere descargar un fichero, lo hará desde varios http://www.tonet.jazztel.es 160 ordenadores, con lo que los costes quedan repartidos entre estos últimos que son los que envían los fragmentos del fichero al ordenador solicitante. La técnica a emplear en cuanto a la localización de los distintos fragmentos a descargar en los ordenadores disponibles es uno de los puntos clave de esta aplicación. Otra cuestión es el hecho de que en Internet, la mayoría de los usuarios se conectan durante unos períodos de tiempo cortos y que una vez un usuario ha obtenido su objetivo de disponer del fichero entero que quería, se desconecta, con lo que deja de dar servicio a los demás usuarios. Finalmente, existe un problema general de justicia y es como se distribuyen la velocidad de descarga total desde un usuario entre los demás usuarios que disponen de los fragmentos del fichero que uno se quiere descargar. 19.9.1.Interfaz La interfaz de BitTorrent es muy sencilla, y basta con que los usuarios hagan un click al hiperenlace del fichero que se quieren descargar y a la pregunta de donde guardarlo, se guardará un fichero con extensión .torrent del que se habla a continuación. Además de poder visualizar el tráfico de subida y bajada de cada fichero, se puede configurar los distintos parámetros de la aplicación. 19.9.2.Implementación Los ficheros disponibles a la descarga por parte del usuario, es a decisión de utilizar BitTouna cosa suya, dado que él es el propietario del fichero. Los que se descargan ficheros utilizan BitTorrent, porque es una forma de conseguir el fichero que se desea. Con frecuencia los que se descargan ficheros, cesan la subida de ficheros tan pronto como ha finalizado su descarga, aunque se considera de buena educación dejar la descarga del cliente por un tiempo después de su descarga se haya completado. La implementación estándar sigue con la descarga hasta que se cierra la ventana, lo que se traduce con frecuencia que las subidas continuen hasta que vuelva el usuario a su ordenador. En una implementación normal, el número de personas con descargas incompletas, se incrementa muy rápidamente después de que se encuentra disponible el fichero. También acostumbre a suceder de que hay picos y luego se cae a una velocidad aproximadamente exponencial. El número de personas con descargas completas aumenta lentamente. 19.9.3.Publicando el contenido Para iniciar una publicación de un fichero en Torrent, se ha de crear un fichero con la extensión .torrent, ubicado en un servidor web corriente. El fichero con extensión .torrent contiene información sobre el fichero, su longitud, el nombre y la información del hash, y la dirección URL de un rastreador. Los rastreadores son los responsables de ayudar a los descargadores de encontrarse unos a otros. Ellos http://www.tonet.jazztel.es 161 hablan un protocolo muy sencillo por encima del protocolo HTTP, y mediante el cual se envía información sobre el fichero que se está descargando, por que puerto está escuchando, y otra información similar, y el rastreador responde con una lista de información de contacto de los usuarios que están descargando el mismos fichero. A continuación los descargadores utilizan esta información para conectarse entre sí. 19.9.4.Distribución de los usuarios Todos los problemas logísticos de descarga de ficheros se manejan en las interacciones entre pares. Las responsabilidades del rastreador se limitan estrictamente a ayudar a los usuarios a encontrarse. Así además de que los rastreadores es la única forma de encontrarse los usarios, también es el único punto de coordinación. El algoritmo de seguimiento consiste en devolver una lista aleatoria de usuarios. Con el fin de facilitar la descarga de los ficheros, BitTorrent divide los ficheros en fragmentos de tamaño fijo, por lo general de 250k octetos. Cada usuario que se descarga un fichero, debe informar a todos sus pares de los fragmentos que tiene. Para verificar la integridad de los datos, lse calcula un hash SHA1 de cada uno de los fragmentos y está información está incluída en el fichero de extensión .torrent. Los pares no comunican la existencia de un fragmento hasta que se haya comprobado su hash. Cuando se transfieren datos utilizando el protocolo TCP, que es lo que hace BitTorrent, es muy importante tener siempre a la vez varias solicitudes pendientes con el fin de evitar retrasos entre los fragmentos que se envían, lo que redundaría en una tasa de transferencia desastrosa. BitTorrent facilita esto, dividiendo a su vez los fragmentos en trozos más pequeños, por lo general de un tamaño de 16k octetos, y manteniendo siempre un número, por lo general cinco, de solicitudes en cola a la vez. Cuando llega un trozo, inmediata se envía una solicitud. La cantidad de datos a enviar ha sido seleccionado como un valor que puede saturar de forma fiable la mayoría de las conexiones. 19.9.5.Selección del fragmento Si se quiere obtener un buen rendimiento, es importante el orden en que se seleccionan los framentos. Un algoritmo pobre de selección de un fragmento puede hacer que se seleccionan fragmentos de los que aún no dispone el usuario para su subida. Prioridad estricta La primera política de BitTorrent para la selección de fragmentos es que una vez que se ha solicitado un solo trozo, los trozos restantes de este fragmento se solicitan antes que los trozos de otro fragmento. Con esto se consiguen fragmentos completos tan pronto como sea posible. Rarest First http://www.tonet.jazztel.es 162 Cuando se determina que fragmento se va a usar en la descarga siguiente, en general sus pares descargan los fragmentos que son más raros, en cuanto a que los tienen la menor cantidad de sus propios pares. Estos fragmentos son los que se sirven primero. A esta técnica se le denomkina como 'rarest first'. Con esta técnica se asegura de que los fragmentos que son más comunes se dejan para más adelante. La teoría de la información dicta que ningún descargador se puede completar hasta que descargan todas los fragmentos del fichero. Para las implementaciones con una sola semilla, cuya capacidad de descarga es considerablemente menor que el de muchos descargadores, el rendimiento es mucho mejor si diferentes descargadores obtienen diferentes fragmentos de la semilla, ya que las descargas redundantes desperdician la oportunidad para que la semilla obtenga más información. Random First Piece Cuando empieza la descarga, el par no tiene nada que subir, así que es importante obtener un fragmento completo lo más pronto posible. Los fragmentos raros, por lo general sólo se encuentra en un compañero, por lo que se puede descargar más lento que los fragmentos que están presentes en múltiples pares para los cuales es posible descargar los trozos de diferentes lugares. Por esta razón, para descargar fragmentos se seleccionan al azar hasta que el primer fragmento completo se ensambla y, a continuación la estrategia cambia a la rarest first. A este método se le denomina random first piece. Modo endgame A veces un fragmento solicitadao a un par se recibe con una velocidades de transferencia muy lenta. Este puede retrasar la llegada de una descarga. Para evitar que eso suceda, todos las trozos que no tiene un par, son solicitados de forma general a todos los pares. A medida que llegan los trozos, se comunica que ya han llegadocon el fin de repetir envíos. 19.9.6.Algoritmos de choking BitTorrent no hace ninguna asignación de recursos de forma centralizada. Cada par es responsable de tratar de maximizar su propia velocidad de descarga. Los pares hacen esto mediante la descarga de los que pueden y decide de qué compañeros se va a subir los fragmentos. Lo usuarios que cooperan suben ficheros y los que no lo hacen, es porque no quieren colaborar, al menos de forma temporal. El algoritmo de choking no es técnicamente parte del protocolo BitTorrent, pero es necesario para un buen rendimiento. Un buen algoritmo de choking debería utilizar todos los recursos disponibles, proporcionando unas velocidades de descarga razonablemente consistentes para todo el mundo. Eficiencia de Pareto En términos de informática, la búsqueda basada en la eficiencia de Pareto es un algoritmo de optimización local en el que los pares de las entidades de http://www.tonet.jazztel.es 163 contrapartida ven si pueden mejorar su situación en conjunto, y los algoritmos de este tipo tienden a conducir a los óptimos globales. En concreto, si dos pares tienen una pobre reciprocidad en cuanto a lo que se refiere a la subida de ficheros, lo que pueden hacer es comunicárselo, de forma que aumenten la tasa de descarga entre ambos. A nivel técnico, cada par de BitTorrent mira la posibilidad de mejorar su comunicación en base a la eficiencia de Pareto. Este enfoque permite un control de congestión del protocolo TCP con el fin de saturar la capacidad de carga de forma fiable. Las decisiones en cuanto a que pares se aplica la eficiencia de Pareto, se basan estrictamente en la velocidad de descarga actual. El cálculo de la velocidad de descarga actual de manera significativa es un problema difícil, así la implementación actual utiliza esencialmente promedios de 20 segundos. Los algoritmos de choking anteriores utilizaban información de la transferencia de tiempos anteriores, con lo que se obtenían resultados peores, porque el valor del ancho de banda varía rápidamente con el tiempo cuando los recursos desaparecen y se convierten en disponibles. Para evitar situaciones en las que los recursos se desperdician por el uso de la activación y desactivación del algoritmo de choking, los pares de BitTorrent reaclculan quienes quieren la activación del algoritmo de choking cada diez segundos. Diez segundos es un período de tiempo suficientemente largo para que el protocolo TCP permita nuevas transferencias a su máxima capacidad. Una vez que un cliente se está descargando algo, no tiene utilidad en cuanto a las velocidades de descarga decidir desde que clientes hacerlo. La implementación actual cambia a los clientes preferidos que tienen mejores velocidades de descarga. 19.10.E-Mule eMule es una aplicación de intercambio de archivos muy popular que se basa en el protocolo eDonkey. La red de eMule consta de varios cientos de servidores de eMule y millones de clientes eMule. Los clientes deberían conectarse a un servidor para obtener los servicios de red y la conexión al servidor se mantiene abierta, siempre y cuando el cliente está en el sistema. Los servidores realizan los servicios centralizados de indexación y no se comunican entre si. Cada cliente de eMule está preconfigurado con una lista de servidores y una lista de ficheros compartidos en su sistema local de ficheros. Un cliente utiliza una conexión TCP a un servidor de eMule para conectarse a la red, obtener información sobre los ficheros deseados y los clientes disponibles. El cliente eMule también utiliza varios cientos de conexiones TCP a otros clientes que se utilizan para subir y descargar ficheros. Cada cliente de eMule mantiene una cola de subida para cada uno de sus ficheros compartidos. Los clientes que descargan ficheros se unen a la cola de espera en su parte inferior y avanzan gradualmente hasta llegar al primero de la cola y comienza a descargar el fichero. Un cliente puede descargar el mismo fichero de varios clientes de eMule, consiguiendo diferentes fragmentos de cada una de ellos. Un cliente también puede subir trozos de un fichero que aún no ha completado la descarga. Por último, eMule amplía las capacidades del eDonkey, y http://www.tonet.jazztel.es 164 permite a los clientes intercambiar información acerca de los servidores, otros clientes y otros ficheros. El servidor emplea una base de datos interna en la que se almacena la información de los clientes y de los ficheros. Un servidor de eMule no almacena ningún fichero, actúa como un índice centralizado de la información almacenada sobre la ubicación de los ficheros. Una función adicional del servidor, que se está convirtiendo en obsoleta, es tender un puente entre los clientes que se conectan a través de un cortafuegos y no son capaces de aceptar conexiones entrantes. Esta funcionalidad aumenta considerablemente la carga del servidor. eMule emplea el protocolo UDP para mejorar las capacidades de los clientes frente al servidor y a otros clientes. La capacidad del cliente de enviar y de recibir mensajes UDP no es obligatorio para el correcto funcionamiento diario del cliente y podría funcionar sin problemas cuando un servidor de seguridad le impide enviar y recibir mensajes UDP. 19.10.1.Conexión del cliente al servidor Al inicio el cliente se conecta mediante el protocolo TCP a un único servidor eMule. El servidor proporciona al cliente una identificación que es válida únicamente a durante la conexión en cuestión del cliente al servidor, es decir, si el cliente se desconecta, cuando se vuelve a conectar, debe volver a solicitar una identificación. Tras el establecimiento de la conexión el cliente envía al servidor su lista de ficheros compartidos. El servidor almacena la lista en su base de datos interna que por lo general contiene varios cientos de miles de ficheros disponibles y los clientes activos. El cliente eMule también envía su lista de descarga que contiene los ficheros que desea descargar. Una vez establecida la conexión, el servidor eMule envía al cliente una lista de otros clientes que poseen los ficheros que el cliente desea descargar. A partir de este momento, el cliente de eMule comienza a establecer conexiones con otros clientes. Tener en cuenta que la conexión TCP cliente/servidor se mantiene abierta durante toda la sesión del cliente. De vez en cuando, el cliente envía peticiones de búsqueda de ficheros que son contestadas por los resultados de búsqueda. Una operación de búsqueda es seguida generalmente por una consulta de los posibles usuarios que tienen partes del fichero solicitado. La respuesta contendrá las direcciones IP y los puertos TCP de estos usuarios. El protocolo UDP se utiliza para la comunicación con los servidores que no son a los que se ha conectado inicialmente el cliente. El propósito de los mensajes UDP es mejorar la búsqueda de ficheros, la mejora de los clientes que disponen de los ficheros y asegurarse de que todos los servidores eMule en la lista de servidores del cliente son válidos. 19.10.2.Conexión cliente a cliente Un cliente de eMule se conecta a otro cliente de eMule con el fin de descargar un fichero, que se divide en fragmentos que luego se fragmentan más. Un cliente http://www.tonet.jazztel.es 165 puede descargar el mismo fichero desde distintos clientes consiguiendo distintos fragmentos de cada uno de ellos. Cuando dos clientes se conectan, se intercambian la información de su capacidad y luego negocian el comienzo de una descarga. Cada cliente tiene una cola de descarga que contiene una lista de clientes que están esperando para descargar ficheros. Cuando la cola de descargas del cliente de eMule se vacía, si a continuación llega una solicitud de descarga, muy probablemente la descarga se iniciará de inmediato. Cuando la cola de descarga no está vacía, una nueva solicitud de descarga se añade a la cola. No hay ningún intento de servir a más de unos pocos clientes en un momento dado, proporcionando un ancho de banda mínimo de 2,4 Kbps para cada uno de ellos. La lista de clientes en espera puede alterar su orden en función de un ranking en los primeros 15 minutos. Cuando un cliente que está esperando la descarga un fichero, llega a la cabeza de la cola de descarga, se inicia una conexión con el fin de enviar los fragmentos necesarias del fichero. Un cliente de eMule puede estar en la cola de espera de otros clientes, registrado para descargar los mismos fragmentos del fichero. Cuando el cliente que esperaba completa con los fragmentos, no notifica a todos los demás que pueden sacarle de sus colas, sino que simplemente rechazará el intento de carga cuando llega a la cabeza de su cola. eMule utiliza un sistema de crédito con el fin de fomentar la subida de los ficheros y para evitar la suplantación del eMule mantiene un sistema de crédito mediante una criptografía de clave pública del tipo RSA. Las conexiones de cliente pueden utilizar un conjunto de mensajes que no estén definidos por el protocolo eDonkey, y a estos mensajes se les llama el protocolo extendido. El protocolo extendido se usa para la implementación del sistema de crédito, para el intercambio de información general como las actualizaciones de las listas de servidores y fuentes, y para mejorar el rendimiento mediante el envío y la recepción de fragmentos de ficheros comprimidos. La conexión del cliente eMule utiliza el protocolo UDP de una forma limitada para comprobar periódicamente el estado del cliente en la cola de subida de sus clientes, mientras que se está esperando para comenzar a descargar un fichero. 19.10.3.Identificación del cliente La identificación del cliente es un identificador de 4 octetos proporcionada por el servidor en el momento de la conexión. La identificación del cliente es válida sólo durante la sesión de conexión TCP, aunque en el caso de que el cliente tenga una identificación alta se le asignará la misma identificación en todos los servidores hasta que cambie su dirección IP. Las identificaciones de los clientes se dividen en dos categorías: baja y alta. Normalmente el servidor de eMule asignará a un cliente una identificación baja cuando el cliente no puede aceptar conexiones entrantes. Tener una identificación baja, restringe el uso del cliente de la red eMule y podría hacer que el servidor lo rechazara durante la fase de conexión del cliente. Una identificación alta se calcula sobre la base de la dirección IP del cliente.Una identificación alta se da a los clientes que permiten que otros clientes se conecten otros libremente al puerto TCP de eMule en su ordenador. Un cliente con una http://www.tonet.jazztel.es 166 identificación alta no tiene restricciones en el uso de la red eMule. Cuando el servidor no puede abrir una conexión TCP al puerto de eMule del cliente, le da una identificación baja al cliente. Esto ocurre principalmente con los clientes que están detras de un cortafuegos y que por lo tanto le niega las conexiones entrantes. Un cliente también puede recibir una identificación baja en los casos siguientes: • Cuando el cliente está conectado a través de un servidor NAT o proxy. • Cuando el servidor es ocupado, lo que provoca la expiración del temporizador de reconexión del servidor. La identificaciones altas se calculan de la siguiente manera: si suponemos que la dirección IP del cliente es X.Y.Z.W, la identificación será X+ 28 Y+ 216 Z+ 224 W ("representación big endian”). Una identificación baja es siempre inferior al 16777216 (0x1000000) que no se puede encontrar ninguna pista acerca de cómo se calcula, dado que varía en función del servidor. Una identificación baja de un cliente que no tiene IP pública, hace que el cliente se comunique a los demás a través del servidor de eMule. Esto aumenta la carga computacional del servidor y la resistencia de los servidores a aceptar clientes de identificación baja. Además esto significa que un cliente con una identificación baja no se puede conectar a otro cliente con identificación baja que no está en el mismo servidor porque eMule no soporta un túnel de las peticiones entre los servidores. Para soportar los clientes con una idnetificación baja, se ha introducido un mecanismo de devolución de la llamada. Mediante este mecanismo, un cliente con una identificación alta puede preguntar a través del servidor de eMule, la conexión a un cliente con identificación baja con el fin de intercambiar ficheros. 19.10.4.Identificación del usuario eMule soporta un sistema de crédito con el fin de animar a los usuarios a compartir ficheros. Cuantos más ficheros camparta un usuario, más arriba estará en la cola de espera. La identificación del usuario consta de 16 octetos y se crea a partir de la concatenación de números aleatorios, los octetos sexto y quinceavo 15 no se generan al azar, y sus valores son 14 y 111 respectivamente. Mientras que la identificación del usuario sólo es válida durante la sesión del usuario con un determinado servidor, la identificación del usuario es única y se utiliza para identificar a un cliente a través de las sesiones. La identificación del usuario juega un papel importante en el sistema de crédito. eMule soporta un esquema de encriptación que está diseñado para prevenir el fraude y la suplantación de los usuarios. La implementación de este esquema está basado en un método de encriptación de clave pública/privada del tipo RSA. 19.10.5.Identificación del fichero La identificación del fichero se utiliza para identificar los ficheros de forma única en la red y para la detección y recuperación de errores en los ficheros. Tener en cuenta que eMule no se basa en el nombre del fichero con el fin de identificarlo de forma única y catalogarlo, un fichero se identifica mediante un identificador único global calculado por hashing del contenido del fichero. Hay dos tipos de identificadores de ficheros: el primero se utiliza principalmente para generar la http://www.tonet.jazztel.es 167 identificación de forma única y el segundo es útil para la detección de la corrupción y la recuperación. 19.11.Skype Skype es una aplicación de videoconferencia basado en la tecnología P2P. Desarrollado por KaZaa permite a sus usuarios hacer llamadas de imagen y voz y enviar mensajes de texto a otros usuarios que sean clientes de Skype. Hay dos tipos de nodos en esta red: nodos ordinarios y supernodos (SN). Un nodo ordinario es un ordenador conectado a la red que tiene instalada la aplicación Skype. Un supernodo es un ordenador conectado a la red y que hace de intermediario de los nodos ordinarios. Este supernodo ha de tener una dirección IP pública y la suficiente CPU, memoria y ancho de banda de red para soportar las funciones propias del Skype. Por un lado un nodo ordinario debe estar conectar a un supernodo y además se debe registrar al servidor de login de Skype. El servidor de inicio de sesión de Skype no tiene que ser necesariamente un nodo Skype. Los nombres y las contraseñas de los usuarios se almacenan en el servidor de inicio de sesión. La autenticación del usuario también se hace en este servidor. Este servidor también asegura que los nombres de inicio de sesión de Skype sean únicos en su espacio de nombres del Skype. Aparte del servidor de inicio de sesión, no hay ningún servidor central en la red Skype. La información online y offline del usuario se almacena y propaga de una forma descentralizada y así son las solicitudes de búsqueda de usuario. Cada nodo ordinario usa una variante del protocolo STUN para determinar el tipo de NAT y cortafuegos que hay detrás. La red Skype es una red P2P, razón por la cual cada cliente Skype construye y actualiza una tabla de los nodos a los que se puede conectar. En Skype, esta tabla se llama host cache y contiene las direcciones IP y los números de los puerto TCP/ UDP de los supernodos. Skype utiliza codecs de banda ancha que le permiten mantener una calidad razonable de la llamada con un ancho de banda disponible de 32 kb/s. También utiliza el protocolo TCP para la señalización y este y el UDP para el transporte del tráfico de datos. La señalización y el tráfico de datos no se envían por los mismos puertos. Otras características son: – No soporta la supresión de los silencios – Soporta la llamada en espera – Conferencia a tres bandas http://www.tonet.jazztel.es 168 19.11.1.Componentes clave Un cliente Skype escucha por un determinado puerto las llamadas entrantes, mantiene la tabla host cache, usa codecs de banda ancha, mantiene una lista de compañeros, encripta los mensajes extremo a extremo y determina si está detrás de un NAT o un cortafuegos. Puertos Un cliente Skype abre un puerto de escucha TCP y otro UDP de acuerdo con el número de puerto configurado en su diálogo de conexión. El cliente Skype decide aleatoriamente el número de puerto en el momento de la instalación y además también abre los puertos de escucha TCP en el puerto número 80 (puerto HTTP) y el número de puerto 443 (puerto HTTPS). Host Cache La host cache (HC) es una lista de direcciones IP y los puertos de los supernodos, que se actualiza periodicamente. Es la parte más crítica del funcionamiento de Skype y al menos debe tener una entrada válida, es decir, una dirección IP y el número de puerto de un nodo de Skype en línea. Codecs Los codecs iLBC, ISAC u otrosson los habitualmente empleados. Lo que si permite en un rango de frecuencias entre 50-8000 Hz. Esta gama de frecuencias es característica de un codec de banda ancha. Lista de contactos Cada usuario Skype dispone de una lista de contactos que almacena localmente y a su vez está firmada digitalmente y encriptada. Así sii un usuario utiliza el Skype en un ordenador diferente para iniciar la sesión en la red de Skype, el usuario tiene que reconstruir la lista de contactos. Encriptación Skype utiliza el sistema de encriptación AES(Advanced Encryption Standard) para proteger la información confidencial. Skype utiliza una encriptación de 256 bits, que cuenta con un total de 1,1 x 10 77 claves posibles, con el fin de encriptar los datos de forma activa en cada llamada de Skype. Skype utiliza desde 1536 hasta 2048 bits RSA para negociar claves simétricas de AES. Las claves de usuario públicas están certificadas por el servidor de Skype al iniciar la sesión. NAT y cortafuegos Un cliente Skype utiliza una variación del protocolo STUN para determinar el tipo de NAT y cortafuegos que está detrás. http://www.tonet.jazztel.es 169 19.11.2.Funciones 19.11.3.Inicio de sesión La función de inicio de sesión es quizás la función más crítica para el funcionamiento del Skype. Durante este proceso de login del cliente Skype se autentica su nombre de usuario y su contraseña con el servidor de inicio de sesión, anuncia su presencia a sus contactos, determina el tipo de NAT y cortafuegos que está detrás, y descubre los nodos Skype con direcciones IP públicas. Proceso de inicio de sesión Como se explicó antes, la host cache debe contener como mínimo una entrada válida para un cliente Skype para poder conectarse a la red de Skype. Si un cliente Skype no puede conectarse a un supernodo, recibirá un mensaje de error. La mayoría de los cortafuegos están configurados para permitir el tráfico saliente TCP por el puerto 80 (puerto HTTP) y el puerto 443 (HTTPS). Un cliente Skype detrás de un cortafuegos, que bloquea el tráfico UDP y el tráfico de permisos selectivos de TCP, se aprovecha de este hecho. Al inicio de sesión, se establece una conexión TCP con otro nodo de Skype con una dirección IP pública y el puerto 80 o el puerto 443. Servidor de inicio de sesión Una vez un cliente Skype se ha conectado a un supernodo, se debe autenticar el nombre de usuario y la contraseña de inicio de sesión con el servidor de inicio de sesión. El servidor de inicio de sesión es el único componente central en la red de Skype. Almacena los nombres de usuario y las contraseñas de Skype y asegura que los nombres de los usuarios de Skype son únicos en el espacio de nombres de Skype. Nodos de arranque Después de iniciar la sesión por primera vez después de la instalación, la host cache se inicializa con siete pares de dirección IP y números de puerto. A estos se les denomina nodos de arranque. Estos pares de dirección IP y el puerto y sus correspondientes nombres de host se obtienen mediante una búsqueda inversa. Proceso de inicio de sesión La primera vez la host caché está vacía después de una instalación. Por lo tanto, un cliente de Skype debe conectarse a los nodos conocidos de Skype con el fin de iniciar la sesión en la red de Skype. Lo hace mediante el envío de paquetes UDP a algunos supernodos de arranque y luego espera su respuesta. A continuación el cliente de Skype establece una conexión TCP con el supernodo de arranque que le ha respondido. Puede darse el caso de que le responda más de un supernodo, en cuyo caso se conecta a todos ellos. Después de intercambiar algunos paquetes con estos supernodos, adquiere la dirección del servidor de inicio de sesión con lo que http://www.tonet.jazztel.es 170 ya puede conectarse a él para su autenticación, y finalmente cierra las conexión TCP con los supernodos de arranque. El proceso de inicio de sesión que no es la primera vez, es muy similar al proceso de inicio de sesión por primera vez. El cliente de skype ya dispone de una host cahe que ahora no es vacía. Así ahora el cliente de Skype establece una conexión TCP con al menos un par de nodos de la host cache. 19.11.4.Búsqueda del Usuario Skype usa su tecnología de Global Index (GI) para buscar un usuario. Skype pretende que la búsqueda sea distribuida y se garantiza encontrar al usuario si existe y se ha conectado durante las últimas 72 horas. Un cliente de Skype tiene determinado un diálogo de búsqueda. Después de entrar la identificación de usuario Skype y pulsar el botón de búsqueda, el cliente de Skype empieza la búsqueda de un determinado cliente. Para ello envía un paquete TCP a su supernodo, que le da la dirección IP y el número de puerto de los nodos a los que se puede dirigir para hacer la búsqueda. 19.11.5.Establecimiento y desconexión de la llamada Es importante señalar que la señalización de llamadas se realiza siempre a través de TCP. Para los usuarios que no están presentes en la lista de contactos, antes de la llamada, debe realizarse la búsqueda del cliente. Así la llamda siempre consiste en pulsar el botón de llamada sobre el contacto deseado de la lista de contactos. De esta manera se establece una conexión TCP entre ambos. El primer intercambio de mensajes entre la persona que llama y el destinatario indica la existencia de un mecanismo de pregunta-respuesta. En la configuración de la red en que la persona que llama está detrás de un NAT, el intercambio de mensaje entre la persona que llama y el destinatario se hace mediente unos nodos intermedios. Lo mismo sucede si hay algún cortafuegos por en medio. En todos los casos, se establece una ruta para loa paquetes de voz. Durante la desconexión de la llamada, la información de señalización se intercambia a través de mensajes TCP entre el que llama. Si el que llama y el destinario tienen una dirección IP pública, entonces el tráfico fluye directamente entre ellos a través de mensajes UDP. El tamaño de paquete de voz es de 67 octetos, que es el tamaño de un mensaje UDP. Así si el ancho de banda total del enlace ascendente y descendente utilizado para el tráfico de voz es de 5 kbps, la utilización del Skype equivale a un ancho de banda de 3-16 kbps. Si la persona que llama o el destinatario de la llamada o ambos estan detrás de un NAT, el tráfico de voz se hace mediante mensajes UDP. Si los usuarios están detrás de un NAT y un cortafuegos, el tráfico de voz se hace mediante mensajes UDP. El protocolo de Skype prefierie el uso del UDP para la transmisión de voz tanto como sea posible. http://www.tonet.jazztel.es 171 20. Redes WAN (Wide Area Network) 20.1.Introducción Las limitaciones de la LAN son el número de ordenadores conectados y el diámetro de la red. Una WAN es una red que permite conectar un gran número de ordenadores situados a grandes distancias. Los factores diferenciales de una WAN son – la distancia entre usuarios – el coste y – el nivel de protocolos Una WAN se caracteriza por – Ser una red que conecta equipos situados remotamente. – Ser gestionados sus enlaces por una operadora de telecomunicaciones. – Tener un alcance de decenas o centenares de Km. – Utilizar velocidades muy variadas (desde baja velocidad a muy alta velocidad). – Disponer de una gran conectividad entre las distintas redes. – Disponer de sus propios protocolos. 20.2.Conmutación de paquetes por circuito virtual La conmutación de paquetes por circuito virtual es la tecnología digital en que se basan las comunicaciones actuales. Consiste en la comunicación con varios extremos, y dada la cantidad de octetos a transmitir, se deben fragmentar, y a cada uno de ellos se denomina paquete. Los nodos intermedios o conmutadores son los que redirigen los paquetes a sus lugares de destino, pero no todos siguen necesariamente el mismo camino. En este tipo de comunicaciones se emplea un servicio orientado a la conexión. En las redes de conmutación de paquetes también se efectúa una reserva de recursos durante el establecimiento de la conexión. Pero a diferencia de la conmutación de circuitos donde la reserva de recursos eran canales físicos TDM síncronos, en la conmutación de paquetes la multiplexación es TDM asíncrona. Eso significa que los canales se asignan bajo demanda después de que los datos (tramas de nivel 2 o paquetes de nivel 3) se hayan almacenado en un buffer del http://www.tonet.jazztel.es 172 conmutador. Por consiguiente, la reserva de recursos consiste en una reserva virtual de buffers en el conmutador. Los retardos son variables dada la existencia de buffers en los nodos. Las redes de conmutación de paquetes implementan conmutadores con 2 ó 3 niveles y las funciones que se realizan en cada nivel son totalmente dependientes de la red de conmutación de paquetes. Por ejemplo, el nivel de enlace Frame Relay y ATM realizan algunas funciones parecidas (usan identificadores de circuito virtual en nivel 2), pero también realizan funciones muy distintas (encapsulado distinto, sincronismo de trama distinto, funciones de control de tráfico y de la congestión distintos, ...). Tablas de Circuitos Virtuales. La decisión del camino a seguir por los paquetes se hace durante la fase del establecimiento de la conexión. Una vez decidida la ruta hay que reservar los recursos en los enrutadores. Para poder identificar los paquetes de los distintos circuitos virtuales, los paquetes incluyen un identificador de circuito virtual en la cabecera. Este identificador es local a cada enrutador. Durante el establecimiento de la conexión, se indica con un identificador en el paquete de conexión que circuito virtual atravesará ese enrutador y que vendrá por un puerto de entrada Pin y saldrá por un puerto de salida Pout. El identificador VCI del paquete de entrada viene fijado por el enrutador anterior, el que está conectado al puerto Pin. Como este identificador VCI podría estar siendo utilizado por un circuito virtual del enlace de salida, el enrutador escoge un identificador VCI libre, y que no tiene porque ser el mismo que el de entrada y lo asigna a este circuito virtual. De esta forma los paquetes que entran con un identificador VCI, pueden salir del enrutador con un identificador VCI distinto. El enrutador guarda una tabla donde se indica para cada puerto de entrada, los identificadores VCI que están activos y a que puerto de salida y con que identificador VCI van a salir los paquetes. Retardos Los retardos de los paquetes son difíciles de calcular ya que estos son variables. Se puede aproximar el cálculo por un retardo medio. Así en la figura se representa la transmisión de varios paquetes entre el transmisor y el receptor. En este ejemplo http://www.tonet.jazztel.es 173 los paquetes siguen siempre la misma ruta y atraviesan N nodos intermedios. En vertical es la escala del tiempo. El retardo de la fase de transmisión se puede dividir en el retardo de propagación (Tp ) entre los nodos de acceso y el retardo de transmisión. Para calcular este último hay que tener en cuenta el retardo medio en los buffers. Supongamos que en media haya B paquetes en los buffers, lo que significa que cuando llega un paquete tarda un tiempo B·Tt en ser procesado. Por otro lado, si consideramos una transmisión de n paquetes y que hay que atravesar N nodos, y por tanto N-1 enlaces, el tiempo de transferencia T transf valdrá Ttransf = Tconex + Tdesconex + Tp + n (Tt +B·Tt ) + (N-1) (Tt +B·Tt ) + Tt El retardo de transferencia depende de − el número de paquetes transmitidos, − el número de nodos que se atraviesan y − del retardo medio en los buffers. Casos particulares en el cálculo del retardo de transferencia son: – caso de B=0 (encuentra los nodos vacíos y sólo tarda una transmisión por nodo): Ttransf = Tconex + Tdesconex + Tp + n·Tt +N·Tt – caso n=1 (Tiempo de transferencia de un sólo paquete): Ttransf = Tconex + Tdesconex + Tp + N (B + 1) Tt + Tt 20.3.Tipos de redes WAN Fundamentalmente son de 3 tipos: red pública, red privada y red privada virtual Red pública: http://www.tonet.jazztel.es 174 – Es una red que alquila líneas de comunicación a usuarios (clientes) para conectarlos con otros usuarios o con servidores. – En estas redes. el usuario no administra las líneas de comunicaciones, éstas son administradas por la operadora de telecomunicaciones. – Estas redes suelen usar tecnología WAN y los protocolos correspondientes a la misma. Red privada: – Es una red que administra sus propias líneas de comunicaciones – Estas redes pueden usar tecnología LAN o WAN Red privada virtual − Es una red privada, es decir, administrada por el dueño de la red, pero que usa una red pública, es decir, administrada por una operadora, para interconectar a sus usuarios. − Estas redes pueden usar tecnología LAN o WAN 22.1.Tipos de enlaces Los tipos de enlaces que en realidad son líneas de comunicaciones se pueden agrupar en dos tipos en función del tipo de transmisión: - Comunicaciones analógicas, tales como las líneas telefónicas convencionales (RTC) y - Comunicaciones digitales. En cuanto a las comunicaciones analógicas, que en principio también son de conmutación por circuito, pueden ser: - mediante llamada, como es el caso de la llamada telefónica convencional o - dedicada, es decir, una comunicación fija y permanente las 24 horas del día. También se les llama punto a punto. En cuanto a las líneas de comunicaciones digitales, hay tres tipos: - conmutación por circuito. En este caso también puede ser mediante llamada o línea dedicada. Un ejemplo es el de RDSI. - conmutación por mensajes. Es el caso del X.25, Frame Relay y ADSL. - conmutación por celdas. Es el caso de ATM. http://www.tonet.jazztel.es 175 22.2.Sistemas de transmisión digital Los sistemas de transmisión digital están basados en la digitalización de los canales de voz (PCM). El canal básico es de 64 kbps. En RDSI se define 2 tipos de accesos : • el básico (BRI) (2B + D), que consta de 2 canales B y un canal D de 16 kbps, con un ancho de banda total de 144 kbps y • el primario (PRI) (30B + D), que consta de 30 canales B y un canal de 128 Kbps (8 canales D de 16 kbps), con un ancho de banda total de 2 Mbps En comunicaciones la jerarquía de canales europea es la siguiente: Velocidad Sistema Número de canales E–1 2048 Kbps 1er. orden 30 E–2 8448 Kbps 2º orden E–3 34368 Kbps E–4 Canales de sincronismo Nombre vulgar 128 Kbps(2) 2 Mbps 120 768 Kbps(12) 8 Mbps 3er. orden 480 3648 Kbps(57) 34 Mbps 139264 Kbps 4º orden 1920 16384 Kbps(256) 140 Mbps E-5 564992 Kbps 5º orden 7680 73472 Kbps(1148) 565 Mbps E-6 2488000 Kbps 6º orden 30720 521920 Kbps(8155) 2,5 Gbps Así en Europa una línea digital E1 consta de 30 canales de voz de 8 bits/canal más 2 canales de sincronización: L t =32*8=256 bits con una duración de 0,125 ms para una V t =2,048 Mbps. Las sucesivas etapas de multiplexaciónson: E2 (120 canales de voz), E3 (480 canales de voz =34,368 Mbps) ... En todos los casos tiene que cumplirse que Vef ≥ Σ Vef i (para i =1…N). Eso significa que si tenemos un enlace E3 a 34,368 Mbps con 480 canales de 64 Kbps, su velocidad de transmisión para sincronismo vale 34,368 Mbps - 480 * 64 Kbps = 34,368 Mbps - 30,72 Mbps = 3,648 Mbps es decir, 3,648 Mbps se dedican a transportar bits o canales de sincronismo (por ejemplo 3,648 Mbps / 64 Kbps = 57 canales a 64 Kbps para sincronismos). Sin embargo en EEUU y Japón, el equivalente al E1 es el DS -1 o T1 que consta de 24 canales de voz de 8 bits/canal más 1 bit de sincronización al principio de cada trama: L t =24*8+1=193 bits con una duración de 0,125 ms para una V t =1,544 Mbps. Asimismo tiene su jerarquía equivalente para los niveles de mayor velocidad. 22.3.RDSI (Red Digital de Servicios Integrados) http://www.tonet.jazztel.es 176 Red Digital de Servicios Integrados (RDSI), en inglés ISDN, se basa en la tecnología de conmutación de circuitos. Es un sistema digital de comunicaciones que permite el enlace entre distintas redes de datos. Este sistemas de comunicaciones no solo permiten transmitir datos sino también voz. Sus características principales son : – Multiplexado por división de tiempo (TDM) – Asignación estática de ancho de banda – Time slots fijos – Tiempo de latencia fijo, pequeño y predecible – Tráfico isócrono Componentes básicos Los componentes de RDSI incluyen terminales, adaptadores de terminal (TA), dispositivos de terminación de red (NT), equipo de terminación de línea y equipo de terminación de intercambio. La tabla suministra un resumen de los componentes de RDSI. Equipo de terminal tipo 1 (ET1) Designa un dispositivo que es compatible con la red RDSI. Un ET1 se conecta a un TR1 o TR2. Equipo de terminal tipo 2 (ET2) Designa un dispositivo que no es compatible con la red RDSI y requiere un adaptador de terminal (AT). Adaptador de terminal (AT) Convierte señales analógicas a digitales compatibles con RDSI. Terminación de red tipo 1 (TR1) Conecta el cableado de RDSI de 4 hilos a la instalación convencional de 2 hilos. Terminación de red tipo 2 (TR2) Es un dispositivo al que se pueden conectar uno o varios equipos de terminal 1 (TE1) o adaptadores de terminal (AT), y que realiza funciones de concentración y conmutación. Los terminales RDSI son de dos tipos, Tipo 1 o Tipo 2. Los terminales especializados RDSI se denominan equipo de terminal de tipo 1 (ET1). Los terminales que no son RDSI, como el equipo terminal de datos (DTE), más antiguos que los estándares RDSI, se denominan equipo de terminal de tipo 2 (ET2). Los ET1 se conectan a la red RDSI a través de un enlace digital de par trenzado de cuatro cables. Los ET2 se conectan a la red RDSI a través de un AT. El AT RDSI puede ser un dispositivo autónomo o una placa dentro del ET2. Si el ET2 se implementa como un dispositivo autónomo, se conecta al AT a través de una interfaz estándar de la capa física. Más allá de los dispositivos ET1 y ET2, el siguiente punto de conexión en la red RDSI es el dispositivo de terminación de red de tipo 1 (TR1) o de terminación de http://www.tonet.jazztel.es 177 red de tipo 2 (TR2). Estos son dispositivos de terminación de red que conectan el cableado de cuatro cables del suscriptor con el bucle local de dos cables convencional. En Estados Unidos, TR1 es un dispositivo del equipo terminal del abonado (CPE). En la mayoría de los países del mundo, además de Estados Unidos, TR1 forma parte de la red suministrada por la portadora. TR2 es un dispositivo más complicado, que habitualmente se encuentra en los intercambios privados de ramas (PBX) digitales, que ejecutan servicios de protocolo de nivel 2 y nivel 3. También hay un dispositivo TR1/2, que es un dispositivo único que combina las funciones de TR1 y TR2. S T ET1 TR2 R U TR1 S ET2 AT Puntos de referencia Los puntos de referencia son un conjunto de especificaciones que definen la conexión entre dispositivos específicos, según sus funciones en la conexión de extremo a extremo. En la tabla siguiente se detalla cada uno de ellos. R Punto de conexión entre un dispositivo no compatible con RDSI y un adaptador de terminal (AT) S Punto de conexión de un TR2 con los dispositivos compatibles con RDSI, es decir, ET1 y ET2 T Punto de conexión de un TR2 con un TR1 U Punto de conexión entre un TR1 y la red RDSI de la empresa de comunicaciones. Canales: tipos Este tipo de comunicaciones consta de 2 tipos de canales, – el canal B que se emplea para la transmisión de datos y tiene un ancho de banda de 64 Kbps y – el canal D que se emplea como canal de señalización con una velocidad de 16 Kbps. El canal B funciona a nivel del red (3) según el modelo de referencia OSI, mientras que el canal D o de señalización sólo funciona a nivel físico (1). http://www.tonet.jazztel.es 178 El RDSI define 2 tipos de accesos : – el básico (BRI) (2B + D), que consta de 2 canales B y un canal D, con un ancho de banda total de 144 kbps y – el primario (PRI) (30B + D), que consta de 30 canales B y un canal D, con un ancho de banda total de 2 Mbps En Estados Unidos, el tipo de acceso primario consta de 23 canales B y un canal D con un ancho total de 1,544 Mbps Canal D Este canal de señalización emplea protocolos que comprenden los 3 primeros niveles, físico, enlace y red, del modelo de referencia OSI. Asimismo se basa en la recomendación SS7. Las recomendaciones del CCITT empleadas en cada nivel son Nivel red Q.930/I.450 y Q.931/I.451 Nivel enlace Q.920/I.440 y Q.921/I.441 Nivel físico I.430 para el acceso básico 0 I.431 para línea multiplex primaria, con cable de cobre de 2 y 4 hilos A nivel de enlace se utiliza el protocolo LAPD, protocolo orientado al bit. Se basa en los estándares (HDLC) de la OSI (ISO 3309 a ISO 4355) y trabaja en modo de operación asíncrono balanceado. Las terminales no pueden transmitir al canal D a menos que antes detecten una cantidad específica de unos (que indica que no hay señal) correspondiente a una prioridad preestablecida. Canal B Este canal B solo se emplea en la transmisión de datos, por lo que solo se emplea el nivel físico, siendo sus recomendaciones las mismas del canal D, es decir, I.430 para el acceso básico 0 I.431 para línea multiplex primaria, con cable de cobre de 2 y 4 hilos. Transmisión En una transmisión de datos de RDSI, el flujo de bits que se transmite comprende no solo los de canal de datos B y el de señalización D, sino también otros bits auxiliares o complementarios tales como bits de activación, de alineación de trama, de equilibrado, de multitrama, etc. Los bits del canal D se intercalan entre los octetos del canal B, y los octetos de los distintos canales B también viajan intercalados, es decir, si es un acceso básico con 2 canales B, primero se envía un octeto del canal 1 del B, luego un octeto del canal 2, otro del 1, y así sucesivamente. http://www.tonet.jazztel.es 179 22.4.Frame Relay El Frame Relay es un protocolo de comunicaciones digital que se basa en la conmutación de paquetes. Sus características principales son : - Empleo de multiplexado estadístico, es decir, TDM asíncrono - Transmisión orientada a la conexión - Asignación dinámica del ancho de banda - Paquetes de longitud variable, por consiguiente el retardo es variable. - Tiempo de latencia alto e impredecible Se trata de un protocolo que opera en los niveles físico y de enlace de datos del modelo de referencia OSI, es decir, emplea conmutación a nivel 2. En cuanto al control de errores y control de flujo depende de los protocolos de nivel superior como TCP. Su velocidad de transmisión puede llegar hasta 2 Mbps. Hay 3 conceptos importantes en cuanto al protocolo Frame Relay y son : - Data link connection identifier (DLCI). El DLCI es el identificador de cada enlace de comunicación, es decir, es el equivalente a una dirección. Los mensajes Frame Relay contienen esta información, así se sabe su origen y destino. El tráfico es multiplexado utilizando varios DLCIs por cada enlace físico, es decir, un enlace físico puede soportar uno o más enlaces virtuales. - Circuitos virtuales permanentes (PVC). Los PVCs son enlaces predefinidos a través de la red Frame Relay y que conectan dos sistemas finales. Son enlaces http://www.tonet.jazztel.es 180 lógicos identificados cada uno de ellos por su DLCI. Estos enlaces son de carácter permanente y se establecen de esta forma. - Circuitos virtuales conmutados (SVC). A diferencia de los PVCs, los SVCs no están permanentemente definidos en la red Frame Relay. El equipo terminal conectado requiere una llamada de inicio para establecer un circuito virtual antes de una transmisión de datos. Las características de esta transmisión se especifican en esta llamada. Asimismo cuando se termina la transmisión, se cierra en enlace y el DLCI se libera para su uso posterior. Una de las ventajas del Frame Relay es que los conmutadores utilizan una tabla de enrutamiento con el formato que se ha detallado en el apartado anterior, es decir, Puerto entrada DLCI entrada Puerto salida DLCI salida Esto ocupa muy poco espacio y por tanto cabe en memoria, y además como tiene pocos elementos, es de un manejo extremadamente rápido, por lo que se introducen unos retardos mínimos en el tráfico Frame Relay. Con el fin de poder gestionar el tráfico de cada enlace, ya sea permanente PVC o temporal SVC), hay un conjunto de parámetros que son los siguientes: − Velocidad de la línea. Es la velocidad nominal de la línea. − Commited Information Rate (CIR). Es el ancho de banda comprometido a utilizar en condiciones normales. Esta velocidad es el promedio en un período de tiempo. El CIR también se refiere al mínimo ancho de banda aceptable. El CIR puede ser inferior o igual a la velocidad de la línea, es decir, el DTE puede enviar mensajes a mayor velocidad que el CIR. 22.5.ADSL El ADSL es un sistema digital de comunicaciones, que se emplea fundamentalmente para la transmisión de datos mediante la utilización de los cables de cobre existentes para telefonía analógica o digital. Con los modems habituales se llega como máximo a 56 Kbps y con la tecnología ADSL se sobrepasa en mucho este ancho de banda. Un circuito ADSL conecta un adaptador ADSL a cada extremo de una línea telefónica convencional, creando tres canales de información: – un canal de alta velocidad en dirección al usuario, – un canal dúplex de velocidad media, que depende de la implementación de la arquitectura ADSL, y http://www.tonet.jazztel.es 181 – un POTS (Plain Old Telephone Service) o un canal RDSI. El canal POTS/RDSI se separa del adaptador digital mediante filtros, y así se garantiza una conexión POTS/ISDN, aunque el ADSL falle. La velocidad del canal rápido es de 1,5 a 6,1 Mbps, mientras que la del dúplex es de 16 a 832 Kbps. Cada canal puede ser submultiplexado con el fin de generar múltiples canales de menor velocidad, dependiendo del sistema. Los adaptadores ADSL tienen una configuración mínima de 1,5 o 2,0 Mbps en dirección al usuario y un canal dúplex de 16 Kbps; otras empresas ofrecen velocidades de 6,1 Mbps y 64 Kbps para el dúplex. Los productos que hay actualmente en el mercado soportan hasta 8 Mbps en una dirección y hasta 640 en el dúplex. La velocidad máxima soportada depende de varios factores tales como la longitud de la línea de cobre, su sección, la presencia de puentes y las interferencias existentes. La atenuación de la línea aumenta con la longitud y la frecuencia y disminuye si aumenta la sección. A continuación hay una tabla orientativa de las velocidades que se pueden llegar a obtener en función de estos valores. Velocidad Wire Gauge Longitud Sección Distancia 1,5 o 2 Mbps 24 AWG 18.000 ft 0,5 mm 5,5 km 1,5 o 2 Mbps 26 AWG 15.000 ft 0,4 mm 4,6 km 6,1 Mbps 24 AWG 12.000 ft 0,5 mm 3,7 km 6,1 Mbps 26 AWG 9.000 ft 0,4 mm 2,7 km En el caso peor en cuanto a la existencia de ruido, se obtiene un caudal de 2 Mbps en sentido descendente y 0,9 Mbps en sentido ascendente hasta una distancia de 2,6 Km. de la central. Esto supone que en la práctica, teniendo en cuenta la longitud media del bucle de abonado en las zonas urbanas, la mayor parte de los usuarios están en condiciones de recibir por medio del ADSL un caudal superior a los 2 Mbps. Este caudal es suficiente para muchos servicios de banda ancha, y desde luego puede satisfacer las necesidades de cualquier internauta, teletrabajador así como de muchas empresas pequeñas y medianas. Comparación con los modems El ADSL es una técnica de modulación para la transmisión de datos a gran velocidad sobre el par de cobre. La primera diferencia entre esta técnica de modulación y las usadas por los modems en banda vocal (V.32 a V.90) es que estos últimos sólo transmiten en la banda de frecuencias usada en telefonía (300 Hz a 3400 Hz), mientras que los modems ADSL operan en un margen de frecuencias mucho más amplio que va desde los 24 KHz hasta los 1104 KHz, aproximadamente. Otra diferencia entre el ADSL y otros modems es que el ADSL puede coexistir en un mismo bucle de abonado con el servicio telefónico. Basta con ver que trabajan http://www.tonet.jazztel.es 182 en bandas de frecuencia distintas, lo que no es posible con un módem convencional ya que funciona en la banda vocal, la misma que la telefonía. Tecnología ADSL depende de los avances tecnológicos sobre el procesamiento de las señales digitales y los algoritmos para transmitir la información sobre el par telefónico. Además se han requerido muchos avances en transformadores, filtros analógicos y convertidores A/D. Las líneas telefónicas largas pueden atenuar las señales de hasta 1 Mhz hasta 90 dB, forzando a que las partes analógicas de los adaptadores ADSL trabajen muy forzados, separando canales y manteniendo valores bajos de ruido. Desde fuera, el ADSL parece sencillo, ya que consta de canales transparentes de datos síncronos a distintas velocidades sobre las líneas telefónicas convencionales. Para crear múltiples canales, los adaptadores ADSL dividen el ancho de banda disponible de una línea telefónica de dos formas, por Frequency Division Multiplexing (FDM) o por Echo Cancellation. FDM asigna una banda en un sentido y otra en el sentido contrario. En la dirección al usuario, se emplea multiplexación por TDM en uno o más canales de alta velocidad. En el sentido desde el usuario, se multiplexa en los correspondientes canales de baja velocidad. Con Echo Cancellation, se asigna la banda que viene del usuario encima de la que va hacia él, y se separan ambas por medio de local echo cancellation, una técnica bien conocida en los modems V.32 y V.34. Con cualquiera de estas técnicas, ADSL separa un canal de 4 kHz para POTS al final de la banda. Un adaptador ADSL organiza el flujo de datos creado por multiplexación de los canales en dirección al usuario, canales dúplex y canales de mantenimiento juntos en bloques, y añade un código de corrección de error a cada uno de ellos. El receptor así puede verificar y corregir los errores generados durante la transmisión junto con la longitud del mismo especificado en el bloque. También pueden crearse superbloques juntando subbloques. Así permite una eficiente transmisión de señales de datos y vídeo. Descripción de la modulación Al tratarse de una modulación en la que se transmiten diferentes caudales en los sentidos Usuario -> Red y Red -> Usuario, el módem ADSL situado en el extremo del usuario es distinto del ubicado al otro lado del bucle, es decir, en la central local. Así en los modems situados en casa del usuario (ATU-R o "ADSL Terminal UnitRemote) y en los de la central (ATU-C o "ADSL Terminal Unit-Central"), se ha de colocar delante de cada uno de ellos un dispositivo denominado "splitter". Este dispositivo no es más que un conjunto de dos filtros: uno paso alto y otro paso bajo. La finalidad de estos filtros es la de separar las señales transmitidas por el bucle de abonado, es decir, las señales de baja frecuencia (telefonía) de las de alta frecuencia (ADSL). http://www.tonet.jazztel.es ATU-C Splitter 183 Splitter ATU-R Bucle de abonado de cobre Voz Central telefónica Telefóno Domicilio del usuario Modulación En una primera etapa, coexistieron dos técnicas de modulación para el ADSL: – CAP ("Carrierless Amplitude/Phase") y – DMT ("Discrete MultiTone"). Sin embargo los organismos de estandarización (ANSI, ETSI e ITU) se han decantado por la solución DMT. Esta solución consiste básicamente en el empleo de múltiples portadoras y no sólo una, que es lo que se hace en los modems de banda vocal. Cada una de estas portadoras (denominadas subportadoras) es modulada en cuadratura (modulación QAM) por una parte del flujo total de datos que se van a transmitir. Estas subportadoras están separadas entre sí 4,3125 KHz, y el ancho de banda que ocupa cada subportadora modulada es de 4 KHz. El reparto del flujo de datos entre subportadoras se hace en función de la estimación de la relación Señal/Ruido en la banda asignada a cada una de ellas. Cuanto mayor es esta relación, tanto mayor es el caudal que puede transmitir por una subportadora. Esta estimación de la relación Señal/Ruido se hace al comienzo de la transmisión, es decir, cuando se establece el enlace entre el ATU-R y el ATU-C por medio de una secuencia de entrenamiento predefinida. La técnica de modulación usada es la misma tanto en el ATU-R como en el ATU-C. La única diferencia estriba en que el ATU-C dispone de hasta 256 subportadoras, mientras que el ATU-R sólo puede disponer como máximo de 32. La modulación es bastante complicada, pero el algoritmo de modulación se traduce en una IFFT (transformada rápida de Fourier inversa) en el modulador, y en una FFT (transformada rápida de Fourier) en el demodulador situado al otro lado del bucle. Así el modulador del ATU-C, hace una IFFT de 512 muestras sobre el flujo de datos que se ha de enviar en sentido "downstream". El modulador del ATU-R, hace una IFFT de 64 muestras sobre el flujo de datos que se ha de enviar en sentido "upstream". El demodulador del ATU-C, hace una FFT de 64 muestras tomadas de la señal "upstream" que recibe. El demodulador del ATU-R, hace una FFT, sobre 512 muestras de la señal "downstream" recibida. Los espectros nunca se solapan con la banda reservada para el servicio telefónico básico (POTS o "Plain Old Telephone Service"), y en cambio sí que se solapan con los correspondientes al acceso básico RDSI. Por ello el ADSL y el acceso básico RDSI son incompatibles. http://www.tonet.jazztel.es 184 DSLAM Como antes se ha explicado, el ADSL necesita una pareja de modems por cada usuario: uno en el domicilio del usuario (ATU-R) y otro (ATU-C) en la central local a la que llega el bucle de ese usuario. Esto complica el despliegue de esta tecnología de acceso en las centrales. Para solucionar esto, surgió el DSLAM ("Digital Subscriber Line Access Multiplexer"). Este dispositivo consiste en un chasis que agrupa gran número de tarjetas, cada una de las cuales consta de varios modems ATU-C, y que además concentra el tráfico de todos los enlaces ADSL hacia una red WAN. 22.6.Modems en telefonía móvil Se trata de utilizar la telefonía móvil como línea de comunicaciones de transmisión de datos. Para ello se necesita un módem que funciona como un modem estándar analógico de acceso telefónico que se conecta al ordenador o a un dispositivo a través de una interfaz serie y que se configura y llama con los comandos AT. Cuando se diferencia es que utiliza una red celular inalámbrica para realizar la conexión a través de su antena en oposición a una conexión física a una línea telefónica analógica. Más allá de la conexión, actúa y funciona como un módem normal. Los modems en telefonía móvil funcionan de la misma forma que un módem analógico de acceso telefónico, excepto que convierten los datos digitales en señales de radio y viceversa. Lo que es interesante es que la evolución del módem a través de una red de telefonía móvil se ha producido a un ritmo mucho más rápido. De hecho el primer módem para telefonía móvil se desarrolló en la década de 1990 y en el transcurso de sólo 14 años sus velocidades han pasado de 9.600 bps a 153K bps. Estas velocidades se espera mejorar aún más como la tecnología evoluciona. En la telefonía móvil, hay dos estándares que compiten entre ellos: GPRS y CDMA, que dado son incompatibles, el usuario debe decidir cual de ellos va a emplear. La elección de una tecnología se debe basar en la cobertura de la empresa, la aplicación que va a utilizar, entre otras cuestiones por ejemplo de índole económica. Una diferencia importante entre las tecnologías CDMA es que es más rápido que el GPRS. Además, CDMA es también ligeramente más caro, tanto en el hardware y en el servicio. Con GPRS, el proceso de activación del servicio de datos de telefonía móvil es muy similar a la activación de un teléfono móvil. Una vez que haya establecido una cuenta con su compañía, la compañía proporcionará una tarjeta SIM (Subscriber Identity Module). Esta tarjeta contiene todos los derechos de acceso, incluyendo la identificación de la facturación. La tarjeta también incluye espacio de almacenamiento para mensajes SMS y una agenda de teléfonos. Se enchufa en una ranura en la parte frontal del módem inalámbrico. La tarjeta SIM se pueden http://www.tonet.jazztel.es 185 intercambiar fácilmente con el nuevo hardware que le proporciona mayor flexibilidad y movilidad. Con CDMA, el módem de telefonía móvil, dependiendo de la compañía, utiliza la tecnología de activación OTA (IP Over-The-Air). Tras la instalación, el módem de forma inmediata y segura se registra en una red inalámbrica a través de la mensajería estándar de registro. La red inalámbrica identifica de forma automática el dispositivo a través del Número de Serie Electrónico, recoge los datos del usuario y completa la activación. En la mayoría de los casos, el módem de telefonía móvil está preparado para varias empresas, lo que significa que necesita comprar un modelo específico según sea la compañía. 22.7.Conmutación de paquetes por datagrama Se trata de una red tipo IP, es decir, una red de nivel 3, obviando los protocolos de nivel 2. En este caso la unidad de información es el datagrama y se trata de un servicio no orientado a la conexión y no hay ningún tipo de reserva de recursos. La red de paquetes se limita a hacer lo que puede, sin garantizar ningún tipo de calidad de servicio (retardos o pérdidas acotadas), ya que la red no sabe por donde van a pasar los paquetes. El encaminamiento de los paquetes se decide en el instante en que llega el paquete a la red. Esta decisión se hace por paquete y no por conexión. De hecho no podemos hablar de “conexión” ya que la red no considera que haya conexiones, considera que hay paquetes que viajan por la red. Los nodos de estas redes son nodos no dedicados, por ejemplo, los enrutadores. Ahora ya no se identifican los paquetes con un identificador de circuito virtual ya que no hay un circuito establecido. Para tomar decisiones de por que puerto de salida hay que sacar el paquete, se utilizan las direcciones origen y destino del paquete. Estas direcciones identifican la red al que pertenece el equipo terminal y al mismo tiempo identifican al equipo terminal. La red sigue usando buffers para almacenar los paquetes que llegan. Al no haber una reserva de recursos (buffers), cuando llegan muchos paquetes, los buffers se saturan produciéndose congestión. En este momento, lo normal es que el http://www.tonet.jazztel.es 186 conmutador descarte paquetes. Es problema de la pila de protocolos en el origen, el ser capaz de recuperar esta información, usando algún mecanismo de retransmisiones, por ejemplo con el protocolo de nivel de transporte. Los retardos son variables para cada paquete, ya que la ruta puede ser distinta para cada uno de los paquetes. Como mucho se puede calcular el retardo medio por paquete transmitido. El tiempo de transferencia T transf se define como el tiempo que tarda en transmitirse una información que consta de un bloque de bits. Así su fórmula es T transf = Tt + T red_Dat Donde - Tt es el tiempo de transmisión y - T red_Dat es el tiempo desde que entra en la red hasta que sale. 22.7.1.Enrutador Un enrutador o router es un dispositivo de nivel 3 que conecta distintos segmentos de una red. Así si un host A (@IP A ) quiere enviar un paquete IP a otro host B (@IP B ) que esté en otro segmento distinto, se hará a través de un router que conecte ambos segmentos. Las principales funciones de un enrutador son: – “Forwarding”: envíar paquetes de una subred a otra – “Routing”: decidir a que subred debe enviar un paquete que le llegue de otra subred, es decir, decidir interficies de salida del router – “Error messaging”: notificar al host origen con un mensaje ICMP de cualquier problema que le impida realizar un “forwarding” Otras funciones: – “Fragmentation and reassembly”: (cada vez más en desuso) debido al uso del “MTU Path Discovery” – “Quality of Service” (QoS): cada vez más en uso con la introducción de aplicaciones en tiempo real (Reserva de recursos) – Otras: balanceos de cargas, servicios multiprotocolo, seguridad informática (IPSec), protección de entrada en Intranets (firewalls), .... 22.7.2.Protocolo enrutable Los protocolos como, por ejemplo, IP, IPX/SPX y AppleTalk suministran soporte de nivel 3 y, en consecuencia, son enrutables. Sin embargo, hay protocolos que no soportan la nivel 3, que se clasifican como protocolos no enrutables. El más común http://www.tonet.jazztel.es 187 de estos protocolos no enrutables es NetBEUI. NetBeui es un protocolo pequeño, veloz y eficiente que está limitado a ejecutarse en un segmento. Para que un protocolo sea enrutable, debe brindar la capacidad para asignar un número de red, así como un número de host, a cada dispositivo individual. Algunos protocolos, tal como el protocolo IPX, sólo necesitan que se le asigne un número de red; estos protocolos utilizan una dirección MAC de host como el número físico. Otros protocolos como, por ejemplo, IP, requieren que se suministre una dirección completa, así como también una máscara de subred. La dirección de red se obtiene mediante una operación AND de la dirección con la máscara de subred. 22.7.3.Protocolos de enrutamiento Los protocolos de enrutamiento determinan las rutas que siguen los protocolos enrutados hacia los destinos. Entre los ejemplos de protocolos de enrutamiento están el RIP, el IGRP, el EIGRP y el OSPF. Los protocolos de enrutamiento permiten que los enrutadores conectados creen un mapa interno de los demás enrutadores de la red o de Internet. Esto permite que se produzca el enrutamiento (es decir, la selección de la mejor ruta y conmutación). Estos mapas forman parte de la tabla de enrutamiento de cada router. Los enrutadores usan protocolos de enrutamiento para intercambiar tablas de enrutamiento y compartir información de enrutamiento. Dentro de una red, el protocolo más común que se usa para transferir la información de enrutamiento entre enrutadores ubicados en la misma red es el RIP. El IGP calcula las distancias hacia un host destino en términos de cuántos saltos (es decir, cuántos enrutadores) debe atravesar un paquete. El RIP permite que los enrutadores actualicen sus tablas de enrutamiento a intervalos programables, generalmente cada 30 segundos. Una de las desventajas de los enrutadores que usan RIP es que constantemente se conectan con los enrutadores vecinos para actualizar sus tablas de enrutamiento, generando así una gran cantidad de tráfico de red. El RIP permite que los enrutadores determinen cuál es la ruta que se debe usar para enviar los datos. Esto lo hace mediante un concepto denominado vectordistancia. Se contabiliza un salto cada vez que los datos atraviesan un router es decir, pasan por un nuevo número de red, esto se considera equivalente a un salto. Una ruta que tiene un número desaltos igual a 4 indica que los datos que se transportan por la ruta deben atravesar cuatro enrutadores antes de llegar a su destino final en la red. Si hay múltiples rutas hacia un destino, la ruta con el menor número de saltos es la ruta seleccionada por el router. Como el número de saltos es la única métrica de enrutamiento utilizada por el RIP, no necesariamente selecciona la ruta más rápida hacia su destino. Una métrica es una unidad de medición que permite tomar decisiones y próximamente aprenderá que otros protocolos de enrutamiento utilizan otras métricas además del número de saltos para encontrar la mejor ruta de transferencia de datos. Sin embargo, el RIP continúa siendo muy popular y se sigue implementando ampliamente. La principal razón de esto es que fue uno de los primeros protocolos de enrutamiento que se desarrollaron. http://www.tonet.jazztel.es 188 Otro de los problemas que presenta el uso del RIP es que a veces un destino puede estar ubicado demasiado lejos como para ser alcanzable. El RIP permite un límite máximo de quince para el número de saltos a través de los cuales se pueden enviar datos. La red destino se considera inalcanzable si se encuentra a más de quince saltos del enrutador. http://www.tonet.jazztel.es 189 23. Analizadores de paquetes Un analizador de paquetes es una aplicación que permite la captura de paquetes para poder analizar su contenido. No se trata de una interceptación, sino sólo de obtner una copia de los paquetes que se transmiten por la red. 23.1.Funciones Entre las distintas funciones de un analizador de paquetes, podemos resaltar las siguientes: – Decodificación de los paquetes. Esta función puede ser on-line u off-line, y consiste en extraer la información que contiene cada paquete, no sólo los datos, sino también el contenido de los distintos campos de cada protocolo. – Monitorizar el tráfico de la red. Esta función consiste en cuantificar el ancho de banda consumido por cada protocolo, y su desglose de acuerdo con las direcciones origen y destino. – Conocer las razones de la existencia de cuellos de botella. Cuando hay un cuello de botella en la red, los tiempos de respuesta de las aplicaciones en red aumentan de forma importante. El análisis de los paquetes de la red permite conocer las causas de estos cuellos de botella y en consecuencia actuar sobre los dispositivos de gestión para hacer frente a estos cuellos de botella. – Detectar la actividad ilegal. 23.2.Funcionamiento Un analizador de paquetes es un analizador de protocolo destinado a capturar los paquetes que son vistos por la tarjeta de red (NIC) del ordenador. Cuando un analizador de paquetes se ejecuta en un sistema, graba todos los paquetes que entran y sale de la tarjeta de red (NIC) del ordenador en el que está instalado el analizador de paquetes. Esto significa que, si la tarjeta de red está configurada en modo promiscuo, entonces recibirá todos los paquetes enviados a la red si la red está conectada a un concentrador. Por desgracia, en una red conmutada, dado que no hay difusión de paquetes, los analizadores de paquetes no puede ver cualquier paquete que no tenga la dirección de destino del ordenador en la que está instalado. Desde el punto de vista de la seguridad, un ataque satisfactorio a un analizador de paquetes en modo promiscuo puede ser muy peligroso. http://www.tonet.jazztel.es 190 23.3.Modo promiscuo o no promiscuo Los controladores de nivel 1 de las tarjetas de red (NIC) por defecto están configuradas de forma que si la dirección MAC de destino de los paquetes no coincide con la suya, los paquetes no son procesados. De esta forma no se sobrecarga el procesador, ya que al principio de las redes Ethernet, que estaban dotadas de concentradores en vez de conmutadores, todos los paquetes de una LAN eran recibidos por todos los ordenadores de la LAN. En la actualidad no es así, pero las configuraciones por defecto siguen de esta manera. A este modo de trabajar se le llama modo no promiscuo. Sin embargo si se quieren analizar todos los paquetes de la LAN, se tiene que configurar la tarjeta de red como modo promiscuo. Insisto en que es básico que a la tarjeta de red le lleguen los paquetes, ya que si hay un filtraje en algún punto de la LAN, y hace que no le lleguen, es indiferente que la tarjeta de red esté en modo promiscuo o no. 23.4.Formato de un paquete IP El formato de un paquete IP capturado por un analizador de paquetes puede ser por ejemplo el siguiente: ------------ ETHER Header -----------ETHER: Destination: 00-20-18-3A-00-16 ETHER: Source: 00-20-18-3A-0A-12 ETHER: Protocol: IP ETHER: FCS: DEF66737 ------------ IP Header -----------IP: Version = 4 IP: Header length = 20 IP: Differentiated Services (DS) Field = 0x00 IP: 0000 00.. DS Codepoint = Default PHB (0) IP: .... ..00 Unused IP: Packet length = 52 IP: Id = 121 IP: Fragmentation Info = 0x4000 IP: .1.. .... .... .... Don't Fragment Bit = TRUE IP: ..0. .... .... .... More Fragments Bit = FALSE IP: ...0 0000 0000 0000 Fragment offset = 0 IP: Time to live = 64 IP: Protocol = TCP (6) IP: Header checksum = C37B IP: Source address = 147.83.40.67 IP: Destination address = 147.83.40.68 ------------ TCP Header -----------TCP: Source port = 1031 TCP: Destination port = telnet (23) TCP: Sequence number = 3513537882 TCP: Ack number = 3620132009 TCP: Data offset = 32 TCP: Flags = 0x11 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...1 FIN Flag = TRUE TCP: Window = 32120 http://www.tonet.jazztel.es 191 TCP: Checksum = E036 TCP: Urgent pointer = 00000000 TCP: Options = (nop,nop,tsval = 736556 tsecr = 366040) En este paquete se puede ver la cabecera Ethernet, la cabecera IP y también la cabecera del nivel de transporte, en este caso, el protocolo TCP. Si analizamos los campos de la cabecera IP, sus valores son: − Versión IP del paquete: Versión 4 − Longitud de la cabecera: 20 octetos − Longitud total del paquete: 52 octetos (20 de cabecera + 20 de datos) − Identificador: 0 (identifica que no hay fragmentación de paquetes) − Time to live: 64 − Dirección origen: 147.83.40.68 − Dirección destino: 147.83.40.67 23.5.Formato de un paquete TCP El formato de un paquete TCP capturado por un analizador de paquetes puede ser por ejemplo el siguiente: ------------ TCP Header -----------TCP: Source port = 1031 TCP: Destination port = telnet (23) TCP: Sequence number = 103822598 TCP: Ack number = 160466417 TCP: Data offset = 32 TCP: Flags = 0x11 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...1 FIN Flag = TRUE TCP: Window = 32120 TCP: Checksum = E036 TCP: Urgent pointer = 00000000 TCP: Options = (nop,nop,tsval = 736556 tsecr = 366040) En este paquete solo se muestra la parte del protocolo TCP, dado que iría incluido en un paquete IP que se ha mostrado en el apartado anterior. Si analizamos los campos de la cabecera TCP, sus valores son: − Puerto origen: 1031 (16 bits) − Puerto destino: 23 (16 bits), correspondiente a la aplicación telnet − Número de secuencia: El número de secuencia del primer octeto de datos del segmento. − Número de ACK: Si el bit ACK vale 1, este campo contiene el número de secuencia siguiente al de recepción. − Longitud datos: 32 octetos. − Flags: Campo de 6 bits que contiene las funciones de control: http://www.tonet.jazztel.es 192 − URGENT: Puntero de emergencia − ACK: Campo de acuse de recibo − PSH: Implica que la aplicación ha solicitado enviar los datos existentes en la memoria temporal. − RST: Campo de interrupción de la conexión actual. − SYN: Campo de la sincronización de los números de secuencia. − FIN: Campo que indica a la aplicación de que no hay más datos a transmitir. − Window: Campo de 16 bits que indica cuantos octetos tiene la ventana de transmisión del protocolo de control de flujo en el mecanismo de ventana deslizante. − Checksum: Campo de 24 bits que contiene la suma de la comprobación de errores. − Urgent Pointer: Campo de 8 bits que se utiliza cuando se envían datos urgentes con preferencia sobre los demás. - Options: Puede estar presente o no y sus opciones son: - Timestamp: Sirve para monitorizar los retardos - Aumento del tamaño de la ventana (Window) - Indicar el tamaño máximo del segmento que se puede enviar. 23.6.Formato de un paquete HTTP Se trata de un ejemplo de un protocolo de nivel de aplicación y que por lo tanto debe ir dentro de paquete de un protocolo de nivel de transporte TCP/UDP y este a su vez en un paquete de un protocolo de nivel red como es el protocolo IP. Ambos, el IP y el TCP, ya se han mostrado en los apartados anteriores. En el caso del protocolo HTTP, hay tres tipos de cabeceras: General Headers, Request Headers y Entity Headers. En el ejemplo en cuestión solo se muestra la Request Headers y es la siguiente: ------------ HTTP Header -----------HTTP: Full Request HTTP: Method= GET HTTP: Request-URI= / HTTP: HTTP-version= HTTP/1.1 HTTP: Host= www.google.com HTTP: User-Agent= Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020830 HTTP: Accept=text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,video/xmng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1 HTTP: Accept-Language= en-us, en;q=0.50 HTTP: Accept-Encoding= gzip, deflate, compress;q=0.9 HTTP: Accept-Charset= ISO-8859-1, utf-8;q=0.66, *;q=0.66 HTTP: Keep-Alive= 300 HTTP: Connection= keep-alive Si analizamos los campos de la cabecera HTTP, sus valores son: http://www.tonet.jazztel.es 193 - Tipo de petición: Full-Request (petición completa) - Método: GET. Este método significa que el cliente desea obtener el recurso especificado en el URI de la petición. Otros métodos: head, post, put, delete, link y unlink - Request-URI: es parte del Request-Line e identifica el objeto al que se aplicará el método solicitado. - Versión del protocolo: HTTP 1.1 - Host, página web solicitada - User-Agent: Equipo y software desde donde se realiza la petición - Otros parámetros del protocolo dan información sobre el idioma, el formato de compresión i la tabla de caracteres utilizada. http://www.tonet.jazztel.es 194 24. Gestión de redes La gestión de una red se refiere a las actividades, métodos, procedimientos y herramientas que pertenecen a la operación, la administración, el mantenimiento y el aprovisionamiento de los sistemas en red. La operación se ocupa de que la red esté en funcionamiento sin problemas. Esto incluye la monitorización de la red para detectar problemas tan pronto como sea posible, idealmente antes de que los usuarios se vean afectados. La administración se ocupa de hacer el seguimiento de los recursos en la red y cómo se asignan. Incluye todas las operaciones que son necesarias para mantener la red bajo control. El mantenimiento se ocupa de realizar las reparaciones y mejoras, por ejemplo cuando un equipo debe ser reemplazado, cuando un enrutador necesita un parche en su sistema operativo, cuando se añade un nuevo conmutador a la red. El mantenimiento también incluye medidas preventivas y correctivas para que la red funcione mejor, tales como el ajuste de los parámetros de configuración de cada uno de los dispositivos de la red. El aprovisionamiento se refiere a la configuración de recursos en la red para dar soporte a un determinado servicio. Por ejemplo, esto podría incluir la configuración de la red para que un nuevo usuario puede recibir servicio de voz. También hay que saber que hay dos aspectos importantes en las redes TCP/IP, el encaminamiento y la utilización del ancho de banda, cuya gestión es muy importante. 24.1.Monitorización de las redes Se utiliza el término monitorización para designar el tipo de acciones consistentes en obtener información de la red con el fin de detectar anomalías. Estas acciones son pasivas y su único objetivo es conocer el comportamiento respecto al tráfico del sistema. Una vez se conoce el sistema se puede proceder al control: para ello se establece una señalización o plano de control en toda red que se ocupa de regular activamente las comunicaciones y, en general, el tráfico de la red. En el proceso de monitorización de la red se consideran una serie de aspectos como son: en primer lugar, una definición de la información de gestión que se monitoriza, una forma de acceso a la información de monitorización, un diseño de los mecanismos de monitorización y, finalmente, un procesado de la información de monitorización obtenida. Por otra parte, la información de monitorización puede clasificarse según su naturaleza temporal en: información estática que se almacena en los elementos monitorizados (p.e. inventario); información dinámica que se http://www.tonet.jazztel.es 195 almacena en los propios elementos o en equipos especializados (p.e. cambios de estado o fallos) e información estadística que se genera a partir de la información dinámica y que puede residir en cualquier lugar que tenga acceso a la información dinámica (p.e. Rendimientos). Para la monitorización se utilizan los analizadores de paquetes descritos en el capítulo anterior. 24.2.Gestión por niveles En la gestión de una red de ordenadores debe tenerse en cuenta que estas funcionan de acuerdo con un nivel de protocolos. Así a nivel hardware, debemos controlar el correcto funcionamiento del mismo y en especial de la tarjeta de red (NIC). Por ello es muy general la existencia de un indicador luminoso en la tarjeta de red o en algún lugar del ordenador. En cuanto a los protocolos de red y transporte, habitualmente TCP/IP, sus controladores son piezas de programación. La verificación de su correcto funcionamiento pasa por abrir una ventana del sistema, ejecutando el comando cmd. Una vez en esta ventana, ejecutaremos ping 127.0.0.1 y si la respuesta es correcta, significa que los controladores TCP/IP están correctamente instalados. Eso se puede hacer con el ordenador conectado a la red o no, dado que es una verificación interna del propio ordenador. A continuación conectaremos el ordenador a la red, y necesitaremos conocer la dirección IP del ordenador. Para ello dependiendo del sistema operativo utilizado, ejecutaremos el comando ipconfig o ifconfig o uno equivalente. Ahora en la ventana del sistema, ejecutaremos ping (dirección IP del ordenador) Si la respuesta es correcta, significa que el protocolo TCP/IP funciona correctamente en esta red. Con todo esto hay que hacer una última verificación en cuanto a la configuración del DNS. Para ello en la ventana del sistema ejecutaremos ping www.yahoo.com o algo similar, con lo que se visualiza la traducción de la URL www.yahoo.com a una dirección IP. http://www.tonet.jazztel.es 196 24.3.Gestión de ancho de banda Las redes de ordenadores de las empresas han ido incorporando nuevos servicios tales como la videoconferencia, las aplicaciones multimedia, el seguimiento de pedidos e inventario, el comercio Internet remoto y las aplicaciones críticas basadas en Intranet. Estos servicios son en la actualidad la infraestructura de los modernos negocios. Estas tendencias han llevado a la adopción generalizada de procesos de negocio basados en Intranet y han transformado la WAN de la empresa de ser una simple herramienta de conectividad a ser un recurso estratégico. Sin embargo, a medida que las redes crecen, las organizaciones se dan cuenta de que el costo operacional aumenta significativamente, mientras que su capacidad para dirigir y controlar la red es muy limitado. La raíz de este problema yace en el hecho de que a diferencia de la LAN, que son propiedad de la empresa, la Intranet se basa en la WAN y ésta se alquila o contrata a las empresas de comunicaciones. Así, mientras el uso de LAN es basicamente gratuito en tanto en cuanto la compañía posee su infraestructura, el costo de propiedad de la WAN es importante y es una partida significativa en el presupuesto de la empresa. Esta es la razón principal de porque el ancho de banda de las líneas de comunicaciones que enlazan las LAN ha sido siempre un recurso limitado. La dificultad de controlar el tráfico por estas líneas de comunicaciones, ha hecho que las aplicaciones que necesitan un amplio ancho de banda, colapsen las líneas, sus servidores siempre estén muy ocupados, y que haya una demanda creciente de las aplicaciones multimedia y que más usuarios estén autorizados a conectarse a Internet cada día. Además el crecimiento exponencial de las velocidades de LAN versus las bajas velocidades de las líneas de comunicaciones han creado un desequilibrio entre la cantidad de tráfico que intenta cruzar la red de la empresa y la cantidad que las líneas de comunicaciones pueden soportar realmente. Este ambiente caótico y libre-para-todo ha hecho casi imposible garantizar el rendimiento adecuado de las aplicaciones críticas para el negocio que se requieren que permanezcan funcionando y corriendo en todo momento. Es este problema ha llevado a los gestores informáticos a buscar herramientas que, mediante un control activo y una priorización del tráfico de las líneas de comunicaciones, puedan priorizar y asignar ancho de banda basándose en las necesidades corporativas, optimizando la utilización del ancho de banda a través de las aplicaciones y garantizando un tiempo de respuesta adecuado para cada aplicación. Hay actualmente dos enfoques distintos en cuanto a la gestión del ancho de banda de las líneas de comunicaciones. El primer enfoque se basa en el uso de un dispositivo de LAN que regule el tráfico de LAN que va al enrutador en la suposición que la tal acción mejorará el rendimiento de las líneas de comunicaciones. El segundo enfoque usa un dispositivo nativo de WAN, que se conecta físicamente a la salida de las líneas de comunicaciones y regula el tráfico real que fluye por ellas. http://www.tonet.jazztel.es 197 24.3.1.Conocimiento de las líneas de comunicaciones Con el fin de gestionar de forma efectiva el ancho de banda de las líneas de comunicaciones, un sistema de gestión necesita estar totalmente versado con las topologías y los protocolos de WAN. El cálculo de la utilización de línea, por ejemplo, requiere del análisis del BECN y FECN que generan los conmutadores Frame Relay y están limitados por los enrutadores. Otros parámetros requeridos para una eficaz gestión del ancho de banda tales como los errores de línea, el análisis del tiempo de respuesta, la verificación del CIR y las medidas de congestión, requieren que el hardware de monitorización esté conectado al enlace WAN. Un sistema basado en LAN es incapaz de medir estos parámetros, por lo tanto, será incapaz de comprender cual es el estado real de la WAN, con lo que no puede hacer una gestión eficaz del ancho de banda de la misma. Los sistemas basados en LAN se alimentan manualmente con el rendimiento teórico de WAN y entonces simplemente asumen que el rendimiento de la WAN (tales como utilización, tasa de error, nivel de congestión) nunca cambia. Esta suposición no es válida, dado que el rendimiento de la WAN cambia dinámicamente. Sin embargo los sistemas nativos basados en WAN pueden controlar fácilmente los parámetros específicos de WAN porque ellos están conectados físicamente a ella. 24.3.2.Monitorización Dinámica por Circuito La monitorización de los enlaces WAN donde el tráfico debe ser modulado, es un requisito previo para una gestión eficaz del ancho de banda de WAN ya que sin mediciones apropiadas, un sistema de gestión de ancho de banda es incapaz de aplicar las prioridades correctas al tráfico de red. Dado que cada enlace WAN consta de varios Circuitos (PVCs, SVCs, o punto-a-punto), la monitorización debe hacerse por circuito. Así el enrutador WAN separará las tramas entrantes a la LAN en los distintos circuitos con base al destino de los datos y los actuales caminos de la red, y combinará el tráfico entrante de WAN de múltiples circuitos en una fuente única de LAN. Dado que cada circuito se comporta como una entidad separada de WAN teniendo su propio CIR, el rendimiento y los parámetros de ancho de banda, la monitorización se debe basar por circuito. El problema con los sistemas basados en LAN es que todo el tráfico de LAN parece igual. Solamente después de que el enrutador divide las tramas de LAN en sus apropiados circuitos de WAN, puede verdaderamente hacerse una monitorización de la WAN. En contraste a esto y dado que un sistema basado en WAN entiende de topologías y protocolos de WAN y opera a nivel de circuito, este sistema WAN puede identificar las posibles congestiones y garantizar que el tráfico más crítico dispone de una prioridad más alta sobre este determinado canal. http://www.tonet.jazztel.es 198 25. Simuladores de redes Un simulador de red es un programa de software que imita el funcionamiento de una red de ordenadores, sin estar presente una red real. En los simuladores, la red de ordenadores se suele modelar con los dispositivos, el tráfico, etc. y se analiza el rendimiento. Por lo general, los usuarios pueden personalizar el simulador para satisfacer sus necesidades específicas de análisis y vienen con el soporte para los protocolos más populares actualmente en uso, tales como WAN, Wifi, UDP y TCP. La mayoría de los simuladores comerciales se basan en GUIs, mientras que otros simuladores de red requieren scripts o comandos de entrada para parámetrizar la red. Los parámetros de red describen el estado de la red (la situación de los nodos, los enlaces existentes) y de los eventos (las transmisiones de los datos, los fallos de los enlaces, etc.) Un resultado importante de las simulaciones son los ficheros donde se alacenan los datos de la simulación. Estos ficheros pueden documentar todos los eventos que ocurrieron durante la simulación y se utilizan para el análisis. Determinados simuladores han añadido la funcionalidad de capturar este tipo de datos directamente desde el entorno de producción en funcionamiento en distintos momentos del día, semana o mes, a fin de reflejar el promedio, el peor de los casos y las condiciones del mejor de los casos. Los simuladores de la red también puede proporcionar otras herramientas que facilitan el análisis visual de las tendencias y los posibles puntos débiles. La mayoría de los simuladores de red utilizan la simulación de eventos discretos, en el que se almacena una lista de eventos en espera, y estos eventos se procesan en orden, de forma que desencadenen eventos futuros, como el evento de la llegada de un paquete en un nodo. Algunos problemas de la simulación de red, especialmente los que dependen de la teoría de colas, se adaptan bien a las simulaciones de la cadena de Markov, en el que no se mantienen una lista de eventos futuros y la simulación consiste en el tránsito entre los estados diferentes del sistema de una forma sin mememoria. La simulación de la cadena de Markov es en general más rápida pero menos precisa y flexible que la simulación detallada de eventos discretos. Algunas simulaciones son cíclicas y se basan en simulaciones y son más rápidas en comparación con las simulaciones basadas en eventos. La simulación de las redes puede ser una tarea difícil, por ejemplo, si la congestión es alta, entonces la estimación de la ocupación media es un reto debido a la alta variancia. Para estimar la probabilidad de un desbordamiento del búfer en una red, el tiempo necesario para una respuesta precisa puede ser muy grande. Hay técnicas que aceleran la resolución de esta simulación. En comparación con el costo y el tiempo necesarios para crear un banco de pruebas completo que contenga varios ordenadores conectados en red, los enrutadores y los enlaces, los simuladores de red son más rápidos y más baratos. Permiten a los ingenieros y a los investigadores probar escenarios que podrían ser http://www.tonet.jazztel.es 199 especialmente difíciles o costosos de emular utilizando hardware real, como por ejemplo, simulando un escenario con varios nodos o experimentando con un nuevo protocolo en la red. Los simuladores de red son particularmente útiles para permitir a los investigadores probar nuevos protocolos de red o cambios en los protocolos existentes en un entorno controlado y reproducible. Los simuladores de red, como su nombre indica, son utilizados por los investigadores, los desarrolladores y los ingenieros para diseñar distintos tipos de redes, simular y a continuación analizar el efecto de diversos parámetros en el rendimiento de la red. Un simulador de red típica abarca una amplia gama de tecnologías de red y puede ayudar a los usuarios a construir redes complejas a partir de bloques constructivos básicos, tales como una variedad de nodos y enlaces. Con la ayuda de los simuladores, se pueden diseñar redes jerárquicas con varios tipos de nodos, como ordenadores, concentradores, puentes, enrutadores, conmutadores, enlaces, etc. Hay una gran variedad de simuladores de red, que van desde los más simples hasta los más complejos. Como mínimo un simulador de red deberá permitir a un usuario representar a una topología de red, especificando los nodos de la red, los enlaces entre los nodos y el tráfico entre los nodos. Los sistemas más complicados pueden permitir que el usuario especifique todo lo relacionado con los protocolos utilizados para manejar el tráfico en una red. Las aplicaciones gráficas permiten a los usuarios visualizar fácilmente el funcionamiento del entorno simulado. Las simulaciones basadas en texto puede proporcionar una interfaz menos intuitiva, pero puede permitir formas más avanzadas de personalización. 25.1.Elementos de una simulación de redes El primer paso de una simulación de red es el establecimiento de su topología. Para ello deben definirse los nodos que componen esta red a simular. A continuación establecer los enlaces entre los nodos y en cada uno de ellos, definir sus parámetros de funcionamiento, por ejemplo, distancia, resistencia eléctrica, etc. El segundo paso es definir las fuentes de tráfico, es decir, toda red de ordenadores sirve para llevar información desde un origen a un destino. Así en una red se deben definir los nodos origen que son las fuentes del tráfico y los nodos destino que son los que reciben el tráfico. Además las fuentes de tráfico pueden ser de distintos tipos y en función de los análisis a realizar, se establecerán unos tipos u otros de patrones de tráfico. El tráfico de Internet es del tipo que se conoce como best-effort. Un tercer paso es parametrizar los nodos intermedios, que se conocen con el nombre de enrutadores. Estos nodos intermedios, aparte de su tiempo de latencia, deben estar dotados de las correspondientes tablas de encaminamiento, cuyo contenido es fundamental para la distribución del tráfico de la red. A todo esto hay que añadir los protocolos con sus parámetros y temporizadores, así como los métodos de las teorías de cola que se utilizan en la gestión de los búferes. http://www.tonet.jazztel.es 200 25.2.Tipos de simulaciones Existen varias características de las cuales podemos clasificar las simulaciones, siendo algunas de estas posibles clasificaciones las siguientes: - Simulación estática: Se denomina modelo de simulación estática a la representación de un sistema en un instante de tiempo determinado. - Simulación dinámica: Se denomina modelo de simulación dinámica a la representación de un sistema cuando evoluciona con el tiempo. - Simulación determinista: Se denomina modelo de simulación determinista a la representación de un sistema que no contiene absolutamente ninguna variable aleatoria. - Simulación aleatoria: Se denomina modelo de simulación aleatoria a la representación de un sistema que contendrá variables aleatorias. - Simulación continua: Se denomina modelo de simulación continuo a la representación de un sistema donde su comportamiento cambia de forma continua en el tiempo. - Simulación Discreta: Se denomina modelo de simulación discreto a la representación de un sistema donde su comportamiento cambia únicamente en instantes de tiempo concretos, eventos. 25.3.ns – Network Simulator El simulador ns es un simulador de eventos discretos de la red, basado en software libre, licenciado bajo la licencia GNU GPLv2, y está a disposición del público de investigación, desarrollo y uso. El ns está desarrollado con los lenguajes C++ y Python, y utiliza secuencias de comandos para su ejecución. Está compuesto por 30 módulos, y sus principales características son: – Eventos de devolución de llamada – Sistemas de atributos gestionado por defecto y valores de simulación por objeto – Ayudas que permitan un uso más simple de las API para configurar simulaciones Incluyen cuatro pasos: 1. La implementación de modelos de protocolos. 2. Configuración del escenario de simulación en un fichero texto plano. http://www.tonet.jazztel.es 201 3. Ejecución de la simulación. 4. Análisis de los resultados de la simulación. 25.4.Simulador OMNeT++ OMNeT++ es un simulador de redes de eventos discretos, modular y orientado a objetos. El simulador se puede usar para: • • • • • • • modelar el tráfico de las redes de telecomunicaciones modelar protocolos modelar las colas de espera de las redes modelar sistemas multiprocesadores y otros hardware distribuido validar arquitecturas de hardware evaluar aspectos de rendimiento de complejos sistemas de software modelar cualquier otro sistema donde la propuesta de eventos discretos sea posible. Un modelo OMNeT++ consta de módulos anidados jerarquicamente. La profundidad del anidado de módulos no tiene límites, lo que permite al usuario reflejar la estructura lógica del sistema actual en la estructura del modelo. Los módulos se comunican a través del traspaso de mensajes. Los mensajes pueden contener arbitrariamente estructuras complejas de datos. Los módulos pueden enviar mensajes ya sea directamente a su destino o a lo largo de un camino predefinido, a través de puertas y conexiones. Los módulos pueden tener sus propios parámetros. Los parámetros se pueden usar para customizar el comportamiento del módulo y parametrizar la topología del modelo. Los módulos al nivel más bajo de la jerarquía del módulo encapsulan el comportamiento. Estos módulos se llaman módulos simples y están programados en C++ usando la librería de simulación. 25.5.Simulador GNS3 GNS3 es un simulador gráfico de la red que permite la simulación de redes complejas. Para proporcionar simulaciones completas y precisas, GNS3 está estrechamente relacionado con: – Dynamips, un emulador de Cisco IOS. – Qemu, un emulador de máquina genérico y abierto y un virtualizador. – VirtualBox, un software de virtualización gratuito y potente. También se puede utilizar para experimentar las características del IOS de Cisco, el JunOS de Juniper o para verificar las configuraciones que deben implementarse más tarde en los enrutadores. http://www.tonet.jazztel.es 202 Este proyecto es un programa de código abierto y gratuito que se puede utilizar en múltiples sistemas operativos, incluyendo Windows, Linux y MacOS X. 25.6.SSFNet SSFNet es una colección de componentes basado en Java, que permiten la modelización y la simulación de los protocolos utilizados en Internet y las redes por encima del nivel de paquetes IP. El modelado de los niveles de enlace y de la capa física se puede proporcionar en componentes separados. Los modelos SSFNet se configura automáticamente, es decir, cada instancia de la clase SSFNet se puede configurar de forma autónoma mediante la consulta de una base de datos de configuración, que puede residir localmente o remotamente en Internet. Los ficheros de configuración de la red están en formato DML. Se utilizan para configurar un modelo completo e inician una simulación con la ayuda del paquete escalable de datos de configuración en DML que se distribuye con los simuladores SSF. Las clases principales utilizadas para construir virtualmente cualquier modelo de red se organizan en dos estructuras, SSF.OS para el modelado de los ordenadores y los componentes del sistema operativo, como los protocolos y SSF.Net para el modelado de la conectividad de las redes, creando las configuraciones de los nodos y los enlaces. Los marcos SSF.OS y SSF.Net ocultan todos los detalles de las API del simulador de eventos discretos SSF, que permite implementar los protocolos, como en un sistema operativo real. 25.7.GTNetS El Georgia Tech Network Simulator (GTNetS) es un entorno completo de simulación de red que permite a los investigadores en redes de ordenadores estudiar el comportamiento de redes de distinto tamaño bajo una variedad de condiciones. La filosofía de diseño de GTNetS es crear un entorno de simulación que está estructurado al igual que están estructuradas las redes actuales. Por ejemplo, en GTNetS, hay una separación clara de los niveles de la pila de protocolos. Los paquetes en GTNetS consisten en una lista de PDUs de los distintos protocolos que se añaden y se retiran del paquete a medidad que se mueve arriba y abajo de la pila de protocolos. Los objetos de simulación que representan los nodos de red tienen una o más interfaces, cada una de ellas puede tener una dirección IP asociada y un enlace asociado. Los objetos del protocolo de nivel 4 en GTNetS enlaza con los puertos, de manera casi idéntica a la unión a los puertos de protocolos de red real. Las conexiones entre los objetos de protocolo en el nivel de transporte se especifican mediante una tupla que contiene la dirección IP de origen, el puerto de origen, la dirección IP de destino y el puerto de destino como las conexiones TCP reales. La interfaz entre las aplicaciones y los protocolos de nivel http://www.tonet.jazztel.es 203 de transporte utiliza las llamadas ahbituales connect, listen, send y sendto como en las API de los entornos UNIX. Las aplicaciones en GTNetS pueden tener asociadas uno o más objetos de protocolo y pueden simulatar el flujo de datos entre aplicaciones. http://www.tonet.jazztel.es 204 26. Programando en red con python 26.1.Introducción En este capítulo se explica como desarrollar un protocolo a nivel de aplicación utilizando el lenguaje de programación Python. Para ello se implementa el módulo “socket” en Python, módulo que abarca sobre todo las llamadas del sistema y las funciones, todo ello implementado con la programación orientada al objeto. Este protocolo de nivel de aplicación debe correr con la pila TCP/IP, es decir, sólo funcionara en ordenadores que tengan implementados el protocolo IP a nivel de red y el TCP o UDP a nivel de enlace. Python ofrece un interfaz simple, mucho más simple que en C, para crear y para utilizar correctamente un socket. Sobre todo, se define la función “socket()” devolviendo un objeto “socket”. El socket tiene varios métodos, correspondiendo a sus pares de sys/socket.h de C, como bind(), connect(), listen() o accept(). Los programadores acostumbrados con el uso del socket en lenguaje C, encontrarán muy fácil traducir su conocimiento en la implementación del socket y más fácil de utilizar en Python. Python elimina la tarea desalentadora de llenar estructuras como “sockaddr” en un “hostent” y facilita el uso de métodos o de funciones previamente mencionados, es decir, el pasar parámetro, así la llamada de las funciones son más fáciles de dirigir. También se proporcionan algunas funciones orientadas a red: el “gethostbyname()”, el “getprotobyname()” o las funciones de conversión “ntohl()”, “htons()”, útiles cuando los números enteros que convierten a y desde red ajustados a formato. El módulo proporciona constantes como SOMAXCONN, INADDR *, usado en funciones del “gesockopt()” o del “setsockopt()”. Python proporciona además del socket, los módulos adicionales que apoya los protocolos más comunes de red a nivel de usuario. Por ejemplo podemos encontrar los útiles módulos como el “httplib”, “ftplib”, “telnetlib” y “smtplib”. Está implementado el soporte para la ejecución de los scripts de CGI a través del módulo “cgi”, un módulo para el análisis del URL, clases que describen los servidores web. Estos módulos son implementaciones específicas de protocolos bien conocidos para que el usuario los utilice y no se esté intentando reinventar la rueda. 26.2.Uso básico del socket El socket es la estructura básica para la comunicación entre los procesos. Un socket se define como "un punto final de la comunicación a la cual se pueda limitar con un nombre". La implementación 4.3 BSD define tres dominios de comunicación para un socket: el dominio UNIX para la comunicación on-system entre procesos; el dominio Internet para los procesos que se comunican sobre el protocolo de http://www.tonet.jazztel.es 205 TCP(UDP)/IP; el dominio NS usado por los procesos que se comunican sobre el viejo protocolo de comunicación de Xerox. Python sólo utiliza los primeros dos dominios de la comunicación: los dominios UNIX e Internet, las familias de direcciones AF UNIX y los AF INET respectivamente. Las direcciones del dominio UNIX se representan como cadenas de caracteres, nombrando un camino local: por ejemplo /tmp/sock. Esto puede ser un socket creado por un proceso local o creado posiblemente por un proceso foráneo. Las direcciones del dominio de Internet se representan como un par (dispositivo, puerto), donde el dispositivo es una cadena de caracteres que representa un nombre hostname válido de Internet, por ejemplo matrix.ee.utt.ro o una dirección IP en el notación decimal con puntos y el puerto es un puerto válido entre 1 y 65535. Python ofrece los cinco tipos de socket definidos en la implementación 4.3 BSD IPC. Dos se utilizan generalmente en la inmensa mayoría de las nuevas aplicaciones. Un “stream socket” es un socket orientado a conexión y tiene el soporte de la comunicación subyacente del protocolo TCP, suministrando un flujo de datos bidireccional, confiable, secuenciado y sin duplicidades. Un “datagram socket” es un socket de comunicación no orientado a conexión, apoyado en el protocolo UDP. Ofrece un flujo de datos bidireccional, no confiable, no secuenciado y con posibilidad de duplicidades. Un proceso que recibe una secuencia de datagramas puede encontrar mensajes duplicados o, posiblemente, en otro orden distinto de los paquetes cuando fueron enviados. Raramente se usan los tipos “raw”, ordenados y confiablemente entregados de los zócalos del mensaje. El tipo “raw socket” es necesario cuando una aplicación puede requerir el acceso a los recursos más íntimos proporcionados por la implementación del socket. Nuestro documento se centra en los “stream socket” y los “datagram socket”. 26.3.Creando un socket Un socket se crea con la llamada socket(familia, tipo [, proto ]); la familia es una de las antedichas familias de dirección: AF UNIX y AF INET, el tipo se representa con las constantes siguientes: SOCK STREAM, SOCK DGRAM, SOCK RAW, SOCK SEQPACKET y SOCK RDM. El argumento proto es opcional y por defecto es 0. Vemos que la función socket() crea un socket en el dominio especificado con el tipo especificado. Debido a que las constantes mencionadas arriba están contenidas en el módulo socket, todas se deben utilizar con la notación CONSTANT de socket. De no hacerlo así, el intérprete generará un error. Para crear un “stream socket” en el dominio de Internet utilizaremos la línea siguiente: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Sustituyendo socket.SOCK_STREAM por socket.SOCK_DGRAM, creamos un “datagram socket” en el dominio de Internet. La llamada siguiente creará un “stream socket” en el dominio UNIX: sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) http://www.tonet.jazztel.es 206 Más adelante discutimos sobre la obtención de un socket de diferentes tipos en diferentes dominios de comunicación. 26.4.Conectando un socket y transfiriendo datos Un servidor es un proceso que escucha por un determinado puerto. Podemos denominar servicio a la asociación puerto, proceso. Cuando otro proceso quiere encontrar el servidor o utilizar un servicio determinado, debe conectarse a la dirección y número de puerto especificado por el servidor. Esto se hace llamando el método socket connect(dirección), donde la dirección es un par (ordenador, puerto) en el dominio de Internet y un camino de nombre en el dominio UNIX. Si se usa el dominio de Internet, una conexión se realiza con el código siguiente: sock.connect(('localhost', 8000)) mientras que en el dominio UNIX, sock.connect('/tmp/sock') Si el servicio es inasequible o el servidor no desea hablar con el proceso del cliente, se genera un socket.error (111, ' Conexión rechazada'). Por otra parte, después de que se establezca la conexión con el servidor deseado, los datos se envían y se reciben con los métodos send(buffer [, flags]) y recv(buffer [, flags]). Estos métodos aceptan como parámetro obligatorio el tamaño del buffer en octetos y algunos flags opcionales. 26.5.Dando un nombre al socket El socket, después de su creación, no tiene nombre, aunque tiene un descriptor asociado. Antes de que se pueda utilizar, se le debe dar un nombre a una dirección apropiada puesto que ésta es la única manera que un proceso foráneo puede referirse a él. El método bind(dirección) se utiliza para nombrar un socket. El significado de la dirección se ha explicado anteriormente. La llamada siguiente nombrará un socket en el dominio de Internet con la dirección compuesta de nombre de ordenador localhost y del puerto número 8000: sock.bind(('localhost', 8000)) Por favor cuidado al teclear: de hecho hay dos pares de paréntesis. El propósito de los dos pares de paréntesis es simple: la dirección es un tuple que contiene una cadena de caracteres y un número entero. El nombre de ordenador debe ser escogido correctamente, y el mejor método es utilizar la rutina gethostname() para asegurar la independencia del ordenador y su portabilidad. Para crear un socket en el dominio UNIX, utilizar la dirección como una única cadena de caracteres, nombrando un camino local: http://www.tonet.jazztel.es 207 sock.bind('/tmp/sock') Esto creará el fichero (pipe) '/tmp/sock' que se usará para la comunicación entre los procesos del servidor y del cliente. El usuario debe tener los permisos de lectura/escritura en el directorio especificado donde se creó el socket y el propio fichero debe ser borrado una vez ya no se necesita. 26.6.Escuchando y aceptando conexiones Una vez que tenemos un socket con un nombre propio y limitado a él, el paso siguiente es llamar el método “listen(queue)”. Este método le dice al socket que escuche pasivamente en el puerto establecido. El método listen() toma como parámetro al número entero que representa la cola máxima de la conexión. Este argumento debería ser por lo menos 1 y el máximo, dependiendo del sistema, 5. Hasta este momento tenemos un socket con una dirección limitada apropiada. Cuando llega una petición de conexión, el servidor decide si es aceptado o no. Aceptar una conexión se hace con el método “accept()”. No toma ningún parámetro sino que devuelve un tuple (clientsocket, dirección) donde clientsocket es un nuevo socket que el servidor usa para comunicarse con el cliente y la dirección es la dirección del cliente. Normalmente “accept()” se bloquea hasta que se realiza la conexión. Este comportamiento puede ser eliminado ejecutando el método en un thread separado, recogiendo los nuevos descriptores creados del socket en una lista y procesarlos por orden. Los métodos antedichos se usan como sigue: sock.listen(5) clisock, address = sock.accept() Este código manda al socket que escuche con una cola máxima de espera de cinco conexiones y acepta todos las llamadas entrantes. Así el método “accept()” devuelve un socket nuevo que será utilizado en el intercambio posterior de datos. Con la cadena bind-listen-accept es como se crean los servidores TCP. Dado que un socket TCP está orientado a la conexión, cuando un cliente desea hablar a un servidor en particular al que debe conectarse, espera hasta que el servidor acepta la conexión, se intercambian los datos y después se cierra la conexión. Esto es como en una llamada telefónica: el cliente marca el número, espera hasta que el otro lado establece la conexión, habla y después cuelga. 26.7.Sockets UDP Un “datagram socket” se caracteriza por un intercambio simétrico de mensajes sin conexión. El servidor y el cliente intercambian paquetes de datos, no secuencias de datos, y los paquetes se tratan entre el cliente y el servidor por separado. La conexión UDP se asemeja al sistema postal: cada mensaje se encapsula en un sobre y se recibe como entidad separada. Un mensaje grande se puede partir en http://www.tonet.jazztel.es 208 múltiples partes, cada una entregada por separado (no en el misma orden, duplicado, etcétera). Es el deber del receptor el montar el mensaje. El servidor tiene un método “bind()” que se usa para añadir un nombre propio y un puerto. En los sockets UDP, no hay los métodos “listen()” ni “accept()”, porque el servidor no está escuchando y no acepta la conexión. Básicamente se crea un buzón de correos donde es posible recibir mensajes de los procesos del cliente. Los clientes envían solamente los paquetes, los datos y la dirección estando incluidos en cada paquete. Los paquetes de datos se envían y se reciben con los métodos “sendto(data, dirección)” y “recvfrom(buffer [, flags])”. El primer método toma como parámetros una cadena de caracteres y la dirección del servidor de acuerdo con lo explicado anteriormente con los métodos “connect()” y “bind()”. Debido a que se especifica en el extremo remoto del socket, no hay necesidad de conectarlo. El segundo método es similar al “recv()”. 26.8.Cerrando el socket Cuando se deja de usar el socket, se debe cerrar con el método “close()”. Cuando un usuario ya no está interesado en cualquier dato pendiente, se puede realizar una parada antes de cerrar el socket. El método para hacer esto se llama “shutdown(how)”, donde “how” es: 0 si no se acepta la entrada de más datos, 1 si se desabilita el envío de datos y un valor de 2 previene de enviar y recibir datos. 26.9.Diseñando un servidor TCP El diseño de un servidor TCP debe seguir los pasos “bind-listen-accept”. Se muestra el código para un simple servidor de eco, corriendo en “localhost” y escuchando por el puerto 8000. Aceptará una única conexión del cliente, hará un eco de todos los datos y después de no recibir nada, cierra la conexión. import socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(('localhost', 8000)) serversocket.listen(1) clientsocket, clientaddress = serversocket.accept() print 'Connection from ', clientaddress while 1: data = clientsocket.recv(1024) if not data: break clientsocket.send(data) clientsocket.close() En la primera línea se declara la instrucción “import” del módulo “socket”. Las líneas de la 3 a la 6 son la cadena estándar de servidor TCP. En la linea 6 el servidor acepta la conexión iniciada por el cliente; el método “accept()” devuelve el socket http://www.tonet.jazztel.es 209 clientsocket, usado a continuación para el intercambio de datos. El bucle “while 1” es el código de eco; devuelve los datos transmitidos por el cliente. Una vez roto el bucle (cuando el cliente envia una cadena vacía y no se cumple la condición “if not data: break”) se cierra el socket y termina el programa. 26.10.El cliente TCP El cliente entrará en bucle donde los datos son leidos desde una entrada estándar y enviados (en paquetes de 1024 octetos – esta es la cantidad máxima de datos que el servidor lee según el código de servidor anterior) al servidor. El servidor devuelve los mismos datos y el cliente los visualiza. Aquí está el código: import socket clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket.connect(('localhost', 8000)) while 1: data = raw_input('>') clientsocket.send(data) if not data: break newdata = clientsocket.recv(1024) print newdata clientsocket.close() Primero el cliente envia datos y solo después de enviar los datos, en el caso de datos cero, sale. Esto previene al servidor de colgarse (recuerde, el servidor sale cuando recibe una cadena vacía). Decidimos almacenar los datos recibidos en “newdata” para prevenir cualquier problema que pueda surgir, si no se transmiten datos o algo malo vuelve al servidor. Comparado con el servidor, el código del cliente es mucho más simple – solo la creación del socket y una conexión simple, después el protocolo sigue. 26.11.Aplicación de transmisión de un fichero 26.11.1.Envío de un texto desde un cliente a un servidor Este ejemplo consiste en abrir un servidor mediante la ejecución del comando python 1server.py 2000 donde se le dice que el servidor escuche por el puerto 2000. A continuación se debe ejecutar el comando python 1client.py 127.0.0.1 2000 abc con lo que el cliente abre el puerto 2000 para enviar el texto abc al servidor. Ahora el servidor multiplica la cadena varias veces y la devuelve al cliente, y cuando http://www.tonet.jazztel.es 210 termina, cierra la conexión y termina el programa. En la máquina cliente se visualiza la cadena multiplicada y termina el programa. El código del programa del servidor 1server.py es import socket import sys # crear un socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # asociar el socket al puerto host = ' ' # se puede dejar en blanco en el lado del servidor port = int(sys.argv[1]) s.bind((host, port)) s.listen(1) conn, addr = s.accept() print 'client is at', addr data = conn.recv(1000000) data = 10 * data # concatenate data with itself 999 times z = raw_input() conn.send(data) conn.close() El código del programa cliente 1client.py es import socket import sys s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = sys.argv[1] # dirección IP del servidor port = int(sys.argv[2]) # puerto del servidor por el que escucha s.connect((host, port)) s.send(sys.argv[3]) # envío de la cadena de caracteres i=0 while(1): data = s.recv(1000000) # leer hasta 1000000 octetos i += 1 if (i < 5): # mirar sólo la primera parte del mensaje print data if not data: # finalizar si no hay datos break print 'received', len(data), 'bytes' s.close() 26.11.2.Envío de un texto desde un cliente a un servidor Consiste en abrir un servidor mediante la ejecución del comando python 2server.py usando el puerto cuyo número nos pide. A continuación se debe ejecutar el comando http://www.tonet.jazztel.es 211 python 2client.py en otra máquina y nos pide: 1) la dirección o nombre del servidor 2) el puerto del servidor por el que escucha 3) un texto que se enviará al servidor. A continuación el servidor pregunta cuantas veces se quiere multiplicar la cadena y lo envía al cliente, y cuando termina, cierra la conexión y termina el programa. En la máquina cliente además de visualizar la cadena multiplicada, crea un fichero donde graba esta cadena de texto y a continuación termina el programa. El código del programa servidor 2server.py es import socket import string s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = ' ' # se puede dejar en blanco en el lado del servidor portc = raw_input("Puerto a usar: ") portn = string.atoi(portc) print portn s.bind((host, portn)) s.listen(1) conn, addr = s.accept() print 'client is at', addr data = conn.recv(1000000) num1c = raw_input("Cuantas veces: ") num1n = string.atoi(num1c) data = num1n * data # concatenate data with itself 999 times conn.send(data) conn.close() El código del programa cliente 2client.py es import socket import sys import string s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) hostc = raw_input("Direccion del server: ") portc = raw_input("Puerto a usar: ") portn = string.atoi(portc) s.connect((hostc, portn)) texto = raw_input("Texto a grabar: ") s.send(texto) # send test string f = open("foo","w") i=0 while(1): data = s.recv(1000000) i += 1 http://www.tonet.jazztel.es 212 if (i < 5): # mirar sólo la primera parte del mensaje f.write(data) print data print 'received', len(data), 'bytes' if not data: # finalizar si no hay datos break f.flush() f.close() s.close() 26.11.3.Envío de un fichero del cliente al servidor Consiste en abrir un puerto en un servidor mediante la ejecución del comando python 3server.py usando el puerto cuyo número nos pide. A continuación se debe ejecutar en el cliente el comado python 3client.py y nos pide: 4) la dirección o nombre del servidor 5) el puerto del servidor por el que escucha Ahora el servidor lee el fichero foo y a continuación lo envía al cliente, y cuando termina, cierra la conexión y termina el programa, especificando la duración de la transmisión. Ahora en la máquina cliente grabe el fichero foo del servidor en el fichero foow en el cliente y a continuación termina el programa. El código del programa servidor 3server.py es import socket import sys import string import time s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = ' ' # se puede dejar en blanco en el lado del servidor portc = raw_input("Puerto a usar: ") portn = string.atoi(portc) print portn s.bind((host, portn)) s.listen(1) conn, addr = s.accept() print 'client is at', addr http://www.tonet.jazztel.es f = open("foo","r") starttime = time.time() i=0 while(1): f.seek(10000*i) data = f.read(10000) i += 1 if (i < 1000): # mirar sólo la primera parte del mensaje conn.send(data) if not data: # finalizar si no hay datos break f.close() stoptime = time.time() conn.close() dur=stoptime - starttime print 'Duracion ', dur El código del programa cliente 3client.py es import socket import sys import string s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) hostc = raw_input("Direccion del server: ") portc = raw_input("Puerto a usar: ") portn = string.atoi(portc) s.connect((hostc, portn)) f = open("foow","w") i=0 while(1): data = s.recv(1000000) i += 1 if (i < 1000): # mirar sólo la primera parte del mensaje f.write(data) print i print 'received', len(data), 'bytes' if not data: # finalizar si no hay datos break f.flush() f.close() s.close() 213 http://www.tonet.jazztel.es 214