Hardware de redes: LAN (local area network): Son redes de propiedad privada que se encuentran en un solo edificio, o en un campus de pocos kilómetros de longitud. Están bajo una sola administración. Son utilizadas para compartir recursos e intercambiar información. Las LANs tradicionales se ejecutan a una velocidad de 10 a 100Mbps, y comenten pocos errores. Las LANs más nuevas llegan a velocidades de hasta 10Gbts. Las topologías más comunes son la topología de bus, donde todas las computadoras están conectadas a un cable lineal, un segundo tipo es el de anillo, donde los host están conectados a un cable circular. MAN (metropolitan area network): son redes que abarcan ciudades. Un ejemplo es la red de televisión. WAN (wide area network): abarca una gran área geográfica, con frecuencia un país o un continente. Su función fundamental es la interconexión de redes que se encuentran a grandes distancias. Por ejemplo la interconexión de redes LAN. PAN (personal area network): este tipo de red se refiere a una LAN muy chica con un alcance de solo unos metros, pensada para conectar los dispositivos utilizados por una sola persona. SAN (storage area network): es una red dedicada específicamente a la tarea de transporte de datos para el almacenamiento y recuperación. GAN (global area network): son redes de empresas privadas a nivel mundial. Se utilizan satélites geoestacionarios para los enlaces. Interredes: Existe muchas redes en el mundo, a veces con hardware y software diferentes. Con frecuencia, las personas conectadas a una red desean comunicarse con personas conectadas a otra red diferente. La satisfacción de este deseo requiere que se conecten diferentes redes, con frecuencia incompatibles, a veces mediante maquinas llamadas puertas de enlace (gateways) para hacer la conexión y proporcionar la traducción necesaria, tanto en términos de hardware como de software. Un conjunto de redes interconectadas se llama interred. Software en Redes: Para reducir la complejidad de su diseño, la mayoría de las redes está organizada como una pila de capas o niveles, cada una construida a partir de la que está debajo de ella. El número de capas, así como el nombre, contenido y función de cada una de ellas difieren de red a red. El propósito de cada capa es ofrecer ciertos servicios a las capas superiores, a las cuales no se les muestran los detalles reales de implementación de los servicios ofrecidos. La capa n de una maquina mantiene una conversación con la capa n de otra máquina. Las reglas y convenciones utilizadas en esta conversación se conocen de manera colectiva como protocolo de capa n. Entre cada par de capas adyacentes esta una interfaz. Esta define que operaciones y servicios primitivos pone la capa más baja a disposición de la capa superior inmediata. Las capas pueden ofrecer dos tipos de servicios a las capas que están sobre ellas: orientados a la conexión y no orientados a la conexión. Para el primero se hace una analogía con el sistema telefónico y para el segundo con el sistema posta. El servicio orientado a la conexión tiene como característica fundamental que funciona como un tubo, el emisor empuja objetos (bits) en un extremo y el receptor los toma en el otro extremo. En la mayoría de los casos se conserva el orden para que los bits lleguen en el orden que se enviaron. El emisor y el receptor realizan una negociación sobre los parámetros que se van a utilizar. En el servicio no orientado a la conexión cada mensaje lleva consigo la dirección completa de destino y cada uno de ellos se encamina, de forma independiente, a través del sistema. No se establece conexión, cuando un host tiene información simplemente la manda. A los paquetes independientes de un sistema sin conexión se les denomina datagramas por analogía a los telegramas. Un servicio se especifica formalmente como un conjunto de primitivas (operaciones) que una capa proporciona a la capa superior. Estas primitivas le indican al servicio que desempeñe alguna acción o reporte sobre una acción que ha tomado una entidad igual. El servicio define que operaciones puede realizar la capa en beneficio de sus usuarios, pero no dice nada de cómo se implementan tales operaciones. La capa inferior provee el servicio y la superior lo recibe o lo usa. Un protocolo es un conjunto de reglas que rigen el formato y el significado de los paquetes, o mensajes que se intercambiaron las entidades iguales en una capa. Se pueden cambiar los protocolos sin que cambien los servicios disponibles al usuario. En resumen: los servicios se relacionan con las interacciones entre capas. Los protocolos se relacionan con los paquetes enviados entre entidades iguales de maquinas diferentes. Modelos de referencia. OSI-ISO El modelo OSI está basado en una propuesta desarrollada por la ISO (International Organization for Standardization) como un primer paso hacia la estandarización de los protocolos utilizados en varias capas. El modelo se llama OSI (Open System Interconnection) ISO. Los datos que se van a transmitir reciben una serie de nombres y formatos específicos en función de la capa en la que se encuentren, a medida que se va bajando en la sucesión de capas se van agregando una serie de encabezados e información final. Este proceso que realiza cada capa se denomina encapsulamiento. El modelo OSI cuenta con 7 capas. 1- Capa física: Se lleva a cabo la transmisión de bits puros a través de un canal de comunicación. Las preguntas que responde esta capa son ¿Cuantos voltios representan un 1? ¿Cuantos un 0? ¿Cuántos pines tiene un conector de red y para que se utiliza cada uno? Los aspectos de diseño tienen que ver mucho con interfaces mecánicas, eléctricas y de temporización, además del medio físico de transmisión que está bajo la capa física. 2- Capa de enlace de datos: La tarea es transformar un medio de transmisión puro en una línea de comunicación. Es la encargada de hacer fluir la información libre de errores entre dos máquinas conectadas directamente. Para ello se generan tramas, pequeños bloques de información que contienen en su cabecera las direcciones MAC (Medium Access Control address) correspondiente al emisor y receptor de la información. Estas tramas son enviadas de manera secuencial. Si el servicio es confiable cada trama enviada es confirmada por el receptor. Otra cuestión a evaluar en esta capa es como hacer para que un transmisor rápido no sature de datos a un receptor lento (control de flujo). 3- Capa de red: Determina como se enrutan los paquetes desde su origen a su destino. Las rutas pueden estar basadas en tablas estáticas, enrutamiento estático o puede haber enrutamiento dinámico. También tiene la responsabilidad de controlar la congestión. Otro problema que debe resolver la capa de red es si las redes que se interconectan utilizan diferentes direccionamientos, o si se utilizan diferentes protocolos. Esta capa tiene que lograr que las redes heterogéneas se interconecten. 4- Capa de transporte: La función es aceptar los datos provenientes de las capas superiores, dividirlos en unidades más pequeñas si es necesario, pasar estas a la capa de red y asegurarse de que todas las piezas lleguen correctamente al otro extremo. También determina qué tipo de servicio (con o sin conexión) le va a prestar a la capa superior. La capa de transporte es una verdadera conexión de extremo a extremo, en toda la ruta desde el origen hasta el destino. En las capas inferiores, los protocolos operan entre cada máquina y sus vecinos inmediatos, y no entre las maquinas de los extremos, la de origen y la de destino, las cuales podrían estar separadas por muchos routers. 5- Capa de sesión: Permite que usuarios de maquinas diferentes establezcan sesiones entre ellos. Las sesiones ofrecen varios servicios, como el control de dialogo, administración de token y sincronización. 6- Capa de presentación: Le corresponde la sintaxis y la semántica de la información transmitida. El objetivo es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres (ASCII, Unicode, EBCDIC), números (little-endian tipo Intel, bigendian tipo Motorola), sonido o imágenes, los datos lleguen de manera reconocible. Es la primera capa en trabajar el contenido de la información que como se establece la conexión. Podría decirse que es un traductor. (las transferencias TCP/IP se realizan en big-endian). 7- Capa de aplicación: Ofrece a las aplicaciones (de usuario o no) la posibilidad de acceder a los servicios de las demás capas y define los protocolos que utilizan las aplicaciones para intercambiar datos. Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la complejidad subyacente. Algunos ejemplos de estos protocolos son HTTP, FTP, POP, TELNET. Las capas 1 a 3 operan entre cada máquina y sus vecinos inmediatos (routers) y no entre las maquinas de los extremos. De la capa 4 a la 7 las operaciones se realizan entre los extremos (host to host). Primitivas en el modelo OSI: Como ya vimos un servicio se especifica como un conjunto de primitivas, en el modelo osi las primitivas son de cuatro tipos: Primitiva Request (petición) Indication (indicación) Response (respuesta) Confrim (confirmación) Significado Una entidad solicita el servicio Una entidad es informada de algún evento Una entidad quiere responder a un evento Una entidad es informada sobre su solicitud Los servicios pueden ser con conexión o sin conexión, en el caso de que sea con conexión se utilizaran las cuatro primitivas, un servicio sin conexión únicamente utilizara Request e Indication. Circuit switching and packet switching networks. Conmutación de paquetes o Packet switching: The data is chopped up into small pieces called packets and sent over the network. The packets can be routed, combined or fragmented, as required to get them to their eventual destination. On the receiving end, the process is reversed; the data is read from the packets and re-assembled into the form of the original data. Circuit Switching: A connection called a circuit is set up between two devices, which is used for the whole communication. In a circuit-switched network, before communication can occur between two devices, a circuit is established between them. The circuit may either be a fixed one that is always present, or it may be a circuit that is created on an as-needed basis. Even if many potential paths through intermediate devices may exist between the two devices communicating, only one will be used for any given dialog. The classic example of a circuit-switched network is the telephone system. Elementos de datos de protocolo Protocol Data Unit (PDU) and Service Data Unit (SDU): These are the formal terms used in the OSI Reference to describe protocol messages. A PDU at layer N is a message sent between protocols at layer N. It consists of layer N header information and an encapsulated message from layer N+1, which is called both the layer N SDU and the layer N+1 PDU. El modelo de referencia TCP/IP. La capa de internet: Esta capa es la pieza clave que mantiene unida a la arquitectura de internet. Su trabajo es permitir que los hosts inyecten paquetes dentro de cualquier red y que estos viajen a su destino de manera independiente. Tal vez lleguen en un orden diferente al que fueron enviados en cuyo caso las capas más altas deberán ordenarlos, si se desea una entrega ordenada. La capa de internet define un paquete de formato y protocolo oficial llamado IP (Internet Protocol). Este es un protocolo no orientado a la conexión. El trabajo de la capa de internet es entregar paquetes IP al destinatario aun cuando alguno de los equipos en el medio se encuentre fuera de servicio. La capa de transporte: Esta por arriba de la capa de Internet. Esta diseñada para permitir que dos hosts puedan llevar a cabo una conversación, tal como lo hace la capa de transporte OSI. Hay dos protocolos de transporte: TCP (Transfer control protocol), el cual es un protocolo orientado a la conexión, permitiendo que un flujo de datos originado en una máquina llegue a la otra en el mismo orden y sin error alguno. TCP Fragmenta los datos en paquetes y estos son pasados a la Capa de Internet que se encarga que llegue a destino, donde luego estos fragmentos son re ensamblados. Es tarea de TCP también la de controlar el flujo de datos, asegurando que un transmisor muy veloz no pueda saturar a un receptor más lento. UDP (User Datagram Protocol), un protocolo no orientado a la conexión. Es usado cuando no se necesita el control de secuencia o flujo que realiza TCP y se desea implementar el propio en alguna otra capa más alta. También resulta útil para casos en los que un envío rápido resulta más importante que un envío de paquetes seguro, como es el caso de transmisiones de vos. La capa de aplicación: Arriba de la capa de transporte esta la capa de aplicación. Contiene todos los protocolos de nivel más alto. Algunos ejemplos son FTP, HTTP, DNS, etc. Modos de Transmisión: Símplex: un cable de red o un canal de comunicaciones puede mandar únicamente información en una dirección. Una estación siempre actúa como fuente y la otra siempre como colector. Este método permite la transmisión de información en un único sentido. Con esta fórmula es difícil la corrección de errores causados por deficiencias de línea. Como ejemplos de la vida diaria tenemos, la televisión y la radio. Half-Duplex: sistemas que pueden transmitir en ambas direcciones, pero no de forma simultánea. Un ejemplo son los equipos de radio. Full-Duplex: permite transmitir en ambas direcciones, pero simultáneamente y por el mismo canal. Existen dos frecuencias una para transmitir y otra para recibir. Los canales Full-duplex pueden ser construidos usando dos pares de conexiones Simplex o usando un canal que permita transmisiones bidireccionales simultaneas. Método ampliamente utilizado en telecomunicaciones. ARQ (automatic repeat request). Es un método de control de errores para transmisión de información que usa acknowledgments (acuse de recibo) y timeouts para lograr una transmisión de datos confiable. Un ACK (acknowledgment) es un mensaje enviado por el receptor al emisor para indicar que ha recibido correctamente una unidad. Un timeouts es el evento que se cumple cuando el emisor espera una cantidad de tiempo razonable sin recibir el ACK, en caso de que se produzca el timeouts se re-transmite el paquete que no fue confirmada su recepción. Stop-and-wait. Como el nombre lo indica, el emisor envía una unidad y luego espera una confirmación de recepción antes de continuar enviando. El canal físico necesario en este caso es half-duplex. Es necesario que el receptor sea capaz de distinguir entre una trama que está viendo por primera vez y una retransmisión. La forma evidente de lograr esto es hacer que el emisor ponga un número de secuencia en el encabezado de cada unidad que envía. El receptor ahora puede examinar el número de secuencia de cada unidad que llega para ver si es una nueva o un duplicado que debe descartarse. Basta con un numero de secuencia de 1 bit. En cada instante, el receptor espera un número de secuencia en particular. Cualquier unidad de entrada que contenga un número de secuencia equivocado se rechaza como duplicado. Cuando llega un elemento que tiene el número de secuencia correcto se acepta y se pasa a la capa superior. Ahora el numero de secuencia esperado se incrementa, si era un 0 ahora será 1 y si era 1 será 0. Protocolos de ventana corrediza. Los protocolos de comunicación avanzados intentan sacar el mayor provecho posible del enlace, en particular en casos de retardos no despreciables, que son bastante frecuentes. La idea entonces es no esperar el ACK para transmitir el próximo paquete, sino seguir transmitiendo un tiempo. Para ello, cada paquete lleva un número de secuencia, y los ACKs también de modo de saber a qué paquete corresponden. El número de paquetes que tengo derecho a transmitir sin haber recibido ACK se conoce como el tamaño de mi ventana. Obviamente, si no hay errores, este protocolo es mucho más eficiente que Stop-and-Wait, puesto que utilizo lo más que puedo el ancho de banda disponible (si logro que el tamaño de la ventana llene el cable), no teniendo que detenerme nunca. Si hay errores, depende cómo manejemos la retransmisión, la eficiencia que podamos lograr. El receptor también maneja una ventana. En el caso que los errores no sean demasiado frecuentes, se estila un protocolo simple que usa una ventana de recepción de tamaño 1 (Go-BACK-N). Cuando se esperan tasas de errores importantes, se usa una ventana de tamaño mayor (Selective Repeat), lo que permite recibir paquetes adelantados y guardarlos dentro de la ventana hasta completar el trozo faltante. Si la ventana del emisor y del receptor son de tamaño 1, nos encontramos con Stop and Wait.(Pero según la profesora no es correcto hablar de ventana en stop and wait.) En el caso en que el receptor también tenga una ventana hablamos de un Selective Repeat. Al tener una ventana más grande en el emisor, el hecho de transmitir paquetes en secuencia, sin esperar los ACKs secuenciales, introduce un nuevo error: paquetes en desorden. Como siempre, debemos garantizar que los paquetes que entregamos a la aplicación mantienen el orden original. Estos protocolos manejan timeouts por paquetes y almacenan múltiples paquetes que fueron transmitidos pero cuyo ACK aun no llega (por si hay que retransmitirlos). Go-BACK-N La idea es ir transmitiendo las unidades de la ventana, hasta el tamaño máximo acordado. Al ir recibiendo los ACKs, la ventana se va corriendo y puedo enviar el resto de las unidades, sin pasar el tamaño máximo. El receptor simplemente descarta todas las unidades subsecuentes al error, sin enviar confirmación de recepción para las unidades descartadas. Cuando el emisor no reciba un ACK y se cumpla el timeout, va a retransmitir en orden todas las unidades cuyas unidades aun no han sido confirmadas, comenzando por la dañada o perdida. Esta estrategia desperdicia bastante ancho de banda si la tasa de errores es alta. Esto me permite tener un receptor simple, con una ventana de tamaño 1. Basta con que recuerde el número de secuencia de la próxima unidad que debe recibir. Si el número de errores es bajo, este protocolo es muy eficiente con ventanas grandes. Al aumentar la tasa de errores, las ventanas deben ser más pequeñas. Debemos manejar el número de secuencia del primer paquete cuyo ACK aun no recibimos (ExpectedACK) y el arreglo de paquetes de nuestra ventana. En general esto se maneja como un arreglo circular y los números de secuencia van entre 0 y WINDOW_SIZE+1. Los números de secuencia tienen que ser mayor que el número de elementos de la ventana. (Secuencia > ventana) Selective Repeat La segunda opción para solucionar el problema de las retransmisiones consiste en que el receptor descarte la unidad errónea y pida sólo la retransmisión de ésta, aceptando las unidades posteriores que hayan llegado correctamente. Esto se conoce como repetición selectiva y corresponde a una ventana deslizante mayor que 1 en el receptor (normalmente, es de igual tamaño que la ventana del emisor). La repetición selectiva con frecuencia se combina con el hecho de que el receptor envíe una confirmación de recepción negativa (NAK) cuando detecta un error, por ejemplo, cuando recibe un error de suma de verificación o una trama en desorden. Las confirmaciones de recepción negativas estimulan la retransmisión antes de que el temporizador correspondiente expire y, por lo tanto, mejoran el rendimiento. En otras palabras, la repetición selectiva consiste en aprovechar aquellas unidades correctas que lleguen después de la errónea, y pedir al emisor que retransmita las que presentaron problemas. La desventaja que presenta el método es que ahora el receptor ha de disponer de espacio en el buffer para almacenar todas los unidades de la ventana, ya que en caso de pedirse retransmisión tendrá que intercalar en su sitio la unidad retransmitida antes de pasar las siguientes a la capa superior, esto porque la capa superior debe recibir las unidades estrictamente en orden. Entonces, se puede decir que su funcionamiento corresponde al de una ventana deslizante de igual tamaño en el emisor que en el receptor, lo que esto supone tener un buffer lo suficientemente grande para almacenar un número de unidades igual al tamaño de ventana que se esté utilizando. La posibilidad de una recepción no secuencial de unidades plantea nuevos problemas. Por ejemplo, suponiendo que el emisor envía las unidades 0 a 6, las que son recibidas correctamente. Entonces el receptor realiza las siguientes acciones: las transmite a la capa superior, libera los buffers correspondientes avanza la ventana para poder recibir siete unidades más, cuyos números de secuencia podrán ser 7,0,1,2,3,4,5 y envía un ACK para las unidades 0 a 6 recibidas. Si el ACK no llega al emisor, éste supondrá que ninguna de ellas ha llegado, por lo que reenviará las unidades 0 a 6 de nuevo. De éstas, las unidades 0 a 5 se encuentran dentro de la ventana del receptor. En un procesamiento secuencial, el receptor no aceptaría estas unidades si no recibe antes la unidad 7 pendiente, pero con retransmisión selectiva se aceptarían y se pediría retransmisión de la 7. Una vez recibida, ésta se pasaría a la capa superior seguida de las unidades 0 a 5 antes recibidas, que serían duplicados de las anteriores (esto se llama overlapping). En este caso el receptor pasará unidades duplicadas al nivel superior. La solución a este conflicto está en evitar que un mismo número de secuencia pueda aparecer en dos ventanas consecutivas. Por ejemplo, si el tamaño de ventana es de 7 el número de secuencia podría ser de 4 bits y la ventana del receptor sería 0-6, 7-13, 14-4, etc. El valor máximo de la ventana para un protocolo de repetición selectiva en el caso general sería (MAX_SEQ+1)/2. Aunque el número de secuencia se ha duplicado respecto al caso anterior, el número de unidades que hay que mantener en el buffer no necesita ser superior al tamaño de ventana, ya que este será el número máximo de unidades que habrá que manejar en cualquier circunstancia. La técnica de repetición selectiva da lugar a protocolos más complejos que la de retroceso n, y requiere mayor espacio de buffers en el receptor. Sin embargo, cuando las líneas de transmisión tienen una tasa de errores elevada da un mejor rendimiento, ya que permite aprovechar todas las unidades correctamente transmitidas. RESUMEN ARQ Control de flujo. Son algoritmos para prevenir que los datos de un emisor rápido o que se encuentra sin carga sature a un receptor que opera en una maquina lenta o sobrecargada. El método más utilizado es el método de control de flujo basado en retroalimentación, el receptor regresa información al emisor autorizándolo para enviar más datos o indicándole su estado. Ejemplos de esto son los protocolos de ventana deslizante o de parada y espera (stop and wait). Control de congestión. Cuando hay demasiados paquetes en la subred (red formada por routers), hay una degradación del desempeño. Esta situación se llama congestión. Cuando la cantidad de paquetes descargados en la subred por los hosts esta dentro de su capacidad de conducción, todos se entregan y la cantidad entregada es proporcional al número enviado. Sin embargo, a medida que aumenta el tráfico los enrutadores ya no pueden manejarlo y comienzan a perder paquetes. El control de congestión es el encargado de asegurar que la red sea capaz de transportar el tráfico ofrecido, es un asunto global a diferencia del control de flujo que se relaciona con el tráfico punto a punto entre un emisor dado y un receptor dado. En TCP el transmisor utiliza dos ventanas, una negociada con el receptor en el establecimiento de la conexión y la otra una ventana de congestionamiento, cuyo tamaño va cambiando durante la transmisión de datos, se recalcula en cada intercambio de segmentos. TCP utiliza una ventana de congestión la cual se agranda o achica dependiendo del feedback que recibe de la red. Esta ventana de congestión empieza por 1 MSS, y la misma aumenta exponencialmente si no se registran pérdidas de paquetes. Por ejemplo si se envía un paquete y no se pierde la ventana de congestión pasa a ser de 2 MSS, se envían estos dos segmentos, si se recibe el ACK de ambos la ventana de congestión pasa a ser de 4 MSS, y así sucesivamente. Esta ventana sigue creciendo hasta que se produzca un timeout o hasta que se alcance el tamaño de la ventana receptora. Este algoritmo se llama arranque lento. Siempre se utiliza la ventana mas chica, entre la que define el receptor y la de congestión. Arranque lento + umbral: Hay definido un umbral inicialmente de 64 KN. Al ocurrir una expiración del temporizador este umbral se redefine a la mitad de la ventana de congestión actual, y la ventana de congestión se restablece a 1 MSS. Luego se usa el arranque lento para determinar lo que puede manejar la red, excepto que el crecimiento exponencial termina en el umbral y a partir de este momento el crecimiento es lineal. Si no ocurren expiraciones del temporizador, la ventana de congestión continuara creciendo hasta el tamaño de la ventana del receptor. En este punto dejara de crecer y permanecerá contante mientras no ocurran mas expiraciones del temporizador y la ventana del receptor no cambie de tamaño. En TCP estos dos problemas se resuelven con la misma implementación de ventanas. Transfer control Protocol: TCP Este protocolo se diseño específicamente para proporcionar un flujo de bytes confiable de extremo a extremo a través de una capa de red no confiable. TCP debe proporcionar la confiabilidad que la mayoría de los usuarios desean y que IP no proporciona. El servicio TCP se obtiene al hacer que tanto el servidor como el cliente creen puntos terminales, llamados sockets. Cada socket tiene un numero que consiste en la dirección IP del host y un numero de 16 bits, que es local a ese host, llamado puerto. Para obtener el servicio TCP, se debe establecer de manera explícita una conexión entre un socket en la maquina emisora y una en la receptora. Los numero de puerto menores que 1024 se llaman puertos bien conocidos (well-know ports) y se reservan para servicios estándar. Todas las conexiones TCP son full-dúplex y punto a punto, no se soporta broadcasting. Una conexión TCP es un flujo de bytes, no uno de mensajes. TCP es el UNICO protocolo que no preserva las unidades. En todo otro protocolo la unidad es la misma en la entrada y en la salida. Una característica clave de TCP es que cada byte de una conexión TCP tiene su propio número de secuencia de 32 bits. Cuando internet comenzó las líneas entre los routers eran líneas de 56 Kbps, por lo que un host que mandaba datos a toda velocidad tardaba una semana en recorrer los números de secuencia. A las velocidades de las redes modernas, los números de secuencia pueden consumirse con una rapidez alarmante. Este numero de secuencia es utilizado para las confirmaciones de recepción y para el mecanismo de de ventana corrediza. El protocolo básico usado por las entidades TCP es el protocolo de ventana corrediza. Cuando un transmisor envía un segmento, también inicia un temporizador. Cuando llega el segmento al destino, la entidad TCP receptora devuelve un segmento (con datos en caso de existir), que contiene un número de confirmación de recepción igual al siguiente número de secuencia que espera recibir. Si el temporizador del emisor expira antes de la recepción de la confirmación, el emisor envía de nuevo el segmento. Los protocolos de ventana corrediza utilizados por TCP no son solo para asegurar confiabilidad, sino también es el mecanismo utilizado por TCP para controlar el flujo de datos. Esto lo logra agrandando o reduciendo el tamaño de la ventana del receptor, en caso de que el receptor este extremadamente congestionado puede incluso reducir el tamaño de recepción de ventana a cero, cerrándola; esto va a parar las transmisiones de datos hasta que la ventana sea re-abierta. TCP le informa al emisor cuanto buffer tiene libre en cada paquete que le envía, esta es la función del campo ventana en el header TCP. Con esta información el emisor sabe cuántos paquetes puede enviar sin recibir ACK. Encabezado del segmento TCP Puerto de origen y puerto de destino: identifican los puntos terminales locales de la conexión. Numero de secuencia y numero de ACK: Ambos tienen 32 bits de longitud y el ACK especifica el siguiente byte esperado, no el último byte correctamente recibido. Longitud del encabezado TCP: indica la cantidad de palabras de 32 bits contenidas en el encabezado TCP. Esta información es necesaria porque el campo de opciones es de longitud variable, por lo que el encabezado también. Este campo indica el comienzo de los datos en el segmento. URG: en 1 si esta en uso el apuntador urgente. ACK: en 1 para indicar que el numero de ACK es válido. PSH: datos que se deben transmitir de inmediato. Indica que el receptor entregue los datos a la aplicación a su llegada y no los almacene en el buffer hasta la recepción de un bufer completo. RST: el que lo envía a encontrado un problema y quiere reiniciar la conexión. SYN (synchronize bit): se usa para establecer conexiones. La solicitud de conexión tiene SYN=1 y ACK=0. La respuesta de conexión si lleva una confirmación de recepción, por lo que tiene SYN = 1 y ACK =1. El bit SYN se usa para denotar CONNECTION REQUEST y CONNECTION ACCEPTED y el bit ACK sirve para distinguir entre ambas posibilidades. El objetivo es sincronizar numero de secuencia entre hosts. FIN: especifica que el emisor no tiene más datos que transmitir. Opciones: agrega características extra no cubiertas por el encabezado normal. La opción más importante es la que permite que cada host especifique la carga útil TCP máxima que está dispuesto a aceptar. Tamaño de ventana: el control de flujo de TCP se maneja usando una ventana corrediza de tamaño variable. El campo tamaño de ventana indica la cantidad de bytes que pueden enviarse comenzando por el byte cuya recepción se ha confirmado. Es válido un campo de tamaño de ventana de 0, e indica que se han recibido los bytes hasta número de confirmación de recepción -1 inclusive, pero el receptor necesita un descanso. Hay una opción de escala de ventana que permite al emisor y al receptor negociar un factor de escala de ventana. Este número da la posibilidad de que ambos lados desplacen el campo de tamaño de ventana hasta 14 bits a la izquierda, permitiendo por tanto ventanas de hasta 230 bytes. [Otra opción propuesta y ahora de uso difundido es el empleo de la repetición selectiva (selective repeat) en lugar del protocolo de retroceso n (go-BACK-N). También se introdujeron los NAKs para permitir que el receptor solicite un segmento específico. Tras recibirlo, puede enviar una confirmación de recepción de todos los datos que tiene en búfer, reduciendo de esta manera la cantidad de datos retransmitidos. ] Esto anterior maría nos dijo que no es así, y que tcp utiliza selective repeat pero sin NAKS, lo tengo anotado para preguntarle, porque encima esta explicado en el RFC 1106. Establecimiento de una conexión TCP N+1 N N Connect Request SYN SEQ=300 N+1 WIN=2MSS MSS=2k Connect Indicator SYN ACK=301 SEQ=99 WIN=8MSS MSS=1k Connect Response Connect Confirm ACK=100 SEQ=301 Este protocolo se conoce como 3-Way Handshake. Y puede resumirse como “SYN, SYN-ACK, ACK” El primer segmento de conexión puede reconocerse porque tiene el bit de SYN prendido. El segundo puede reconocerse porque tiene tanto el bit de SYN como el de ACK prendidos, y el tercero es únicamente de confirmación (ACK) para indicar a la otra parte que los dos lados están de acuerdo con que la conexión ha sido establecida. Una vez establecida la conexión los datos fluyen en ambas direcciones, no hay master o slave. Este tipo de conexión es fundamental para garantizar que ambos lados están de acuerdo con los números de secuencia a recibir. 1. El cliente ejecuta una primitiva CONNECT especificando la dirección y el puerto IP con que se desea conectar, el tamaño máximo de segmento TCP que está dispuesto a aceptar (MSS) y el tamaño de la ventana en múltiplos de MSS. La primitiva CONNECT envía un segmento TCP con el bit ACK apagado, y espera una respuesta. También envía el numero de secuencia que va a utilizar para sincronizar. 2. Si algún proceso está escuchando en el puerto, ese proceso recibe el segmento TCP entrante y puede entonces aceptar o rechazar la conexión; si la acepta, devuelve un ACK junto con el número de secuencia propio, y el tamaño de ventana expresado también en múltiplos de MSS. En caso de que no se deseara establecer la conexión, envía una contestación con el bit RST activado. 3. El primer host recibe el segmento y envía su confirmación, momento a partir del cual la conexión TCP queda establecida. Esta última unidad ya puede llevar datos. El número de secuencia inicial de una conexión no es 0. Se usa un esquema basado en reloj, con un pulso de reloj cada 4 microsegundos. Por seguridad adicional, al caerse un host, no podrá reiniciarse durante el tiempo máximo de paquete (120 segundos) para asegurar que no haya paquetes de conexiones previas vagando por internet. TCP trabaja con ventanas, durante el establecimiento de la conexión se negocian entre otros parámetros, el MSS y el tamaño de la ventana como múltiplo del MSS. Luego el tamaño de la ventana cambia en cada transmisión de datos y se mide en bytes. TCP informa al emisor de cuanto buffer tiene libre en cada paquete que le envía. El receptor envía siempre un ACK por el siguiente byte que espera recibir. MSS: es la cantidad más grande de datos que una computadora puede manejar en una sola pieza sin fragmentar. Para una óptima comunicación, el número de bytes en el segmento de datos y en el encabezado no debe superar la MTU (maximum transmission unit) MTU (maximum transmission unit): es un término de redes de computadoras que expresa el tamaño en bytes del datagrama más grande que puede pasar por una capa de un protocolo de comunicaciones. Por ejemplo el MTU de Ethernet es 1500 bytes. Seleccionando el ISN (Initial Sequence Number) Una buena pregunta a realizarse es porque no siempre que iniciamos una conexión TCP le asignamos al primer byte de datos el número de secuencia 1. En un mundo ideal esto probablemente funcionase correctamente. El problema es que si siempre se empieza en 1, los segmentos de diferentes conexiones podrían mezclarse. Podemos imaginarnos el siguiente problema, iniciamos una conexión y enviamos el segmento conteniendo del byte 1 hasta el 30. Sin embargo hay un problema con la subred causando que este segmento se retrase. Si en este momento se pierde la conexión TCP y se vuelve a crear una, los números de secuencia volverán a empezar en 1, si luego de establecer la conexión llega el segmento que se había retrasado, el receptor va a pensar erróneamente que ese segmento pertenece a la nueva conexión. Este es uno de los tantos problemas que pueden ocurrir. Para evitarlos cada dispositivo que utiliza TCP en el momento de crear una conexión elige un número de inicio de secuencia de 32 bits para la conexión. Comúnmente cada dispositivo elige el ISN haciendo uso de un contador de tiempo. Este contador se inicializa junto con TCP, incrementándose en 1 unidad cada 4 microsegundos, hasta el momento en que alcanza el mayor número posible de los 32 bits, en este momento vuelve a 0 y continúa incrementándose. Cada vez que se establece una conexión el ISN es tomado del contador. Como toma 4 horas contar desde 0 hasta 4.294.967.295 incrementando cada 4 microsegundos, está casi asegurada que cada conexión no va a tener conflicto con las anteriores. Liberación de una conexión TCP. Aunque las conexiones TCP son full-Duplex, para entender la manera en que se liberan las conexiones es mejor visualizarlas como un par de conexiones Simplex. Cada conexión Simplex se libera independientemente de su igual. Para liberar una conexión, cualquiera de las partes puede enviar un segmento TCP con el bit FIN establecido, lo que significa que no tiene más datos por transmitir. Al confirmarse la recepción del FIN, ese sentido se apaga (aun puede seguir enviando ACK). Esto se conoce como Half-Close. Cuando ambos sentidos se han apagado, se libera la conexión. Normalmente se requieren cuatro segmentos TCP para liberar una conexión, un FIN y un ACK para cada sentido. Sin embargo es posible que el primer ACK y el segundo FIN estén contenidos en el mismo segmento, reduciendo la cuenta total a tres. En caso de que el ACK del segmento TCP con el bit FIN establecido no llegase, el emisor del FIN espera un máximo de dos tiempos de vida de paquete y libera la conexión. La otra parte se dará cuenta que nadie lo está escuchando y también expirara su temporizador. N+1 N N Disconnect Request N+1 FIN ACK=X Disconnect Indicator ACK=Y Disconnect Response Disconnect Confirm Half Close ACK en TCP. En los mensajes ACK, el Acknowledgment Number es seteado en el ISN recibido del otro dispositivo más uno. Esto representa el próximo número que se espera recibir. (El ISN realmente representa el número de secuencia del último byte recibido). El mecanismo de ACK empelado en TCP es acumulativo, por lo tanto si se envía un ACK por el numero de secuencia X significa que todos los octetos hasta pero no incluyendo X han sido recibidos. Explicación Router, Switch y Hubs. Hub: Trabaja en la capa física. Este dispositivo tiene numerosos puertos de entrada que une de manera eléctrica permitiendo centralizar el cableado de una red. Las tramas que llegan a cualquiera de las líneas se envían a todas las demás, excepto aquella por la que se recibió. Si dos tramas llegan al mismo tiempo, chocaran, al igual que en un cable. Este dispositivo también es el encargado de enviar una señal de choque a todos los puertos si detecta una colisión. Un Hub constituye un solo dominio de colisión. Un HUB añade tráfico a la red, aumentando las posibilidades de colisión. Switch y Bridge: Estos aparatos trabajan en la capa de enlace de datos e interconectan dos o más segmentos de red. Bridge: conecta dos o más LANs. Cuando llega una trama, el software del bridge extrae la dirección de destino del encabezado y la busca en una tabla para averiguar a donde debe enviar la trama. Cada puerto de un bridge determina diferentes dominós de colisión. El proceso de enrutamiento para una trama entrante depende de la LAN de que proceda (la LAN de origen) y de la LAN a la cual está destinada (la LAN de destino), como se puede ver a continuación: 1. Si las LANs de destino y origen son la misma, el bridge descarta la trama. 2. Si las LANs de destino y de origen son diferentes, el bridge reenvía la trama 3. Si se desconoce la LAN de destino, el bridge realiza un broadcast a todas las LANs. Switch: Al igual que el Bridge transporta las tramas tomando las direcciones MAC. Son utilizados para conectar computadoras individuales. Cada tarjeta de línea proporciona espacio de búfer para las tramas que llegan a sus puertos. Como cada puerto constituye su propio dominio de colisión, los switch nunca pierden tramas por colisiones. Sin embargo si las tramas llegan con mayor rapidez de la que pueden retransmitirse, el conmutador podría quedarse sin espacio de búfer y proceder a descartar tramas. El switch conoce los ordenadores que tiene conectados a cada uno de sus puertos. Cuando en la especificación del un switch aparece algo como 8k MAC address table se refiere a la memoria que el switch destina a almacenar las direcciones. Un switch cuando se enchufa no conoce las direcciones de los ordenadores de sus puertos, las aprende a medida que circula información a través de él. Cuando un switch no conoce la dirección MAC de destino envía la trama por todos sus puertos, al igual que un Hub Flooding (inundación). Cuando hay más de un ordenador conectado a un puerto de un switch éste aprende sus direcciones MAC y cuando se envían información entre ellos no la propaga al resto de la red. Esto se llama filtrado, y gracias a él, el tráfico entre A y B no llega a C. Las colisiones que se producen entre A y B tampoco afectan a C. A cada parte de una red separada por un switch se le llama segmento. La principal diferencia que existe entre bridges y switchs es que los primeros son utilizados para conectar LANs, y los switchs son utilizados para conectar computadoras individuales. Como cada puerto del switch va hacia una sola computadora, estos deben contar con espacio para muchas más tarjetas de línea que los bridges, cuyo propósito es conectar solamente LANs. Router: Este dispositivo trabaja en la capa de red. Un router es un dispositivo de hardware para interconexión de red de ordenadores. Este dispositivo permite asegurar el enrutamiento de paquetes entre redes o determinar la ruta que debe tomar el paquete de datos. La diferencia esencial entre el caso de conmutación (cuando se utiliza un switch) y el caso de enrutamiento (cuando se utiliza un router) es que en el caso del switch, toda la trama se transporta con base en su dirección MAC. Con un router, el paquete se extrae de la trama y la dirección del paquete se utiliza para decidir a donde enviarlo. Los switchs no tienen que entender el protocolo de capa de red que se está utilizando para conmutar los paquetes. Los routers si tienen que hacerlo. Virtual LAN (VLAN) Es un método para crear redes lógicamente independientes dentro de una misma red física. Varias VLANs pueden coexistir en un único switch físico o en una única red física. Son útiles para reducir el tamaño de los dominios de difusión y ayudan en la administración de la red separando segmentos lógicos de una red de área local que no deberían intercambiar datos usando la red local. Si pueden intercambiar datos a través de un router. Hay diferentes formas para que los switchs sepan a que VLAN pertenece cada host: - A cada puerto se le asigna una VLAN A cada dirección MAC se le asigna una VLAN A cada dirección IP se le asigna una VLAN La tercera opción transgrede la regla más elemental de la conectividad, la independencia de capas. A la capa de enlace de datos no le incumbe lo que esté en el campo de carga útil (lugar donde debe inspeccionar la dirección ip). No le corresponde analizar la carga útil ni tomar decisiones con base en el contendido. No se deben mezclar las capas. Las ventajas de una VLAN son las siguientes: - - Permite agrupar a los usuarios de una red para reflejar la estructura de organización de una empresa. Esto brinda seguridad ya que la información solo viaja dentro de la red que corresponde, por ejemplo, la información del departamento de ventas nunca pasa por la red del departamento de investigaciones. Dividir la carga por uso de la red. Si una red es muy usada, esta no debe interferir con las otras. Disminuye los dominios de difusión. Protocolo ARP (address resolution protocol) Es el protocolo de capa de enlace y red encargado de encontrar la dirección hardware (MAC) que corresponde a una determinada dirección IP. Podriamos decir queset protocolo es el encargado de unir la capa de enlace y la de red. Este protocolo es necesario debido a que el hardware de capa de enlace no entiende las direcciones de capa de red. La capa de enlace trabaja con direcciones físicas a diferencia de las lógicas utilizadas por la capa de red. Todas las interfaces conectadas a una red tienen tanto una dirección IP como una dirección física MAC. Ejemplo 1 A B C D E En este caso el host A desea enviar un mensaje al host E del cual no posee nada más que la dirección IP. 1- El host A realiza un AND booleano con la máscara de subred para deshacerse del numero de host y buscar la dirección de la red resultante en sus tablas de ruteo. En este caso ambos host se encuentran en la misma subred. 2- El host A envía la siguiente unidad: IP MAC Destino E Broadcast MAC Origen A A 3- Todos los host reciben la unidad y se fijan utilizando la dirección IP si la unidad es para ellos o no. En caso de serlo responde con la siguiente trama. IP MAC Destino A 4- La trama anterior llega al host inicial y este ahora ya posee toda la información necesaria para enviar la trama a E. Origen E E A IP MAC Destino E Origen A A E Ejemplo 2 R1 R2 R A B C D E F G H I J A desea enviar un mensaje a H. R es un router que posee dos interfaces de red, R1 y R2, cada una perteneciente a una subred diferente. 1- El host A realiza un AND booleano con la máscara de subred para deshacerse del numero de host y buscar la dirección de la red resultante en sus tablas de ruteo. A se da cuenta de que H se encuentra en otra red, por lo cual debe enviar su mensaje al Gateway que tenga definido, en este caso R1. 2- A envía su mensaje a R1, pero no conoce su dirección MAC, por lo cual debe hacer un broadcast. IP MAC Destino R1 Broadcast MAC Origen A A IP MAC 3- R1 responde. IP MAC Destino A A Origen R1 R1 4- El host A ya conoce la dirección MAC de su Gateway por lo que ahora puede enviar el mensaje que desea que le llegue a H. IP MAC Destino H R1 5- El mensaje llega al router que ahora debe definir si el host H se encuentra en su subred o no. En caso de que no se encontrase tiene que enviar la unidad al default Gateway para que este a su vez pueda volver a realizar la misma operación hasta que el host se encuentre en alguna de las interfaces del router. En este caso el host H se encuentra en la subred que está conectada a la interfaz R2 del router. Tiene que encontrar la dirección MAC de su destino por lo cual envía: Origen A A Destino H Broadcast MAC Origen R2 R2 6- El host H contesta el mensaje anterior: IP MAC Destino R2 R2 Origen H H 7- Ahora el router envía el mensaje de A: IP MAC Destino H H Origen A R2 Hay varias optimizaciones para que ARP trabaje con más eficiencia. Para empezar, una vez que una maquina ha ejecutado ARP, guarda el resultado en caso de tener que ponerse en poco tiempo de nuevo en contacto con la misma máquina. La siguiente vez encontrara la correspondencia en su propio cache, eliminando así la necesidad de realizar una difusión. También guarda en cache las direcciones la máquina de destino, de manera tal que si tiene que contestar ya tenga cacheadas las direcciones. Las entradas en el cache ARP deben expirar luego de algunos minutos para evitar que si se produce un reemplazo de placa Ethernet no se produzcan errores debido a que la dirección MAC es diferente. Ethernet Media Access Control (Algoritmo de control de acceso al medio) Ethernet utiliza el protocolo CSMA/CD (Carrier Sense Multiple Access/Collision Detect). Con CSMA/CD dos o más estaciones comparten un medio común de transmisión. Para transmitir una trama una estación debe esperar hasta que el medio este libre, ninguna estación debe estar transmitiendo. Si alguna otra estación trata de transmitir datos al mismo tiempo ocurre una colisión. La estación que se encontraba transmitiendo inmediatamente transmite una “jam Sequence” (Secuencia de colisión) para asegurar que todas las estaciones estén notificadas de que la transmisión fallo por una colisión. Después de esto el host se mantiene callado por un periodo de tiempo aleatorio antes de tratar de transmitir de nuevo. Este proceso es repetido hasta que en algún momento la transferencia se completa satisfactoriamente. Las reglas básicas para la transmisión de una trama son las siguientes: 1- El medio es monitoreado en busca de una estación que este transmitiendo. Este proceso es conocido como “carrier sense” 2- Si se encuentra una transmisión activa se posterga el envío de la nueva trama. La estación continúa monitoreando el medio hasta que la señal cesa. 3- Si no se encuentra una transmisión activa en el medio la estación empieza a transmitir inmediatamente. 4- Mientras la estación está enviando la trama monitorea permanentemente el medio para detectar si se produce alguna colisión. 5- Si una colisión es detectada, la estación que está transmitiendo deja de enviar la trama y envía una “jam sequence” de 32-bit. La “jam sequence” es transmitida para asegurarse que la colisión es detectada por todas las otras estaciones transmisoras. 6- Después de enviar la “jam sequence” la estación transmisora espera un tiempo aleatorio antes de empezar a transmitir de nuevo empezando por el punto 1. Este proceso es llamado “Backoff”. La probabilidad de que se vuelva a producir una colisión es reducida ya que todas las estaciones que intervinieron en la colisión vuelven a transmitir después de haber elegido un tiempo aleatorio. 7- Si se producen colisiones reiteradas la transmisión es repetida, pero el tiempo aleatorio es aumentado en cada intento. Esto disminuye aun más las posibilidades de otra colisión. 8- Este proceso se repite hasta que la estación trasmite la trama sin colisión. Una vez que se pudo transmitir correctamente, el contador de colisiones, utilizado para aumentar la cantidad de números aleatorios posibles, es reiniciado a 0. En general tras i colisiones se elige un número aleatorio entre 0 y 2i – 1, y se salta ese número de slots. Tras haberse alcanzado 10 colisiones, el intervalo de aleatorización se congela en un máximo de 1023 slots. Tras 16 colisiones, el controlador tira la toalla e informa de un fracaso a la computadora. Una estación espera simplemente hasta que el medio queda en silencio y comienza a transmitir. Si no recibe una ráfaga de ruido dentro de los primeros 64 bytes, con seguridad la trama ha sido entregada correctamente. Ethernet y Time Slot. En Ethernet existe una longitud mínima de bytes a enviar, estos son 64 bytes permitiendo que Ethernet pueda distinguir con facilidad las tramas validas de la basura. Si la porción de datos es menor que esta cantidad se utiliza un campo existente en la trama de Ethernet, llamado relleno, para rellenar la trama al tamaño mínimo. Otra razón importante para que exista una trama de longitud mínima es evitar que una estación complete la transmisión de una trama corta antes de que el primer bit llegue al extremo más alejado del cable, donde podría tener lugar una colisión con otra trama. Supongamos el siguiente caso: En el momento 0, la estación A, en un extremo de la red, envía una trama. Llamemos τ al tiempo que tarda en llegar esta trama al otro extremo. Justo antes de que la trama llegue al otro extremos (es decir, en el momento τ – ε) la estación más distante, b, comienza a transmitir. Cuando B detecta que está recibiendo más potencia de la que está enviando, sabe que ha ocurrido una colisión, por lo que aborta su transmisión y genera una ráfaga de ruido de 48 bits para avisar a las demás estaciones. En el momento 2 τ, aproximadamente, el emisor ve la ráfaga de ruido y aborta también su transmisión; luego espera un tiempo aleatorio antes de reintentar. Si una estación intenta transmitir una trama muy corta, es concebible que ocurra una colisión pero que la transmisión se complete antes de que la ráfaga de ruido llegue de regreso en el momento 2τ. En este caso el emisor supondrá que la trama ha sido enviada con éxito pero sin embargo colisiono. Para evitar que esto ocurra todas las tramas deberán tardar más de 2τ para enviarse, de maneara que la transmisión aun este llevándose a cabo cuando la ráfaga de ruido regrese al emisor. Para una LAN de 10 Mbps con una longitud máxima de 2500 metros y cuatro repetidores, el tiempo de ida y vuelta (incluyendo el tiempo de propagación a través de los cuatro repetidores) se ha determinado en aproximadamente 50 microsegundos en el peor de los casos, incluyendo el tiempo en pasar por los repetidores. Por lo tanto la trama mínima debe tomar por lo menos este tiempo en transmitir. Entonces al hacer el producto del tiempo por la velocidad de la red da como resultado 500 bits, que es la trama más pequeña que garantizara que funcionara. Para agregar algún margen de seguridad, este número se redondeo a 512 bits o 64 bytes. Al llevar los 500 bits a 512 bits, el tiempo de slot pasa a ser de 51.2 microsegundos. Las tramas con menos de 64 bytes se rellenan hasta alcanzar los 64 bytes con el campo de relleno de la trama. La trama Ethernet tiene un tamaño máximo de 1572 bytes. Y el tamaño utilizable para transmitir datos es de 1500 bytes. Token Ring. Es una arquitectura de red desarrollada por IBM en los 70. Esta tecnología se recoge en el estándar IEEE 802.5. El método de control de acceso al medio es por el paso de un Token. Utiliza una topología lógica en anillo, aunque por medio de un MAU (Multi-station access unit), la red puede verse como si fuera una estrella. Tiene topología física estrella y topología lógica en anillo. A cada MAU se le pueden conectar como máximo ocho computadoras. La velocidad desarrollada por estas redes oscila entre los 4 y los 16 Mbps. Control de acceso al medio en Token Ring. Token passing es el método utilizado por Token Ring para acceder al medio físico. Sirve para determinar que nodo en el anillo puede transmitir frames en un determinado momento. Cuando un nodo tiene datos para transmitir debe apropiarse del token, en caso de que no necesite transmitir debe dejar pasar el token a la siguiente estación. Mientras el token está siendo usado todas las estaciones deben permanecer inactivas para evitar colisiones dentro de la red. Una vez que se termina la transmisión, el token debe quedar libre y puede ser utilizado por otra estación. El frame de datos enviado circula por la red hasta que llega a la estación destino, quien hace una copia del contenido del frame para pasarlo a las capas superiores, pero no retira el frame de la red. El mismo es retirado cuando regrese a la estación que lo transmitió. El nodo transmisor también verifica si el frame fue visto y copiado. Mientras que no haya datos, el token puede girar libremente. Una estación puede mantener el token por un tiempo de 8.9 ms, este tiempo es llamado THT (token holding time). El token puede ser liberado de dos formas: inmediatamente después de transmitir el frame (early release) o después de que el frame de toda la vuelta al anillo y se haya retirado de la red (delayed release). La early release permite un mejor aprovechamiento del ancho de banda. LANs inalámbricas La IEEE estandarizo las redes inalámbricas, el estándar resultante fue publicado con el nombre 802.11. El estándar propuesto debía poder trabajar de dos modos: 1- En presencia de una estación base. Toda la comunicación se hace a través de la estación base, que en la terminología del 802.11 se conoce como access point. 2- En ausencia de una estación base, modo que es conocido como red ad hoc, las computadoras pueden enviarse mensajes entre sí directamente. Hasta el momento se presentaron 3 variantes del estándar 802.11. 802.11 Presentada en el año 1997 que se ejecutaba a 1 o 2 Mbps. Muy lenta y fue descartada. 802.11a Presentada en 1999 que utiliza una banda de frecuencia más ancha y se ejecuta a velocidades de hasta 54 Mbps 802.11b que se ejecuta a 11 Mbps que utiliza la misma banda de frecuencia que el 802.11 pero se vale de una técnica de modulación diferente. 802.11g Que utiliza la técnica de modulación del 802.11a pero la banda de frecuencia del 802.11b y que desarrolla una velocidad de 54 Mbps Existen dos grandes problemas: Problema de la estación oculta: Puesto que no todas las estaciones están dentro del alcance de radio de cada una, las transmisiones que van en un lado de una celda podrían no recibirse en otro lado de la misma celda. A desea enviar a B pero no puede oír que B está ocupado A C está transmitiendo. B C Problema de la estación expuesta: Acá B desea enviar a C por lo que escucha el canal. Cuando escucha una transmisión, concluye erróneamente que no debería transmitir a C, aunque A este transmitiendo a D. A está transmitiendo. A B desea enviar a C pero piensa erróneamente que la transmisión fallara B C Por estos dos problemas es que 802.11 no utiliza CSMA/CD como lo hace Ethernet. Una estación antes de comenzar una transmisión realmente necesita saber si hay actividad o no alrededor del receptor. El CSMA simplemente le indica si hay o no actividad alrededor de la estación que está detectando el medio y lo importante es conocer si hay o no actividad en el receptor. MACA y MACAW (protocolos de acceso múltiple) MACA (Multiple Access with Collision Avoidance o Acceso Múltiple con Prevención de Colisiones): El concepto en que se basa es que el emisor estimule al receptor a enviar una trama corta, de manera que las estaciones cercanas puedan detectar esta transmisión y eviten ellas mismas hacerlo durante la siguiente trama de datos (grande). Consideremos como A envía una trama a B: 1. A comienza por enviar una trama RTS (Request To Send) a B. Esta trama corta (30 bytes) contiene la longitud de la trama de datos que seguirá posteriormente. 2. B contesta con una trama CTS (Clear To Send). La trama CTS contiene la longitud de los datos (copiada de la RTS). 3. A recibe la trama CTS y comienza a transmitir. Las estaciones que escuchan una trama RTS evidentemente están cerca de A y deben permanecer en silencio durante el tiempo suficiente para que el CTS se trasmita de regreso a A. Cualquier estación que escuche el CTS está bastante cerca de B y debe permanecer en silencio durante la siguiente trasmisión de datos, cuya longitud puede determinar examinando la trama CTS. En la figura D está al alcance de B pero no de A. No escucha el RTS pero si el CTS. Al escuchar el CTS se le indica que esta cerca de una estación que está a punto de recibir una trama, por lo que difiere el envió de cualquier cosa hasta el momento en que se espera la terminación de esa trama. La estación E escucha ambos mensajes y debe permanecer en silencio hasta que se haya completado la trama de datos. En caso de que se produzca una colisión, como por ejemplo que B y C envíen tramas RTS a A al mismo tiempo. Estas chocaran y se perderán. En el caso de una colisión, un emisor sin éxito (uno que no escucha un CTS en el intervalo de tiempo esperado) espera un tiempo aleatorio y reintenta. El algoritmo es el retroceso exponencial binario (el mismo de Ethernet). MACAW (MACA wireless o MACA inalámbrico): La capa de enlace de datos no retransmitía las tramas perdidas hasta que la capa de transporte se daba cuenta, motivo por el cual se envía un ACK tras cada trama recibida exitosamente, resolviendo el problema anterior. También se agrego CSMA ya que puede servir para evitar que una estación transmita un RTS al mismo tiempo y destino que otra estación cercana. Por último agregaron un mecanismo para que las estaciones intercambiaran información sobre congestionamientos y para que el algoritmo de retroceso reaccionara menos violentamente a problemas pasajeros, mejorando el desempeño del sistema. Funcionamiento de 802.11: Para evitar los problemas antes mencionados (estación oculta y estación expuesta), 802.11 soporta dos modos de funcionamiento. El primero llamado DFC (Función de Coordinación Distribuida o Distributed Coordination Function), donde no se utiliza ningún tipo de control central. El otro, llamado PCF (Función de Coordinación Puntual o Point Coordination Function) que utiliza la estación base para controlar toda la actividad en su celda. Todas las estaciones soportan DCF pero PCF es opcional. El IEEE 802.11 combina CSMA y MACAW para producir CSMA/CA. DFC (Función de Coordinación Distribuida o Distributed Coordination Function). Este método utiliza un protocolo llamado CSMA/CA (CSMA con evitación de colisiones). En este protocolo, se utiliza tanto la detección del canal físico como la detección del canal virtual. Para la detección de canal físico la estación que desea transmitir detecta el canal. Si está inactivo, comienza a transmitir. No detecta el canal mientras transmite pero emite su trama completa, la cual podría ser destruida en el receptor debido a interferencia. Si el canal está ocupado, el emisor espera hasta que este inactivo para comenzar a transmitir. Si ocurre una colisión, las estaciones involucradas en ella esperan un tiempo aleatorio, mediante el algoritmo de retroceso exponencial y vuelven a intentarlo mas tarde. Para la detección del canal virtual la operación se basa en MACAW. El protocolo inicia cuando A desea enviar datos a B. A inicia enviándole una trama RTS a B en la que le solicita permiso para enviarle una trama. Cuando B recibe esta solicitud, podría decidir otorgarle el permiso, en cuyo caso le regresa una trama CTS. Al recibir la CTS, A ahora envía su trama y comienza su temporizador de ACK. Al recibir correctamente la trama de datos, B responde con una trama de ACK, con lo que termina el intercambio. Si el temporizador de ACK de A termina antes de que el ACK regrese, todo el protocolo se ejecuta de nuevo. C esta dentro del alcance de A, por lo que podría recibir la trama RTS. Si pasa esto, se da cuenta de que alguien va a enviar datos pronto, así que por el bien de todos desiste de transmitir cualquier cosa hasta que el intercambio este completo. A partir de la información proporcionada por la solicitud RTS, C puede estimar cuanto tardara la secuencia, incluyendo el ACK final, por lo que impone para sí misma un tipo de canal virtual ocupado, indicado por NAV (Vector de Asignación de Red o Network Allocation Vector). D no escucha el RTS pero si el CTS, por lo que también impone la señal NAV para sí misma. Las señales NAV no se transmiten, son recordatorios para mantenerse en silencio a sí mismas. Las redes inalámbricas son muy ruidosas e inestables. La probabilidad de que una trama llegue a su destino se decremento con la longitud de la trama. Si una trama es demasiado grande, tiene muy pocas probabilidades de pasar sin daño y probablemente haya que retransmitirla. Para solucionar este problema 802.11 permite dividir las tramas en fragmentos. Cada fragmento se numera de manera individual y su recepción se confirma utilizando un protocolo de stop and wait. Una vez que se ha adquirido el canal mediante RTS y CTS, pueden enviarse múltiples fragmentos en una fila. La secuencia de fragmentos se conoce como fragment burst o ráfaga de fragmentos. La fragmentación incrementa la velocidad real de transporte restringiendo las retransmisiones a los fragmentos erróneos en lugar de la trama completa. PCF (Función de Coordinación Puntual o Point Coordination Function). En este modo la estación base (Access Point) sondea las demás estaciones, preguntándoles si tienen tramas que enviar. Puesto que el orden de transmisión es controlado totalmente por la estación base, no se producen colisiones. El mecanismo consiste en que la estación base difunda una trama de beacon (trama guía o faro) de manera periódica. Esta trama contiene parámetros de sistema y también invita a las nuevas estaciones a suscribirse al servicio de sondeo. Como la batería es un problema en los dispositivos inalámbricos móviles, una estación base puede conducir a una estación móvil al estado de hibernación hasta que dicha estación base o el usuario la saquen de este modo. La estación base tiene la responsabilidad de almacenar las tramas dirigidas a la estación que esta hibernando hasta que salga de este estado. PCF y DCF pueden coexistir dentro de una celda. Esto funciona definiendo cuidadosamente el intervalo de tiempo entre tramas. Después de que se ha enviado una trama, se necesita cierta cantidad de tiempo muerto antes de que cualquier estación pueda enviar una trama. Se definen cuatro intervalos de tiempo diferentes cada uno con un propósito especifico: SIFS (Espaciado Corto Entre Tramas o Short InterFrame Spacing): Es el intervalo más corto, y se utiliza para permitir que las distintas partes de un dialogo transmitan primero. Esto incluye dejar que el emisor de una ráfaga de fragmentos transmita el siguiente fragmento sin tener que enviar una RTS. Siempre hay una sola estación que debe responder luego de un intervalo SIFS. PIFS (Espaciado Entre Tramas PCF o PCF InterFrame Spacing): luego de transcurrido este tiempo la estación base podría enviar una trama de beacon. Le da a la estación base la posibilidad de tomar el canal cuando el emisor anterior haya terminado, sin tener que competir con usuarios ansiosos. DIFS (Espaciado entre tramas DCF o DCF InterFrame Spacing): Si la estación base no tiene nada que decir y transcurre este tiempo, cualquier estación podría intentar adquirir el canal para enviar una nueva trama. EIFS (Espaciado Entre Tramas Extendido o Extended InterFrame Spacing): Solo una estación que acaba de recibir una trama errónea o desconocida utiliza el ultimo intervalo de tiempo para reportar la trama errona. Capa Física de las redes inalámbricas: Infrarrojo: Se permiten dos velocidades: 1 y 2 Mbps. Las señales de infrarrojos no pueden penetrar las paredes y la luz solar interfiere. Por estos motivos y por el bajo ancho de banda, esta no es una opción muy popular. FHSS (Frequency Hopping Spread Spectrum): es una técnica de modulación en espectro ensanchado en el que la señal se emite sobre una serie de radiofrecuencias aparentemente aleatorias, saltando de frecuencia en frecuencia sincrónicamente con el transmisor. Las frecuencias son pseudoaleatorias, ya que todas las estaciones utilizan la misma semilla para el generador de números pseudoaleatorios y permanezcan sincronizadas. Los receptores no autorizados escucharán una señal ininteligible. Si se intentara interceptar la señal, sólo se conseguiría para unos pocos bits. El tiempo de permanencia en cada frecuencia es un parámetro ajustable. Utiliza la frecuencia 2.4 GHz su principal desventaja es su bajo ancho de banda. DSSS (Direct Sequence Spread Spectrum): Tambien restringido a 1 o 2 Mbps. OFDM (Orthogonal Frequency Division Multiplexing): Utilizada en la primera LAN inalámbrica de alta velocidad, para enviar hasta 54Mbps en la banda ISM más ancha de 5 GHz. Utilizada en 802.11ª. HR-DSSS (High Rate Direct Sequence Spread Spectrum): alcanza 11 Mbps en la banda de 2.4Ghz. Se llama 802.11b pero no es la continuación de 802.11a, de hecho su estándar se aprobó primero y apareció primero en el mercado. El estándar 802.11g utiliza el método de modulación OFDM de 802.11ª pero opera en la banda ISM más estrecha 2.4 GHz Bluetooth Ericsson en conjunto con otras cuatro empresas formo un SIG (Special Interest Group) con el propósito de desarrollar un estándar inalámbrico para interconectar computadoras, dispositivos de comunicaciones y accesorios a través de radios inalámbricos de bajo consumo de energía, corto alcance y económicos. La especificación de Bluetooth está dirigida a un sistema completo, de la capa física a la capa de aplicación. Piconet: unidad básica que consta de un nodo maestro y hasta siete nodos esclavos activos. Es la topología de red utilizada por Bluetooth. Scatternet: son un conjunto de piconets interconectadas. Varias piconets en una sala pueden conectarse mediante un nodo puente. Todas las comunicaciones se realizan entre el maestro y el esclavo; no existe comunicación directa de esclavo a esclavo. Aplicaciones de Bluetooth. La mayoría de los protocolos de red solo proporcionan canales entre las entidades que se comunica y permiten a los diseñadores de aplicaciones averiguar para que deseen utilizarlos. En contraste, Bluetooth designa el soporte de 13 aplicaciones en particular y proporciona diferentes pilas de protocolos para cada una. Las siguientes son las aplicaciones que se denominan perfiles. Nombre Acceso genérico Descubrimiento de servicios Puerto serie Intercambio genérico de objetos Acceso a LAN Acceso telefónico a redes Fax Telefonía inalámbrica Intercom Headset Envió de objetos Transferencia de archivos Sincronización Descripción Procedimientos para el manejo de enlaces Protocolo para descubrir los servicios que se ofrecen Reemplazo para un cable de puerto serie Define la relación cliente-servidor para el traslado de objetos Protocolo entre una computadora móvil y una LAN fija Permite que una computadora portátil realice una llamada por medio de un teléfono móvil Permite que un fax móvil se comunique con un teléfono móvil Conecta un handset con su estación base local Walkie-talkie digital Posibilita la comunicación de voz sin utilizar las manos Ofrece una manera de intercambiar objetos simples Proporciona una característica para transferencia de archivos mas general Permite a una PDA sincronizarse con otra computadora No era necesario proporcionar una pila de protocolos para cada una de las funciones que se quería lograr, esto se debió a que los diversos grupos de trabajo que estuvieron involucradas en el desarrollo de este estándar se enfocaron en su problema específico y cada uno género su propio perfil. Quality of Service En la mayoría de las redes se le da más importancia a enviar los datos de un extremo a otro de la red tan rápido como sea posible que a preguntarse en cómo se envía la información. Por ejemplo internet basado sobre el Internet Protocol, utilizando la tecnología packet-switching, que esta diseñada para enviar paquetes del punto A al punto B del modo más efectivo que exista sin que el usuario sepa que ruta se va a utilizar. De hecho algunos paquetes pueden ser enviados a lo largo de diferentes rutas. Para la mayoría de las aplicaciones, como un file o message transfer, esto funciona perfectamente bien. Sin embargo hay aplicaciones donde este tipo de servicio es de “poca calidad”. En estos casos, es más importante preocuparse en como la información viaja que a velocidad viaja, por lo tanto hay una necesidad de protocolos que ofrezcan “quality of service”. Este término puede englobar una cantidad de características diferentes, generalmente se incluyen las siguientes: Bandwidth Reservation: Es la posibilidad de reservar una porción de ancho de banda en una red o interfaz por un periodo de tiempo. De esta manera se asegura que dos dispositivos van a contar durante ese periodo de tiempo con un ancho de banda determinado para poder realizar sus operaciones. Muy usado en aplicaciones multimedia que necesitan enviar la información en tiempo real. Latency Management: Limita la latencia en cualquier transferencia de datos entre dos dispositivos a un valor conocido. (Latencia es cuanto le lleva a la información viajar a lo largo de la red) Traffic Prioritization: En redes convencionales todos los paquetes son creados “iguales”. Una característica muy importante de QoS es la posibilidad de dar prioridad a las conexiones más importantes sobre menos importantes. Traffic Shaping: Uso de buffers y limites para restringir el tráfico a lo largo de una conexión con un máximo pre determinado. Network Congestion Avoidance: Consiste en monitorear conexiones particulares en una red y routear la información cuando una parte de la red se está congestionando. So, in essence, quality of service in the networking context is analogous to quality of service in the “real world”. It is the difference between getting take-out and sit-down service at a nice French restaurant—both cure the hunger pangs, but they meet very different needs. Concepto clave: El término genérico “quality of service” describe las características de cómo la información es enviada en vez de que tan rápido es enviada. QoS es importante especialmente en aplicaciones multimedia. Las aplicaciones multimedia requieren un flujo constante de información más que un gran ancho de banda. Ethernet no fue creada para proveer QoS. Estableciendo una conexión TCP: Antes de que se pueda transferir cualquier dato, se ha de establecer una conexión entre los dos procesos. Uno de los procesos (normalmente el servidor) lanza una llamada OPEN pasiva, el otro una llamada OPEN activa. El OPER pasivo permanece dormido hasta que otro proceso intenta comunicarse con el a través de un OPEN activo SAP: The SAP is a conceptual location at which one OSI layer can request the services of another OSI layer. Es el punto de acceso a los servicios de una capa inferior, cada SAP tiene una dirección que lo identifica. Interface: Es el conjunto de reglas que hace que las capas se puedan comunicar. Se usa una IDU (unidad de datos de la interface) a través del SAP, la IDU consiste en una SDU (unidad de datos de servicio), además de alguna información de control, necesaria para que las capas inferiores realicen su trabajo, pero no forma parte de los datos.