Conceptos Básicos de Redes y Tcpip

81
Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Conceptos básicos de Redes y TCP/IP Departamento de Electrónica FI UNAM

description

Conceptos básicos de redes Marco históricoMicroprocesador y MicrocontroladorControl basado en microcontroladoresSistemas de comunicaciónSistemas de control a distancia

Transcript of Conceptos Básicos de Redes y Tcpip

Page 1: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Conceptos básicos de Redes y TCP/IP

Departamento de Electrónica FI UNAM

Page 2: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

1 Antecedentes

1.1 Introducción 1.1.1 Marco histórico 1.1.2 Microprocesador y Microcontrolador 1.1.3 Control basado en microcontroladores 1.1.4 Sistemas de comunicación 1.1.5 Sistemas de control a distancia

Page 3: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

1.1 Introducción

Durante la segunda mitad del siglo XX el mundo fue testigo de una incansable revolución de avances científicos y tecnológicos en diferentes campos. Entre los más importantes se encuentran los avances en los sistemas de comunicaciones basados en redes de comunicación como Ethernet e internet y la automatización de procesos mediante sistemas electrónicos de control. El desarrollo en estas áreas tuvo un crecimiento acelerado hacia finales del siglo XX, en general de manera aislada una de la otra. La primera encontró auge en la comunicación entre computadoras que requerían intercambiar información y compartir sus recursos, formando redes en oficinas, escuelas e industria, y la segunda entre los sectores industriales mediante la incorporación de sistemas de control y monitoreo a sus procesos de producción en busca de eficiencia, seguridad y dinamismo. Este último sector ha sido el principal impulsor que ha llevado a la vida cotidiana el uso de sistemas electrónicos de control, al sustituir sistemas discretos por sistemas basados en microprocesadores o microcontroladores en todos sus productos como: juguetes, electrodomésticos, teléfonos celulares, agendas electrónicas, equipos médicos, entre muchos otros. Relacionados a los sistemas de comunicaciones y sistemas electrónicos de monitoreo y control en productos electrónicos, se encuentran los conceptos de: sistema embebido, microcontrolador y Ethernet, mismos que se definen a continuación. Un sistema embebido se define como aquel sistema electrónico de propósito específico que puede estar basado en microcontroladores, microprocesadores, PLDs (Programmable Logic Device) o FPGAs (Field Programmable Gate Array), los cuales desarrollan una o más funciones en las que se combinan periféricos de entrada, un proceso interno, software de ejecución y periféricos de salida para una funcion especifica Por su parte un microcontrolador es un circuito integrado programable y de arquitectura cerrada que incluye en su interior un microprocesador (contiene Unidad de Control, Unidad Aritmética Lógica y registros de control), memoria y periféricos de entrada/salida. Los dispositivos periféricos le ayudan a realizar la tarea para la que es programado. Sus principales aplicaciones las podemos encontrar en el monitoreo y control de procesos. Por otro lado Ethernet es un estándar de comunicación en redes de computadoras de área local, típicamente usado para el intercambio de información y compartir recursos entre computadoras. Si estas redes se conectan a un ruteador (dispositivo para la interconexión de redes), pueden tener acceso a internet (un conjunto descentralizado de redes interconectadas, que utilizan la familia de protocolos TCP/IP). Durante mucho tiempo los sistemas de control y las redes Ethernet se desarrollaron por separado, pero desde finales del siglo pasado y durante el presente siglo, su unión se ha vuelto inevitable, ya que la conectividad de estos sistemas es necesaria ya sea para la obtención y transferencia de información del estado de un proceso o para acceder al control y la configuración de los dispositivos de manera remota. Hasta hace dos décadas la interconexión entre dispositivos se realizaba a través de puertos serie, mediante UART‘s (Universal Asynchronous Receiver–Transmitter) y la posibilidad de acceder a ellos en forma remota estaba limitada a transmisores de RF (radiofrecuencia) basados en protocolos de comunicación serie o bien condicionada a la incorporación de módems. Surgió a inicios de los 70‘s la idea de implementar la comunicación de los sistemas de control mediante redes obteniendo sistemas conectados entre sí y con otras computadoras a través de Internet, gracias a la implementación de un conjunto de protocolos denominado TCP/IP. TCP/IP (Transmission Control Protocol/Internet Protocol) es el estándar para la comunicación a través de redes de computadoras más utilizado a nivel mundial. Está formado por un grupo de protocolos denominados pila o stack, llamados así por la estructura apilada entre los protocolos que lo conforman y que permiten llevar a cabo el transporte de los datos a través de Internet. La Figura 1.1 muestra el modelo de la pila de protocolos TCP/IP. La implementación de esta pila (o al menos de una parte de ella) sobre una plataforma con menos recursos de hardware que una computadora, como es un microcontrolador, es factible hoy en día gracias a que sus

Page 4: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

CPU‘s han llegado a ser más rápidos y poderosos, siendo capaces de manipular el funcionamiento de los controladores de red.

Figura 1.1 Modelo de la pila de protocolos TCP/IP

La estandarización de los protocolos de red, su código libre y disponible para usarse sin licencias ni permisos especiales, ha permitido la implementación de la pila de protocolos TCP/IP en sistemas embebidos. Cuando se desea incorporar la pila TCP/IP a un sistema de control, se debe adaptar el código original descrito en los RFC‘s (Request for Comments, notas sobre aplicación e implementación de los protocolos de internet), considerando algunas características y limitaciones con las que cuentan los sistemas basados en microcontroladores:

Memoria limitada: Por esta razón es importante una correcta administración de los buffers de almacenamiento de los paquetes evitando el uso dinámico de memoria, reservando un espacio fijo en RAM para este efecto. Uso de temporizadores o timers: Son esenciales para la administración de la conexión (tiempo de vida de paquetes, retransmisiones, entre otros). Si no son manejados por un sistema operativo de tiempo real, debe minimizarse el uso de CPU en el manejo de timers para evitar problemas de latencia. Minimizar la copia de datos: Si cada trama se almacena en un único buffer, se evita que el CPU deba ocuparse en copiar los datos a cada etapa del protocolo.

Mediante la implementación de la pila de protocolos antes mencionada en un sistema basado en un microcontrolador y una tarjeta de control de red, se da la pauta para que un nuevo sistema con acceso a redes locales e internet pueda monitorear y controlar dispositivos a distancia, alojar una página web e incluso enviar y recibir correos electrónicos e intercambiar información con cualquier computadora o dispositivo que implemente el conjunto de protocolos TCP/IP. OBJETIVO: Estas notas describen como se constituye un sistema de red y las partes que integran a el protocolo TCP/IP

1.1.1 Marco Histórico En la siguiente reseña histórica se enmarcan algunos acontecimientos importantes desde la creación del primer microprocesador hasta llegar a la implementación de una microcomputadora dentro de un circuito integrado o microcontrolador; posteriormente se comenta el uso que se da a estos circuitos en la actualidad, continuando con una breve introducción a las bases de un sistema de comunicación (bases que

Page 5: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

fundamentan la comunicación entre dispositivos) y el panorama actual de los sistemas de control a distancia. En el año 1969 la compañía BUSICOM, una joven empresa japonesa, solicitó a Intel que hiciera un conjunto de doce circuitos integrados para su nueva línea de calculadoras electrónicas de bajo costo [1e]. Marcial Edward Ted Hoff, encargado del proyecto, mostró una solución en la que la función del circuito integrado se determinaba por un programa almacenado en el mismo y apoyado por Stanley Mazor definieron una arquitectura consistente en un CPU de 4 bits (4004), una memoria ROM (4001) para almacenar las instrucciones de los programas, una RAM (4002) para almacenar los datos y algunos puertos de entrada/salida para conectar el teclado, el display y otros dispositivos. Federico Faggin se unió a Intel para transformar la idea en un producto fabricado, lográndolo a principios de 1971 y creando el primer microprocesador al que llamaron 4004, que salió al mercado el 15 de noviembre de 1971. Contaba con tecnología PMOS (Transistores Mosfets de Canal Positivo),una velocidad de 6000 operaciones por segundo y memoria direccionable de 4Kb. Poco tiempo después Computer Terminal Corporation (CTC) solicita a Intel un microprocesador de 8 bits para usarlo en su terminal programable Datapoint y, a pesar de que nunca se utilizó en dicha terminal, el 1 de abril de 1972 Intel anuncia una versión mejorada de su primer microprocesador, llamado 8008, con bus de 8 bits, memoria de 16 Kb, un set de 45 instrucciones y una velocidad de 300000 operaciones por segundo. Intel continuó con su desarrollo de microprocesadores y, buscando dar mayor velocidad y facilidad de implementación a sus microprocesadores, crea el 8080 de tecnología NMOS (Transistores Mosfets de Canal Negativo), memoria de 64Kb, set de 75 instrucciones y frecuencia máxima de 2Mhz. Con la puesta en el mercado del 8080 se dispara la fabricación de microprocesadores por otras empresas como Motorola con su 6800, que presentaba algunas mejoras sobre el 8080, como una única alimentación de 5V. Chuck Peddle, principal diseñador del 6800, deja Motorola y se une a MOS Tecnology, trabajando intensamente en el desarrollo de microprocesadores como el 6501 y el 6502, cuyas patentes serán posteriormente reclamadas por Motorola; también Federico Faggin deja Intel y crea la compañía Zilog, entrando al mercado con el Z–80, una versión mejorada del 8080 [2e]. Es a finales de esta década, con el auge de los microprocesadores como el Z–80 de 8 bits, que se dispara la creación de microcomputadoras de uso domestico, aparecen nuevos lenguajes, sistemas operativos (sin compatibilidad entre ellos por ser de diferentes fabricantes) y se da inicio a la creación de microcomputadoras en un solo chip, a las cuales se conocerá como microcontroladores. Los primeros fueron el 8048 de Intel basado en el MP (microprocesador) 8080 y el 6805 de Motorola basado en su MP 6800; posteriormente Intel desarrolla los microcontroladores de la familia MCS51 (8051, 8050 y otros) y Motorola los 6807, 6808, 68HC11 y 68HC12 [3e].

1.1.2 Microprocesador y Microcontrolador Al avanzar de la creación de un sistema programable como el microprocesador a la fabricación de microcontroladores en un pequeño circuito integrado, se crearon sistemas con mayor capacidad de procesamiento y control de procesos; a continuación describimos algunas características que distinguen a estos circuitos integrados, para ello se describe la estructura de un sistema programable. La estructura básica de un sistema programable mediante software es la que se muestra en la Figura 1.2.

Figura 1.2 Estructura de un sistema básico programable

Page 6: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Cuando se diseña un sistema con un microprocesador se debe completar el sistema programable, para tal efecto debemos añadir componentes externos como: memoria RAM para guardar los datos temporales, memoria ROM para almacenar el programa que se encarga del proceso, dispositivos entrada/salida y un decodificador de direcciones. La disponibilidad de los buses en el exterior permite que los sistemas se configuren a la medida de la aplicación, agregando sólo los elementos que sean necesarios. A este tipo de sistemas se les denomina sistema abierto.

Figura 1.3 Estructura de un sistema abierto basado en un microprocesador

Por su parte, un microcontrolador es un circuito integrado que contiene todos los elementos electrónicos para hacer funcionar un sistema con microprocesador, es decir, el circuito integrado contiene la unidad de proceso, memoria ROM, memoria RAM, puertos de entrada y salida y otros periféricos, colaborando a la reducción de espacio. Por esto se dice que un microcontrolador es un sistema cerrado, ya que todas las partes del sistema están contenidas en su interior y sólo salen al exterior las líneas que interactúan con los periféricos [8].

Figura 1.4 Estructura de un sistema cerrado basado en un microcontrolador

A partir de 1976, con la llegada de los primeros microcontroladores, el 8048 de Intel y el 6805R2 de Motorola, se inicia la brecha entre microprocesadores y microcontroladores.

Figura 1.5 División entre las funciones de los microprocesadores y los microcontroladores [8]

La fabricación de microprocesadores se ha enfocado en una mayor longitud de palabra, de 16, 32 ó 64 bits y al manejo de mayor cantidad de memoria, encontrando un amplio campo de aplicación en los sistemas informáticos que manejan grandes volúmenes de datos, mientras que los microcontroladores se enfocan en

Page 7: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

aumentar en número y complejidad sus dispositivos de comunicación, control en tiempo real y un mejor desempeño en ambientes industriales.

1.1.3 Control basado en microcontroladores Durante los últimos 20 años los microcontroladores han aumentado su velocidad de procesamiento, capacidad de memoria y, dependiendo del fabricante y modelo, se han agregado contadores, convertidores analógico–digitales (A/D), digitales–analógicos (D/A), puertos de comunicación, modo de reposo (bajo consumo), tarjetas controladoras de red y más bloques especiales en respuesta a las necesidades de la industria.

1.1.3.1 Componentes frecuente de los microcontroladores

En busca de la reducción de espacio, costo de hardware y software en las aplicaciones con microcontroladores, las distintas empresas fabricantes han agregado nuevos recursos a sus diseños básicos, entre los que podemos mencionar los siguientes: Temporizadores o Timers. Se emplean para medición de periodos de tiempo y llevar la cuenta de acontecimientos que suceden en el exterior Perro guardián o Watch Dog Timer. Es un contador que provoca un reset automático del sistema si se presenta una falla en la ejecución del programa. Cuenta una cantidad de pulsos de reloj durante un tiempo específico y espera un evento generado por el programa de aplicación, si dicho evento no se presenta, se activa el watchdog y genera un reset interno del sistema. Detección de bajo voltaje de alimentación o Brownout. Es un circuito que reinicia el microcontrolador cuando el voltaje de alimentación (VDD) cae por debajo de un voltaje mínimo (brownout). Estado de reposo o de bajo consumo (Sleep mode). Es un estado en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados. Al activarse una interrupción el microcontrolador se despierta y reanuda su trabajo.

Conversor A/D (Analógico Digital). Permite procesar señales analógicas provenientes del exterior, aplicadas en terminales específicas del microcontrolador.

Conversor D/A (Digital Analógico). Convierte datos digitales que procesa el microcontrolador internamente en señales analógicas que envía al exterior mediante terminales específicas. Comparador analógico. Amplificador operacional integrado en el microcontrolador que permite comparar una señal de referencia con otra señal proveniente del exterior. Modulación por ancho de pulso o PWM (PulseWide Modulation). Son circuitos que proporcionan señales PWM en algunas terminales del microcontrolador. Puertos de E/S digitales. Puertos configurables como entradas o salidas digitales de propósito general. Puertos de comunicación. Proporcionan al microcontrolador la capacidad de comunicarse con dispositivos externos mediante normas o protocolos específicos. Entre los tipos de comunicación más usuales podemos encontrar:

UART adaptador de comunicación serie asíncrona. USART adaptador de comunicación serie síncrona y asíncrona. USB (Universal Serial Bus) es un moderno bus serie para los PC. CAN (Controller Area Network) permite la comunicación con redes. EMAC (Ethernet Media Access Controller) para permitir comunicación con redes locales. 1.1.3.2 Campos de aplicación

El aumento en las características de los microcontroladores y su uso como sistema embebido directamente en el sistema a controlar ha permitido que los microcontroladores se incorporen a nuestra vida cotidiana.

Page 8: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Los microcontroladores ya cubren muchos campos de estudio y desarrollo como son: Instrumentación Control Comunicación Monitoreo Procesamiento de señales Entretenimiento Señalización

También se utilizan cuando se requiere:

Codificación o decodificación Adquisición de datos Control retroalimentado Temporización Cálculos aritméticos Despliegue digital Control On / Off

En la vida cotidiana los podemos encontrar en los electrodomésticos, juguetes, teléfonos celulares, equipos médicos e indispensablemente en la actividad industrial como instrumentación electrónica, control de sistemas, etc. Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y costo, mejorar su confiabilidad y disminuir el consumo de energía. Algunos fabricantes de microcontroladores producen más de un millón de unidades de un modelo determinado por semana. Este dato puede dar una idea de la masiva utilización de estos componentes y de las expectativas que se perciben de ellos en los aparatos que se fabriquen a futuro. Con los datos anteriores se ha ilustrado que muchos de los dispositivos con los que interactuamos en nuestra vida cotidiana están controlados con microcontroladores y por las cifras de ventas que tienen los fabricantes de estos productos se presume el incremento de dispositivos que incluyen microcontroladores.

1.1.4 Sistemas de comunicación Los sistemas de comunicación simples o avanzados tienen sus fundamentos en un sistema de comunicaciones básico, el cual se debe comprender como preámbulo al estudio de los protocolos TCP/IP, que se implementan en esta tesis. La comunicación es la transferencia de información con dirección definida desde una fuente, origen o transmisor a otro lugar, destino o receptor y su procesamiento. La información es un patrón físico al cual se le ha asignado un significado comúnmente acordado y puede englobar conocimiento, sabiduría o conceptos. El patrón debe ser único, capaz de ser enviado por un transmisor y detectado e interpretado por un receptor. Cuando la comunicación se realiza entre humanos por lo general se transmite en forma de sonido, luz o texturas, de tal manera que los sentidos del oído, vista y tacto puedan percibir la información. La comunicación electrónica utiliza circuitos electrónicos para dicho propósito. Cualquiera que sea el tipo de información debe convertirse a energía electromagnética antes de que se propague por un sistema de comunicaciones electrónicas. Cualquier sistema de comunicación cuenta con tres elementos básicos: transmisor, canal o medio de transmisión y receptor. Los sistemas de comunicaciones pueden transferir información en una dirección o en ambas, es decir, el transmisor de la estación 1 puede transmitir a la estación 2 y ésta puede enviar contestación a la estación 1 o no hacerlo.

Page 9: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 1.6 Sistema de comunicación en una dirección

Figura 1.7 Sistema de comunicación en ambas direcciones

Existen dos tipos básicos de sistemas de comunicación electrónica: analógicos y digitales. En el sistema de comunicaciones analógico la señal analógica se transmite y se recibe en forma analógica, es decir con variaciones continuas, como la voz, información sobre imágenes o videos, la música, etc. En los sistemas de comunicaciones digitales, la señal digital de transmite y se recibe en forma digital o discreta (niveles discretos de voltaje como +5V y tierra), como un código binario, con codificaciones variadas tales como códigos alfanuméricos, símbolos gráficos, códigos operacionales de un microprocesador o microcontrolador, etc. Es los sistemas de comunicación puede ser que la fuente no contenga la información en un formato adecuado para su transmisión, por lo tanto, la información se debe adecuar para transmitirse. Por ejemplo en los sistemas de comunicación digital, la información se convierte a digital antes de su transmisión y en los sistemas analógicos la información se convierte a la forma analógica antes de su transmisión. Para lograr la conversión de la información a la forma adecuada para su transmisión, se utilizan transductores, sensores o convertidores de señal, los cuales convierten el mensaje o datos a una señal eléctrica la cual podemos transmitir por el canal de transmisión. La Figura 1.8 muestra el sistema de comunicaciones electrónicas básico.

Figura 1.8 Sistema de comunicaciones electrónicas

En el sistema de comunicación electrónico el transductor es un dispositivo que transforma o convierte una señal o variable física de entrada a una distinta de salida, un ejemplo de transductor son los sensores los cuales convierten una variable física o química en una señal eléctrica o voltaje. El transmisor se encarga de modificar la señal para la transmisión eficiente, es decir, acopla la señal de entrada al canal de transmisión; sus principales funciones son:

Amplificar

Page 10: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Modular Filtrar Codificar Encriptar

El canal de transmisión es el medio que permite el enlace entre el transmisor y el receptor para que se lleve a cabo la transferencia de información. Los sistemas de comunicaciones electrónicas pueden manejar la comunicación en una sola dirección o en ambas direcciones. A esto se le denomina modo de transmisión. Considerando dos estaciones interconectadas punto a punto, son posibles los siguientes modos de transmisión: Simplex. La transmisión ocurre en un solo sentido, una estación puede ser un receptor o un transmisor, pero no ambos. Por ejemplo las radiodifusoras.

Figura 1.9 Transmisión en modo Simplex

Half–Duplex. La transmisión ocurre en ambas direcciones, pero no al mismo tiempo, una estación puede ser receptor o transmisor pero no los dos a la vez, por ejemplo los radios walkie–talkie .

Figura 1.10 Transmisión en modo Half-Duplex

Full–Duplex. Las transmisiones pueden ocurrir en ambas direcciones al mismo tiempo. A este modo de transmisión también se le llama líneas simultáneas de doble sentido, aquí una estación puede transmitir y recibir simultáneamente, el sistema telefónico es un claro ejemplo.

Figura 1.11 Transmisión en modo Full-Duplex

Full/ Full Duplex. Con este modo tripartido es posible transmitir y recibir simultáneamente, pero no necesariamente entre dos estaciones, es decir, una estación puede transmitir a una segunda estación y recibir de una tercera al mismo tiempo. Este modo de transmisión es casi exclusivo de circuitos de comunicación de datos, por ejemplo el sistema postal.

Figura 1.12 Transmisión en modo Full-Full-Duplex

El canal o medio de transmisión en un sistema electrónico se puede dividir en dos grupos:

Page 11: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Cables. El cable es un conductor o conjunto de ellos generalmente recubierto de un material aislante o protector, utilizados para formar redes de comunicación. Al utilizarse se debe considerar la velocidad de transmisión que se requiere, la distancia máxima entre estaciones y los niveles de ruido al que será expuesto. Los cables más utilizados son el par trenzado, el cable coaxial y la fibra óptica. Medios inalámbricos. Medio de transmisión que utiliza la modulación de ondas electromagnéticas para la transmisión de información. Las ondas electromagnéticas se propagan por el espacio sin un medio físico que las guie, ya que los dispositivos físicos sólo existen en los emisores y receptores de las señales, como pueden ser antenas, teléfonos móviles, etc. Variando el rango de frecuencia de transmisión se puede transmitir datos a niveles de distintas frecuencias como: microondas, infrarrojo, etc.

1.1.5 Sistemas de control a distancia Actualmente la conectividad entre dispositivos electrónicos que cuenten con un microcontrolador en comunicación con un controlador de red, es un tema en crecimiento dentro de la industria y las aplicaciones de consumo general. Ethernet es el medio más popular para la interconexión de dispositivos, ya que cuenta con un vasto campo de aplicación, un bajo costo de implementación, fácil manejo y escalabilidad. Con la conectividad Ethernet los dispositivos pueden conectarse a internet y comunicarse con otros dispositivos alrededor del mundo. Los dispositivos con conectividad Ethernet pueden implementar aplicaciones como:

Controlar hardware desde una página de internet. Monitoreo remoto (transmisión o visualización) del estado actual de sensores. Conexión a base de datos. Reprogramación remota de la memoria del microcontrolador o cerebro del dispositivo. Envió de mail e intercambio de archivos vía FTP. Control de acceso Control de edificios Video monitoreo

Estas aplicaciones enmarcan gran variedad de ambientes laborales, por ejemplo.

Aeropuertos Hospitales Bancos Centros comerciales Compañías celulares Bases militares Escuelas Oficinas Industrias

1.2 Descripción del problema Como se ha mencionado los sistemas basados en microcontroladores integran múltiples aplicaciones y soluciones a cualquier proceso industrial, comercial, escolar etc. Sin embargo es posible incrementar el alcance de estas soluciones si incorporamos el sistema a una red de comunicación que permita la interacción con otros equipos de manera remota ya que estos sistemas, controlando un proceso de manera aislada, no resultan del todo prácticos ni eficientes, pero si la tarea de comunicación puede ser delegada al microcontrolador sin incrementar significativamente el número de componentes al diseño del sistema se acrecenta el alcance de la solución. En la actualidad el estudiante de ingeniería eléctrica electrónica o afines, debe tener un acercamiento a los sistemas de control a distancia y comprender su funcionamiento, así durante su formación académica debe interactuar con sistemas de control que operen dentro de redes de comunicación y le permitan conocer los alcances, ventajas y desventajas que estos sistemas presentan.

Page 12: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Y aun cuando de manera comercial ya existen algunos sistemas que pueden proveer al estudiante de este conocimiento, tienen las siguientes desventajas:

Un elevado costo La pila de protocolos no siempre se adquiere con el sistema, lo que añade costo adicional al producto final Las pilas difieren unas de otras en funcionalidad Algunas pilas no son de libre distribución No siempre se cuenta con documentación adecuada sobre el uso de estas pilas

Page 13: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

2

Conceptos de Redes

2.1 Contexto histórico de las redes 2.2 Conceptos generales de redes 2.3 Clasificación de redes

2.3.1 Redes LAN 2.3.2 Redes MAN 2.3.3 Redes WAN

2.4 Topologías de red 2.4.1 Estrella 2.4.2 Anillo 2.4.3 Bus

2.5 Medios de transmisión 2.5.1 Medios cableados 2.5.2 Medios inalámbricos

2.6 Modelo de comunicación OSI 2.6.1 Capa física 2.6.2 Capa de enlace de datos 2.6.3 Capa de red 2.6.4 Capa de transporte 2.6.5 Capa de sesión 2.6.6 Capa de presentación 2.6.7 Capa de aplicación

2.7 Norma 802.3 de IEEE para redes de área local 2.7.1 Norma 802.3 2.7.2 Direcciones Físicas 2.7.3 Formato de las tramas físicas

Page 14: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Se presentan los conceptos generales de las redes, sus topologías más comunes, los tipos que existen y una descripción del modelo de comunicación de Interconexión de Sistemas Abiertos, OSI (Open System Interconnection), que es un modelo de referencia para el diseño de protocolos de redes. Una red se define como un conjunto de sistemas interconectados entre sí que comparten información y recursos entre ellos.

