Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Su principal objetivo consiste en garantizar una comunicación fiable y eficiente entre dos
host, con independencia de los medios empleados para su interconexión
CAPA DE
TRANSPORTE
Esta capa acepta datos de distintas conversaciones y los transfiere a las capas inferiores
como secciones manejables que puedan ser enviadas a través del medio:
• Las aplicaciones no necesitan conocer los detalles de operación de la red en uso. Las
aplicaciones generan datos que se envían desde una aplicación a otra sin tener en
cuenta el tipo de host destino, el tipo de medios sobre los que los datos deben viajar, el
paso tomado por los datos, la congestión en un enlace o el tamaño de la red.
• Además, las capas inferiores no tienen conocimiento de que existen varias aplicaciones
que envían datos en la red. Su responsabilidad es entregar los datos al dispositivo
adecuado. Luego la capa de Transporte ordena estas secciones antes de entregarlas a
la aplicación adecuada.
Debido a que cada aplicación genera un stream (cadena, río) de datos para enviar a una
Segmentación de datos
aplicación remota, estos datos deben prepararse para ser enviados por los medios en
partes manejables.
Esta preparación de los datos en la capa de transporte, consiste en la división de los
datos en partes pequeñas (segmentación) y es lo que permite que se puedan entrelazar
(multiplexar) distintas comunicaciones en la misma red.
La segmentación de los datos proporciona los medios para enviar y recibir datos cuando
se ejecutan varias aplicaciones a la vez en una computadora. Sin segmentación, sólo una
aplicación, podría enviar o recibir datos. (Por ejemplo si se está enviando/recibiendo un
stream de vídeo, no se podrían enviar/recibir correos electrónicos, ni mensajes
instantáneos ni visualizar páginas Web al mismo tiempo).
En la capa de Transporte, cada conjunto de secciones en particular que fluyen desde una
Seguimiento de conversaciones individuales
aplicación de origen a una de destino se conoce como conversación.
Cualquier host puede tener múltiples aplicaciones que se están comunicando a través de
la red. Cada una de estas aplicaciones se comunicará con una o más aplicaciones en
hosts remotos.
• La capa de transporte segmenta los datos y administra la separación de datos para
diferentes aplicaciones.
• Para poder transferir los streams de datos a las aplicaciones adecuadas, la capa de
Transporte debe identificar la aplicación de destino. Para lograr esto, la capa de
Transporte asigna un identificador a la aplicación. Los protocolos TCP/IP denominan a
este identificador número de puerto. A todos los procesos de software que requieran
acceder a la red se les asigna un número de puerto exclusivo en ese host. Este número
de puerto se utiliza en el encabezado de la capa de Transporte para indicar con qué
aplicación está asociada esa sección de datos.
Servicios de los protocolos de la capa de Además de las funciones básicas de segmentación y reensamblaje de datos, algunos
Transporte protocolos de la capa de Transporte proveen:
• Conversaciones orientadas a la conexión
• Entrega confiable • Conversaciones orientadas a la conexión. La capa de Transporte puede brindar esta
• Reconstrucción ordenada de datos orientación a la conexión creando una sesión entre las aplicaciones. Establecer una
• Control de flujo sesión asegura que la aplicación esté lista para recibir los datos.
• Entrega confiable. Por varias razones, es posible que una sección de datos se
corrompa o se pierda por completo a medida que se transmite a través de la red. La
entrega confiable implica el reenvío de segmentos perdidos para que se reciban los
datos en forma completa..
• Reconstrucción ordenada de datos. Ya que las redes proveen rutas múltiples que
pueden poseer distintos tiempos de transmisión, los datos pueden llegar en el orden
incorrecto. Al numerar y secuenciar los segmentos, la capa de Transporte puede
asegurar que los mismos se reensamblen en el orden adecuado.
• Control del flujo. Los hosts de la red cuentan con recursos limitados. Cuando la capa
de Transporte advierte que estos recursos están sobrecargados, algunos protocolos
pueden solicitar que la aplicación que envía reduzca la velocidad del flujo de datos.
Esto se lleva a cabo en la capa de Transporte regulando la cantidad de datos que el
origen transmite como grupo.
Los dos protocolos principales de la capa de transporte son el UDP y el TCP.
Protocolos de la capa de Transporte
Ambos protocolos gestionan la comunicación de múltiples aplicaciones. Las diferencias
• UDP (User Data Protocol, Protocolo de
datos de usuario entre ellos son las funciones específicas que cada uno implementa.
• TCP (Transmission Control Protocol,
Protocolo de control de transmisión)
UDP.
• Descrito en la RFC 768.
• Las porciones de comunicación en UDP se llaman datagramas.
• Es un protocolo no orientado a la conexión, es decir no se establece una conexión
previa con el otro extremo para transmitir un mensaje UDP. Los mensajes se envían sin
más -> Los mensajes pueden duplicarse o llegar desordenados.
• Es un protocolo no fiable. Los mensajes UDP pueden perderse o llegar dañados al
destino. Son las aplicaciones (no UDP), las que deben programarse teniendo en cuenta
que la información pude no llegar de forma correcta.
• Cuenta con la ventaja de proveer la entrega de datos sin utilizar muchos recursos.
• Utiliza IP para transportar sus mensajes.
TCP.
• Descrito en la RFC 793.
• Es un protocolo orientado a conexión. Se establece una conexión previa entre los dos
ordenadores antes de transmitir datos -> Los datos llegarán siempre a la aplicación
destino de forma ordenada y sin duplicados. Al terminar es necesario cerrar la
conexión.
• Fiable. La información que envía el emisor llega correctamente al destino. Permite una
comunicación fiable entre dos aplicaciones con independencia del hardware y del
software. Así, las aplicaciones que lo utilicen no tienen que preocuparse de la
integridad de la información, se da por hecho que todo lo que se recibe es correcto.
Qué protocolo utiliza cada uno de la capa de
aplicación
• UDP • TCP
DNS DNS
DHCP HTTP
TFTP SMTP
POP
TELNET
FTP
Cada datagrama de UDP posee 8 bytes de carga en el encabezado, que encapsulan los
Datagrama UDP
datos de la capa de Aplicación.
Bit 0
32 BITS
Bit 15 Bit 16 Bit 31
• Puerto de origen. Ocupa 16 bits. Indica el puerto del proceso que envía el datagrama.
Puerto de Origen Puerto de destino Es el puerto al que se deberían dirigir las respuestas.
Longitud Checksum • Puerto de destino. Ocupa 16 bits. Indica el número del puerto al que va dirigido el
datagrama en el host de destino.
≈ Datos ≈
• Longitud. También ocupa 16 bits y especifica la longitud, medida en bytes del
datagrama, incluyendo la cabecera. La longitud máxima es de 8 bytes.
• Checksum (Suma de verificación). Ocupa 16 bits y es opcional. Es la suma de
comprobación de errores del mensaje.
• Datos. El tamaño de este campo será variable. Se trata de los datos que se envían las
aplicaciones. Los mismos datos que envía la aplicación origen son recibidos por la
aplicación destino tras atravesar la red.
Cada segmento de TCP posee 20 bytes de carga en el encabezado, que encapsulan los
Segmento TCP
32 BITS
datos de la capa de Aplicación.
Bit 0 Bit 15 Bit 16 Bit 31
Puerto de Origen (16) Puerto de destino (16) • Puerto de origen. Indica que el puerto del dispositivo origen (que el receptor utilizará
Número de secuencia (32)
Checksum (16)
Números de puerto
• DNS: 53
• HTTP: 80
• SMTP: 25
• POP: 110
• TELNET: 23
• DHCP: 67 y 68
• FTP: 20 y 21
Como hemos comentado antes, cuando un cliente hace una petición de servicio a un
Números de puerto
servidor, en la capa de transporte agrega un encabezado en el que agrega un puerto de
origen asignado aleatoriamente y un puerto de destino que identifica la aplicación que
debe procesar la información.
Cuando el servidor responde a sus clientes, intercambia los números de puerto origen y
destino.
Cuando la capa de transporte recibe el segmento, comprueba el número de puerto que
aparece en el campo Puerto de destino para identificar la conversación a la que tiene que
pasar el dato.
Comentarios:
• Un servidor no puede tener el mismo número de puerto asignado a 2 servicios distintos
(por ejemplo 80 a FTP y HTTP).
• Una manera de mejorar la seguridad en un servidor es restringir el acceso al servidor a
sólo aquellos puertos asociados con los servicios y aplicaciones accesibles a
solicitantes autorizados.
Como hemos dicho anteriormente, TCP es uno de los protocolos que opera en la capa de
transporte.
La diferencia clave entre TCP y UDP es la confiabilidad. La confiabilidad de la
comunicación TCP se lleva a cabo:
TCP
• Utilizando sesiones orientadas a la conexión. Antes de que un host que utiliza TCP
envíe datos a otro host, la capa de Transporte inicia un proceso para crear una
conexión con el destino. Este proceso asegura que cada host tenga conocimiento de la
comunicación y se prepare.
• Luego de establecida la sesión, el destino envía acuses de recibo al origen por los
segmentos que recibe. Cuando el origen recibe un acuse de recibo, reconoce que los
datos se han entregado con éxito y puede dejar de rastrearlos. Si el origen no recibe el
acuse de recibo dentro de un tiempo predeterminado, retransmite esos datos al destino.
Parte de la carga adicional que genera el uso de TCP es el tráfico de red generado por
los acuses de recibo y las retransmisiones. El establecimiento de las sesiones genera
cargas en forma de segmentos adicionales intercambiados. También existen cargas
adicionales en los hosts individuales, generadas por la necesidad de mantener un
seguimiento de los segmentos que esperan acuse de recibo y por el proceso de
retransmisión.
TCP es un protocolo orientado a conexión, esto quiere decir que antes de transmitir
Establecimiento de una conexión TCP
datos, los dos nodos que desean comunicarse deben llevar a cabo un proceso de
sincronización para establecer una conexión virtual para cada sesión entre ellos:
• Este proceso de sincronización asegura que ambas partes están listas para la
transmisión
• Permite que los dispositivos determinen los números de la secuencia inicial de dicha
sesión.
Para establecer o inicializar una conexión, ambos hosts deben sincronizar sus ISN (Initial
Saludo en 3 vías
Sequence Numbers, Números de Secuencia Inicial).
La sincronización se efectúa mediante el intercambio de segmentos de establecimiento
de conexión que portan un bit llamado SYN (para la sincronización) y los ISN.
Mi número de secuencia inicial es 100 y el bit SYN está activado pero el bit ACK no lo
1. A envía la solicitud de SYN a B
está (CTL indica qué bits de control en el encabezado TCP están establecidos a 1).
Envía SYN
(sec = 100, CTL= SYN)
Recibe SYN
2. B envía respuesta ACK y solicitud de SYN Paso 2. B envía la respuesta de ACK y la solicitud de SYN a A
aA
Tú número de secuencia es 101 (100+1), mi número de secuencia inicial es 300 y los bits
SYN y ACK están activados
Envía SYN
(sec = 100, CTL= SYN)
Recibe SYN
Envía SYN
(sec = 100, CTL= SYN)
Recibe SYN
Establecido
(sec=101, ACK=301,)
CTL= ACK)
En la forma más básica de fiabilidad: los paquetes de datos deben ser entregados al
receptor en el mismo orden en el que fueron transmitidos, y el protocolo falla si cualquiera
de ellos se recibe en un orden diferente.
La capa de Transporte divide los datos en piezas y agrega un encabezado por entrega a
través de la red.
TCP y UDP gestionan la segmentación de forma distinta.
• Con TCP, cada encabezado de segmento contiene un número de secuencia. Este
número de secuencia permite que las funciones de la capa de Transporte del host de
destino reensamblen los segmentos en el mismo orden en el que fueron transmitidos.
Esto asegura que la aplicación de destino cuente con los datos en la forma exacta en la
que se enviaron.
• A pesar de que los servicios que utilizan UDP también rastrean las conversaciones
entre aplicaciones, no tienen en cuenta el orden en el que se transmitió la información
ni el mantenimiento de la conexión. No existe número de secuencia en el encabezado
UDP. UDP es un diseño simple y genera menos carga que TCP, lo que produce una
transferencia de datos más rápida. La información puede llegar en un orden distinto al
que fue transmitida, ya que los paquetes pueden tomar diversas rutas a través de la
red. Una aplicación que utiliza UDP debe tolerar el hecho de que los datos no lleguen
en el orden en el que fueron enviados.
Como hemos comentado anteriormente, en la capa de transporte los datos se dividen en
Reemsamblaje de segmentos
segmentos. Los diferentes segmentos pueden tomar diferentes rutas, lo que provoca que
los segmentos puedan llegar al destino desordenados. Para que el receptor comprenda el
mensaje original, los datos en estos segmentos se reensamblan en el orden original. Para
lograr esto, se asignan números de secuencia en el encabezado de cada paquete.
Confiabilidad
Una de las funciones de TCP es asegurar que cada segmento llegue a su destino. La
Acuses de recibo
forma que tiene TCP de confirmar la entrega de estos segmentos es a través de en un
acuse de recibo de los datos recibidos.
TCP utiliza acuses de recibo expectantes, lo que significa que el número de confirmación
hace referencia al octeto que se espera a continuación.
• En el ejemplo de la figura, el host en la izquierda envía datos al host de la derecha.
Envía un segmento que contiene 10 bytes de datos para esta sesión y un número de
secuencia igual a 1 en el encabezado.
• El host receptor de la derecha recibe el segmento en la Capa 4 y determina que el
número de secuencia es 1 y que posee 10 bytes de datos. Luego el host envía un
segmento de vuelta al host de la izquierda para acusar recibo de estos datos. En este
segmento, el host establece el número de acuse de recibo en 11 para indicar que el
próximo byte de datos que espera recibir en esta sesión es el byte número 11.
• Cuando el host emisor de la izquierda recibe este acuse de recibo, puede enviar el
próximo segmento que contiene datos para esta sesión a partir del byte 11.
La función principal de TCP es transportar y regular de forma fiable y segura el flujo de
información entre el origen y el destino
Control de flujo
Si tras el envío de cada segmento, el emisor debe esperar la recepción de cada una de
Control de flujo
las confirmaciones, el proceso sería tremendamente lento. Para evitar esta lentitud, TC
utiliza un sistema de control de flujo de datos conocido como windowing.
El windowing consiste en que el emisor puede enviar varios octetos sin recibir
confirmación de la recepción. El número de paquetes de datos que el emisor puede dejar
pendiente sin haber recibido una confirmación se conoce como ventana.
El emisor receptor informa de una “ventana” al dispositivo emisor. Esta ventana
especifica el número de octetos que el dispositivo TCP receptor es actualmente capaz de
recibir. El tamaño de la ventana TCP varía durante la vida de conexión. Cada
confirmación contiene un aviso de ventana que indica el número de bytes que el receptor
puede aceptar.
Por ejemplo:
• Con un tamaño de ventana 3, el dispositivo origen puede enviar 3 octetos al destino y
después debe esperar una confirmación.
• Cuando el destino recibe estos 3 octetos envía una confirmación al dispositivo origen,
tras lo cual puede transmitir otros tres octetos más.
• Si el dispositivo destino no recibe tres octetos no enviará confirmación.
• Como el receptor no recibe esa confirmación, sabe que los octetos deben retransmitirse
de nuevo además de reducir la tasa de transferencia (normalmente el tamaño de la
ventana se reducirá a la mitad)
• Si el emisor envía tres octetos, queda a la espera de recibir un ACK de 4. Si el receptor
sólo puede manipular un tamaño de ventana de dos octetos, omite el paquete 3,
especifica 3 como el siguiente octeto e indica que el nuevo tamaño de ventana es 2. El
emisor envía los dos siguientes octetos pero sigue indicando que su tamaño de ventana
es 3. El receptor replica solicitando el octeto 5 y especificando un tamaño de ventana
de 2.
UDP es un sencillo protocolo que intercambia datagramas sin confirmación ni entrega
garantizada (esta simplicidad se evidencia cuando se comparan el formato de un
segmento UDP con otro TCP).
UDP
Algunas aplicaciones (como los juegos en línea) pueden tolerar algunas pérdida de datos.
UDP
Si estas aplicaciones utilizaran TCP, experimentarían largas demoras, ya que TCP
detecta la pérdida de datos y los retransmite. Estas demoras serían más perjudiciales
para la aplicación que las pequeñas pérdidas de datos.
Cuando se envían múltiples datagramas a un destino, los mismos pueden tomar rutas
Reemsamblaje de datagramas UDP
distintas y llegar en el orden incorrecto. UDP no mantiene un seguimiento de los números
de secuencia de la manera en que lo hace TCP. UDP no puede reordenar los
datagramas en el orden de la transmisión.
Por lo tanto, UDP simplemente reensambla los datos en el orden en que se recibieron y
los envía a la aplicación. Si la secuencia de los datos es importante para la aplicación, la
misma deberá identificar la secuencia adecuada de datos y determinar cómo procesarlos.
Al igual que las aplicaciones basadas en TCP, a las aplicaciones de servidor basadas en
Números de puerto
UDP se les asigna números de puerto bien conocidos o registrados. Cuando se ejecutan
estas aplicaciones o procesos, aceptan los datos que coincidan con el número de puerto
asignado. Cuando UDP recibe un datagrama destinado a uno de esos puertos, envía los
datos de aplicación a la aplicación adecuada en base a su número de puerto.