La siguiente lectura en la serie sobre el modelo de referencia OSI, avanzando de abajo para arriba es la capa de transporte o capa 4 de dicho modelo. A continuación describiré las funciones definidas en ésta parte del modelo y qué protocolos se usan allí. Disfrútenlo. Repasando las capas del modelo inferiores a ésta encontramos nodos de la red reconocidos, que se pueden contactar directamente (en la capa dos) y remotamente (con la capa 3). Ahora, los flujos de información que provienen de un dispositivo A y van a otro dispositivo B son indistinguibles unos de otros con sólo la información y procesos implementados hasta la capa 3. Esa es la justificación más evidente de la capa 4 o capa de transporte: administrar las comunicaciones independientes entre dos nodos.
Introducción: Más modelo OSI
Dentro de todo lo que he escrito sobre éste modelo, he escrito varias veces que cada capa define su terminología, en especial la PDU o Unidad de Datos genérica. Para la capa 4 la PDU tiene por nombre Segmento, lo cual es una tragedia (recurrente en comunicaciones) ya que en redes de datos el término se usa en varios contextos. Por lo pronto, recordemos que las unidades de datos de la capa de transporte se llaman segmentos o datagramas de datos y definen un tamaño máximo, usualmente llamado MSS -maximum segment size- (equivalente al MTU de la capa 3 y 2, pero en general los protocolos deben definir el tamaño máximo de unidad). Cuando una comunicación llega a ésta capa y tal comunicación está compuesta por datos mayores a la MSS, ella debe segmentar la transmisión en partes que se puedan transportar por partes de ese tamaño o menor. De arriba hacia abajo (en la dirección de la encapsulación), ésta es la primera ocasión en la que es necesario convertir una unidad de datos en partes sin significado para los usuarios/aplicaciones, porque en capas superiores, como la de presentación, una comunicación se puede dividir en partes de manera lógica, por ejemplo archivos o mensajes, pero si éstas unidades son mayores al tamaño máximo de segmento acá se dividen y son transportadas sin ningún significado adicional a segmento de la comunicación.
¿Cómo identificar conversaciones entre dos nodos?
Como ya lo mencioné, la función más evidente de la capa de transporte del modelo de referencia OSI es identificar flujos o conversaciones diferentes entre dos nodos de la red. Acabamos de ver que una comunicación independiente se divide en partes con base en su tamaño en la capa 4, por lo tanto lo que para un usuario es una transferencia de archivo (una sola cosa) se convierte en una serie de partes que se transmiten independientemente una de otra, por lo tanto surge la necesidad de marcar cada segmento con el identificador de quién originó la comunicación o a qué servicio pertenece cada uno y a cuál va dirigido en el otro nodo. Una conversación tiene como identificador general las direcciones origen y destino (p. ej.: la IP u otra dirección de capa 3), pero para poder diferenciar dos flujos de datos diferentes que ocurren simultánteamente entre dos PCs (mismo origen y destino) se usan otros dos identificadores, uno para la conversación saliente y otro para la entrante. Alguna literatura llama a este concepto, identificación de flujos de punto final a punto final o de extremo a extremo. A estas alturas hay dos casos posibles: segmentar o no segmentar la conversación. Si la conversación se segmenta, también es posible que los segmentos individuales tomen diferentes caminos y lleguen en un orden diferente al inicial. Sólo en el caso en que las conversaciones se segmentan hay la necesidad de numerarlos: para poder reconstruir su secuencia original. Si una conversación no se segmenta no hay necesidad de reconstruir el orden, porque sus mensajes son independientes unos de otros. Si en cada segmento incluímos su número de secuencia, podemos saber también si se pierde alguno y eso crea la oportunidad de detectar pérdidas de datos y hasta solicitar la retransmisión de tales datos. A ésto último se le conoce como retransmisión y redunda en mayor confiabilidad, es decir, garantizar que si algún segmento se pierde en el camino se pueda pedir la retransmisión y recomponer la pérdida transparentemente. Otra cosa que sucede cuando se inicia un flujo de datos es que si la tasa a la que se reciben es demasiado alta para un nodo, éste podría no ser capaz de pasar esos datos al proceso que los necesita, por lo tanto debería existir la posibilidad de enviar mensajes de vuelta que indiquen al origen que disminuya la tasa a la que envía los datos. Ésto es conocido como control de flujo. Todo lo que hemos mencionado, son funciones especiales que se deben cumplir de extremo a extremo, en otras palabras, podemos reducir la definición de las funciones de la capa 4 en administración de flujos de extremo a extremo, bajo la premisa de que cada parte de la comunicación puede recorrer diferentes caminos con diferentes condiciones de transporte y obedece a dos necesidades de comunicación diferentes: confiable y no confiable.
¿Qué protocolos se usan en la capa 4?
Los más conocidos son TCP y UDP dado que hacen parte de la definición de pila de protocolos TCP/IP, ambos se ocupan de diferentes necesidades de la capa de transporte. Lo que tienen en común es el uso de puertos para diferenciar las conversaciones entre dos nodos, por ejemplo si los nodos de dirección A y B sostienen dos conversaciones simultáneamente, para la conversación 1 se elige un puerto X1 en el origen y uno Y1 en el destino, para la segunda conversación X2/Y2 respectivamente, de tal manera que, como cada segmento es marcado con estos números, no importa que se mezclen en la red y lleguen así a cualquiera de éstos nodos: X1,X2 y Y1,Y2 distinguen las conversaciones, cada segmento se entrega a los servicios de red o procesos destinatarios correctos. Usualmente quien origina el flujo de datos debe saber a qué puerto envía sus datos y espera que el otro lado esté atento (escuchando) a ese puerto para responder. Lo anterior desde el punto de vista de los nodos, para los dispositivos intermedios, los números X y Y también permiten clasificar un segmento dentro de una conversación particular sin necesidad de saber quién es quién. TCP es un protocolo complejo que obedece a la necesidad de una comunicación confiable. Dentro de los mecanismos que implementa TCP para asegurar la confiabilidad está el establecimiento de sesión, el uso de acuses de recibo y el control de flujo con ventana deslizante. Este tema puede ser una entrada completa. UDP por otro lado obedece a una necesidad de comunicación no confiable, es decir, una entrega simple de datos pequeños que no requieren retransmisión ni acuses de recibo. Sobre ésto último hay que hacer una aclaración, los mecanismos de confiabilidad puede que, bajo ciertas condiciones, se implementen más fácilmente en protocolos de capas superiores o que el usuario o aplicación final puedan soportar pérdidas pequeñas en sus datos. Hay un caso de particular relevancia: el transporte de VoIP (voz sobre IP). Cuando se establece una conversación de voz usando red de datos, cada segmento encapsula una pequeñísima porción de la voz y si se llega a perder un segmento es tan poca la información que la conversación sigue siendo entendible, en ese caso ni siquiera la aplicación de voz está involucrada en la recuperación del dato perdido, no es necesario. Otra razón para usar UDP en el transporte de voz, es que debido al encabezado pequeño de UDP (8 Bytes) se hace más eficiente enviar datos pequeños por medio de él que por TCP (20 Bytes). Un dato importante, sobre la diferencia entre UDP y TCP, es que a las unidades de datos de UDP se le llaman comunmente datagramas en vez de segmentos.
Conclusiones
Hemos recorrido hasta ahora todos los procesos desde la capa 1 hasta la capa 4, en éste momento tenemos una visión clara de lo que se necesita para comprender una comunicación de datos de extremo a extremo y administrar de manera razonablemente bien una red de datos (con ayuda de algunos conocimientos adicionales 🙂 ). Las capas superiores del modelo de referencia OSI ayudan más a la labor de un programador que a la de un administrador de redes, sin embargo, las amenazas cada vez más sofisticadas hacen que el administrador sepa incluso de los protocolos de capa 7 para poder ser eficiente en su trabajo. Pronto estaré escribiendo más sobre las capas restantes, estén pendientes. Si les gustó el contenido, por favor comenten, compartan y sigan mis redes.
[Capa 3 de OSI: Red][Capa 5 de OSI: Sesión][Tutorial del modelo OSI]