2.1 Contexto histórico de las redes A principios del año 1968 el Departamento de Defensa de Estados Unidos aprobó y financió un proyecto que pretendía conectar universidades y otras instituciones con la finalidad de realizar investigaciones sobre nuevas tecnologías para compartir recursos e intercambiar información. Así fue como nació ARPANET (Red de la Agencia de Proyectos Avanzados de Investigación), la primera red de dispositivos, usada para la investigación y asuntos militares, con el propósito principal de descentralizar los servidores del Departamento de Defensa de Estados Unidos. Con esta red se realizó el primer envío de datos. Muy pronto se empezó a extender ARPANET y se fueron añadiendo más universidades a ella. La red funcionaba pero presentaba fallas frecuentemente y sus protocolos eran lentos. Tiempo después, entre 1980 y 1982, ARPANET adoptó el Protocolo de Control de Transmisión y el Protocolo de Internet (TCP/IP), que ya tenían varios años de haberse creado. De forma separada al proyecto ARPANET, en 1972 en el Centro de investigaciones Xerox, en California, se comenzó a desarrollar un proyecto que pretendía conectar las computadoras de dicho centro de investigaciones y cualquier otra computadora que se quisiera. En 1973 este proyecto se denominó Ethernet y ya funcionaba dentro del centro de investigaciones con varias características que actualmente tiene la tecnología Ethernet1. Posteriormente ARPANET se dividió en dos partes, una seguía estando dedicada a la investigación, pero el Departamento de Defensa de Estados Unidos decidió crear otra red dedicada especialmente a los fines militares, ésta se llamó MILNET. ARPANET continuó funcionando y se siguieron agregando redes a ella. Al unirse NSFNet (National Science Foundation's Network) fue que se empezó a utilizar el término Internet, para nombrar a cualquier red de área extensa que utilizara el protocolo TCP para la comunicación. Para principios de los años 90 el correo electrónico ya no era novedad, pero estaba por iniciar un avance importante en las redes, la WWW (World Wide Web, amplia red mundial), una interfaz gráfica y con texto que pronto se convirtió en la preferida para enlazar a los usuarios a Internet. Fue entonces cuando surgieron los primeros navegadores, dada la creciente demanda del uso de hipertextos. Durante varios años el medio utilizado para la comunicación de redes fue la línea telefónica, a pesar de no tener la capacidad que se requiere para transportar datos. Fue hasta finales de los años 90 y principios de la siguiente década cuando aparece la conexión de ―banda ancha y comienza a ser cada vez más utilizada para transferencia de datos, que para estos años ya no sólo era texto, sino imágenes, audio y video, lo cual requiere una alta velocidad en la transferencia. En su inicio, las redes eran utilizadas por personas especializadas en el tema, pero con el tiempo el conocimiento requerido para poder usarlas se ha vuelto más intuitivo. Actualmente las redes ya forman parte de la vida cotidiana para muchas personas que deben usar dispositivos conectados entre sí, como cajeros automáticos, computadoras, cajas registradoras, verificadores de hora de entrada y salida, entre muchos otros.

2.2 Conceptos generales de redes A cada uno de los sistemas que pertenecen a una red se le conoce como nodo de red y existen dos tipos: nodos terminales y nodos de conmutación. Un nodo terminal, o simplemente nodo, es el que genera y emite

1 Llamado así en referencia a la teoría (errónea) de física que argumentaba que las ondas electromagnéticas viajaban a través de un

fluido llamado éter.

Page 15: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

datos (llamado emisor o remitente) y el que los recibe como destino final (conocido como receptor o nodo destino). Un nodo de conmutación es el que conecta diferentes redes. Los nodos se conectan entre ellos a través de un medio físico al cual se le conoce como medio de transmisión y puede ser por ejemplo un cable. Los nodos son generalmente computadoras, pero puede ser cualquier dispositivo que forme parte de la red. Los términos equipo, dispositivo, host (en inglés) y máquina son formas de llamar a los nodos. Se define como red física al conjunto de nodos interconectados directamente por hardware. Las redes físicas pueden estar basadas en diferentes tecnologías, por ejemplo Ethernet2 y cada red física cumple una serie de normas establecidas para la tecnología de red con la que se diseña, incluyendo aspectos como la codificación empleada para representar los datos, la velocidad de transmisión, la forma de interconectar los nodos, entre otros. En el nivel físico se especifican direcciones físicas que identifican de manera única a cada nodo dentro de la red. Para comunicar un nodo con otro se hace uso de sus direcciones físicas, también llamadas direcciones hardware y para el caso específico de Ethernet se llaman direcciones MAC. En la tecnología Ethernet se especifica el uso de un nodo central al cual se conectan todos los demás, como se muestra en la Figura 2.1. Dicho nodo es un nodo de conmutación denominado concentrador (hub). Cada vez que un nodo tiene información que transmitir a otro envía el paquete al concentrador y éste decide por cual línea de salida reenviar la información. El concentrador necesita conocer las direcciones físicas de todos los dispositivos conectados a él ya que toma decisiones basadas en la dirección física que se indica en el paquete de datos.

Figura 2.1 Red física con tecnología Ethernet

Una red de redes es un conjunto de redes físicas interconectadas en donde la tecnología de cada una es independiente de las demás. Se utiliza un software de bajo nivel que maneja la comunicación e interconexión del hardware y ofrece funciones a las capas de alto nivel en las que se ocultan los detalles de la implementación física de la red y permite que los nodos se comuniquen entre ellos sin importar a que red pertenecen, haciendo que parezca una sola red uniforme. Este diseño permite que los programas de aplicación sean independientes de la tecnología de red utilizada. La red de redes permite enviar datos a través de redes intermedias sin necesidad de que los nodos origen y destino estén conectados directamente. Para que esto sea posible cada máquina debe poseer un identificador o dirección dentro de la red de redes para que cualquier equipo pueda acceder a ella. Esta dirección se denomina dirección de red, o dirección lógica, y es diferente de la dirección física, ya que especifica la ubicación de la red en donde reside el dispositivo. Para interconectar redes se emplea un dispositivo llamado de forma general compuerta de red, y particularmente puede ser un ruteador (router) o una puerta de enlace (Gateway). Una compuerta de red es un equipo que conecta redes físicas, de la misma manera que un concentrador conecta dispositivos. Así como el concentrador utiliza las direcciones físicas de los dispositivos conectados a él para saber a qué dispositivo encaminar los paquetes, la compuerta de red utiliza las direcciones de red para saber hacia qué red dirigir el tráfico. Un ruteador interconecta redes que utilicen un mismo protocolo en la capa de red, por ejemplo IP, y una puerta de enlace interconecta redes que utilizan diferentes protocolos.

2 La tecnología Ethernet se explica con más detalle en el apartado 2

Page 16: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Figura 2.2 Diferentes redes físicas conectadas a través de ruteadores

Las compuertas de red utilizan algoritmos de encaminamiento basados en las direcciones de red de los paquetes que requieren enviar. Los algoritmos de encaminamiento seleccionan la mejor ruta para cada paquete calculando el siguiente salto. Se llama ―un salto cada vez que el paquete atraviesa una compuerta de red para pasar de una red a otra, de tal manera que si un paquete que sale del nodo A dirigido hacia el nodo B pasa en su camino por dos compuertas de red, el paquete realizó dos saltos. La ruta de los paquetes desde el origen hasta el destino consiste en una sucesión de saltos. Cuando el paquete llega a la red final se utiliza el direccionamiento físico para saber a qué dispositivo de la red física tiene que ser entregado.

Figura 2.3 Sucesión de saltos de un paquete desde el nodo A hasta el nodo B

Una red de redes puede ser vista como una red virtual, en donde los dispositivos conectados a ella se comportan como si todos estuvieran en una gran red física conectados directamente unos a otros, sin importar lo que ocurra dentro de la red virtual. No es posible para dos dispositivos de diferentes redes comunicarse de manera directa, pero este aspecto es transparente para ellos. A la red de redes más grande que engloba a todas las redes existentes interconectadas se le denomina Internet.

Figura 2.4 Red de redes vista como una sola red

2.3 Clasificación de redes La extensión geográfica de la red y la manera en que se interconectan los nodos determina su clasificación en función de parámetros de velocidad y recursos a los que puede acceder de manera directa.

2.3.1 Redes LAN Las Redes de Área Local, o LAN (Local Area Network), son aquellas que se distribuyen en un radio de 10 m a 1 Km aproximadamente, generalmente se localizan en pisos de algún edificio, en el edificio completo o en edificios adyacentes.

Page 17: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

Características La velocidad de transmisión va desde 10 Mbps hasta 2000 Mbps3. Por ocupar un espacio menor que otro tipo de redes, la velocidad de transmisión es relativamente alta comparada con la velocidad de las redes MAN o WAN. Cada nodo de la red puede tener acceso a archivos, aplicaciones y recursos de hardware conectados a la red. Los nodos pueden comunicarse entre ellos sin necesidad de acceso a una red más grande como Internet. Los retardos pueden llegar hasta los 10 ms4.

2.3.2 Redes MAN Las Redes de área Metropolitana, o MAN (Metropolitan Area Network), son las que ocupan un radio entre 1 y 100 km aproximadamente. Pueden ocupar partes de una ciudad o ciudades completas. Generalmente son redes tipo LAN interconectadas pero por su extensión no pueden ser consideradas una red LAN o WAN. El caso particular de las conexiones ADSL, usada por la mayoría de las personas con acceso a internet desde casa, entra en la clasificación de redes MAN ya que la conexión se puede realizar siempre y cuando el cableado que va del cliente a la central no exceda los 5 Km.

Características Para conectar varias redes LAN y formar una red MAN se requieren nodos de conmutación. La velocidad de transferencia es mayor que la de una red WAN pero menor a la de una red LAN, debido a que los nodos de conmutación agregan un retardo a los datos enviados.

2.3.3 Redes WAN Las Redes de Área Extensa, o WAN (Wide Area Network), son aquellas que se distribuyen en distancias mayores a 100 Km. Pueden abarcar hasta continentes enteros.

Características Las velocidades de transferencia de datos van desde los 56 kbps hasta los 155 Mbps5. Las redes de área extensa necesitan diferentes tipos de nodos de conmutación para comunicar nodos que pueden pertenecer a diferentes tipos de redes.

2.4 Topologías de red La topología (del griego topos=lugar y logos=estudio) es la forma de conectar los nodos dentro de una red. La topología es relevante ya que la velocidad de transmisión y la cantidad de cable utilizado para las conexiones afectan de diferente forma el rendimiento de la red según se elija una topología u otra. Esto hace que cada topología tenga ventajas y desventajas frente a las demás. Las topologías utilizadas en redes se presentan a continuación.

2.4.1. Estrella Esta topología consiste en conectar todos los nodos a un nodo principal, de tal forma que el nodo principal funcione como un intermediario para los demás. Esta topología es utilizada generalmente en redes locales y el nodo principal puede ser un ruteador, un conmutador o un concentrador.

3COMER, DOUGLAS E. Redes globales de información con Internet y TCP/IP Vol.1; Principios básicos, protocolos y arquitectura, 3ª edición: Prencitce-Hall, 1996. Página 19. 4COMER, DOUGLAS E. Obra citada, 1996. Página 19. 5COMER, DOUGLAS E. obra citada, 1996. Página 19.

Page 18: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 2.5 Topología en estrella

Ventajas Todos los nodos pueden enviar información y recibirla sin que tenga que pasar por los demás nodos. Sin un nodo falla el funcionamiento de la red no se ve afectado. No se necesitan conectores especiales para introducir equipos nuevos a la red. La implementación es sencilla. Desventajas Si el nodo principal falla la red deja de funcionar por completo. Requiere mayor cantidad de cable comparada con la topología en anillo o en bus.

2.4.2. Anillo Esta topología consiste en conectar cada nodo de la red con el siguiente nodo, y el siguiente con el que le sigue y así sucesivamente hasta que el último nodo se conecte al primero. En esta topología los datos sólo viajan en una dirección, por lo que al enviar información, por ejemplo, del primer nodo al último, la información debe pasar por todos los nodos, no así si el último requiere enviar información al primero, ya que esa conexión es directa. Debido a esto existe también la topología en anillo doble, lo que permite conectar a un grupo de nodos de la misma forma pero el envío de datos puede ir en ambos sentidos.

Figura 2.6 Topología en anillo

Ventajas Su implementación es sencilla. El cableado es menor al requerido en otras topologías. Desventajas Si un nodo de la red falla, la comunicación en toda la red se pierde. Los datos, generalmente, deben pasar por muchos nodos antes de llegar a su destino.

2.4.3. Bus Esta topología consiste en un solo canal de comunicación que comparten todos los nodos de la red, para poder comunicarse se deben establecer permisos para ocupar el medio ya que las colisiones se presentan con frecuencia.

Page 19: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 2.7 Topología en bus

Ventajas El cableado es considerablemente menor que el de la topología en estrella. Desventajas El medio debe estar correctamente terminado en los extremos del bus, si no la red puede tener fallos. Las colisiones son constantes y provocan problemas en la red, se requieren métodos para evitarlos. Se requieren conectores especiales para agregar nuevos nodos a la red.

2.5 Medios de transmisión El medio por el que son transportados los datos determina cuestiones como la velocidad de transmisión (en bps, bits por segundo), el nivel de interferencia u otros ruidos6 que pueden sufrir las señales con los datos. Este medio puede ser cableado o inalámbrico.

2.5.1 Medios cableados Los medios de transmisión cableados son aquellos que utilizan algún tipo de cable para transportar los datos. Estos cables por lo general están hechos de cobre cubiertos por algún aislante y con recubrimiento plastificado. Existen varios tipos de medios cableados. A continuación se presentan los que se utilizan para cableado en redes de computadoras. Cable coaxial. Es un cable compuesto por un núcleo conductor (cobre generalmente) con un aislante o dieléctrico, el cual es cubierto a su vez por una malla delgada de metal conductor (cobre generalmente) y un capa aislante plastificada. En la Figura 2.8 se indican las secciones que conforman un cable coaxial.

Figura 2.8 Secciones de un cable coaxial7

El núcleo del cable es el que lleva los datos; el aislante o dieléctrico separa el núcleo de la malla metálica, esta malla es la referencia a tierra. La cubierta plastificada sirve para aislar todo el cable y protegerlo de la intemperie. El cable puede estar apantallado o no, el apantallamiento consiste en una capa de algún material (generalmente aluminio) entre la malla metálica y el dieléctrico y se usa para evitar ruido en la señal. Cable de pares trenzados. Este tipo de cable consiste en determinado número de pares de cables de cobre de 1mm de espesor generalmente, aislados con un recubrimiento plástico, torcidos en pares y envueltos en un recubrimiento plástico que contiene a todos los pares del cable. El propósito de trenzar los pares de cables es

6 El ruido es cualquier perturbación que modifique de forma indeseada la señal que se transmite. La interferencia es la señal que se

produce cuando una señal altera la integridad de otra. La interferencia es un caso particular del ruido, ya que es una perturbación

provocada generalmente por la superposición de la señal deseada y alguna otra señal no deseada. 7 Tanenbaum, Andrew S. Redes de computadoras. 4ª edición: Prentice Hall. 2003. Página 74.

Page 20: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

aislar los hilos de la interferencia eléctrica y magnética que se provoca por los pares cercanos a cada par y por otros dispositivos externos. En la Figura 2.9 se presenta un cable de cuatro pares trenzados.

Figura 2.9 Cable de 4 pares trenzados

Cada hilo en un cable de par trenzado tiene un color diferente, estos colores están estandarizados para una fácil identificación y armado del cableado de una red. Los colores para este tipo de cable con cuatro pares de hilos son:

Blanco–Azul Azul Blanco–Verde Verde Blanco–Marrón Marrón Blanco–Naranja Naranja

El cable de pares trenzados puede ser blindado (Shielded Twisted Pair, STP) o sin blindar (Unshielded Twisted Pair, UTP). El primero tiene una malla metálica que recubre los pares trenzados mientras que el segundo carece de ella. El blindaje es primordialmente para evitar ruido en las señales que viajan por los pares trenzados, el más usado es el UTP. Existen diferentes categorías de cable, cada una con características eléctricas propias que los hacen adecuados para diferentes aplicaciones.

Categoría 1. Hace referencia al cable telefónico tradicional que resulta adecuado para transmitir voz, pero no datos. La mayoría de los cables telefónicos instalados antes de 1983 eran cables de Categoría 1. Categoría 2. Esta categoría certifica el cable UTP para transmisión de datos de hasta 4 Mbps. Este cable consta de cuatro pares trenzados de hilo de cobre. Categoría 3. Esta categoría certifica el cable UTP para transmisión de datos de hasta 10 Mbps aproximadamente. Consta de cuatro pares trenzados de hilo de cobre con tres entrelazados por pie. Categoría 4. Esta categoría certifica el cable UTP para transmisión de datos de hasta 16 Mbps aproximadamente. Consta de cuatro pares trenzados de hilo de cobre. Categoría 5. Esta categoría certifica el cable UTP para transmisión de datos de hasta 100 Mbps aproximadamente. Consta de cuatro pares trenzados de hilo de cobre.

Para armar el cableado de una red con cable de pares trenzados se tienen dos configuraciones con propósitos particulares, cada una estandarizada en una norma que asigna un color diferente a cada terminal del conector RJ45, la norma 568A y la 568B. En la Figura 2.10 se muestra la configuración especificada por cada una de las normas.

Figura 2.10 Normas para la configuración de cables de pares trenzados

Page 21: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Fibra óptica. Consiste en un hilo delgado, llamado núcleo, de fibra de vidrio o algún material plástico recubierto con un aislante. Por este núcleo pasan rayos de luz hasta llegar al otro extremo haciendo uso de la propiedad de reflexión. Este medio alcanza velocidades de transmisión de hasta 1000 Mbps y es muy utilizado en telecomunicaciones debido a que es prácticamente inmune a interferencias y la atenuación que sufren las señales transmitidas es muy baja. Existen dos tipos de fibra óptica: Multimodo. El núcleo tiene un diámetro de 200 micrómetros, lo cual hace que la luz pueda tomar diferentes caminos hasta llegar al otro extremo de la fibra.

Ventajas

Es más económico que la fibra monomodo. Es más fácil de conectar que la fibra monomodo ya que el diámetro del núcleo es mucho mayor y se pueden usar materiales de menor precisión para las conexiones.

Desventajas

Solo se pueden utilizar en distancias menores a 1 Km. Monomodo. El núcleo tiene un diámetro entre 8 y 10 micrómetros, lo cual hace que la luz sólo pueda seguir un solo camino hasta el otro extremo de la fibra.

Ventajas

Su velocidad de transmisión se encuentra en el orden de decenas de Gbps. Se puede usar en largas distancias, 300 Km como máximo.

Desventajas

Entre menor sea el diámetro del núcleo la fibra y los materiales para las conexiones serán más costosos.

En la Tabla 2-1 se presenta un bosquejo del diámetro de los dos tipos de fibra y un esquema del modo de propagación que utiliza cada uno.

Tabla 2-1 Sección transversal y esquema de modo de propagación de los tipos de fibras ópticas

Diámetro

Esquema del modo de propagación

Fibra multimodo

Fibra monomodo

2.6.2 Medios inalámbricos Los medios inalámbricos son aquellos que no son guiados mediante un cable y refieren al aire o el vacío, ya que es a través de éstos por donde se propagan las señales. Debido a esto se hace necesario el uso de antenas para la transmisión y recepción de las señales. Las microondas, las señales de radio, TV comercial, infrarrojo y bluetooth son algunos ejemplos de señales que viajan por un medio inalámbrico.

Page 22: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

2.6 Modelo de comunicación OSI

.

Para estudiar los sistemas de comunicaciones de redes, se emplea un modelo conceptual en el que el trabajo de transportar información de un lugar a otro se divide en niveles, llamados comúnmente capas, donde cada una tiene una tarea específica dentro de la comunicación. El modelo OSI (Interconexión de Sistemas Abiertos) es un modelo conceptual creado por la ISO (International Organization for Standardization) que sirve como referencia cuando se requiere realizar la implementación de una pila de protocolos. Los protocolos son especificaciones y reglas que indican el procedimiento que se debe seguir en cada etapa de la comunicación, sirven para que dos equipos que se comunican a través de una red puedan entenderse e interpretar de manera correcta la información que comparten. El modelo OSI se divide en siete niveles o capas. Cada capa de un nodo emisor se comunica virtualmente con la misma capa del nodo destino y físicamente con la capa inferior y la capa superior. En la Figura 2.11 se presenta un diagrama del modelo OSI. Las líneas punteadas indican la comunicación virtual entre las mismas capas de ambos nodos y las líneas sólidas la comunicación física dentro de un mismo nodo. Cuando una capa le entrega datos a otra de un nivel inferior se dice que el nivel inferior encapsula los datos, agregándole sus encabezados. Un encabezado es un conjunto de bits que un protocolo añade a la información. Cada protocolo define cierto número de bits, especifica su contenido y formato, así como la acción que se debe realizar dependiendo del valor de los bits del encabezado. El flujo de los datos inicia en la capa de aplicación cuando existe información para enviar a otra aplicación en un equipo remoto. Los datos se pasan de la capa de aplicación a la de presentación, donde se añaden los encabezados de esta capa, pasando posteriormente a la de sesión, agregando los encabezados correspondientes y así sucesivamente con el resto de las capas hasta llegar a la capa física donde los datos son convertidos en señales que finalmente se transmiten por el medio físico. En el lado receptor se ejecuta el proceso inverso, las señales son recibidas por el medio físico, donde se convierten en datos y se pasan a la capa de enlace. La capa de enlace verifica el contenido del encabezado correspondiente para realizar sus funciones, posteriormente pasa los datos a la capa de red y así sucesivamente hasta ser entregados a la aplicación correspondiente.

Page 23: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 2.11 Diagrama con la división de capas del modelo OSI8

.

A continuación se presenta un ejemplo para explicar el funcionamiento del modelo de referencia OSI, haciendo una analogía con mensajes escritos en papel y enviados con un mensajero.

Ejemplo. Modelo de comunicación Empresario–Secretaria–Mensajero9. Este modelo está dividido en varios niveles, cada uno realiza actividades específicas y bien definidas que son indispensables para que los mensajes lleguen a su destino. En cierta ciudad hay dos edificios separados por varias calles, uno pertenece a la empresa A y el otro a la empresa B, encabezadas por sus respectivos directivos: el empresario A y el empresario B; los cuales hablan idiomas diferentes y solamente su idioma. Cada empresario tiene una secretaria, que habla el idioma de su jefe y además otro que ambas conocen. El asunto importante es que los empresarios deben comunicarse constantemente ya que cada empresa depende de la otra. Analizando el flujo de los datos: En el edificio que emite el mensaje. El empresario A escribe el mensaje que requiere enviar al empresario B y llama a su secretaria para entregárselo. La secretaria recibe el mensaje y lo traduce al idioma que ella y la otra secretaria conocen. Luego de hacer la traducción le pone el sello de la empresa, lo coloca dentro de un sobre y escribe el nombre de la

8 Tanenbaum, Andrew S. obra citada. Página 37.

9 Basado en el ejemplo presentado en Tanenbaum, Andrew S. obra citada. Páginas 29 y 30.

Page 24: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

secretaria a la cual va dirigido, el nombre de la secretaria que lo envía y la hora de salida. Entonces, llama al mensajero y le entrega el sobre. La actividad del mensajero consiste en colocar el sobre en su mochila y recorrer el trayecto en bicicleta hasta el edificio B. Al llegar saluda al mensajero que se encuentra en la entrada y le entrega el mensaje. En el edificio que recibe el mensaje. El mensajero recibe el sobre, revisa el nombre de la secretaria a la que va dirigido y se lo entrega en persona. La secretaria revisa que su nombre esté escrito en el sobre, lo abre para leer el contenido y poder traducirlo en el idioma que su jefe entiende. Una vez traducido, va a la oficina de su jefe y le entrega el mensaje. El empresario recibe la traducción del mensaje y comienza a leerlo. Es importante notar que los mensajeros tienen comunicación entre sí, al igual que las dos secretarias y los empresarios (lo cual es el objetivo) aunque el flujo de los datos realmente sea Empresario–Secretaria– Mensajero del lado emisor y Mensajero–Secretaria–Empresario en el lado receptor. En la Figura 2.12 se presenta un diagrama con las capas que conforman este modelo de comunicación.

Figura 2.12 Diagrama con la división en capas del modelo de comunicación Empresario-Secretaria-Mensajero

A continuación se describe la función de las capas del modelo OSI.

2.6.1 Capa física La capa física determina cuestiones tales como el medio físico por donde se transmite la información, la codificación que se emplea, los niveles de voltaje, la forma en que se interconectan los dispositivos de la red y los tipos de conectores necesarios, entre otras. En este nivel la unidad de datos son los bits.

2.6.1.1 Conmutación

La conmutación es una parte importante en una red ya que los conmutadores encaminan los datos para que lleguen a su destino. Los métodos de conmutación más comunes son los siguientes. Conmutación de circuitos. En la conmutación de circuitos el nodo que requiere enviar datos debe tener una ruta previamente establecida entre el nodo receptor y el nodo emisor. Esto se ve más claramente en la línea telefónica, ya que para establecer una comunicación, al marcar el número se busca el camino que deben seguir los datos y una vez definido se entabla la comunicación.

Page 25: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Conmutación de paquetes. Consiste en enviar paquetes, que contienen datos o información de control, a centrales de conmutación. En cada paquete se especifica el destino de modo que la central de conmutación sepa a dónde dirigirlo. En la Figura 2.13 a) se muestra cómo se realiza la conmutación de circuitos y en la Figura 2.13 b) la conmutación de paquetes de datos. Los IMP (Interface Message Processor) fueron los primeros circuitos que realizaban la conmutación de paquetes en redes como ARPANET. Los nodos de conmutación funcionan como las centrales de conmutación de paquetes y es común en la literatura de redes encontrar el término central de conmutación o IMP como sinónimo de nodo de conmutación.

Figura 2.13 a) Conmutación de circuitos. b) Conmutación de paquetes de datos10

2.6.1.2 Códigos de línea

Otro punto importante que se trata en la capa física refiere a la codificación de los datos, es decir, la conversión de datos en señales para poder ser transmitidos por un medio físico y viceversa. Se llama código de línea al código aplicado a los datos con el propósito de que sean transmitidos físicamente. Se han desarrollado diferentes tipos de códigos de línea para codificar datos de tal forma que el receptor pueda identificar qué valor debe tener un determinado bit en una señal. Los bits se representan con niveles de voltaje, generalmente un nivel de voltaje alto representa un uno lógico y un nivel bajo representa un cero lógico, pero las representaciones pueden variar, además es necesario que los datos estén sincronizados con un reloj para determinar dónde empieza y dónde termina un bit y poder leer todos los bits de una señal. Existen tres tipos de codificación:

No retorno a Cero, o NRZ (Non Return to Zero). Cada bit mantiene el mismo valor durante todo el ciclo de reloj, ya sea el nivel alto o bajo de voltaje. Retorno a Cero, o RZ (Return to Zero). Cada bit ocupa la mitad del ciclo de reloj para representar su valor y la otra mitad del ciclo su valor es cero volts. Codificación Bifase. Los bits presentan una transición entre voltaje alto y voltaje bajo a la mitad del ciclo de reloj que indica de qué valor lógico se trata.

Cada tipo de codificación utiliza métodos particulares, por ejemplo, la tecnología Ethernet utiliza un método denominado Manchester, el cual es un tipo de codificación bifase. Con este método el receptor se puede sincronizar usando la señal que contiene los datos al tomar de ella los tiempos de bit, es decir, la

10 Tanenbaum, Andrew S. obra citada, página 113.

Page 26: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

señal de reloj está incluida dentro de la misma señal de datos(ver Figura 2.14). Aun cuando la codificación Manchester ocupa el doble de ancho de banda que una codificación NRZ, la sincronía es la que permite desechar muchas veces otros métodos para codificar datos. En la codificación Manchester siempre hay una transición en la mitad del intervalo de tiempo de bit. Se toman los cambios de la señal alto–bajo y bajo–alto como la representación lógica de un cero o un uno respectivamente. El receptor puede sincronizarse con el transmisor usando las transiciones en la señal de datos como señal de reloj. Si se presentan bits adyacentes con el mismo valor, se produce una transición en el inicio del segundo bit, la cual no es tomada en cuenta por el receptor al momento de decodificar, sólo las transiciones separadas uniformemente en el tiempo son las que se consideran.

Figura 2.14 Codificación Manchester

2.6.2 Capa de enlace de datos El propósito de este nivel es asegurar la entrega de paquetes entre dos equipos conectados directamente (equipos que pertenecen a una misma red física). Garantiza que la capa de red del receptor reciba datos libres de error, fragmenta la información si es necesario, controla el correcto acceso al medio y verifica que los paquetes que se han entregado a un destino correspondan a los que se enviaron desde el origen y que estén en el mismo orden. La unidad de datos que maneja este nivel se denomina trama. Para crear y reconocer tramas, el nivel de enlace delimita su inicio y su fin, además de detectar si fueron recibidas correctamente o no. En general la capa de enlace ofrece cuatro servicios a la capa de red:

Transferencia de datos Control de errores Control de Flujo Creación de tramas

La capa de enlace se divide en la subcapa de Control de Acceso al medio, o MAC (Medium Access Control), que se encuentra ubicada sobre la capa física e interactúa directamente con ella, y la subcapa de Control de Enlace Lógico, o LLC (Logical Link Control), ubicada debajo de la capa de red.

2.6.2.1 Subcapa de Control de Acceso al Medio.

Cuando la red comparte el medio de transmisión entre todos sus dispositivos, la capa de enlace establece mecanismos que determinan quien tiene derecho a usar el medio para transmitir. A estos mecanismos se les llama métodos de contienda por el acceso al medio. Para asignar el acceso al medio se han diseñado protocolos que permiten evitar colisiones entre paquetes cuando varios nodos requieren enviar datos por el mismo medio. Se denominan protocolos CSMA (Carrier Sense Multiple Access, Protocolos de Múltiple Acceso al Medio por Detección de Portadora) a los protocolos en los que los nodos que envían datos monitorean el estado del medio de transmisión para determinar en qué momento éste se encuentra libre y es posible enviar información. Hay varios tipos de protocolos CSMA, pero el más utilizado es el que implementa la detección de colisiones (CD, Collision Detect), denominado CSMA/CD. El protocolo CSMA/CD tiene ventajas sobre otros protocolos, debido a que además de verificar si el medio de transmisión está desocupado, le brinda a todos los nodos el mismo derecho de usarlo. Si dos o más nodos envían datos al mismo tiempo se presenta una colisión y los nodos involucrados detienen inmediatamente la transmisión, esperan un intervalo de tiempo aleatorio y vuelven a ejecutar el algoritmo.

Page 27: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

2.6.2.2 Subcapa de Control de Enlace Lógico.

La Subcapa de Control de Enlace Lógico provee los mecanismos de control de flujo y multiplexión para hacer posible la comunicación por un mismo medio. Esta subcapa genera tramas a partir de los datos provenientes de la capa de red, recibe las tramas que envían otros equipos y pasa la información a la capa de red. También se ocupa de la detección y corrección de errores. La comunicación entre la capa de enlace y la capa de red se realiza utilizando algunas formas básicas de comunicación entre las capas, llamadas primitivas de servicio: solicitud, indicación, respuesta y confirmación.

2.6.2.3 Control de error e integridad de los datos

Los errores pueden presentarse por diversos motivos, tales como interferencia, mal estado del medio de transmisión y ruido eléctrico, por mencionar algunos, lo cual provoca que los datos no lleguen o lleguen alterados a su destino. Cuando los bits llegan a un nodo son recibidos por la capa física, de donde pasan a la capa de enlace, pero no se garantiza que estén libres de errores. La cantidad de bits recibida puede ser diferente de la que se debe recibir y es responsabilidad de la capa de enlace detectar y corregir los errores que se presenten. Para tal efecto la capa de enlace del emisor crea un código de redundancia que es insertado en los datos y que al ser recibidos la capa de enlace del receptor verifica para comprobar su integridad. El código de redundancia es una cantidad que se calcula a partir del contenido de los datos, por lo tanto si algún dato se altera o se pierde, al volver a calcular el código éste será diferente.

2.6.2.4 Control de flujo.

Un aspecto importante que la capa de enlace debe gestionar se presenta cuando un emisor envía datos a una velocidad mayor a la que un nodo destino puede recibirlos. Si no se tiene control sobre esta situación, aun cuando el receptor no indique que existe un error, los datos podrían perderse, debido a que en algún momento dado el receptor no tendría espacio suficiente para almacenarlos y los desecharía. Introduciendo el control de flujo el receptor puede indicarle al emisor la cantidad de datos que puede recibir. Si se llena la memoria de recepción el receptor puede indicar al emisor que detenga su envío. Después de procesar los datos y liberar espacio en la memoria, le indica al transmisor que está listo para recibir más datos. Esta indicación se realiza mediante tramas de pausa. Al recibir esta trama el emisor deja de transmitir, espera a que concluya el tiempo solicitado y después reanuda su transmisión.

2.6.2.5 Protocolos de enlace

Para el envío y recepción de tramas se requieren métodos que reciban los datos de la capa superior, generen y envíen tramas. Los protocolos de enlace son los que realizan estas tareas y los más utilizados son los de ventana deslizante. Este tipo de protocolos utilizan un mecanismo para el control de flujo de datos en forma bidireccional entre emisor y receptor. El algoritmo de estos métodos no sólo se aplica en la capa de enlace sino en la capa de red o en cualquier otra capa que pudiera requerir un funcionamiento similar. Cada emisor puede enviar cierta cantidad de datos y cada receptor puede recibirlos ya sea en menor, igual o mayor cantidad. La función de la ventana deslizante es evitar que el receptor se sature de datos y sólo permita la llegada de los que puede procesar. Cada extremo de la conexión mantiene un buffer (memoria temporal de almacenamiento) de transmisión con una ventana de transmisión y un buffer de recepción con una ventana de recepción. El emisor transmite una cantidad de tramas definida por el tamaño de la ventana, y el buffer espera recibir la confirmación de cada una, sin poder enviar más datos hasta que esto ocurra. Al mismo tiempo que se envía una trama se pone en operación un contador para evitar que el emisor se quede esperando la confirmación de tramas que se pierden en el camino, y si el contador llega a un determinado valor sin haber recibido aún la confirmación, entonces el paquete se reenvía, asumiendo que no llegó a su destino. Una vez confirmada una trama, los datos salen de la ventana y ésta se recorre para enviar y esperar la confirmación de los datos que aún no se han transmitido, pero los que quedan fuera de la ventana siguen en espera.

Page 28: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. ts.

En la Figura 2.15 se ilustra el concepto de ventana deslizante. En el inciso a) se representa un buffer de transmisión. Tomando a los números del buffer como paquetes, el tamaño de la ventana es una cantidad de bytes tal que abarca diez paquetes, que se envían a su destino. En el inciso b) se supone que el extremo receptor envió la confirmación de tres paquetes, entonces la ventana se recorre tres lugares, dejando fuera los datos que ya han sido confirmados y agregando nuevos datos que procede a enviar inmediatamente. Los datos que quedan a la izquierda de la ventana pueden borrarse y los que quedan a la derecha siguen esperando para ser enviados. Cuando el buffer se llena por la parte derecha, almacena más información en el espacio de la izquierda, pensando en el buffer como si fuera cíclico. Figura 2.15 Ventana con 10 espacios de almacenamiento. a) Comienza en el espacio 1 y llega al 10, estas tramas ya se han enviado y

esperan la confirmación de recepción. b) Una vez confirmadas 3 de las tramas enviadas la ventana deslizante avanza 3 lugares La ventana en el lado del receptor indica al emisor el espacio de memoria que tiene disponible, esto es, la cantidad de bytes con que cuenta para almacenar datos que espera recibir, debe ser menor o igual al espacio libre en su buffer de recepción. Si no se conoce el espacio de almacenamiento de un dispositivo, un emisor puede exceder ese tamaño y saturar al receptor.

2.6.3 Capa de red La capa de red es la encargada de proporcionar la conectividad necesaria para que dos nodos distantes puedan tener comunicación entre ellos, selecciona la ruta por la que se enviarán los datos, se apoya en los servicios que le proporciona la capa de enlace y a su vez brinda servicio a la capa de transporte. Los datos que se manejan en la capa de red reciben el nombre de paquetes.

2.6.3.1 Tipos de servicio

La capa de red puede funcionar de dos formas diferentes: estableciendo una conexión lógica o sin establecerla. Dependiendo de estas formas de funcionamiento esta capa proporciona diferentes tipos de servicios. Si se establece una conexión se le conoce como circuito virtual, haciendo alusión a la forma en que se conmutan los circuitos en las centrales telefónicas para realizar una llamada (estableciendo la conexión antes de iniciar el envío de mensajes). Si no se utiliza una conexión, entonces el envío de paquetes será independiente y cada uno deberá incluir el destinatario dentro de un encabezado, a estos paquetes se le conoce como datagramas, en analogía con los telegramas del servicio postal, ya que su funcionamiento es similar. Los circuitos virtuales se utilizan en subredes cuyo servicio principal está orientado a la conexión, lo cual evita decidir el camino que tomará cada paquete. Una característica al establecer una conexión y hacer uso de los circuitos virtuales es que cada paquete de datos enviados no contenga el encabezado de dirección destino, sino únicamente el primero, dado que los que se transmiten después ya tienen un camino marcado para llegar a su destino. Contrario a los circuitos virtuales, en una red que maneja datagramas, ninguna ruta se puede establecer previamente porque cada paquete se envía de forma independiente y cada uno puede seguir diferentes rutas. Dependiendo de la ruta que tomen los datos, un datagrama puede llegar antes o después que otro, es decir, los datagramas no llegan necesariamente en el mismo orden en que fueron enviados.

2.6.3.2 Encaminamiento

Parte del trabajo de la capa de red es encontrar el camino que deben seguir los datos y éste debe elegirse dependiendo de la congestión de la red, las longitudes de la cola de espera en los nodos de conmutación, retardo y velocidad del medio. Los encargados de realizar esta tarea en el nivel de red son los ruteadores

Page 29: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

(routers), los cuales se encargan de buscar el mejor camino por el que se puedan enviar los datos. Existen dos tipos de algoritmos de encaminamiento utilizados por los ruteadores, los adaptativos y los no adaptativos. Los algoritmos no adaptativos no basan sus decisiones en mediciones o estimaciones del tráfico de la red o su topología, sino que la ruta a seguir se determina anticipadamente al poner en funcionamiento a la red. Los algoritmos adaptativos utilizan información sobre el estado de la red y toman la decisión de seguir una u otra ruta dependiendo de dicha información.

2.6.3.3 Manejo de errores

Cuando se genera un error en la entrega de un paquete que atraviesa varias redes a través de distintos ruteadores, el ruteador que detecta el error puede informar al nodo origen sobre lo ocurrido. Por ejemplo supongamos que un ruteador contiene información incorrecta u obsoleta, lo cual provoca que direccione un datagrama hacia un ruteador incorrecto, que no encontrará un camino para reexpedir el paquete hacia el destino adecuado. En un caso como este, el último ruteador no sabrá qué hacer con el paquete y, como no sabe de qué punto anterior proviene, no lo puede regresar para que sea guiado por un camino adecuado, así que lo desecha. La única información que el ruteador conoce sobre el paquete es la dirección del nodo en donde fue originado. Esto le permite generar un reporte sobre lo ocurrido y notificar al nodo emisor. Las medidas de corrección que se puedan tomar para errores en la entrega de paquetes las realiza el emisor basado en la información del error ocurrido.

2.6.3.4 Congestión y Bloqueos

Otro tema importante que se debe tratar en la capa de red es la congestión. Los ruteadores reciben paquetes de otros ruteadores o del emisor directamente para que sean enviados a sus destinos; esta función la realizan sin dificultad mientras operan dentro de los límites de sus capacidades de procesamiento y memoria. La congestión se presenta cuando las filas de espera en las centrales de conmutación se hacen muy largas debido a que dichas centrales no tienen la capacidad suficiente para procesar tantos paquetes de datos al mismo tiempo. Este inconveniente se presenta comúnmente en las subredes o parte de ellas. EL bloqueo es el peor de los escenarios de una congestión, ya que en esta situación los paquetes ya no entran ni salen de un ruteador. No pueden entrar debido a que la central llega a su capacidad máxima de almacenamiento y no pueden salir porque otras centrales presentan la misma situación. El algoritmo de Schweitzer y el de Blazewicz son los más utilizados para resolver el problema del bloqueo.

2.6.3.5 Interconexión de redes

Para tener comunicada a una red con otra u otras más es necesario saber qué tipo de redes se conectan, ya que redes LAN o WAN pueden necesitar comunicarse pero en realidad no son compatibles entre sí.

Para hacer fluir datos entre redes diferentes se utilizan los llamados retransmisores, los cuales son específicos para cada conexión. Los diferentes tipos de retransmisores se enlistan a continuación. Repetidores. Copian los bits individualmente entre segmentos de cable, actúan en la capa física. Puentes (bridges). Almacenan y reexpiden tramas entre redes LAN, actúan en la capa de enlace. Puertas de enlace (Gateway). Almacenan y reexpiden paquetes entre redes que no son similares, actúan en la capa de red. Particularmente las puertas de enlace y los puentes son nodos de conmutación que permiten comunicar unas redes con otras.

2.6.4. Capa de transporte La tarea de esta capa es llevar los datos de forma segura y económica hasta el nodo destino, sin depender de la red o redes físicas que se encuentren en uso. La unidad de datos que utiliza recibe el nombre de TPDU (Transport Protocol Data Unit) Unidad de Datos del Protocolo de Transporte. En algunos protocolos particulares de la capa de transporte los datos reciben el nombre de segmentos o datagramas.

Page 30: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

2.6.4.1 Servicios proporcionados a la capa de sesión

De forma similar a la capa de red, la capa de transporte proporciona dos tipos de servicios: con conexión y sin conexión, ambos parecidos a su símil en la capa de red, pero en éste caso los servicios son proporcionados a la capa de sesión, para que ésta a su vez se comunique con la capa de presentación.

2.6.4.2 Primitivas del servicio de transporte OSI

Las primitivas de la capa de transporte se dedican a proporcionar un servicio libre de errores, lo cual, debido a que la red no es muy confiable, es algo indispensable para llevar una comunicación correcta de principio a fin. Para esto las primitivas que se utilizan son: a) Para un servicio orientado a conexión

Petición de conexión Indicación de conexión Respuesta de conexión Confirmación de conexión Petición de desconexión

b) Para un servicio no orientado a conexión

Petición de datos Indicación de datos 2.6.4.3 Direccionamiento

Indicación de desconexión Petición de datos Indicación de datos Petición de datos enviados Indicación de datos enviados

El direccionamiento por lo general se realiza mediante un servidor de directorio, el cual contiene la dirección lógica de cada nodo que proporciona un servicio, llamada Punto de Acceso al Servicio de Transporte, o TSAP (Transport Service Access Point), junto con su nombre de servicio. Cuando un dispositivo quiere contactar un servicio lo hace por medio de su nombre, realizando una conexión con el servidor de directorio, quien a su vez realiza una nueva conexión entre el TSAP que corresponde al servicio solicitado y el TSAP del nodo que lo requiere. Una vez realizada la conexión entre el nodo solicitante y el nodo que alberga el servicio solicitado, la conexión entre el nodo solicitante y el servidor de directorio se libera. Esta forma de direccionamiento requiere que cada nuevo servicio sea registrado para poder realizar la conexión.

2.6.4.4 Establecimiento de la conexión

Establecer y mantener una conexión es responsabilidad de la capa de transporte contemplando la solución a algunos problemas que se presentan frecuentemente como pueden ser:

Pérdida de TPDU‘s. Retraso en la entrega de TPDU‘s.

Duplicidad de los TPDU‘s. Reinicio súbito de la conexión. 2.6.4.5 Liberación de la conexión

Liberar la conexión es más sencillo que establecerla. La liberación de la conexión plantea un formato de ida–vuelta–ida, en el cual la petición de desconexión la realiza el emisor, el receptor responde con una confirmación de desconexión y se inicia un temporizador. Al momento de que el emisor recibe la confirmación, envía otra confirmación y la conexión se libera. En caso de no recibirse esta confirmación o la petición de enviar más datos, si el plazo del temporizador expira, la conexión se libera.

Page 31: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

2.6.4.6 Multiplexión

.

En las redes que utilizan circuitos virtuales cada una de las conexiones de transporte utiliza una conexión de red. Una conexión de transporte consume recursos en los nodos de conmutación cuando no se está utilizando y no ha sido liberada y aunque sólo reserva espacio éste se desperdicia. Por este motivo es útil hacer uso de la multiplexión de conexiones de transporte sobre una sola conexión de red.

2.6.5. Capa de sesión Esta capa tiene como objetivo controlar la sesión entre dos nodos que intercambian datos y su función es establecer la sesión, llevar el control de cuál nodo envía y cuál recibe los datos; en caso de alguna interrupción en la transmisión la capa de sesión debe reanudarla y finalizarla una vez que la transmisión ha concluido.

2.6.5.1 Administración de diálogo

En el modelo OSI se considera que el modo de trasmisión de datos es full–dúplex para que los nodos que requieren compartir información lo puedan hacer al mismo tiempo. Al iniciar una sesión entre dos nodos y para aquellos que no tienen la capacidad de manejar el modo full–duplex, la capa de sesión da el permiso de envío a un nodo primero y después al otro.

2.6.5.2 Sincronización e Intercambio de datos

Otra tarea que corresponde a la capa de sesión es la sincronización, que consiste en llevar los valores de sesión al último estado conocido, previamente guardado, que se genera automáticamente mientras la sesión esté activa. En caso de haber perdido datos desde y en las capas superiores, puede ser de gran ayuda reestablecer los últimos valores conocidos. El intercambio de datos entre la capa de transporte y la de presentación es una de las tareas más importantes para la capa de sesión, debido a que esta capa es la que las comunica y, como mediador, muchas veces pasa las peticiones invocando a las respectivas primitivas de cada capa.

2.6.5.3 Notificación de excepciones

Otra de las tareas de la capa de sesión es la notificación de errores inesperados. En caso de que un nodo tenga algún problema se puede notificar al nodo con el que se está comunicando que ha habido un problema. Otro caso es cuando se presentan reportes por problemas con las capas inferiores a la de sesión, o en caso de un error interno en la capa de sesión éste se le indica al usuario para que decida qué acción tomar.

2.6.5.4 Primitivas del servicio de sesión

Las primitivas de servicio de la capa de sesión se pueden clasificar en siete grupos:

Establecimiento de conexión. Liberación de conexión. Transferencia de datos. Administración de testigos. Sincronización. Sincronización de actividades. Notificación de excepciones.

Estos grupos están dedicados específicamente a algunos servicios de esta capa.

2.6.6. Capa de presentación La capa de presentación se encarga de presentar los datos a la capa de aplicación, debido a que cada equipo que envía datos tiene diferentes representaciones internas como pueden ser caracteres, números, archivos de sonido, video e imágenes, y el nodo que recibe los datos debe ser capaz de presentarlos como datos reconocibles al ser decodificados.

Page 32: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

2.6.6.1 Criptografía y compresión de datos

Cuando un nodo cualquiera requiere enviar datos a otro se presenta un problema con la cantidad de datos que puede enviar, ya que conectarse a una red implica un costo dependiendo del ancho de banda contratado (512 kbps o 1Mbps, etc). Debido a esto es conveniente que los datos se compriman antes de ser enviados para aprovechar la velocidad de transmisión. La capa de presentación también se debe encargar del cifrado de datos, de tal forma que la información entre los nodos no pueda ser obtenida por equipos externos. El proceso de cifrado de información consiste en alterar el contenido de la información, que en un principio es clara y entendible, de manera que al aplicarle una codificación ya no resulte entendible. Para poder convertir la información de nuevo a su estado inicial se utiliza una clave o llave, que permite aplicar el proceso inverso sobre los datos cifrados y obtener la información original.

2.6.6.2 Primitivas del servicio de presentación OSI

Las primitivas de servicio de la capa de presentación son usadas para comunicarse con la capa de aplicación y la de sesión, estas primitivas se dividen en varios grupos, para el caso de las primitivas orientadas a conexión, dichos grupos son:

Establecimiento de conexión. Liberación de conexión. Transferencia de datos. Administración de testigos. Sincronización. Administración de actividades. Notificación de excepciones. Cambio de contexto.

Para servicio sin conexión solo existe una primitiva que es:

Transferencia de datos.

2.6.7. Capa de aplicación La capa de aplicación es la que proporciona las aplicaciones de usuario y del sistema y define que protocolos se utilizan para intercambiar datos. Los protocolos de la capa de aplicación de ARPANET son los que más se usan en todo el mundo, ya que se han ido construyendo dependiendo de las necesidades prácticas que han ido surgiendo. De esta forma, a cada protocolo se le han ido agregando nuevas características hasta tener una gran gama de elementos para manejar las situaciones que requieren los usuarios. Por el contrario, los protocolos del modelo OSI se han creado con poca o nula experiencia práctica e incluyen características que pueden tener una aparente

funcionalidad teórica. El problema con los protocolos de aplicación del modelo OSI es que las especificaciones en ocasiones son tan extensas y/o complejas que es prácticamente imposible su implementación. La mayoría de las implementaciones de protocolos de la capa de aplicación están hechas sin tomar en cuenta los protocolos del modelo OSI, aun cuando éstas sean normas ISO como el MOTIS para correo electrónico o el FTAM para transferencia de archivos. En su lugar se prefiere SMTP y FTP de ARPANET para correo electrónico y transferencia de archivos respectivamente. Otra desventaja de OSI es que no maneja una implementación o especificación de un protocolo equivalente al HTTP de ARPANET. Los servicios que proporcionan los protocolos del modelo OSI están especificados de una manera semi formal, indicando la funcionalidad que proporcionan, lo cual es una ventaja respecto a ARPANET, dado que ésta carece de especificaciones de servicio.

Page 33: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

2.7 Norma IEEE 802 para redes de área local

Para establecer un acuerdo entre las partes que desean compartir información en una red, organizaciones internacionales han credo normas que deben seguir los participantes de la comunicación para poder entenderse. Existen diferentes recomendaciones, normas, estándares y protocolos escritos para las diferentes etapas de la comunicación. Los aspectos de la capa física y la subcapa de acceso al medio se encuentran definidos en la norma IEEE 802.3, comúnmente llamada Ethernet. Cabe aclarar que Ethernet y la norma IEEE 802.3 difieren ligeramente, aunque los términos se utilicen indistintamente. La norma IEEE 802.3 no es la única que estandariza el funcionamiento de la capa física y de enlace de datos, pero es ampliamente usada en muchos dispositivos y sistemas de comunicaciones, por lo que es una buena opción para implementar aplicaciones que se puedan o deban conectar con diferentes dispositivos. La norma de la IEEE 802 se divide en varias secciones, tres de las cuales describen las normas para redes de área local, la 802.3 ―Ethernet , la 802.4 ―Paso de testigo en Bus y la 802.5 ―Paso de testigo en anillo . A continuación se explica más a detalle la norma IEEE 802.3 ya que sólo nos interesa la norma que trata de redes Ethernet para el desarrollo del sistema planteado en el Capítulo 1.

2.7.1. La norma 802.3 La norma 802.3 Ethernet utiliza la codificación Manchester para transmitir los datos a nivel físico. Establece el uso de cables como medio físico, cuya longitud es importante así como los conectores que se utilizan. Las redes LAN que siguen la norma 802.3 se clasifican según algunos criterios como su velocidad de transmisión en Mbps (mega bits por segundo), el tipo de banda (banda ancha o banda base) y el tipo de cable o su longitud en metros. Se utiliza el siguiente formato para indicar las características de la red:

[Velocidad de transmisión en Mbps] – [Banda (base o ancha)] – [Longitud (en metros) o tipo de cable]

De esta forma una rede del tipo LAN con banda base a 10 Mbps que utiliza cable UTP se designa como 10– BASE–T (la T refiere al par trenzado). En la Tabla 2-2 se presentan algunos datos para las diferentes especificaciones de la norma 802.3 y una velocidad de transmisión de 10 Mbps.

Tabla 2-2 Generalidades de la norma 802.3 10Base5

10Base2

10Base–T

10Base–FL

Cable Coaxial grueso Coaxial delgado UTP Cat 3/5 Fibra 62.5/125 micras

Pares

Full dúplex

Tipo Conector

Topología

Longitud del cable

Nº Nodos por segmento

1

No

N

Bus

500 - 2500 m

100

1

No

BNC

Bus

185 - 925 m

30

2

RJ–45

Estrella

100 - 500 m

1024

2

ST

Estrella

2 km

1024

En el nivel de enlace de datos para el control de acceso al medio esta norma utiliza el método de Detección de Portadora con Detección de Colisiones CSMA/CD Persistente–1.

2.7.2. Direcciones Físicas En la capa de enlace de datos se utilizan direcciones físicas para acceder a los dispositivos que forman parte de una red física. En el estándar 802.3 estas direcciones reciben el nombre de direcciones de Control de Acceso al Medio, o direcciones MAC, también se les puede llamar de manera general direcciones físicas. Las direcciones MAC son valores de 48 bits que identifican de manera única a cada dispositivo incorporado a una red. Se escribe en un formato de 12 números hexadecimales agrupados en pares, de tal manera que cada par forma un byte. En el caso de una red local, el administrador puede asignar las direcciones MAC

Page 34: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

siempre y cuando ninguna dirección se repita. Cada dispositivo diseñado para conectarse a una red posee una dirección física única en todo el mundo, la cual se encuentra grabada en el dispositivo y no es posible cambiarla. Las direcciones físicas las debe asignar la Autoridad de Registros Ether Type del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE). Esta institución asigna la parte más alta de la dirección MAC, es decir, los 24 bits más significativos. A esta parte de la dirección se le denomina Identificador Único Organizacional (OUI). Los 24 bits más bajos los asigna el fabricante de los dispositivos, a manera de un número de serie. Existen diferentes tipos de direcciones MAC, denominadas direcciones unicast, multicast y broadcast. Las direcciones unicast son las direcciones individuales que poseen los dispositivos. Las direcciones multicast hacen referencia a grupos formados dentro de la red por varios dispositivos, cada grupo se identifica con una dirección multicast y los dispositivos que quieran pertenecer a él se deben registrar como integrantes del grupo. La dirección broadcast es un caso particular de grupo multicast, al cual pertenecen todos los dispositivos de la red. El direccionamiento broadcast se utiliza cuando se requiere enviar un mensaje a todos los elementos conectados a la red, en este caso, en vez de enviar el mensaje individualmente a cada nodo, se utiliza la dirección broadcast. Para identificar las direcciones individuales de las direcciones grupales se emplea el bit menos significativo del byte más significativo de la dirección MAC, si este bit es 0, se trata de una dirección individual (unicast) y si es un 1 entonces la dirección es grupal (multicast). La dirección FF FF FF FF FF FF (todos los bits iguales a 1) se reserva para dirección broadcast. La transmisión de la dirección física se hace desde el byte más significativo hasta el byte menos significativo; sin embargo el orden de transmisión de cada byte es del bit menos significativo hasta el más significativo.

2.7.3. Formato de las tramas físicas El formato de una trama Ethernet se muestra en la Figura 2.16.

Figura 2.16 Formato de una trama Ethernet

A continuación se describe el contenido de cada campo de una trama Ethernet. Preámbulo. Tiene la longitud de siete bytes, sirve para sincronizar el medio físico y es una secuencia alternada de unos y ceros cuya codificación Manchester genera una onda cuadrada que sincroniza los relojes del receptor y el emisor. Delimitador de inicio. A este campo se le denomina SFD (Start Frame Delimiter). Está formado por un byte e indica el inicio de la trama con el patrón binario 10101011. Los tres campos siguientes forman el encabezado de la trama Ethernet. Dirección destino. Dirección MAC a la que va dirigida la trama. Dirección de origen. Dirección MAC del nodo que envía la trama. Longitud. El campo tipo/longitud consta de dos bytes y puede tener dos significados diferentes. La longitud máxima del campo de datos de una Ethernet es de 1500 bytes, por lo tanto si el valor contenido en el campo tipo/longitud es igual o menor a 1500, este valor indica la cantidad de bytes contenidos en el campo de datos. Si es mayor a 1536, el valor de este campo se refiere al tipo de paquete del que se trata. El tipo, o ethertype, es un código que corresponde a un protocolo de la capa superior al cual va destinado el paquete. Si el valor de este campo está entre 1501 y 1535 el paquete no es válido.

Page 35: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Datos. Es la información que proviene de las capas superiores y puede contener de 46 a 1500 bytes. Relleno. Si los datos ocupan 46 bytes o menos, el campo se rellena para tener el tamaño mínimo requerido. Secuencia de verificación. Se le llama comúnmente FCS (Frame Check Secuence). Es un número de cuatro bytes que se añade para verificar la integridad de los datos enviados y recibidos, Este número es calculado por el emisor basado en el contenido de la trama (sin contar el preámbulo ni delimitador de inicio) y lo envía como parte de la trama. Al llegar la información a su destino, el receptor calcula de nuevo el número y lo compara contra el contenido del campo Secuencia de Verificación; si ambos valores coinciden, los datos no sufrieron alteraciones o pérdidas en el camino, pero si son diferentes, entonces la información llegó alterada y no corresponde a los datos que originalmente fueron enviados.

La longitud máxima de una trama Ethernet es de 1518 bytes y la mínima es de 64 bytes, desde el campo Dirección de Destino, hasta el campo de Secuencia de Verificación. Si se intenta transmitir una trama que no cuente con el número mínimo de bytes especificado, el campo de datos se debe rellenar con ceros hasta que la longitud alcance el valor mínimo. Cuando este paquete se recibe en la máquina de destino, los ceros de relleno son descartados. Existen tramas que contienen información de control en lugar de datos, por ejemplo para implementar el control de flujo en la capa de enlace, enviando una trama de pausa que le indica al emisor que detenga su actividad durante el tiempo contenido en la trama. Para identificar a una trama de control de una de datos, el valor del campo tipo/longitud debe estar fijado en 0x8808 (hexadecimal). En los dos primeros bytes del campo de datos se indica un código de operación que corresponde a la acción de control. La solicitud de una trama de pausa se indica con el código 0x0001 y en los siguientes dos bytes se especifica la duración de la pausa. El valor del tiempo de pausa abarca desde 0x0000 hasta 0xFFFF y las unidades son 512 tiempos de bit (es decir, un tiempo de pausa con valor de 0x0001 tiene la duración de 512 bits). Una trama de pausa puede tener en el campo Dirección de Destino el valor de 01–80–C2–00–00–01, o bien, la correspondiente dirección de destino. En la Figura 2.17 se muestra la estructura de una trama de pausa.

Figura 2.17 Formato de una trama de pausa

La norma 802.3 también ha considerado mejoras para Ethernet, como lo sugiere la norma 802.3u para Fast Ethernet y varias normas para velocidades de transmisión en gigabits por segundo englobadas en el estándarGibabit Ethernet. Fast Ehternet opera en banda base a velocidades de 100 Mbps, utiliza cable UTP o fibra óptica para la trasmisión de datos. Gigabit Ethernet opera en banda base a velocidades 1 y 10 Gbps, utiliza cable UTP, STP o fibra óptica como medio de transmisión. Tanto Fast Ethernet como Gigabit Ethernet utilizan el método CSMA/CD para el acceso al medio.

Page 36: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

3 Hardware

La selección del hardware se facilita al existir mas opciones integradas dentro de los microcontroladores

3.1 Algunos de los modelos incluyen componentes adicionales que no se muestran porque no se utilizan y por lo tanto no son de interés.

Tabla 3.1 Comparación de características entre familias de microcontroladores

El módulo Ethernet que incluyen algunas de las familias de microcontroladores consta sólo de un controlador de acceso al medio (MAC), en la tabla se indica como 10/100 Ethernet MAC. Este módulo implementa las funciones de la capa de enlace, pero carece de la funcionalidad de la capa física. La capa física se implementa con un dispositivo denominado transceptor (por transmisor y receptor) físico,

Page 37: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. comúnmente abreviado como PHY (PHYsical Tranceiver). Los microcontroladores que no cuentan con este dispositivo integrado necesitan conectarse a uno externo. No obstante, algunos modelos de microcontroladores incluyen también el transceptor físico dentro de su módulo Ethernet, en la Tabla 3.1 se puede identificar este tipo de módulo Ethernet como 10/100 Base–TX (MAC+PHY). El uso de un microcontrolador con módulo Ethernet conformado por MAC y PHY conlleva a un diseño más reducido y simplificado. Estos microcontroladores tienen terminales dedicadas para las señales de recepción y transmisión que se conectan directamente a un transformador de aislamiento magnético y éste a su vez con un conector RJ45. Dichas señales de recepción y transmisión son codificadas y decodificadas dentro del microcontrolador de acuerdo al estándar Ethernet. En la Figura 3.1 se muestra la diferencia entre los dos tipos de módulos Ethernet mencionados y la conexión necesaria del sistema.

Figura 3.1 Módulos Ethernet en microcontroladores a) Módulo Ethernet con PHY y MAC. b) Módulo Ethernet con MAC

De los modelos de microcontroladores mostrados en la Tabla 3.1 podemos observar que son pocos los que integran un módulo Ethernet capaz de ejecutar la funcionalidad de la capa de enlace más la de la capa física. Dichos modelos corresponden a microcontroladores de los fabricantes Freescale Semiconductor y Texas Instruments. Las características de este conjunto de microcontroladores son similares, incluyendo el precio, aunque algunos tienen un poco más de capacidad en algunos recursos que otros. Es importante considerar las herramientas para la programación de cada modelo que se contemple para la implementación del sistema, por ejemplo, la adquisición de un programador para el microcontrolador seleccionado.

.

Page 38: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. 3.2 Controlador de red

El LM3S8962 es una solución para conectividad Ethernet completa y muy adecuada ya que cuenta con un controlador Ethernet implementado en los módulos EMAC (Controlador de Acceso al Medio Ethernet) y EPHY (Transceptor Físico Ethernet) y no necesita componentes activos extras para su funcionamiento. Se requieren pocos componentes para habilitar el controlador de red del microcontrolador:

Cristal de 25 MHz Fuente de voltaje de 3.3 V Transformador de aislamiento magnético de alta velocidad (útil para suprimir el ruido eléctrico y acoplar señales) Conector RJ45 hembra Capacitores y resistencias 2 leds de estado PHY

Contexto del controlador ethernet dentro de las redes de comunicaciones El controlador de red implementa las capas más bajas del modelo de red; el módulo EPHY implementa la capa física y el EMAC la capa de enlace de datos. En la Figura 3.8 se muestra en qué parte del modelo se implementan las funciones del controlador de red. La operación de cualquier que quiera tener aceptación comercial global debe ser valido da por el Consorcio Fast Ethernet en alguno de los laboratorios que tiene como sitios de verificación y los

Page 39: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

módulos EMAC y EPHY del microcontrolador LM3S8962 fueron comparados contra

los criterios de la norma IEEE 802.3 para asegurar que el diseño Ethernet es correcto y robusto. Los resultados de estas pruebas indican que el LM3S es completamente funcional y que se interconecta de manera adecuada con dispositivos de diferentes fabricantes [16e].

Figura 3.2 Relación entre el modelo de referencia OSI, el modelo TCP/IP y los protocolos que

implementan el modelo TCP/IP

3.2.4.1 Módulo EMAC – Controlador de acceso al medio

Ethernet El módulo EMAC LM3S8962 cuenta con las siguientes características:

Filtro de reconocimiento de direcciones Modo de promiscuidad (en este modo se permite la recepción de todo el tráfico de red sin la aplicación de filtros [16e]) Filtro ethertype Modo de PHY externo Control de flujo con recepción y detección de envío de tramas de pausa Dos buffers de recepción con detección de recepción de tramas válido Un buffer de transmisión con detección de transmisión de trama completa Detección de desbordamiento de buffers Detección de error por sobrepaso de tamaño máximo de buffer Detección de error de longitud de trama y error de código de redundancia Detección de transferencias en la interfaz MII Detección de colisiones retardadas y exceso de colisiones Modo Loop–back Modo Full–Duplex o Half–Duplex

.

Page 40: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Los principales componentes del módulo incluyen el receptor, el transmisor, el control de flujo, el manejador MII y las interfaces de los buffers de recepción y transmisión. El módulo EMAC del provee los mecanismos necesarios para transferir datos de la capa de enlace de un dispositivo Ethernet a otro. Cumple los criterios de la norma IEEE 802.3 (Ethernet) y algunas variantes, 802.3u (fast Ethernet), 802.3x (Full–Duplex OPS), por lo que soporta operación a 100 ó 10 Mbps, control de flujo (en modo Full–Duplex)

Figura 3.3 Variantes de la norma IEEE 802.3

Page 41: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Modos de operación: full duplex, half duplex, Velocidad y control de flujo

Los modos posibles de operación del controlador Ethernet incluyen: Half–Duplex a 10 Mbps, Full–Duplex a 10 Mbps, Half–Duplex a 100 Mbps y Full–Duplex a 100 Mbps. Cuando se configura en modo Half–Duplex, dos o más dispositivos comparten el medio de transmisión, de manera que no es posible que más de un dispositivo utilice el medio para enviar información al mismo tiempo ni que un nodo reciba y transmita simultáneamente. En esta configuración el controlador de red utiliza el protocolo CSMA/CD para asignar el acceso al medio. En el modo de operación Full–Duplex se tienen dos canales de comunicación independientes, lo que permite que dos equipos conectados punto a punto puedan utilizar el medio de manera simultánea, evitando colisiones. En este modo de operación el controlador de red no requiere implementar el protocolo CSMA/CD. Cuando se selecciona este modo se debe utilizar un mecanismo de control de flujo para evitar que el emisor sature al receptor. Este mecanismo corresponde al envío de tramas de pausa y es configurable mediante los registros de control del módulo EMAC. El EMAC es compatible con la característica de control de flujo definida por la IEEE 802.3x. Se puede habilitar siempre y cuando el controlador Ethernet esté configurado en modo Full–Duplex. El control de flujo se habilita o deshabilita en el registro de Control y Estatus del Receptor, o RXCTS, con el bit RFCE (Recepción de Control de Flujo Habilitada). La Figura 3.12 muestra el registro RXCTS.

Modo de auto negociación

Page 42: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Para determinar el modo de operación del controlador de red se puede utilizar la auto negociación o ajustarse los valores manualmente en los registros correspondientes. En modo de auto negociación el modo Full–Duplex y la velocidad de transmisión se determinan en el momento que se establece una conexión con otro dispositivo. Los dispositivos involucrados negocian las características de la comunicación y, si llegan a un acuerdo, ambos dispositivos se configuran a sí mismos para operar en dicho modo, a partir de entonces la comunicación se realiza atendiendo a la configuración seleccionada. Si no se requiere utilizar el modo de auto negociación se debe deshabilitar y el modo de operación se debe ajustar manualmente en el momento de la inicialización del dispositivo.

Filtro de reconocimiento de direcciones MAC

El receptor Ethernet proporciona control de filtrado de paquetes entrantes basado en la dirección MAC de destino. Si se aplican filtros a las direcciones MAC, cada paquete recibido es inspeccionado para verificar su dirección de destino, si no cumple con los criterios seleccionados se desecha. Si el filtro de direcciones se deshabilita los paquetes recibidos son aceptados sin revisar su dirección de destino. El modo de promiscuidad permite al receptor aceptar cualquier paquete sin importar su dirección de destino. Esta opción sobreescribe cualquier otra configuración de filtro de direcciones. El reconocimiento de direcciones MAC se configura en el registro de Control y Estatus del Receptor, Se puede también configurar en modo CONMC (Multicast condicionado), configurando el filtrado de direcciones multicast. Para aplicar el filtro por dirección multicast los grupos permitidos deben estar especificados en una tabla de direcciones. Para es e fin existe un registro de 64 bits en donde se mapean las direcciones multicast aplicando un algoritmo de codificación sobre los 48 bits de la dirección MAC, del resultado obtenido se seleccionan los 6 bits más significativos. El valor resultante es un número entre el 0 y el 63. En la posición del registro HASH (Tabla Multicast, o tabla HASH) correspondiente al número calculado se escribe el valor para indicar que esa dirección está permitida.

Filtro ETHERTYPE

El filtrado por tipo de paquete se hace basado en el contenido del campo tipo/longitud de los paquetes recibidos. Dicho campo puede contener la longitud del paquete o un código que indica de qué tipo de paquete se trata. Los tipos, o ethertype, indican qué protocolo de la capa superior va a procesar el paquete. Existen diversos códigos para los diferentes protocolos que trabajan sobre la capa de enlace, pero los protocolos que nos interesan son el Protocolo de Internet versión 4, cuyo código corresponde a 0x0800, y el Protocolo de Resolución de Direcciones, cuyo código ethertype es 0x0806. El registro en donde se configuran los valores ethertype permitidos se llama Registro de Control Ethertype

Receptor y

transmisor

EMAC

Page 43: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

El receptor EMAC trabaja con poca intervención del CPU, una vez que el módulo EMAC se habilita el receptor comienza a procesar las tramas entrantes. Lo primero que hace al recibir un nuevo paquete es verificar la secuencia de bits del preámbulo y la secuencia del delimitador de inicio. Si los bits de estos campos no son correctos el receptor rechaza la trama y deja de recibir datos, en caso contrario continúa con la recepción hasta que la dirección de destino se almacena en el buffer. Al tener la dirección de destino aplica los filtros de reconocimiento de dirección que hayan sido configurados. Si la dirección no cumple alguna condición, la trama se rechaza y se interrumpe la recepción de datos. Si la trama es aceptada se verifica el contenido del campo tipo/longitud, si el valor no cumple con alguno de los requisitos configurados previamente se rechaza.

TCMD Comando

Descripción

Interfaz independiente del medio (MII) y manejador MII El manejador MII (Medium Independent Interface) sirve para comunicar al módulo EMAC con el módulo EPHY a través de la MII. El módulo EPHY es el encargado de la conversión de los datos en señales físicas y viceversa utilizando codificación Manchester y de su envío y recepción a través del medio físico. El EMAC envía información para su transmisión hacia el EPHY y recibe los datos que llegan de la red a través de él. El EMAC y el EPHY también intercambian información para leer y escribir datos de los registros internos del módulo EPHY.

3.3. Módulo EPHY – Transceptor físico ETHERNET

El transceptor físico Ethernet (EPHY) funciona de acuerdo a los criterios de la norma IEEE 802.3 para operación a 10 y 100 Mbps (10BASE–T/100BASE–TX). Requiere un cristal de 25 MHz para su operación. El EPHY provee codificación y decodificación digital/analógica, lo cual permite la conexión del sistema digital formado por el microcontrolador, con el cable UTP que maneja señales analógicas. El diagrama de bloques del módulo se observa en la Figura 3.4. El EMAC se puede conectar a un dispositivo PHY externo a través de uno de los puertos del microcontrolador o al módulo EPHY interno. En el registro de Control de Red, ilustrado en la Figura 3.11, se configura el EMAC en modo de PHY externo escribiendo un 1 al bit EXTPHY. La mayoría de las configuraciones del EPHY se hacen a través de sus registros internos, a los cuales se accede por medio de la interfaz MII (Medium Independent Interface). Los registros internos del EPHY no son accesibles directamente ni son visibles desde el mapa de registros del microcontrolador. Las configuraciones que se pueden ajustar desde los registros del microcontrolador son: la dirección del EPHY, habilitar los relojes para operaciones de 10 y 100 Mbps, auto negociación y habilitar interrupciones PHY.

Page 44: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 3.4 Bloques del transceptor físico Ethernet

Page 45: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

4 Modelo TCP/IP

4.1 Breve historia 4.2 Estructura 4.3 Flujo de datos entre las capas 4.4 Descripción general 4.5 ARP – Protocolo de Resolución de Direcciones

4.5.1 Formato de mensajes ARP 4.6 IP – Protocolo de Internet

4.6.1 Formato de datagramas IP 4.6.2 Direcciones IP 4.6.3 Subredes 4.6.4 Máscara de subred

4.7 ICMP – Protocolo de Mensajes de Control de Internet 4.7.1 Formato de mensajes ICMP

4.8 UDP – Protocolo de Datagramas de Usuario 4.8.1 Puertos 4.8.2 Formato de datagramas UDP

4.9 TCP – Protocolo de Control de Transmisión 4.9.1 Confiabilidad en la entrega y recepción de datos 4.9.2 Etapas de la comunicación

4.9.2.1 Establecimiento de la conexión 4.9.2.2 Intercambio de información y control de flujo 4.9.2.3 Cierre de la conexión 4.9.2.4 Ejemplo de comunicación TCP en sus 3 etapas

4.9.3 Formato de los segmentos TCP 4.10 Sockets 4.11 HTTP – Protocolo de transferencia de Hipertexto

4.11.1 Identificadores de Recursos Uniformes (URI) y Localizadores de Recursos Uniformes (URL) 4.11.2 Método de acceso al servidor 4.11.3 Mensajes de solicitud y respuesta

4.11.3.1 Solicitud HTTP 4.11.3.2 Respuesta HTTP

Page 46: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Como se mencionó en el apartado 2, la comunicación entre dos dispositivos conectados a una red se divide en capas para facilitar su diseño e implementación. Cada nivel realiza una tarea específica para dar solución a algún problema de la comunicación y requiere los servicios que brindan las capas inferiores para proporcionar un conjunto de servicios a las capas superiores. Las funciones que realiza cada una de la capas se generalizan en el modelo de referencia OSI, analizado en el capítulo 2. Los diferentes modelos empleados para la implementación de redes pueden ser explicados a partir del modelo OSI, ya que su estructura es similar y cumplen objetivos idénticos. Los protocolos de redes, que son soluciones prácticas con las que se implementa un modelo, operan en diferentes niveles, es decir, existen protocolos para cada capa del modelo de red empleado para la comunicación. La implementación de dichos protocolos se realiza a través de un conjunto de programas o rutinas de software al que se denomina pila o stack. En este capítulo se describen los protocolos del modelo TCP/IP.

4.1 Breve historia Cuando ARPANET (Red de la Agencia de Proyectos de Investigación Avanzada) ya estaba en funcionamiento, su desempeño era aún lento y presentaba fallas y caídas en el sistema de manera frecuente, además del hecho de que siendo una red utilizada por el Departamento de Defensa, era propensa a ataques externos y su integridad estaba constantemente amenazada. Lo anterior motivó a la Agencia de Proyectos de Investigación Avanzada (DARPA) a desarrollar nuevas tecnologías de transmisión de datos. De esta manera se inició el desarrollo de una nueva generación de protocolos, con la finalidad de brindar un servicio más confiable, seguro y robusto. Como resultado de este trabajo nació la familia de protocolos TCP/IP desarrollada por Robert E Kahn y Vint Cerf a mediados de la década de los 70, aunque fue años más tarde que se incorporó a la red ARPANET. Para el año de 1978, los protocolos de la pila se probaron de manera exitosa en una red de Estados Unidos que se conectó a otra red ubicada en Londres. Fue hasta 1982 que se estableció TCP/IP como la pila de protocolos para la red ARPANET y el Departamento de Defensa los declaró estándares para uso militar. Finalmente, en 1983 se estandarizó como pila de protocolos básicos de red. Poco a poco TCP/IP se ha ido integrando a las redes existentes, hasta llegar a ser el estándar en comunicaciones más usado a nivel mundial. El modelo TCP/IP forma la tecnología base para una red de redes global, su uso general se encuentra en la comunicación de grupos de redes interconectadas. Actualmente son muchas las industrias que usan TCP/IP como protocolos de comunicación, entre las que se pueden mencionar a las industrias aeroespacial, automotriz, electrónica, hotelera, petrolera, de servicios de impresión, farmacéutica, entre muchas otras, así como escuelas, universidades, laboratorios, centros de investigación y más. Una ventaja por la cual TCP/IP ha sido preferido es por su capacidad para interconectar diferentes tipos de hardware y equipos con distintos sistemas operativos, ya que funciona sobre muchas tecnologías de redes y posee un alto grado de interoperabilidad. Una característica de la pila de protocolos TCP/IP es que la fiabilidad de la comunicación es responsabilidad del dispositivo, no de la red, con lo que el trabajo de la pila se reduce al mínimo y se hace posible conectar diferentes tipos de redes.

4.2 Estructura del modelo El diseño del modelo TCP/IP se basa en la idea de que dos dispositivos de una red se pueden comunicar entre ellos sin importar el lugar geográfico en donde residen y que para hacerlo no es necesario que los dispositivos involucrados entiendan la forma de trabajar del sistema subyacente ni la tecnología de red necesaria para llevar a cabo el proceso. Para hacer esto posible dicho sistema se basa en la interconexión de redes independientes. . Para cumplir las metas de diseño requeridas el modelo TCP/IP se define en cuatro capas y a cada una le corresponde una o más del modelo OSI, como se muestra en la Figura 4.1. Estas capas son:

1. Capa de aplicación 2. Capa de transporte

Page 47: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

3. Capa de red 4. Capa de enlace

Figura 4.1 Correspondencia entre el modelo OSI y el modelo TCP/IP y ejemplo de algunos protocolos que integran la pila

En la Tabla 4.1¡Error! No se encuentra el origen de la referencia. se muestran las funciones de cada una de las capas del modelo TCP/IP y algunos ejemplos de protocolos de cada capa del modelo.

Tabla 4.1 Funciones de las capas del modelo TCP/IP y ejemplos de protocolos

CAPA Aplicación

Transporte

Red

Enlace

FUNCIÓN

Es un conjunto de protocolos que proporcionan servicios específicos a los usuarios de la red, por ejemplo servicio de correo electrónico o de transferencia de archivos. Realiza y mantiene una comunicación entre equipos finales. Se encarga de la entrega y el encaminamiento de paquetes entre los equipos de diferentes redes interconectadas. Implementa la transmisión de información para un medio físico específico.

EJEMPLO

HTTP Protocolo de Transferencia de Hipertexto SMTP Protocolo Simple de Transferencia de Correo POP3 Protocolo de Oficina Postal Versión 3 Telnet Red de Telecomunicaciones (acceso a equipos remotos) FTP Protocolo de Transferencia de Archivos

TCP Protocolo de Control de Transmisión UDP Protocolo de Datagramas de Usuario

IP Protocolo de Internet ICMP Protocolo de Mensajes de Control de Internet ARP Protocolo de Resolución de Direcciones 12

Ethernet (IEEE 802.3) Token Ring

Como se observa en la Tabla 4.2 la pila TCP/IP incluye una gran variedad de protocolos diferentes, enfocados a distintos tipos de aplicaciones y servicios. En total abarcan más de cien, pero la base para todos ellos son los dos protocolos que dan nombre a toda la familia: el Protocolo de Control de Transmisión (TCP) y el Protocolo de Internet (IP). En esta tesis se implementan los protocolos mostrados en la Tabla 4.2. Por ejemplo en la capa de aplicación se implementa el protocolo HTTP, ya que el propósito es habilitar un microcontrolador como servidor web y para ello es necesario hacer uso de las funciones del Protocolo de Transferencia de Hipertexto. Como 12 El protocolo ARP se encuentra entre la capa de red y la capa de enlace

Page 48: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. trabajo futuro se puede dar más funcionalidad al sistema de control por red, añadiendo servicios como el correo electrónico o la transferencia de archivos.

Tabla 4.2 Implementación de protocolos TCP/IP Capa Aplicación Transporte Red Enlace

Protocolo HTTP TCP, UDP IP, ICMP, ARP Ethernet

4.3 Flujo de datos entre las capas del modelo Al igual que en el modelo OSI, en el modelo TCP/IP los datos pasan de un protocolo a otro (o de una capa a otra) para su tratamiento. La información se genera en la capa de aplicación y se pasa a la capa de transporte, donde se añade el encabezado de la capa de transporte y el paquete resultante se envía al protocolo de la capa de red. En la capa de red se toman los datos provenientes de la aplicación, más el encabezado de la capa de transporte y se añade el encabezado del protocolo de red. Posteriormente los datos se entregan a la capa de enlace, en donde se añade el encabezado correspondiente y los datos son convertidos en señales que finalmente se transfieren por el medio físico. Una vez que la información llega a su destino ocurre el proceso inverso: la información es recibida por el controlador de red, que implementa las funciones de la capa de enlace, decodifica la señal proveniente del medio, verifica el contenido del encabezado Ethernet, lo quita del paquete y entrega el resto a la capa de red. La capa de red en el nodo receptor encuentra los encabezados de su protocolo y los remueve, realiza sus funciones y si el paquete es válido lo pasa al protocolo de la capa de transporte. Aquí se remueven los encabezados del protocolo de transporte, se realizan las funciones establecidas para los protocolos de esta capa y finalmente se entrega la información al protocolo correspondiente de la capa de aplicación. En la Figura 4.2 se ilustra el procedimiento de transmisión y recepción de datos entre dos nodos utilizando el modelo TCP/IP.

Figura 4.2 Flujo de datos a través de las capas del modelo

4.4 Descripción general En el nivel más bajo del modelo TCP/IP se encuentra la capa de enlace, donde se implementan las funciones correspondientes a la capa de enlace y la capa física del modelo OSI. Dichas funciones las realiza el controlador de red y para el caso de redes Ethernet (LAN), siguen el estándar IEEE 802.3. El controlador de red posee los medios necesarios para codificar y decodificar señales, así como recibir y transmitir datos. Es necesaria la programación de algunas funciones para manejar el módulo controlador de red. Estas funciones se conocen como software del controlador de red y se ocupan del manejo de la información almacenada en los buffers, como recuperarla y enviarla a los siguientes niveles o recibir los datos provenientes de las capas superiores y acomodarlos en el espacio de memoria necesario para que el controlador los transmita por la red. Las funciones que ofrece el software del controlador de red son

Page 49: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. utilizadas por los protocolos de los niveles más altos y son funciones del tipo: iniciarTransmisión, recibir, leerBuffer, escribirBuffer, limpiarBuffer y otras parecidas. El nivel de enlace de datos puede ser implementado para diferentes tecnologías de redes con la idea de proporcionar un conjunto de funciones similares para cada tipo de red, de tal forma que la interfaz proporcionada al nivel superior sea la misma, sin importar la implementación específica del software, ya que dicha implementación está directamente relacionada con la tecnología del hardware de la red. Lo importante es contar con las funciones de las que hará uso la capa de red, independientemente de su implementación. Bajo este esquema, si el hardware de la red cambia, sólo tiene que sustituirse el software del controlador de red anterior por el que maneja al nuevo controlador de red, el cual proporciona las mismas funciones al nivel superior y los demás aspectos de la red quedan intactos. En la capa de red, también llamada capa de internet, se encuentra ubicado el protocolo de Internet (IP). Esta capa se encuentra inmediatamente sobre la capa de enlace y requiere las funciones proporcionadas por el software del controlador de red. El Protocolo de Internet está diseñado para resolver problemas de interconexión de redes, siendo este nivel el que permite que la comunicación se pueda realizar de una red a otra, de manera que los niveles superiores realicen su trabajo como si se tratará de una sola red uniforme. En la capa de transporte se implementan dos protocolos: TCP y UDP. La diferencia entre estos dos protocolos es que uno maneja un servicio orientado a conexión y el otro no, por lo que la implementación del primero es más compleja que la del segundo. TCP ofrece un servicio fiable y orientado a la conexión. Cada vez que se requiere enviar información usando el protocolo TCP se debe establecer una conexión entre el emisor y el receptor, cada segmento de datos enviados debe ser confirmado y al término de la comunicación se debe cerrar la conexión. Para manejar el intercambio de información TCP hace uso de temporizadores o timers; de tal manera que si un paquete enviado no es confirmado dentro de un periodo de tiempo establecido, TCP lo retransmite antes de enviar un nuevo paquete de datos. Dicho en otras palabras, no se permite el envío de datos hasta que el último paquete enviado haya sido confirmado. De esta manera se asegura la entrega de datos. TCP también se encarga de detectar y corregir errores en los datos, entregarlos en el orden correcto y evitar su duplicidad. Por otro lado, UDP ofrece un servicio no orientado a conexión en el cual los datos son enviados a un destino sin esperar a que se confirme su recibo, por lo que no garantiza la entrega. Si durante la transmisión un paquete se pierde UDP no tiene manera de saberlo ni toma medidas al respecto. Debido a su naturaleza no orientada a conexión, la implementación de UDP resulta más sencilla que la de TCP, ya que no necesita establecer y cerrar conexiones, manejar temporizadores, esperar confirmaciones, realizar corrección de errores, verificar orden de entrega de paquetes, evitar duplicaciones ni realizar retransmisiones. La ventaja de UDP frente a TCP es que su desempeño es mucho más rápido, simplemente se ocupa en enviar datos tan rápido como le sea posible. La elección entre un protocolo u otro para la capa de transporte depende de la aplicación. Hay aplicaciones en las que es fundamental que no se presenten pérdidas de datos, aunque se tenga que aumentar el tiempo de transferencia. Un ejemplo de este tipo de aplicaciones sería la transferencia de archivos. Para otras aplicaciones es fundamental que la transmisión se realice lo más rápido posible, como en la transferencia de video en tiempo real, en la cual los datos deben ser enviados tan rápidamente como se generan y no importa mucho si un pequeño pedazo de información no es recibido, ya que esta pérdida no es relevante. Otro ejemplo sería un sistema que sensa el estado de una variable y envía lecturas constantemente a una aplicación por red para realizar la gráfica de la variación de la señal sensada. En este caso la pérdida de un dato no causara inconvenientes, ya que la falta de un punto en la gráfica no es relevante. Los protocolos de la capa de aplicación pueden estar basados en el protocolo TCP o en el protocolo UDP, según la función a la que estén enfocados. Las aplicaciones HTTP usan TCP. Cuando se genera un mensaje la información se pasa a TCP, el cual abre una conexión y envía los datos. En el extremo opuesto, TCP procesa la información recibida, le avisa a la aplicación que han llegado nuevos datos y envía un segmento de confirmación al nodo emisor. Cuando ya no hay más información que enviar o recibir se cierra la conexión. Hay que hacer notar que para el protocolo TCP el intercambio de información puede ser de datos provenientes de la aplicación, o de datos generados en el nivel de transporte, como es el caso de los paquetes de control que envían una confirmación de recepción o las solicitudes de inicio o término de conexión.

Page 50: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Las aplicaciones que utilizan UDP no necesitan abrir y cerrar conexiones ni enviar segmentos de control como confirmaciones, simplemente generan información y la pasan a UDP para que se encargue de su envío, mientras que en el extremo receptor las aplicaciones reciben información de UDP y la procesan. Los protocolos descritos anteriormente, junto con el software del controlador de red, cumplen la funcionalidad básica de las capas del modelo TCP/IP, sin embargo se basan en protocolos adicionales para completar sus prestaciones o utilizan protocolos que brindan alguna funcionalidad complementaria. Dos de estos protocolos son el Protocolo de Resolución de Direcciones o ARP y el Protocolo de Mensajes de Control de Internet o ICMP. ARP es un protocolo necesario para determinar la dirección física a la que se debe enviar un paquete a partir de su dirección IP. En el nivel de enlace los paquetes utilizan direcciones físicas para su transmisión, mientras que en el nivel de red se hace uso de direcciones de red. La capa de enlace se apoya en ARP para enviar paquetes a un nodo del que se conoce su dirección IP pero no su dirección física. ICMP es un protocolo auxiliar que permite enviar mensajes de error o informativos sobre el funcionamiento de una red. La función de este protocolo no es esencial para la comunicación, pero resulta útil para realizar pruebas y corregir errores. En los siguientes temas se presenta una descripción detallada de cada uno de los protocolos que se implementan en esta tesis, desde los protocolos de las capas más bajas hasta los de las más altas de la pila TCP/IP.

4.5 ARP – Protocolo de Resolución de Direcciones Cada dispositivo conectado a una red posee tanto una dirección física (también llamada dirección MAC), como una dirección de red (o dirección IP). Las direcciones de red son usadas por los protocolos de alto nivel para enviar paquetes a través de una red de redes, se deben especificar en el encabezado de los datagramas IP y se tratarán en el protocolo IP. Las direcciones MAC son usadas por los controladores de red para enviar las tramas Ethernet a través de redes físicas y se deben especificar en el encabezado de las tramas. Cuando un paquete debe ser transmitido pasa de la capa de red a la capa de enlace indicando en el encabezado de red la dirección IP del destino, como se muestra en la Figura 4.3. Para formar una trama Ethernet el emisor necesita conocer la dirección MAC de destino cuya IP se encuentra en el datagrama, para lo cual hace uso de las funciones de ARP. Una vez que la dirección física correspondiente se ha encontrado, ésta se añade al encabezado de la trama Ethernet y el paquete se envía. ARP es el protocolo que hace posible la resolución de una dirección física a partir de una dirección de red y permite que los protocolos de alto nivel trabajen sólo a partir de sus direcciones de red, ocultando los detalles de las direcciones físicas de los dispositivos. ARP fue originalmente diseñado para redes de tipo Ethernet, pero ha sido generalizado para poder ser usado por otros tipos diferentes de interfaces físicas.

Figura 4.3 Construcción de una trama Ethernet a partir de un datagrama IP

El funcionamiento de ARP se basa en el direccionamiento broadcast (o difusión, cuya dirección física corresponde a FF FF FF FF FF FF) para enviar un mensaje de petición (solicitud ARP) a todos los integrantes de una red, informando la dirección IP del dispositivo cuya dirección física se requiere conocer. El dispositivo que reconoce su dirección IP en el mensaje responde enviando su dirección física al emisor,

Page 51: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

mientras que los demás dispositivos descartan el mensaje ya que no está dirigido a ellos. La Figura 4.4 ilustra el procedimiento. En una red cada nodo debe mantener una tabla donde almacena las direcciones IP con sus correspondientes direcciones físicas. Cada vez que se resuelve una dirección, el par de direcciones IP–MAC se agrega a la tabla. Esta tabla se llama tabla de direcciones ARP y permite el uso constante de una dirección MAC, al reducir la cantidad de peticiones y en consecuencia el retardo en posteriores entregas al mismo nodo. Cuando la capa de enlace requiere enviar una trama, busca dentro de la tabla ARP la correspondiente dirección física que debe añadir en el campo dirección de destino de la cabecera Ethernet, si ésta no se encuentra aún, ARP genera un mensaje de solicitud y lo difunde por la red. Al recibir la respuesta la almacena en su tabla y procede a formar la trama Ethernet y a enviar la información a la máquina con la dirección física recibida. De igual forma, cuando una petición llega a cualquier dispositivo de la red, sea o no para él, el receptor puede agregar la dirección IP y dirección física del transmisor, indicadas en la solicitud, a su tabla de direcciones.

Figura 4.4 Procedimiento de solicitud y respuesta ARP

Los valores de la tabla ARP deben renovarse periódicamente, ya que la dirección física de un dispositivo podría cambiar si se cambia el hardware del controlador de red. En general las entradas de la tabla son valores temporales a los que se les denomina entradas dinámicas. Las entradas dinámicas o temporales, tienen un tiempo de vida determinado, si dentro de este tiempo son recibidos nuevos mensajes ARP con los datos de la entrada, se toman las direcciones IP y MAC del emisor y se sobreescriben en la tabla. Si el tiempo de vida de una entrada temporal caduca ésta se borra de la memoria para liberar espacio. Es necesario destacar que también pueden existir valores fijos en las tablas, es decir, se renuevan pero no se borran, a estos valores se les conoce como entradas estáticas. Una entrada estática o fija puede ser por ejemplo el par de direcciones IP–MAC del gateway de la red. Existen dos situaciones posibles al enviar un paquete IP:

1. Que el destino se encuentre dentro de la misma red física que el transmisor. 2. Que el destino se encuentre en otra red, a la cual se accede a través de una o varias compuertas de

red (ruteadores, conmutadores o gateways). Para el primer caso, el transmisor forma una trama Ethernet y busca en la tabla ARP la dirección física correspondiente a la IP destino y en caso de no encontrarla genera una solicitud ARP, que al ser respondida permite entregar directamente la trama a su destino. Para el segundo caso, el transmisor busca en la tabla ARP la dirección física de la compuerta de red y en caso de no encontrarla, genera una petición ARP con la IP de la compuerta, la cual encamina todos los paquetes cuya IP se encuentre fuera de la red. Una vez conocida la dirección MAC de la compuerta, todos los paquetes con IP que no pertenezca a la red se envían a la compuerta con la dirección física de ésta, pero con la IP del dispositivo final. Para determinar si una IP se encuentra dentro o fuera de la red, se utiliza un valor denominado máscara de subred, término que se explica en el Protocolo de Internet.

Page 52: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Mientras no se conozca la dirección física de entrega de un paquete, éste debe permanecer almacenado en la memoria. ARP espera un tiempo por la respuesta después de enviar una solicitud, mientras mantiene el paquete en una cola de espera. Si la respuesta no llega y el tiempo de espera se agota, se reenvía la solicitud. Se debe definir un tiempo de espera máximo y un número de retransmisiones permitidas para los mensajes ARP enviados. Cada vez que el tiempo de espera de una respuesta expira, la solicitud se vuelve a enviar, hasta que las retransmisiones se agoten. Una vez que la respuesta llega se procede al envío de la información que está esperando en cola.

4.5.1 Formato de mensajes ARP El formato de los mensajes ARP se muestra en la Figura 4.5, en cada renglón se representan 4 bytes. El mensaje está formado por 28 bytes, que incluyen los campos que se muestran en la figura y se describen a continuación.

Figura 4.5 Formato de un mensaje ARP

Tipo de hardware. Es un campo formado por 2 bytes en el que se especifica el tipo de interfaz física utilizada por la red, ya que ARP se puede usar en diferentes redes físicas. El tipo de hardware para las redes Ethernet es 1. En la Tabla 4.3 se muestran otros tipos de interfaces físicas existentes.

Tabla 4.3 Tipos de interfaz de hardware

Tipo Interfaz física

1 Ethernet 2 Ethernet experimental 3 Amateur radio X.25 4 Proteon ProNET token ring 5 Chaos 6 IEEE 802 network 7 ARCNET

Protocolo. El campo protocolo es de 2 bytes e indica el código de protocolo de red usado. Para el caso de las redes Ethernet el protocolo de red empleado corresponde a IP, cuyo código es 0x0800 (ethertype para IP). Longitud de la dirección hardware. Este campo consta de 1 byte en el que se especifica el tamaño (en bytes) de la dirección física de la red. Para el caso de redes Ethernet las direcciones MAC están conformadas por 48 bits, es decir 6 bytes. Longitud del protocolo. Campo formado por 1 byte que indica el tamaño (en bytes) de la dirección de red. Para el caso de las direcciones IP su longitud es de 4 bytes. Este campo y el anterior son necesarios para el protocolo ARP porque, como se mencionó, se usa en diferentes tipos de redes físicas que manejan formatos distintos para sus direcciones de hardware. Código de operación. Se usan 2 bytes para el código de operación del protocolo. El valor de este campo indica la operación requerida por el mensaje ARP que puede ser una solicitud (código de operación = 1), o una respuesta (código de operación = 2). Cuando un nodo reconoce su dirección IP en un mensaje ARP, verifica el código de operación para saber si se trata de un mensaje de solicitud o de la respuesta a una solicitud previamente enviada.

Page 53: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Dirección física origen. Este campo consta de 6 bytes y especifica la dirección física del dispositivo que genera el mensaje. Cuando una solicitud llega a un nodo la dirección física de quien envía la solicitud (contenida en este campo) se agrega a la tabla de direcciones. Dirección IP origen. Es un campo de 4 bytes en donde se especifica la dirección de red del nodo emisor. Este valor también se agrega a la tabla ARP junto con la dirección MAC de origen especificada en el campo anterior. Dirección física destino. Este campo consta de 6 bytes para la dirección física del dispositivo al que se requiere enviar un mensaje ARP. En el caso de las solicitudes, como aun no se conoce la dirección física del destinatario (puesto que el objetivo del mensaje es precisamente conocerla), en este campo se escribe la dirección de difusión, es decir el valor FF FF FF FF FF FF, que permite que el mensaje sea recibido por todos los miembros de la red. En el caso de la respuesta, el valor de este campo se llena con el valor del campo dirección física de origen contenido en la solicitud (que ahora es el destino para enviar la respuesta), y se especifica la dirección física solicitada (es decir la propia) en el campo dirección física de origen del mensaje de respuesta. Dirección IP destino. Este campo consta de 4 bytes y especifica la IP del nodo remoto. En el caso de las solicitudes el valor de la dirección IP destino indica el dispositivo del que se desea conocer su dirección física. Para las respuesta, la dirección IP destino corresponde a la dirección del dispositivo que envió la solicitud.

4.6 IP – Protocolo de Internet El Protocolo de Internet, o protocolo IP (Internet Protocol), se encarga de la entrega y el encaminamiento de paquetes a través de una red formada por varias redes interconectadas entre ellas. Este nivel recibe datos de la capa de transporte, los ensambla en datagramas y selecciona la mejor ruta para entregarlos. A la unidad de datos manejada por IP se le denomina datagrama o paquete. IP utiliza un sistema de entrega de paquetes sin conexión, es un protocolo no confiable, ya que la entrega de los datos no está garantizada. En su recorrido del origen al destino un paquete probablemente tendrá que atravesar varias redes y podría perderse, retrasarse, llegar duplicado, alterado o desordenado. IP no toma medidas al respecto, toda la fiabilidad en la entrega de datos, en caso de ser necesaria, se deja al protocolo de la capa de transporte. La única seguridad que ofrece IP es un mecanismo de checksum (suma de verificación) aplicado sobre la cabecera y que no incluye los datos. Debido a que IP es un protocolo sin conexión, a diferencia de los servicios orientados a conexión que establecen un camino único (circuito virtual) para todos los datos enviados a través de una conexión, los datagramas en IP se envían de manera independiente y pueden tomar caminos distintos, por lo tanto cada datagrama enviado debe contener la dirección de red del destino en el encabezado IP. Como protocolo de nivel de red, IP proporciona los servicios de encaminamiento y entrega de paquetes entre redes. Si el destino se encuentra dentro de la misma red física que el transmisor, los algoritmos de encaminamiento no tienen mucho sentido, la información se entrega de manera directa. De no cumplirse la condición anterior, el datagrama se entrega al ruteador de la red, que debe contener información sobre la localización de otras redes y decide hacia dónde encaminar el paquete para que alcance su destino. Si este destino se encuentra en alguna red alcanzable por el ruteador, se pasa el paquete a dicha red o, en caso contrario se envía hacia otro ruteador que lo acerque más a la red a la que desea llegar. En cada ruteador se evalúa la dirección de red del paquete para implementar el algoritmo de encaminamiento. El último ruteador está conectado a la red que contiene el dispositivo final y el paquete se pasa a dicha red para ser entregado finalmente a su destino. El tamaño máximo de un datagrama IP está limitado a 65 536 bytes. Sin embargo, las restricciones del hardware ponen un límite a la capacidad de transmisión a través de una red, cantidad a la que se denomina Unidad Máxima de Transmisión o MTU (Maximum Transmission Unit). El MTU es característico de cada red y define la cantidad máxima de bytes que una red física puede transportar. Esta cantidad está relacionada con la tecnología de la red, por ejemplo, el tamaño máximo de transferencia para redes

Page 54: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Ethernet es de 1518 bytes y para redes PPP13 es de 575 bytes. El MTU se refiere al tamaño de las tramas, ya que es la unidad de información que se utiliza a nivel físico. Ya que un datagrama IP viaja dentro de una trama, puede suceder que su tamaño no siempre se ajuste de manera adecuada para poder ser transportado por una red física. Cuando el tamaño de un paquete IP excede la capacidad de transferencia de una red, es necesario establecer un mecanismo que resuelva el problema. Aun cuando se resuelva para una red específica, ajustando el tamaño del datagrama de acuerdo a las limitaciones de la red donde se genera, al viajar a su destino el datagrama puede atravesar muchas otras redes, en donde quizá la consideración hecha para su tamaño no satisface las necesidades de las otras redes. El mecanismo establecido por IP para resolver el inconveniente se denomina fragmentación, y consiste en descomponer un datagrama en fragmentos cuando es demasiado grande para viajar por una red física. El tamaño de cada fragmento es tal que pueda ser transportado a través de un hardware específico y cada fragmento se envía en una trama como un datagrama independiente. Al llegar a su destino, el paquete fragmentado se reensambla, para lo cual IP debe informar al receptor si un paquete está fragmentado y en caso de ser así debe proporcionar un número de secuencia que permita al dispositivo destino reensamblar el paquete en el orden correcto antes de pasarlo a la siguiente capa.

4.6.1 Formato de datagramas IP Los datagramas IP están formados por un encabezado que contiene información sobre el protocolo, el datagrama y los datos que provienen de los niveles superiores. El formato de los paquetes IP se muestra en la Figura 4.6, donde se representan 4 bytes en cada renglón. El encabezado está formado por los primeros 20 bytes y algunos campos opcionales de longitud variable.

Figura 4.6 Formato de un datagrama IP

A continuación se describen los campos del encabezado IP. Versión. Campo de 4 bits que indica la versión del protocolo con la que fue creado el datagrama. Cuando un dispositivo recibe un paquete IP, debe evaluar el número de versión para saber el formato de los datos que incluye. La versión que actualmente se encuentra en uso es la número 4, pero la versión 6 ya está desarrollada. Si un dispositivo que sólo implementa la versión 4 recibiera un datagrama con el formato de la versión 6, al revisar el campo versión descartaría el paquete, ya que no sabría cómo interpretarlo. El formato que se utiliza en esta tesis tema corresponde a la versión 4 (IPv4). Longitud de la cabecera (Header Length). Debido a que la cabecera no tiene un tamaño fijo, en este campo de 4 bits se indica su longitud medida en palabras de 4 bytes, para que el receptor sepa dónde termina el encabezado y comienzan los datos. El último campo de la cabecera tiene una longitud variable y es opcional. Si este campo no existe, la cabecera tiene un tamaño de 20 bytes (el campo longitud de la cabecera contiene el valor 5). El campo variable puede tener una longitud máxima de 40 bytes (10 palabras), por lo tanto, el valor mínimo del campo longitud de la cabecera es 5 y el máximo 15 (los paquetes con un campo opcional de tamaño máximo contienen 60 bytes en la cabecera). 13 Point to Point Protocol. Es un protocolo usado para conectar 2 dispositivos directamente

Page 55: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Longitud total. Este es un campo de 16 bits que especifica la longitud total en bytes del paquete IP, incluyendo el encabezado y los datos. Al sólo contar con 16 bits para expresar la longitud de un paquete, el tamaño máximo que puede tener es de 65 535 bytes. Para conocer el tamaño de los datos se puede restar la longitud del encabezado a la longitud total. Tipo de servicio. Se le conoce como TOS (Type Of Service). Es un campo de ocho bits que se divide en cinco subcampos para expresar el tipo de servicio que requiere un dispositivo que envía paquetes IP.

Figura 4.7 Contenido del campo Tipo de Servicio en la cabecera de un datagrama IP

La prioridad indica la importancia que se le debe dar al datagrama, comprende valores desde el 0 (prioridad normal) hasta el 7 (usado para control). Los valores D, T y R especifican el tipo de transporte solicitado por el emisor, cuando contienen un valor de uno:

D: solicita procesamiento con retardos cortos. T: solicita alto desempeño R: solicita alta confiabilidad

Los valores de este campo indican qué tipo de servicio requiere la aplicación y ayudan a los ruteadores a seleccionar las rutas que mejor cumplen con el criterio indicado, por ejemplo, seleccionar una red física más rápida que las otras. Los nodos finales no ocupan estos valores, sólo los ruteadores. Identificación. Este campo está compuesto por 2 bytes. Cada datagrama IP debe estar marcado con un número que lo identifique. Si un datagrama se fragmenta, el número de identificación permite saber a qué datagrama pertenece cada fragmento y le permite al destino reensamblarlo a partir de los fragmentos, ya que cada uno tiene el mismo número de identificación que tenía el datagrama original. El número de identificación puede ir desde el 0 hasta el 65 535. Flags. El campo Flags incluye los bits 7, 6 y 5 de un byte del encabezado (consultar Figura 4.6). Los bits 5 y 6 informan el estado de la fragmentación de un paquete. Al bit 6 se le conoce como el bit de no fragmentación. Cuando un datagrama incluye esta bandera con el valor lógico 1, se le informa a los ruteadores que el paquete no debe ser fragmentado, ya que sólo es útil si se transporta completo. Si algún ruteador en el camino está conectado a una red con MTU menor al tamaño del datagrama y el datagrama incluye la bandera de no fragmentación, el ruteador descarta el paquete por ser imposible su transmisión a través de la red física a la que está conectado. El bit 5 se denomina bit de más fragmentos y sirve para indicarle al nodo final si un fragmento es el último de un datagrama fragmentado (bit 5 = 0), o si a continuación vienen más fragmentos (bit 5 = 1). Desplazamiento del fragmento. Este campo está formado por 13 bits. En un datagrama fragmentado, cada fragmento contiene una cantidad determinada de bytes. En el campo desplazamiento se especifica un valor para cada fragmento que indica la cantidad de bytes que dicho fragmento se tiene que desplazar, desde el inicio, para formar el datagrama original. Por ejemplo, supongamos que un datagrama de 1400 bytes se fragmenta en tres partes para poder ser transportado por una red con tamaño de MTU = 620. El tamaño de los fragmentos se fija en 600, 600 y 200 bytes respectivamente. El primer fragmento tiene un valor de desplazamiento de 0, ya que es el inicio del datagrama; el segundo fragmento tiene un desplazamiento de 600 bytes desde el inicio del datagrama y en el tercer fragmento su desplazamiento es de 1200 bytes. El valor del campo desplazamiento se especifica en unidades de 8 bytes, es decir, que para los 3 datagramas anteriores sería: 0, 75 y 150. El campo longitud total de cada fragmento de datagrama indica el tamaño del fragmento, no el tamaño del datagrama sin ser fragmentado. Cuando el datagrama se reensambla se utilizan los valores de longitud total de cada fragmento y sus valores de desplazamiento para calcular el tamaño total del datagrama. TTL (Time To Live). Es un campo de 1 byte que especifica el tiempo (en segundos) que un datagrama puede existir dentro de una red de redes. Cuando un ruteador recibe un datagrama IP decrementa el número de este campo en 1. Si el ruteador está muy congestionado, registra el tiempo que transcurre desde que el paquete llega hasta que es enviado y, antes de hacerlo, decrementa el tiempo de vida del paquete la cantidad de segundos que hayan transcurrido. Cuando el tiempo de vida de un datagrama llega a cero, se

Page 56: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

descarta. El tiempo de vida puede llegar hasta los 255 segundos, el valor típico de un datagrama IP es de 64 segundos. Protocolo. Campo formado por 1 byte que le indica al receptor qué tipo de información acarrea el paquete IP. Es un valor entero que identifica el protocolo de los datos contenidos en el paquete y puede ser TCP (6) o UDP (17). También el protocolo ICMP (1) usa IP para enviar mensajes (aunque no es un protocolo de nivel superior a IP). Cualquier otro protocolo que haga uso de los servicios de IP para enviar información debe agregar su código de protocolo en el campo protocolo. Checksum. La suma de verificación es un valor de 2 bytes que se usa para asegurar la integridad del encabezado IP, sin garantizar nada sobre los datos contenidos en el datagrama. Se calcula sumando el contenido de toda la cabecera mediante el complemento aritmético a uno, tomando los datos como enteros de 16 bits contiguos. Después de realizar la suma se obtiene el complemento a uno. Para realizar el cálculo al campo de checksum se le da el valor de cero. Dirección IP origen. Campo de 4 bytes. Dirección que identifica la red en donde se encuentra el dispositivo emisor. Dirección IP destino. Campo de 4 bytes. Dirección que identifica la red en donde se encuentra el dispositivo al cual está dirigido el paquete. Opciones IP. Este es un campo de longitud variable que puede no aparecer en un datagrama. Se utiliza para agregar opciones y la longitud depende de la opción que se agregue. Algunas opciones sólo ocupan un byte mientras que otras incluyen parámetros. El valor máximo del campo de opciones es de 40 bytes (o 10 palabras de 4 bytes). Relleno. Este campo se utiliza para ajustar la longitud de las opciones a un múltiplo de 4 bytes en caso de ser necesario, ya que la longitud del encabezado se mide en palabras formadas por 4 bytes cada una. Por ejemplo si el datagrama sólo incluye una opción de un byte, el relleno se compone de 3 bytes todos iguales a cero y la longitud total de la cabecera será de 6 palabras (o 24 bytes). Datos. El área de datos en el datagrama IP incluye la información proveniente del nivel superior.

4.6.2 Direcciones IP Las direcciones IP son los números que identifican a cualquier nodo dentro de una red de redes. Están formadas por 32 bits, lo cual equivale a direcciones entre 0 y 4294967296. Como esta cifra es muy grande e implicaría la memorización de cantidades comprendidas dentro de ese intervalo, para un manejo más fácil, las direcciones IP se representan mediante cuatro números enteros de ocho bits, separados entre ellos por un punto, es decir, para representar la dirección 4294967296 se usa el número 255.255.255.255, (todos los bits de la dirección puestos a uno, separados en grupos de 8 bits) el cual es más fácil de manejar comparado a la cifra completa de 32 bits. Otra ventaja de este tipo de representación es que permite separar las direcciones IP en dos partes, la primera identifica la dirección de una red (llamada identificador de red), y la segunda identifica la dirección de los dispositivos conectados a ella (llamada identificador de host). Por ejemplo, si se usan 24 de los 32 bits para expresar la dirección de la red, los otros 8 bits se utilizan para especificar el dispositivo conectado a esa red. Con lo anterior se tiene la posibilidad de direccionar 224 (16777216) redes diferentes, con 28 (256) dispositivos cada una. Bajo esta consideración la dirección 194.163.25.11 identifica al nodo número 11 de la red 194.163.25.

Figura 4.8 Ejemplo de formato de dirección IP

Cada red reserva dos valores del identificador de host: el primero y el último, es decir, todos los bits iguales a cero y todos los bits iguales a uno. El valor de cero se reserva para referenciar a la red completa (dirección de red). En el ejemplo anterior la dirección de red se especifica mediante 194.163.25.0. Cuando todos los bits del identificador de host valen uno, la dirección resultante corresponde a la dirección de difusión de la

Page 57: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

red (o dirección broadcast), para este ejemplo 194.163.25.255. Las combinaciones restantes pueden ser empleadas para asignar direcciones a los dispositivos conectados a la red 194.163.25.0 y van desde la dirección 194.163.25.1 hasta la dirección 194.163.25.254, es decir, en realidad sólo puede haber 254 dispositivos conectados a una red de estas y no 256. Las direcciones IP se organizan en cinco diferentes clases de acuerdo a la cantidad de bits que se designen para el identificador de red y para el identificador de host. Los bits más significativos de la dirección se utilizan para especificar el tipo de red del que se trata. En la Figura 4.9 se muestra la distribución de bits para cada clase de direcciones. El formato de la dirección que se utilizó como ejemplo corresponde a la clase C.

Figura 4.9 Clases de direcciones IP

La clase A se designa cuando el bit más significativo de la dirección es igual a cero. Para la identificación de la red se usan 7 bits y 24 son usados para identificar al host, de manera que es posible tener 128 redes con 16777214 nodos cada una. El rango de direcciones clase A abarca desde 1.0.0.0 hasta 127.0.0.0. Para identificar a una dirección clase B, los 2 bits más significativos deben ser 1 0. Estos 2 bits fijos, junto con los siguientes 14 se usan para el identificador de red y los últimos 16 bits para direccionar los nodos dentro de la red. La cantidad de redes posibles es 16384 con 65534 nodos cada una y van desde la dirección 128.0.0.0 hasta la 191.255.0.0. La clase C se identifica por tener los 3 bits más significativos con la secuencia 110. Utiliza los primeros 3 bits fijos más los siguientes 21 para especificar la dirección de la red y los 8 bits restantes para identificar cada nodo. La cantidad máxima de direcciones de red clase C equivale a 2097152, con 254 nodos cada una. Las direcciones posibles que se pueden formar van de la 192.0.0.0 a la 223. 255.255.0. La clase D se usa para especificar una dirección de red multicast, o multidifusión, y la clase E está reservada para usos futuros. La dirección 0.0.0.0 la utilizan los dispositivos cuando están arrancando o no tienen una dirección asignada. Las direcciones 127.x.x.x se reservan para pruebas de retroalimentación y se les denomina dirección de bucle local o loopback. Las direcciones IP son asignadas por la Corporación de Internet para Asignación de Nombres y Números (ICANN, por sus siglas en inglés). Las redes clase A se asignan a los gobiernos de los países, la clase B a empresas y la clase C a otro tipo de solicitantes.

4.6.3 Subredes Las clases de direcciones de red mencionadas tienen longitudes fijas para el identificador de red y el identificador de host. Por ejemplo, una red clase C incluye 2097152 redes con 254 nodos cada una, según el formato mostrado en la Figura 4.9. Si se quisiera un formato de dirección que contuviera únicamente 60 nodos para cada dirección de red, la clase más aproximada sería la C, pero en este caso se tienen 254 nodos por red, y al sólo requerir 60, las demás direcciones se desperdiciarían. Para darle un mejor aprovechamiento a la utilización del espacio de direcciones, se definen subredes, las cuales dividen el espacio de una dirección de red en redes con menor cantidad de nodos. Esto se logra

Page 58: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

quitando bits al identificador de host y agregándolos al identificador de red de una dirección. Por ejemplo, para formar redes de 64 nodos cada una, una dirección clase C se puede dividir en cuattro subredes, dejando sólo 6 bits para el identificador de host y uniendo sus otros 2 bits a la parte del identificador de red. Cada una de estas subredes tendría como dirección de subred la dirección de la red (especificada en los primeros 24 bits) más la combinación formada por los 2 bits que se le quitaron al identificador de host (2 bits más significativos). Retomando el ejemplo de dirección IP clase C dado antes, las cuatro subredes resultantes serían: 194.163.25.0, 194.163.25.64, 194.163.25.128 y 194.163.25.192. Las direcciones de difusión de cada una de las subredes, equivaldrían a poner los 6 bits asignados al identificador de host a 1: 194.163.25.63, 194.163.25.127, 194.163.25.191 y 194.163.25.255. Los demás identificadores de host quedan libres para ser asignados a los nodos de la red, la cual podría incluir hasta 62 nodos.

Figura 4.10 División de una dirección IP clase C en 4 subredes

Mientras mayor sea el número de bits que se le quiten al identificador de host, se pueden formar más subredes, por supuesto con menor número de nodos cada una.

4.6.4 Máscara de subred Para diferenciar la parte de una dirección IP que corresponde al identificador de red de la parte que corresponde al identificador de host, se utiliza un término denominado máscara de subred. Se le llama máscara de subred ya que resulta útil cuando una dirección de red está dividida en subredes, de no ser así, la forma para saber cual parte identifica a la red y cual al host es mirar los primeros bits de la dirección e identificar de qué clase de red se trata, aunque también es válido usar una máscara. La máscara de subred es un número entero de 32 bits con el mismo formato que la dirección IP. Los bits de la izquierda son unos y sirven para identificar la cantidad de bits que forman el identificador de red. Los bits de la derecha son ceros e indican la parte de la dirección que identifica al host. Es decir que si una dirección está formada por 26 bits de dirección de red y 6 de dirección de host, la máscara de subred debe tener los 26 bits más significativos iguales a uno y los 6 menos significativos iguales a cero, lo cual corresponde al valor 255.255.255.192.

Figura 4.11 Máscara de subred

Para extraer la dirección de red de una dirección IP a partir de su máscara de subred, se efectúa una operación AND entre ambas cantidades, esto provoca que los bits del identificador de red preserven su valor, mientras que los bits del identificador de host se vuelven cero:

Figura 4.12 Aplicación de la máscara de subred a una dirección IP

Page 59: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Las máscaras de subred correspondientes a las redes clase A, B y C son las siguientes:

Clase A 255.0.0.0 Clase B 255.255.0.0 Clase C 255.255.255.0

4.7 ICMP – Protocolo de Mensajes de Control de Internet El protocolo de Mensajes de Control de Internet o ICMP (Internet Control Messages Protocol) es un mecanismo de reporte de errores que permite a los ruteadores informar sobre fallas en el proceso de entrega de datagramas a la fuente original. Se considera una parte fundamental del Protocolo de Internet. Debido a que IP es un protocolo sin conexión y que la entrega de paquetes se realiza por caminos diferentes e independientes unos de otros, no se tiene control sobre la ruta que sigue cada paquete ni se sabe que ruteadores visitará. Por lo tanto, cuando surge un error, es difícil determinar en dónde se produjo y es imposible que un ruteador se comunique con el anterior, o con el que produjo el error, para poder corregirlo. Algunos errores que podrían impedir la entrega exitosa de un datagrama a través de una red de redes son:

Que el receptor se encuentre desconectado o apagado Que el tiempo de vida de un datagrama expire Que el ruteador se encuentre muy congestionado y no pueda procesar un paquete Que un datagrama con la bandera de no fragmentar intente cruzar una red con MTU menor a su tamaño

Los mensajes ICMP viajan encapsulados dentro de datagramas IP, ya que ICMP opera sobre una red de redes y utiliza los servicios de IP para direccionar mensajes de regreso al nodo que expidió el datagrama que no pudo ser enviado a su destino. Pese a esto, ICMP no se considera un protocolo de mayor nivel que IP, sino que operan en conjunto al mismo nivel. Para indicar que el datagrama IP acarrea un mensaje ICMP en su área de datos, el valor del campo protocolo del encabezado IP debe contener el valor de 1. Al utilizar IP para entregar mensajes ICMP, también pueden ocurrir errores en su entrega, en estos casos no se genera un nuevo mensaje de error.

4.7.1 Formato de mensajes ICMP Existen diferentes tipos de mensajes ICMP relacionados con el tipo de acción que realizan. Cada uno tiene su propio formato, aunque todos contienen los mismos campos al inicio.

Figura 4.13 Formato general de mensajes ICMP

A continuación se describe el contenido de los campos de los mensajes ICMP. Tipo. Este campo es de 8 bits y sirve para identificar el tipo y formato de mensaje ICMP. Los tipos de mensajes pueden ser los presentados en la Tabla 4.4.

Page 60: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Tabla 4.4 Tipos de mensajes ICMP

Valor del campo

TIPO 0 3 4 5 8

11 12 13 14 15 16 17 18

Tipo de mensaje ICMP Respuesta de ECO Destino Inalcanzable Disminución de origen Redireccionar (cambiar una ruta) Solicitud de ECO Tiempo extendido para un datagrama Problema de parámetros en un datagrama Solicitud de timestamp Respuesta de timestamp Solicitud de información (obsoleto) Respuesta de información (obsoleto) Solicitud de máscara de dirección Respuesta de máscara de dirección

Código. Es un campo de 8 bits que contiene información adicional sobre el tipo de mensaje, en caso de que alguno de los tipos lo requiera. Por ejemplo el tipo 3 (Destino Inalcanzable) incluye en el campo código un valor numérico relacionado con la causa que impidió la entrega del paquete a su destino. Checksum. La suma de verificación de 16 bits utiliza el mismo algoritmo que el checksum de IP y abarca todos los campos del mensaje ICMP. Todos los mensajes ICMP incluyen los tres campos descritos seguidos de otro conjunto de campos específicos del tipo de mensaje. Algunos tipos de mensajes también incluyen el encabezado del datagrama IP en el que se detectó el error, así como los primeros 64 bits de sus datos. Esto ayuda al receptor a determinar la causa del error de manera más precisa. Uno de los mensajes ICMP más usados es la solicitud y respuesta de ECO. Estos mensajes sirven para hacer un diagnóstico y probar si es posible establecer la comunicación entre dos nodos a nivel de red. El dispositivo que desea saber si se puede comunicar con otro dispositivo le envía a este último una solicitud de ECO, en la que puede incluir un conjunto de datos. Si la solicitud logra llegar hasta el destino, el receptor envía una respuesta de ECO al transmisor original e incluye los datos enviados en la solicitud, si los hubiera. Este mecanismo permite cerciorarse de que todo el proceso de comunicación en la red de redes funciona adecuadamente, pues implica que el transmisor y el receptor, así como los ruteadores que forman parte del sistema, son capaces de direccionar y encaminar paquetes de manera correcta a través de una red de redes, que el hardware de los dispositivos involucrados funciona adecuadamente y que el software que implementa los protocolos IP e ICMP también funciona de manera correcta. En la Figura 4.14 se muestra el formato de los mensajes de solicitud y respuesta de ECO. El campo tipo debe contener el valor de 8 si el mensaje es de solicitud, o 0 si es de respuesta. El campo de código no se usa y debe contener el valor de cero. Los campos de identificador y número de secuencia se usan para identificar las solicitudes enviadas y sus correspondientes respuestas recibidas.

Figura 4.14 Formato de un mensaje ECO ICMP

Existe un comando disponible en los sistemas operativos para verificar la comunicación en una red. En la mayoría de estos sistemas el comando recibe el nombre de Ping, cuya función es enviar una solicitud de ECO a un destino específico, esperar la respuesta e imprimir información a cerca de la comunicación. Si la respuesta no regresa, es señal de que alguna parte de la red está fallando.

Page 61: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Debido a la utilidad de esta herramienta de prueba, el mensaje de solicitud y respuesta de ECO ICMP se implementa para la pila del microcontrolador presentada en esta tesis. En el capítulo 6 se muestra un ejemplo de la implementación del comando Ping. Los demás tipos de mensajes ICMP no son implementados.

4.8 UDP – Protocolo de Datagrama de Usuario El Protocolo de Datagrama de Usuario o UDP (User Datagram Protocol) es un protocolo de la capa de transporte, no confiable, no orientado a conexión, que no garantiza la entrega de datos a través de una red, no ordena paquetes que lleguen en desorden, no proporciona detección y corrección de errores ni evita duplicaciones. Este protocolo es utilizado por los programas de aplicación y es responsabilidad de ellos proporcionar la seguridad necesaria en la transferencia de información. Para intercambiar información entre equipos de una red, UDP hace uso de los servicios proporcionados por el Protocolo de Internet (IP). Los datos manejados por el protocolo UDP reciben el nombre de datagramas de usuario. Algunos protocolos de aplicación que utilizan UDP son: el Protocolo Trivial de Transferencia de Archivos (TFTP), el Sistema de Archivos de Red (NFS), el Protocolo de Administración Simple de Redes (SNMP), el Servidor de Nombres de Dominio (DNS) y el Protocolo de Configuración Dinámica de Servidor (DHCP), entre otros.

4.8.1 Puertos En un dispositivo que se comunica a través de una red pueden existir varias aplicaciones que hacen uso de las funciones de los protocolos de red para enviar y recibir información y pueden estar siendo ejecutadas a la vez. Cuando los protocolos de red procesan información que sale o entra de los dispositivos, necesitan identificar a cada una de las aplicaciones que se están comunicando. Esta tarea le corresponde al protocolo de la capa de transporte, la cual necesita establecer algún mecanismo para identificar a todas las aplicaciones que hacen uso de ella. La idea anterior se ilustra en la Figura 4.15.

Figura 4.15 Comunicación de la capa de transporte con varias aplicaciones para enviar y recibir datos

En la capa de transporte el direccionamiento empleado se denomina número de puerto y es análogo a las direcciones empleadas en la capa de enlace y en la capa de red. De la misma manera en que el nivel de enlace hace uso de direcciones físicas para distinguir dispositivos conectados a una red y el nivel de red utiliza direcciones de red para distinguir entre diferentes redes y encaminar paquetes por una red de redes; el nivel de transporte utiliza los números de puerto para entregar información a aplicaciones específicas dentro de un dispositivo. Los puertos son la interfaz entre la capa de transporte y la capa de aplicación. Cuando se genera información en un nodo origen, se debe especificar a qué aplicación del nodo destino está dirigida, indicando el número de puerto con el que se identifica la aplicación remota. El software de la capa de transporte en el lado receptor, asocia el número de puerto con una aplicación local, a la que hace entrega de la información. En la Figura 4.16 se ejemplifica cómo usa los números de puerto la aplicación destino.

Page 62: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 4.16 Uso de los números de puerto para identificar aplicaciones que corren dentro de un dispositivo

Para entender mejor la idea anterior imaginemos una aplicación X ejecutándose en un dispositivo que se comunica con tres aplicaciones A, B y C al mismo tiempo, y que cada una de ellas envía una información a, b y c, respectivamente, a la aplicación X, la cual enviará una respuesta a cada una de las aplicaciones emisoras. Los dispositivos que transmiten deben indicar a qué aplicación están enviando información, colocando en el paquete el número de puerto con el que se identifica la aplicación receptora, así como su propio número de puerto. Después de procesar la información la aplicación X genera una respuesta para cada una de las aplicaciones remotas y pasa las tres respuestas a la capa de transporte, indicando en cada una el número de puerto de la aplicación a la que le está respondiendo. La Figura 4.17 ilustra este ejemplo.

Figura 4.17 Ejemplo de uso de puertos para varias aplicaciones. a) Las aplicaciones que envían datos indican el número de puerto del

receptor. b) La aplicación que envían una respuesta indica los números de puerto de cada una de las aplicaciones emisoras La asignación de números de puerto depende del tipo de aplicación. Una aplicación que va a recibir información de otras aplicaciones siempre debe tener un número de puerto local asignado (que será visto como puerto remoto o puerto destino para las aplicaciones que le envíen información). Aquellas aplicaciones que son comúnmente usadas o estandarizadas bajo algún protocolo y conocidas por muchos usuarios, están asociadas a números de puerto conocidos (denominados puertos bien conocidos). Estos puertos son administrados por la Autoridad Internet de Números Asignados (IANA por sus siglas en inglés) y se encuentran documentados en el RFC 1700 ―Números Asignados , el cual contiene una lista completa de puertos para servicios establecidos. En la Tabla 4.5 se muestran ejemplos de este tipo de aplicaciones. Las aplicaciones que no cuentan con un número de puerto establecido pueden ocupar números de puerto que no estén asociados a ninguna aplicación conocida y que se encuentren disponibles en el dispositivo al momento de la comunicación. Los puertos son números enteros de 2 bytes (o 16 bits), por lo tanto, pueden abarcar desde el 0 hasta el 65535 y dividen de la siguiente manera:

Page 63: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Los números del 0 al 1023 están reservados para aplicaciones conocidas y no pueden ser usados por otras aplicaciones (ejemplo HTTP puerto 80). Los números del 1024 al 49151 son puertos registrados (ejemplo MySQL14 puerto 3306). Los números del 49152 al 65535 son puertos dinámicos que pueden usar las aplicaciones que se ejecutan dentro de un dispositivo para identificarse entre ellas, cada una debe solicitar al sistema (al sistema operativo por ejemplo) un número de puerto que no se encuentre en uso.

Tabla 4.5 Ejemplos de números de puerto asignados

Protocolo

FTP Telnet SMTP DNS HTTP

Número de puerto

20 23 25 53 80

Aplicación

Transferencia de archivos Acceso remoto Correo electrónico Servidor de nombres de dominio Transferencia de páginas web

Un ejemplo del empleo de puertos sería una aplicación de usuario que se comunica con un servidor HTTP, el puerto local se le solicita al sistema al momento de establecer la comunicación, supongamos que se obtiene el puerto 50000, y el puerto remoto corresponde al número 80 asociado a la aplicación HTTP. Tanto el protocolo UDP como el protocolo TCP emplean los números de puerto como mecanismo de direccionamiento entre la capa de transporte y la capa de aplicación. En el protocolo de datagramas de usuario el uso del número de puerto local no es obligatorio pero el número de puerto remoto sí lo es. Debido a su naturaleza sin conexión el protocolo UDP puede enviar información en un sólo sentido sin esperar confirmaciones ni algún otro tipo de información de respuesta. En tal caso, la aplicación emisora puede omitir su número de puerto local, ya que la aplicación receptora no lo necesitara porque nunca le enviará ninguna información de regreso. Si las necesidades de la aplicación requieren que el envío de la información sea en ambas direcciones, cada una de las aplicaciones emisora y receptora debe contar con un número de puerto que las identifique.

4.8.2 Formato de datagramas UDP En la Figura 4.18 se muestra el formato de un datagrama de usuario con 4 bytes en cada renglón y a continuación se describe cada uno de sus campos.

Figura 4.18 Formato de datagramas de usuario

Puerto UDP de origen. Es un campo de 2 bytes y especifica el número de puerto que el emisor está empleando para enviar información de una aplicación local a una remota. El número de puerto origen es opcional, por ejemplo, si una aplicación sólo necesita enviar información sin esperar respuesta, su número de puerto local no necesariamente debe estar definido, puede ser cero. En cambio, si se espera que el receptor envíe una respuesta, debe especificarse un número de puerto de origen para que el dispositivo destino sepa hacia qué puerto direccionar la respuesta. Puerto UDP destino. Es un campo de 2 bytes en el que se especifica el número de puerto asociado a la aplicación receptora.

14 Servicio de base de datos

Page 64: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Longitud del mensaje UDP. Es un campo formado por 2 bytes que contiene el número de bytes del datagrama de usuario completo, es decir, incluye los campos del encabezado y los datos provenientes de la aplicación. La longitud mínima del datagrama es 8 bytes, correspondiente a la longitud del encabezado. Checksum. Como en otros niveles, el valor de la suma de verificación es un número de 2 bytes. Se emplea el mismo mecanismo de verificación de datos que en el Protocolo de Internet: se hace una suma de los datos en complemento a uno, considerándolos cantidades de 16 bits, y se obtiene el complemento a uno del valor resultante. En el caso del protocolo UDP se decidió que el cálculo de la suma de verificación fuera opcional, si no se realiza, este campo debe contener el valor de cero. En el caso de realizar el cálculo, deben incluirse, además de los datos del encabezado UDP y los datos de la aplicación, algunos campos que en realidad forman parte del encabezado IP. A estos datos tomados del encabezado IP y agregados al datagrama UDP para obtener el checksum se le denomina pseudo–encabezado. El pseudo–encabezado incluye la dirección IP de destino, la de origen, el número de protocolo que interactua con IP (17 para UDP), un campo de 16 bits que contiene la longitud del datagrama UDP (sin considerar el pseudo–encabezado) y un campo de 1 byte que contiene sólo ceros, usado para ajustar la longitud de los datos a un múltiplo de 16 bits. En la Figura 4.19 se muestra la distribución de los campos del pseudo–encabezado utilizado por UDP.

Figura 4.19 Formato del pseudo-encabezado UDP

4.9 TCP – Protocolo de Control de Transmisión El Protocolo de Control de Transmisión o TCP (Transmission Control Protocol) es un protocolo Full–Duplex, orientado a conexión, proporciona un servicio confiable que garantiza la entrega de datos extremo a extremo y mantiene una comunicación entre el emisor y el receptor, sin preocuparse de cómo un paquete cruza una red para llegar a su destino, ya que de esto se encarga el Protocolo de Internet sobre el cual trabaja TCP, aunque en realidad es un protocolo independiente y puede implementarse sobre cualquier otro sistema de red. Debido a que el nivel de red no es confiable, TCP se encarga de asegurar la integridad de los datos, garantizar la transmisión de manera exacta y en la secuencia apropiada, detectar y corregir errores, retransmitir datos que se pierden en el camino, descartar paquetes que por algún error lleguen duplicados y ordenar paquetes que lleguen en desorden. Al proporcionar todas estas funciones a la comunicación, la implementación del protocolo se vuelve compleja, pero libera a las aplicaciones de la tarea de asegurar la entrega de los datos y en consecuencia su trabajo se ve reducido. Las aplicaciones que requieren un alto grado de confiabilidad en la entrega de datos pueden hacer uso de un servicio de conexión fiable en la capa de transporte. Este servicio fue diseñado para ahorrar trabajo a los programadores de aplicaciones, de manera que sea posible que muchas aplicaciones puedan ser construidas sobre una misma capa de transporte que proporcione una interfaz uniforme para el servicio de transferencia de flujo que evite que los programas tomen la responsabilidad de solucionar problemas de seguridad y separe las funciones de los programas de aplicación de los detalles del trabajo de la red. Entre los protocolos de aplicación que se basan en TCP se pueden mencionar el Protocolo de Transferencia de Archivos (FTP), el Protocolo Simple de Transferencia de Correo (SMTP), el Protocolo de Oficina Postal (POP), Telnet y el Protocolo de Transferencia de Hipertexto (HTTP), entre otros. Entre la capa de transporte y la de aplicación, la transferencia de información se define como flujo de bits, donde se agrupa a los bits en conjuntos de ocho a los que se denomina octetos o bytes. El flujo que una aplicación recibe de la capa de transporte en el destino, corresponde exactamente al flujo que una aplicación entrega a la capa de transporte en el origen. La unidad de datos manejada por TCP se denomina segmento. Cada segmento viaja por la red encapsulado dentro de un datagrama IP.

Page 65: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

TCP acomoda los bytes del flujo que generan las aplicaciones dentro de espacios temporales de memoria en donde se acumulan y permanecen esperando hasta que puedan ser enviados. El protocolo TCP organiza la transferencia de información en bloques, de manera transparente para la aplicación. En el lado receptor también se tiene una memoria temporal para almacenar ordenadamente los datos que van llegando y ahí esperan hasta ser entregados a la aplicación correspondiente. TCP divide el flujo de datos para ensamblar segmentos, si la memoria de transmisión no cuenta con suficientes datos, espera hasta recibir más para enviarlos todos en un mismo segmento, en lugar de enviar cada porción en un segmento separado que contenga pocos datos. Esto logra que el desempeño de TCP sea eficiente, pero también puede causar conflictos con ciertas aplicaciones. Por ejemplo en una aplicación en la que se capturan caracteres tecleados por un usuario y se transmiten a una aplicación remota que realiza alguna acción vinculada al carácter que recibe. En este caso, la entrega de un carácter se debe realizar al momento que éste se genera, enviando un segmento por cada carácter sin esperar a que en la memoria de transmisión se acumulen varios caracteres para enviarlos en un solo segmento. Las aplicaciones con características similares a esta pueden solicitar un empuje (o push) de los datos, lo cual le indica al transmisor que los datos deben enviarse sin demora y en el extremo receptor que la entrega a la aplicación también debe ser inmediata. Por el lado contrario, cuando el flujo de información es grande, los datos se acumulan en la memoria de transmisión y se dividen para entregarse en segmentos separados. Cada byte en la memoria debe permanecer ahí hasta que sea su turno de ser enviado. Si una aplicación genera datos que deben ser transmitidos de manera urgente sin esperar dentro de la memoria hasta que se envíen los datos que están antes, lo solicita mediante un señalamiento urgente. En el extremo receptor dicho señalamiento indica que los datos deben entregarse a la aplicación tan pronto como se reciben independientemente de su posición en la memoria de recepción, es decir, si hay datos esperando a ser entregados los datos con la condición de urgentes tienen prioridad y se entregan primero.

4.9.1 Confiabilidad en la entrega y recepción de datos TCP utiliza números de secuencia en todos los segmentos transmitidos para asegurar la entrega de todos ellos y ponerlos en el orden adecuado antes de pasarlos a la aplicación. Por cada segmento transmitido TCP espera recibir un segmento de confirmación que contiene un número de acuse de recibo, el cual indica que el segmento previamente enviado fue recibido y correctamente validado en el extremo receptor. Por cada segmento que se envía con un número de secuencia x, la confirmación contiene el número siguiente x+1, indicando que el segmento x (y por ende todos los anteriores) se recibió de manera exitosa y la próxima vez se espera recibir el segmento siguiente (x+1). Cada vez que se transmite un segmento que contiene un número de confirmación, se indica en el encabezado TCP mediante un bit denominado ACK (bit de confirmación o Acknowledge) que contiene el valor de uno. TCP maneja una comunicación Full–Duplex, lo que permite el intercambio de información entre dos dispositivos de una red en ambas direcciones y en cualquier instante. Debido a lo anterior, cada uno de los dispositivos cuenta con un número de secuencia propio e independiente. Por ejemplo, un dispositivo empieza la secuencia con el número x, continúa con x+1, x+2 …x+n y el otro inicia con el número de secuencia y, continúa con y+1, y+2…y+n. En cada segmento en el que se envían datos se puede incluir confirmación, esto es, en un mismo segmento se envía información y se incluye la confirmación de datos previamente recibidos. En la Figura 4.20 se ilustra el procedimiento de envíos y confirmaciones entre dos nodos de una red. Las líneas verticales representan el transcurso del tiempo [1]. El primer evento se genera en el nodo A que envía un segmento con secuencia x al nodo B. Al llegar el segmento al nodo B, éste envía a A un segmento con secuencia y en el que incluye una confirmación del segmento x recibido, indicándole al nodo A que el próximo segmento que envíe debe estar numerado con la secuencia x+1. El procedimiento se repite mientras los nodos tengan datos que enviar. El número indicado como ack en la Figura 4.20 no debe confundirse con el bit de confirmación que indica que el segmento contiene una confirmación en su encabezado; los números sec y ack de la corresponden a los valores de los campos Número de Secuencia y Número de Confirmación del encabezado TCP. Por ejemplo, el primer segmento que envía A no contiene ningún número de confirmación, por lo tanto, el bit ACK estaría puesto a cero. Cada vez que se envía un segmento por parte de alguno de los participantes, el software del protocolo TCP espera hasta que el otro extremo envíe la confirmación, activando un contador. Si el tiempo del contador se agota y no se ha recibido la confirmación, TCP asume que el segmento se extravió o dañó en el camino y lo

Page 66: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. vuelve a enviar. Esta es la característica fundamental de TCP que garantiza la entrega de datos; si un paquete no se recibe, la confirmación tampoco será entregada, si se recibe un paquete defectuoso, se desecha y no se envía confirmación. En cualquiera de estos casos, el transmisor envía nuevamente el paquete. El uso de los números de secuencia también sirve para evitar la duplicidad, si un segmento de confirmación se extravía en el camino, el transmisor asume que el paquete no fue recibido y lo retransmite, el receptor reconoce que el paquete está duplicado y lo desecha.

Figura 4.20 Procedimiento de envíos y confirmaciones de segmentos TCP

4.9.2 Etapas de la comunicación El proceso de comunicación TCP consta de tres etapas: 1) establecimiento de una conexión, 2) intercambio de información y 3) cierre de la conexión.

4.9.2.1 Establecimiento de la conexión TCP

Antes de comenzar el intercambio de información en el nivel de transporte, se debe establecer una conexión lógica, llamada así porque no es una conexión directa por hardware, pero se toma como si lo fuera. El dispositivo que tiene necesidad de enviar o solicitar información (cliente) contacta al dispositivo con el cual desea comunicarse (servidor) y solicita que se establezca una conexión entre ambos. Si el servidor acepta comienza el intercambio de información a través de dicha conexión. Al establecimiento de la conexión entre dos dispositivos se le denomina proceso de sincronización. La forma de indicar que la comunicación se encuentra en el estado de sincronización es mediante un bit del encabezado TCP que se denomina SYN. Este bit debe ser puesto a 1 cada vez que se intercambia un segmento de sincronización. El establecimiento de la conexión se realiza en tres pasos, ya que se intercambian tres segmentos TCP entre un cliente que desea establecer comunicación y un servidor que la acepta:

El cliente envía una solicitud de conexión, para lo cual genera y transmite un segmento TCP con el bit de sincronización puesto a 1 y un número de secuencia inicial x que le indica al servidor en qué número comenzará la secuencia de sus segmentos. El servidor registra el número de secuencia inicial del cliente, si acepta la comunicación, genera y transmite un segmento de confirmación que contiene los bits SYN y ACK puestos a uno. El número de confirmación que el servidor incluye en el segmento de respuesta corresponde al siguiente número de secuencia que debe enviarle el cliente (x+1). También incluye en el segmento de confirmación el número de secuencia inicial que utilizará para enviar datos a través de la conexión, por ejemplo el número y. El cliente envía un segmento de confirmación al servidor con el bit ACK puesto a uno y el valor del número de confirmación correspondiente al siguiente número de secuencia que espera recibir del servidor, es decir, y+1. En esta etapa ya se ha establecido la conexión TCP, nótese que en los

Page 67: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

segmentos intercambiados durante el establecimiento de la misma no se incluye ningún dato, sólo los valores específicos del encabezado TCP necesarios para establecer la comunicación. A este tipo de segmentos se les denomina segmentos de control TCP. Una vez establecida la conexión los segmentos de datos pueden intercambiarse entre el cliente y el servidor.

Para que el esquema de conexión mencionado se pueda llevar a cabo, es necesario establecer dos tipos de conexiones, una corresponde a la que establece el servidor y la otra la establece el cliente. Un servidor espera recibir conexiones a través de un puerto específico, para lo cual abre una conexión pasiva y se dice que el servidor está escuchando (o esperando) conexiones entrantes. La conexión activa es realizada por el cliente al enviar una solicitud para establecer comunicación con un servidor que espera recibir peticiones por un puerto.

Figura 4.21 Establecimiento de la conexión en tres pasos

4.9.2.2 Intercambio de información y control de flujo

En la etapa de intercambio de información tanto el cliente como el servidor envían segmentos que contienen datos, mismos que se almacenan en espacios temporales de memoria. En cada extremo de un enlace, TCP mantiene buffers de recepción y transmisión. El buffer de transmisión se llena con los datos que generan las aplicaciones y contiene dos conjuntos: datos que ya fueron enviados pero aún no han sido confirmados y datos que están esperando para ser enviados. El primer conjunto no se puede descartar hasta que la confirmación correspondiente sea recibida, ya que si la confirmación no llega, deben ser reenviados. Una vez confirmados, los datos se borran de la memoria temporal para liberar espacio. El buffer de recepción también contiene dos conjuntos de datos: datos recibidos que ya fueron ordenados y están listos para ser entregados a la aplicación y datos recibidos y validados correctamente pero que aún necesitan ordenarse para pasarse a la aplicación. Con el propósito de hacer más eficiente el desempeño de TCP, los segmentos de datos se envían en grupos en lugar de enviarse de uno en uno y esperar las confirmaciones entre uno y otro. La cantidad de bytes que se pueden enviar en algún momento está dada por el tamaño de una ventana, tal como lo define el algoritmo de ventana deslizante que se explicó en el capítulo 2. En la Figura 4.22 se reproduce el mecanismo de ventana deslizante de la Figura 2.21.

Figura 4.22 Ejemplo de ventana deslizante

Page 68: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Con el fin de controlar el envío de los datos, TCP mantiene apuntadores a las localidades del buffer (representados con flechas en la Figura 4.22) que indican en dónde empiezan los datos transmitidos que aún no son confirmados (flecha izquierda), a partir de dónde se puede comenzar a enviar más datos (flecha en medio) y hasta dónde se termina de enviar datos (flecha derecha). El algoritmo de ventana deslizante se implementa en TCP con una mejora: el tamaño de la ventana no es fijo como se muestra en la Figura 4.22, sino que es dinámico, es decir, la ventana de transmisión cambia su tamaño con el tiempo, basado en un tamaño de ventana anunciado por el receptor. El receptor debe indicarle al transmisor el tamaño de su ventana de recepción cada vez que envía un segmento. El emisor ajusta el tamaño de su ventana de transmisión de acuerdo al dato especificado por el receptor. Si retomamos el ejemplo de la Figura 4.22 podemos observar que el transmisor tiene una ventana de transmisión de tamaño 10 paquetes (aunque el valor se especifica en bytes). Supongamos que desde el extremo receptor se anuncia una ventana de recepción de tamaño 5. Bajo esta situación el transmisor cambia su tamaño de ventana a 5 para enviar solamente los 5 paquetes que el receptor puede aceptar. Conforme el espacio del buffer de recepción se va llenando o liberando, el tamaño de la ventana de recepción se va ajustando dinámicamente y, en consecuencia, también el de la ventana de transmisión. Esta característica permite mantener un control de flujo, enviando sólo la cantidad de información que un dispositivo puede almacenar en un momento dado. Cuando un buffer de recepción se llena, se envía al transmisor un segmento con el valor de tamaño de ventana igual a cero, lo cual obliga al emisor a detener su transmisión. Esta situación genera que el buffer de transmisión del emisor también se llene, ya que seguirá recibiendo datos de las aplicaciones sin poder liberar espacio. En este punto el transmisor bloquea a la aplicación impidiendo que genere más datos hasta que la comunicación se restablezca. Cuando se libera espacio en el buffer de recepción del nodo receptor, éste envía un segmento con un tamaño de ventana diferente de cero, con lo que se logra que el emisor continúe su transferencia y comience a liberar espacio en su buffer de transmisión, que a su vez permite que la aplicación siga generando datos.

4.9.2.3 Cierre de la conexión

Cuando un dispositivo no tiene más datos que transmitir, notifica al otro dispositivo que desea terminar la conexión. El dispositivo que solicita el término de la comunicación cierra la conexión de su lado con el envío un segmento de finalización y ya no se le permite enviar más datos, aunque continúa recibiendo datos y enviando confirmaciones si el otro dispositivo aún tiene datos que enviar. Cuando el segundo dispositivo termina de enviar su información, envía su segmento de finalización, terminando así la comunicación. La forma de identificar un segmento de finalización es mediante un bit del encabezado TCP denominado FIN, el cual debe contener el valor de uno (ver Figura 4.23). La secuencia de finalización de la conexión se describe a continuación, donde se asume que existe una conexión establecida entre un nodo A y un nodo B, que han estado intercambiando datos y que el nodo A es el que termina de enviar sus datos antes que B (podría ser al revés):

El nodo A envía un segmento de finalización con el bit FIN puesto a 1 y su número de secuencia correspondiente. El nodo B envía un segmento para confirmar la finalización de la conexión por parte de A. En este momento A no puede seguir enviando más datos a B, ahora la conexión está establecida en una sola dirección. B continúa enviando datos hacia A con su número de secuencia; A continúa enviando segmentos de confirmación a B con el bit ACK puesto a 1 y el número de confirmación correspondiente. B no tiene más datos que enviar, así que envía un segmento de finalización con el bit FIN puesto a 1 y su número de secuencia correspondiente. A confirma la desconexión de B y envía un segmento de confirmación con el número de confirmación y el bit ACK puesto a 1. En este momento la conexión entre A y B está completamente cerrada.

Page 69: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 4.23 Esquematización del proceso de finalización de una conexión

4.9.2.4 Ejemplo de comunicación TCP en sus tres etapas

En la Figura 4.24 se ejemplifica el proceso de comunicación TCP entre dos dispositivos: un cliente y un servidor. El ejemplo fue tomado del libro Comunicación entre computadoras y tecnología de redes de los autores Michael A. Gallo y William M. Hancock [3]. El proceso de establecimiento de comunicación de tres pasos que se usa para establecer una conexión se ilustra en los pasos del 1 al 3 y la terminación del enlace está ilustrada en los pasos del 7 al 12. Los autores manejan las confirmaciones como reconocimientos en algunos puntos del esquema y a los bits de sincronización y confirmación los llaman banderines.

1. A envía un segmento de sincronización a B con el cual indica su deseo de establecer una conexión

y que su número de secuencia inicial es 300. Esto significa que el primer segmento de datos que A envíe será numerado 301.

2. B recibe el segmento de sincronización de A y envía un segmento de sincronización y confirmación. El número de secuencia inicial de B es 800, lo que significa que el primer segmento de datos de B será numerado 801.

3. A recibe el segmento de sincronización y confirmación de B y envía una confirmación. En esta etapa queda establecida una conexión TCP entre A y B.

4. A transmite el segmento de datos 301 e informa a B que está esperando el segmento numerado 801.

5. B recibe el segmento de A y envía el segmento de datos 801. Este segmento también confirma la recepción del segmento de A, informando que espera recibir el segmento 302.

6. A recibe el segmento y envía a B el segmento de datos 302, que también confirma la recepción del segmento de B.

7. A envía a B un segmento de término que informa que A está cerrando su lado de la conexión TCP. 8. B recibe los dos últimos segmentos de A y envía el segmento de datos 802. Este segmento también

confirma la recepción de las transmisiones previas de A fijando el número de confirmación en 304. En esta etapa A no puedo transmitir ningún segmento nuevo de datos, pero continúa transmitiendo segmentos de confirmación.

9. A confirma la última transmisión de B. 10. B recibe el segmento de confirmación de A y envía el segmento de datos 803. 11. B envía a A un segmento de término que informa que está cerrando su lado de la conexión TCP. 12. A recibe las últimas transmisiones de B y las confirma. En esta etapa el enlace está terminado, ya

que ni A ni B tienen más datos que transmitir.

Page 70: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Figura 4.24 Descripción gráfica de una conexión TCP

4.9.4 Formato de segmentos TCP

En la Figura 4.25 se muestra el formato de un segmento TCP en el cual se representan 4 bytes por cada renglón y a continuación se define el contenido de cada uno de los campos del encabezado.

Figura 4.25 Formato de segmento TCP

Puerto TCP origen. Campo de 2 bytes. Número de puerto que identifica a la aplicación que envía un mensaje. Puerto TCP destino. Campo de 2 bytes. Número de puerto que identifica la aplicación que va a recibir un mensaje. Número de secuencia. Campo de 32 bits que específica el número de secuencia de los segmentos transmitidos. El número de secuencia inicial se indica en el establecimiento de la conexión, puede ser arbitrario, pero generalmente se usa el 0. Tanto el receptor como el transmisor mantienen sus propios números de secuencia independientes. En los segmentos TCP se enumeran los bytes de datos. Si el segmento es de control la secuencia se incrementa en uno, correspondiente al número de secuencia asignado al segmento. Si el segmento contiene datos, el número de secuencia se refiere a la numeración del primer byte de los datos y se incrementa en función de la cantidad de bytes que contenga el segmento.

Page 71: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Número de confirmación. Campo de 32 bits que usa un receptor para enviar confirmaciones de segmentos recibidos, su valor depende del número de secuencia usado por el transmisor. Cuando se recibe un segmento que contiene datos, su número de secuencia indica el valor asignado al primer byte de los datos. El receptor cuenta la cantidad de bytes recibidos exitosamente, incrementa el valor del número de secuencia y lo asigna a su número de confirmación. Por ejemplo, si se recibe un segmento con número de secuencia 3 y contiene 5 bytes, el número de confirmación es 8, lo que indica al transmisor que los bytes anteriores al 8 se recibieron exitosamente y en la próxima entrega espera encontrar el número de secuencia 8. HLEN (Header Length). En este campo de 4 bits se indica la longitud total que abarca el encabezado del segmento TCP, ya que el último campo es de longitud variable y además opcional. La longitud se mide en palabras de 4 bytes. Si el segmento no incluye el último campo, la longitud de la cabecera es de 20 bytes (o 5 palabras), como todos los demás campos son de longitud fija, esta es la longitud mínima del encabezado. La longitud máxima del campo opcional es de 40 bytes (10 palabras), por lo que la longitud máxima del encabezado TCP es de 60 bytes (15 palabras). Reservado. Los 6 bits del campo reservado no se usan, están reservados para uso futuro y deben contener el valor de cero. Control. Los siguientes 6 bits se denominan bits de codificación y conforman un campo de control. Estos bits se usan para indicar qué tipo de información contiene el segmento. Se les suele llamar banderas y son válidas cuando contienen el valor de uno. A continuación se describe la función que realizan:

URG – Indicador de segmento urgente, indica que el campo señalador de urgencia contiene datos válidos. ACK – Indica que el campo de número de confirmación contiene una confirmación válida. PUSH – Indica que el segmento solicita una operación de empuje, los segmentos con este bit activado se deben entregar a la aplicación destino tan pronto como son recibidos. Un evento de empuje lo solicita la aplicación origen. RST – Se usa cuando surge un evento que causa una desconexión, se envía un segmento con el bit de RST y el receptor aborta la transmisión. SYN – Sincroniza números de secuencia iniciales (establece una conexión). FIN – Indica que no se tienen más datos por enviar y se cierra la conexión. Cada extremo debe cerrar la conexión de manera independiente.

Ventana. Campo de 2 bytes en donde se indica la cantidad de bytes disponibles en el buffer de recepción. La cantidad de datos que envía el transmisor no debe exceder el tamaño de ventana establecido por el receptor. Checksum. Campo de suma de verificación de 2 bytes. El algoritmo de verificación es el mismo que se ha empleado en los otros niveles: se realiza la suma en complemento a uno de todos los datos involucrados tomándolos como enteros contiguos de 16 bits, al resultado se le saca su complemento a uno. El cálculo se realiza en el extremo emisor y se agrega al campo checksum, mientras que en el extremo receptor se vuelve a calcular y se compara el resultado con el realizado por el emisor. La suma de verificación incluye el encabezado TCP, los datos y adicionalmente se le añaden algunos campos del encabezado IP, que incluyen las direcciones IP de origen y destino para verificar que los datos se entregaron al destino correcto. A los datos añadidos sobre el encabezado TCP para realizar la suma de verificación se le denomina pseudo encabezado y tienen el mismo formato que el pseudo encabezado de los datagramas UDP.

Figura 4.26 Pseudo-encabezado TCP

El campo protocolo indica qué protocolo de la capa de transporte va a procesar el datagrama IP, en el caso de TCP el valor corresponde a 6. El campo Longitud TCP especifica la longitud total del segmento TCP incluyendo el encabezado y los datos, pero no los campos del pseudo encabezado. El campo con etiqueta

Page 72: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

CERO corresponde a un byte con el valor de cero que se usa para ajustar la longitud del pseudo encabezado a un múltiplo de 16 bits con el fin de realizar la suma de números enteros de 16 bits. Señalador de urgencia. Es un campo de 2 bytes que se usa cuando un segmento contiene datos urgentes, indicados por el bit URG. En este campo se indica la posición de los datos del segmento en donde terminan los datos urgentes y continúan los datos normales. Opciones TCP. Este campo es opcional y tiene una longitud variable. El tamaño máximo es de 40 bytes y depende de la opción que se incluya en el segmento. Las opciones añaden funcionalidad al protocolo pero no siempre son utilizadas. Relleno. El campo de relleno se utiliza cuando se usa el campo opciones y sirve para ajustar el tamaño total del encabezado a un múltiplo de 4 bytes para que la longitud en bytes pueda ser dividida entre 4 y se indique en el campo HLEN como palabras de 4 bytes. En caso de que este campo sea usado su contenido se llena con ceros.

4.10 Sockets Como se mencionó anteriormente, los protocolos de la capa de transporte hacen uso de cantidades denominadas números de puerto o puertos de protocolo para identificar el destino final dentro de una máquina, el cual corresponde a una aplicación en específico. TCP utiliza las direcciones de puerto de manera similar a como lo hace UDP para identificar a las aplicaciones que utilizan sus servicios. Sin embargo, la idea de puerto por sí sola no explica por completo las funciones que realiza TCP en la interfaz entre la capa de transporte y la de aplicación. En UDP basta con informar al protocolo a qué aplicación se dirige un mensaje. En TCP se identifican las conexiones más que los puertos por sí mismos. TCP maneja varias conexiones en una misma máquina de manera independiente. Cada conexión se identifica por un par de puntos finales [1]. Un punto final se define como un par dispositivo–puerto, mediante dos números enteros que identifican, respectivamente, la dirección IP de un dispositivo y el número de puerto de una aplicación que se ejecuta dentro de dicho dispositivo:

Punto Final (IP, puerto) Por ejemplo, el punto final (194.163.25.11, 22) especifica el puerto 22 del dispositivo identificado con la dirección IP 194.163.25.11. Una conexión siempre está definida por un par de puntos finales: una aplicación de una máquina comunicándose con otra aplicación en otra máquina. La gran ventaja de las conexiones TCP es que no sólo es posible comunicar puntos finales uno a uno, sino que también se permiten conexiones uno a muchos, esto es, varios puntos finales pueden comunicarse con un mismo punto final a la vez, identificándose cada uno con una conexión propia. Estas conexiones permiten que un mismo puerto sea compartido por múltiples conexiones en la misma máquina.

Figura 4.27 Capacidad de TCP para comunicar varios puntos finales con un mismo punto final

Page 73: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Si dos o más puntos finales se comunican con la misma máquina a través del mismo puerto, TCP asocia los mensajes entrantes con las conexiones en vez de asociarlos directamente con el número de puerto, de hacerlo así resultaría ineficiente ya que todas las conexiones comparten el mismo número de puerto de destino y la aplicación no sabría de dónde proviene cada mensaje que recibe ni a quién le debe contestar. Esta característica de las conexiones se aprovecha para establecer el esquema de conexiones cliente– servidor. Las aplicaciones configuradas como servidores aceptan peticiones de conexión en un puerto por parte de aplicaciones configuradas como clientes, tienen la capacidad de manejar múltiples conexiones de manera simultánea y diferenciar a cada uno de los clientes a partir de dichas conexiones, sin la necesidad de establecer números de puerto únicos para cada cliente. Un ejemplo de este esquema es el servicio de correo electrónico, en el que una máquina se configura como servidor y muchas máquinas denominadas clientes pueden acceder al servicio en el momento que lo deseen, incluso simultáneamente. Los clientes, por su parte, pueden conectarse a varios servidores al mismo tiempo desde la misma aplicación y cada uno de los servidores se comunica con el cliente por medio del mismo número de puerto destino. Esto no crea ningún conflicto puesto que cada servidor posee un identificador diferente, que unido al identificador del cliente crea una conexión única, aun cuando todas ellas comparten el número de puerto del cliente. En la implementación la idea de puntos finales se abstrae mediante el concepto de socket. Un socket es un elemento abstracto que manipula la entrada y salida de flujo de información entre los programas de aplicación y la capa de transporte. Para las aplicaciones el socket es la puerta de entrada y salida de la información. Un socket se define por la dirección IP de un dispositivo y el número de puerto de una aplicación que se ejecuta en dicho dispositivo. Una conexión mantiene un socket en cada extremo del enlace mientras, que en cada aplicación las diferentes conexiones se identifican mediante su socket asociado. En una conexión los sockets en los extremos proporcionan una ruta de comunicación bidireccional para ambas aplicaciones y el enlace que forman es único en la red. En la implementación de los protocolos de la capa de transporte de la pila TCP/IP se definen dos tipos de sockets. El primero maneja flujos de datos de manera bidireccional y secuencial y proporciona conexiones confiables. Este es el tipo de socket utilizado por el protocolo TCP. El segundo tipo de socket es el que emplea UDP y proporciona entrega de datagramas no confiable en ambas direcciones. A pesar de que UDP no realiza conexiones, en este protocolo también se implementa el uso de sockets, ya que esto ofrece una interfaz de fácil manejo para las aplicaciones. En TCP la dirección y el número de puerto de la aplicación destino se asocian al socket y después se envía y recibe información a través del socket hasta que se cierre la conexión. Por otro lado, en los sockets UDP no es posible asociar al socket con los datos del dispositivo remoto, ya que este protocolo no establece conexiones y no se compromete con ningún destino en particular, cada vez que se envía información por medio de un socket UDP se debe especificar la dirección y número de puerto del destino. Los sockets proporcionan a la capa de aplicación una Interfaz de Programación de Aplicaciones (API), que es un conjunto de funciones de la capa de transporte que se usan para crear aplicaciones que se comuniquen por la red a través de un socket. El conjunto de funciones que integran la API es diferente en cada implementación particular, pero en general todas las implementaciones son muy similares y cumplen las mismas funciones. Por ejemplo en sistemas operativos Windows existe una función que recibe ciertos argumentos y crea un socket, y es muy similar a la función que usan los sistemas UNIX para realizar la misma acción. Diferentes lenguajes de programación también cuenta con su propia API de manejo de sockets. Las funciones que deben realizar los sockets son las siguientes:

Realizar una conexión. Asociarse con un puerto. Esperar una conexión. Aceptar una conexión. Enviar datos. Recibir datos. Cerrar una conexión.

Page 74: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Una parte de las funciones del API se utiliza en las aplicaciones cliente mientras que otra parte sirve para programar las aplicaciones servidor. Algunas funciones son comunes para los clientes y los servidores. Una aplicación cliente debe obtener un socket utilizando la función apropiada para ello y puede ser un socket de flujo de datos (TCP) o un socket de datagramas (UDP). La función encargada de crear el socket solicita un número de puerto local al sistema operativo (si estamos hablando de una computadora) y el programador de la aplicación no tiene que especificar este atributo. Los clientes realizan conexiones activas, lo cual significa que envían una petición de conexión a algún servidor indicando la dirección IP y número de puerto con el que se identifica la aplicación servidor. Para esto el cliente cuenta con una función conectar en la que se indican los datos del servidor. Si el socket es UDP no se usa la función conectar. Los servidores también deben obtener un socket para poderse comunicar con las aplicaciones cliente. Después de obtener un socket, un servidor debe asociarlo con un número de puerto local. Esta acción a diferencia de los clientes, la debe realizar el programador de la aplicación indicando el número de puerto en el que el servidor acepta conexiones. Para esto debe existir una función propia de los servidores que permita asociar al socket con el número de puerto local después de haber sido creado. El socket del servidor debe realizar una conexión pasiva, lo que significa que se configura en modo de espera de conexiones activas por parte de los clientes. A esta acción se le denomina escuchar por un puerto y se realiza con una función específica para servidores. Desde el momento en que se ejecuta la función escuchar el servidor permanece esperando a que algún cliente le envíe una petición de conexión. Si una petición de conexión llega, el servidor debe ejecutar una función que acepte la conexión y en el momento que esto ocurre la conexión entre ambos queda establecida. Si el socket es UDP no se realiza ninguna de las funciones anteriores. Cuando el cliente y el servidor ya están conectados (en el caso de los sockets TCP) o el socket está creado (en el caso de los sockets UDP), se utilizan funciones de lectura y escritura para intercambiar información entre las aplicaciones. Las funciones que se utilizan para leer y escribir son las mismas para los clientes y los servidores, pero no son las mismas para los sockets TCP y los sockets UDP, ya que los primeros sólo envían información dado que el socket ya conoce el destino final de la misma, pero los segundos deben especificar el destino cada vez que envían información. Al terminar el intercambio de información se cierra la conexión, ya sea por iniciativa del cliente o por parte del servidor y se libera el socket. El manejo de los sockets UDP es muy sencillo, las funciones que realizan se describen a continuación: Funciones del cliente y del servidor:

Obtener un socket. Enviar y recibir datos. Liberar socket cuando ya no sea necesario.

Los sockets TCP, como es natural, realizan mas funciones. A continuación se resumen las operaciones de un cliente y un servidor programados sobre TCP. Funciones del cliente:

Crear un socket. Conectarse a un servidor. Enviar y recibir información. Cerrar la conexión. Liberar al socket.

Funciones del servidor:

Crear el socket. Asociarlo a un número de puerto. Esperar conexiones. Aceptar conexión. Enviar y recibir información. Cerrar la conexión.

Page 75: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Regresar al tercer punto y repetir la secuencia con nuevas conexiones. Liberar el socket cuando ya no sea necesario.

4.11 HTTP – Protocolo de Transferencia de Hipertexto El Protocolo de Transferencia de Hipertexto o HTTP (Hyper Text Transfer Protocol) es un protocolo de aplicación usado para la transferencia de recursos vía web (www – World Wide Web), por ejemplo una página de internet. Su funcionamiento se basa en el esquema cliente–servidor mediante peticiones (por parte de los clientes) y respuestas (por parte de los servidores). La información que se transmite por parte de un servidor se llama recurso y se identifica a través de un URL que el cliente indica en su petición. Los recursos entregados por un servidor pueden ser archivos de texto, gráficos, audio, el código de una página, la consulta a una base de datos, el resultado de un programa ejecutado en el servidor, imágenes, videos o cualquier tipo de información que se pueda representar digitalmente y almacenar en un dispositivo conectado a una red. Cualquier tipo de recurso viaja por la red codificado como una secuencia de caracteres. Los mensajes de petición y respuesta, incluyendo el recurso, son sólo flujos de bits que TCP transporta de un lugar a otro. El proceso de transferencia de un recurso web es como sigue:

Un servidor realiza una conexión pasiva, esperando conexiones a través de un puerto, para HTTP se emplea el puerto establecido número 80. Un cliente realiza una conexión activa al servidor. Una vez establecida la comunicación, el cliente envía un mensaje de petición indicando el recurso que solicita. El servidor recibe e interpreta la petición, envía un mensaje de respuesta y si es capaz de entender la solicitud y encontrar el recurso, lo envía en el cuerpo del mensaje, si no, envía un error. Cuando el recurso termina de transferirse la conexión se cierra.

El proceso anterior se repite para cada petición que se realiza, atendiendo cada una en una conexión por separado. Por ejemplo, si una página contiene tres enlaces y se accede a cada uno de ellos, el proceso de solicitud y respuesta se lleva a cabo tres veces.

4.11.1 Identificadores Uniformes de Recursos (URI) y Localizadores Uniformes de Recursos (URL) Los recursos que se transfieren en una red se encuentran almacenados en un servidor denominado servidor de origen (ya que es el origen de almacenamiento de la información). Para identificarlos se usa un Identificador Uniforme de Recursos o URI (Uniform Resource Identifier), el cual define un conjunto universal de nombres y direcciones de todos los recursos independientemente de su ubicación. El Localizador Uniforme de Recursos o URL (Uniform Resource Locator) es un ejemplo específico de URI, se usa para indicar la ubicación de algún recurso accesible en una red. Su formato es como se muestra a continuación:

esquema: esquema–datos específicos El esquema se refiere al protocolo mediante el cual se accede al recurso. La segunda parte depende del protocolo utilizado. Por ejemplo, para HTTP la forma del URL es de la siguiente manera:

http://host:port/url–path

Este formato especifica la dirección IP del servidor donde reside el recurso (host), el número de puerto con el que se identifica la aplicación en una conexión TCP (port) y la ubicación del recurso solicitado dentro del servidor (url–path). Si el puerto no se especifica, se toma por omisión el número 80, correspondiente al protocolo HTTP. En el caso de que la trayectoria URL (url–path) no esté especificada, se considera la solicitud de la página de inicio del servidor, identificada normalmente con el nombre index.html o index.htm.

Page 76: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

4.11.2 Método de acceso al servidor

El método es un comando que le indica al servidor la acción que debe ejecutar sobre el recurso que solicita el cliente. En la Tabla 4.6 se describen algunos métodos usados para acceder a un servidor.

Tabla 4.6 Métodos de acceso al servidor Método Get Head

Post Put

Delete

Definición Indica que se requiere un recurso del servidor. Solicita información sobre algún objeto del servidor, por ejemplo tamaño o fecha de modificación. Cuando se recibe un comando HEAD el servidor solamente envía los encabezados de un objeto. Se usa para enviar información al servidor por parte de un cliente, por ejemplo, los datos contenidos en un formulario. Se usa para enviar un recurso del cliente al servidor, el servidor lo almacena e identifica mediante un URL que también se indica en el mensaje PUT. Indica al servidor que borre el objeto identificado con un URL.

El programa cliente selecciona el método adecuado para cualquier solicitud, no es necesario que un usuario del servicio especifique el método, de hecho ni siquiera tiene la responsabilidad de saber qué es un método y cómo se usa. La solicitud de páginas web y los enlaces contenidos en ellas siempre ocupan el método GET. El envío de datos de formularios utiliza POST, pero también puede utilizar GET.

4.11.3 Mensajes de solicitud y respuesta Los mensajes de solicitud y respuesta siguen un formato según el estándar documentado en el RFC 822. Cada mensaje HTTP contiene los elementos que se muestran en la Figura 4.28 y se describen a continuación.

Figura 4.28 Formato general de mensaje HTTP

Línea de inicio. En los mensajes de solicitud es una línea de solicitud y en los mensajes de respuesta es una línea de estado. Campos de encabezados. Son campos opcionales, se dividen de a cuerdo a la información que proporcionen, como se muestra en la Tabla 4.7. Cuerpo del mensaje. En el mensaje de respuesta el cuerpo contiene el recurso, al contenido del recurso se le llama entidad. En el mensaje de solicitud el cuerpo es opcional, se usa por ejemplo cuando se envía un documento del cliente al servidor.

Tabla 4.7 Encabezados de mensajes de solicitud y respuesta HTTP

Campos del encabezado Función

Los usan los clientes para añadir

Ejemplo - Tipo de recurso que el cliente acepta (imagen, audio, etc.). - Tipo de caracteres y codificación

Campos de solicitud

Campos de respuesta

información adicional sobre ellos o la solicitud que envían al servidor. Los usan los servidores para añadir información adicional sobre ellos o

que el cliente acepta. - Sistema operativo usado por el cliente. - Navegador. - Software que utiliza el servidor (por ejemplo Apache, IIS, etc).

Page 77: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Campos generales

Campos de entidad

4.11.3.1 Solicitud HTTP

el recurso entregado al cliente. Se usan en todos los mensajes de solicitud y respuesta para adjuntar información. Definen el contenido del recurso en aquellos mensajes que contienen un cuerpo donde se transfiere dicho recurso.

- Tiempo que transcurre desde que la respuesta se genera. - Fecha en que se origina el mensaje - Codificación empleada en el cuerpo del mensaje. - Método que soporta el recurso. - Codificación empleada en el contenido de la entidad. - Tamaño del contenido de la entidad.

En la Figura 4.29 se aprecia el formato de una solicitud HTTP y a continuación se explica su contenido, CR– LF indica retorno de carro y salto de línea.

Figura 4.29 Formato de solicitud HTTP

Línea de solicitud. A la línea de inicio de un mensaje de solicitud se le denomina línea de solicitud. Esta línea indica: el método de acceso al servidor, la dirección del recurso solicitado indicado mediante su URL y la versión del protocolo usada por el cliente. Cada uno de estos elementos está separado por un espacio en blanco:

Método. Dirección URL. Versión del protocolo. La más usada actualmente es la 1.1, y se indica mediante la cadena HTTP/1.1.

Campos del encabezado de solicitud. Los encabezados son opcionales y cada uno se escribe en una línea. Los campos contienen un nombre seguido de dos puntos y un valor. En el siguiente ejemplo se ilustra la sintaxis de dos campos del encabezado de una solicitud, en los cuales se indica el tipo de información que acepta el cliente y una fecha condicional que le informa al servidor que no debe entregar el recurso si no ha sido modificado desde dicha fecha:

Accept : Text/html If-Modified-Since : Saturday, 15-January-2009 14:37:11 GMT

El final de los campos de encabezados se indica mediante una línea en blanco después de la cual viene el cuerpo de la solicitud. Cuerpo de la solicitud. Es un conjunto de líneas opcionales que permiten enviar datos específicos para algún tipo de solicitud, por ejemplo en un mensaje POST los datos de un formulario se envían en el cuerpo.

Ejemplo de petición HTTP

Los mensajes de solicitud se generan en un programa cliente, comúnmente un navegador web como Internet Explorer, aunque puede ser cualquier otro programa que realice una conexión activa a un servidor. El navegador web contiene un espacio en donde los usuarios insertan la dirección URL del recurso que solicitan. El programa cliente genera el mensaje de solicitud y lo envía al servidor. El usuario no ingresa una petición con el formato especificado en los párrafos anteriores, sólo debe conocer la dirección de un recurso y el navegador construye el mensaje a partir de dicha dirección. Al recibir la respuesta del servidor, el navegador la interpreta mostrando su contenido en un visualizador. Si un usuario desea ingresar a la página de la Facultad de Ingeniería, debe teclear en el área de direcciones de algún navegador web la dirección www.ingenieria.unam.mx. A este formato de dirección se le llama nombre de dominio y permite a los usuarios recordar de manera más fácil la dirección de un servidor, en vez de usar las direcciones IP especificadas con números. Todos los nombres de dominio tienen su

Page 78: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

correspondiente IP numérica, la transformación entre el nombre de dominio y la dirección IP se realiza a través de Servidores de Nombres de Dominio (DNS). En el caso del ejemplo anterior, la IP del servidor en donde reside la página de la Facultad de Ingeniería es 132.248.54.13, cuando un usuario teclea www.ingenieria.unam.mx se está conectando al servidor cuya IP es 132.248.54.13. De hecho si se teclea la dirección IP en lugar del nombre de dominio, se observa el mismo resultado. La transformación del nombre de dominio a la dirección IP correspondiente es transparente para el usuario, aunque en realidad el cliente se conecta primero al servidor de nombres de dominio, en donde se resuelve la dirección para que después el cliente pueda conectarse al servidor destino. Una vez ingresada la dirección de un recurso en el navegador se genera un mensaje de petición que se ve de la siguiente manera:

GET http://www.ingeniería.unam.mx HTTP/1.1 Accept : Text/html User-Agent : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Windows 95) Port: 2989

Connection: keep-alive

Al analizar la solicitud mostrada en el recuadro anterior se puede observar que la primera línea corresponde a la línea de solicitud, formada por el método, la dirección URL del recurso y la versión del protocolo, seguida de las líneas de encabezados, las cuales incluyen el tipo de información que acepta el cliente, el tipo de agente de usuario, el puerto usado por el cliente y el estado de la conexión. En esta solicitud no hay un cuerpo del mensaje, si lo hubiera tendría que haber una línea en blanco entre él y la última línea de encabezados. El ejemplo anterior no incluye el número de puerto ni una trayectoria URL que indique la ubicación de un archivo dentro del servidor. En el siguiente ejemplo un cliente se conecta a la página de la Facultad de Ingeniería solicitando una edición de la gaceta que se publica en dicha página. La línea de solicitud se muestra a continuación:

GET http://132.248.54.13:80/paginas/gaceta/2009/gaceta12_2009.pdf HTTP/1.1

La dirección URL del recurso incluye el protocolo de acceso, la dirección IP del servidor donde reside el recurso, el número de puerto empleado para la conexión y la trayectoria URL del recurso, la cual indica que el recurso que se solicita se encuentra dentro de una carpeta llamada paginas, que contiene otra carpeta con el nombre gaceta, en cuyo interior se encuentra la carpeta 2009 que contiene el documento gaceta12_2009.pdf que se solicita.

4.11.3.2 Respuesta HTTP

En el mensaje de respuesta un servidor envía el recurso solicitado por un cliente y añade información adicional. El formato de los mensajes de respuesta se muestra en la Figura 4.30.

Figura 4.30 Formato de respuesta HTTP

Línea de estado. La línea de inicio de un mensaje de respuesta se denomina línea de estado y contiene tres elementos separados por un espacio en blanco: la versión del protocolo usada por el servidor, un código numérico que indica el estado de la transacción y un campo con una descripción del estado indicado con el código:

Versión del protocolo Código de estado Descripción del código de estado

Page 79: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM.

Campos del encabezado de respuesta. Los encabezados son opcionales y cada uno se escribe en una línea. Los campos contienen un nombre, seguido de dos puntos y un valor. En el siguiente ejemplo se ilustra la sintaxis de cuatro campos del encabezado de una respuesta, en los cuales se indica el software de servidor usado, el tipo de contenido enviado por el servidor, la longitud del contenido del cuerpo y la fecha de la última modificación del documento.

Server : Microsoft-IIS/2.0 Content-Type : text/HTML Content-Length : 1245 Last-Modified : Fri, 14 Jan 2009 08:25:13 GMT

El final de los campos de encabezados se indica mediante una línea en blanco, después de la cual viene el cuerpo de la respuesta. Cuerpo de la respuesta. El recurso solicitado se envía en el cuerpo del mensaje utilizando la codificación indicada en los encabezados para que el cliente la pueda interpretar. Por ejemplo, si se trata de una página web, generalmente se utiliza código HTML.

ódigos de estado Los códigos de estado son números enteros de tres dígitos que el servidor envía al cliente para informarle el estado de la transacción. El primer dígito indica el tipo de respuesta que se envía, se dividen en mensajes informativos, de operación exitosa, de redirección, de error debido al cliente o error debido al servidor. En la Tabla 4.8 se ilustran algunos de los códigos usados en las respuestas.

Tabla 4.8 Códigos de estado HTTP

CÓDIGO TIPO DE MENSAJE

DESCRIPCIÓN

1XX Mensaje informativo Solicitud recibida, proceso continuado

Indica al cliente que su solicitud fue recibida y puede 100

2XX

200

201

202

204 3XX

300 301 302

Continuar

Operación exitosa

OK

Creada

Aceptada

Ningún contenido Redirección

Opciones múltiples

Cambiado permanentemente

Encontrado

continuar con el envío.

La transferencia se realizó exitosamente

La solicitud tuvo éxito. Se creó un nuevo recurso en el servidor identificado con el URL que se envía de regreso al cliente. La solicitud fue aceptada pero no se ha terminado de procesar. No hay información que entregar, el mensaje de respuesta no contiene un cuerpo.

El recurso ya no se encuentra en el servidor

El recurso solicitado no tiene una representación única. El recurso solicitado tiene un nuevo URL permanente, que se indica en la respuesta para poder solicitar el recurso de manera adecuada en futuras ocasiones. El recurso solicitado tiene un URL diferente de manera temporal, en futuras solicitudes se debe especificar el URL original.

4XX Error debido al cliente La solicitud es incorrecta

El servidor no lo logró entender la solicitud debido a una mala 400 401 403

Mala solicitud No autorizada Prohibido

sintaxis. La solicitud requiere autenticación del usuario. El servidor no puede mostrar el recurso solicitado ya que está

Page 80: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. .

prohibido

404 No encontrado El servidor no encuentra el recurso identificado con la URL especificada en la solicitud.

405 Método no permitido El método especificado no es permitido para el recurso 5XX 500 501

Error debido al servidor Error interno del servidor

No implementada

solicitado. Error interno en el servidor

Se presentó una condición inesperada en el servidor que le impidió responder la solicitud. El servidor no soporta la funcionalidad requerida para la solicitud.

503 Servicio no disponible El servidor no puede procesar la solicitud de manera 505

Versión HTTP no soportada

momentánea. El servidor no soporta la versión del protocolo usada por el cliente.

Page 81: Conceptos Básicos de Redes y Tcpip

Conceptos básicos de Redes y TCP/IP. Departamento de Electrónica. Facultad de Ingeniería, UNAM. Ejemplo de respuesta HTTP Cuando un servidor atiende una solicitud, antes de enviar el recurso, envía al cliente algunos campos de información como parte del protocolo. Siguiendo con el ejemplo mostrado del cliente que se conecta al servidor de la Facultad de Ingeniería, la respuesta enviada tiene el siguiente formato:

HTTP/1.1 200 OK Date: Tue, 15 Sep 2009 02:42:02 GMT Server: Apache Connection: close Content-Type: text/html <HTML><HEAD>… … … </HED><HTML>

En la línea de estado se indica la versión del protocolo usada por el servidor y el código de estado

número 200, seguido de la explicaci n textual ―OK , que indica que la solicitud fue recibida y procesada con éxito. A partir de la segunda línea viene una serie de campos de encabezados, que indican la fecha en la que se generó el mensaje de respuesta, el software de servidor empleado, el estado de la conexión y el tipo de contenido usado en el cuerpo del mensaje. La línea en blanco separa los encabezados del cuerpo del mensaje, el cual contiene el recurso solicitado. En el ejemplo, el recurso es el código de la página de inicio de la Facultad de Ingeniería, codificado en lenguaje HTML. Los conceptos referentes a los protocolos de la pila TCP/IP definidos aqui son la base del desarrollo de la mayoría de las pilas gratuitas y comerciales.