Está en la página 1de 10

Es el cuarto nivel en el modelo de referencia OSI y el segundo en el TCP/IP.

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

• Se encarga de transportar datos entre aplicaciones desde el dispositivo de origen al


Función de la Capa de transporte
dispositivo de destino.
• Permite la segmentación de datos y brinda el control necesario para reensamblar las
partes dentro de los distintos streams de comunicación.
• Es el enlace entre la capa de Aplicación y las capas inferiores, que son responsables
de la transmisión en la red

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.

En el host de recepción, cada sección de datos debe ser direccionada a la aplicación


Reensamble de segmentos
adecuada. La capa de Transporte utilizará el número de puerto para determinar con qué
aplicación o servicio se identifican los datos.
Además, estas secciones de datos individuales también deben reconstruirse para generar
un stream completo de datos que sea útil para la capa de Aplicación.
Los protocolos de la capa de Transporte describen cómo se utiliza la información de
encabezado de dicha capa para reensamblar las secciones de datos en streams y
enviarlas a la capa de Aplicación.

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)

Número de acuse de recibo (32)


luego para responder).
• Puerto de destino. Indica que el puerto del dispositivo destino.
Longitud
Reservado Bits de
encabezado Ventana (16)
(6) código (6)
(4)

Checksum (16)

Opciones (0 ó 32 si las hay)


Urgente (16)
• Número de secuencia. Indica el número de secuencia del primer byte que transporta el
segmento.
≈ Datos ≈
• Número de acuse de recibo. Si el bit de control ACK está a 1, este campo contiene el
valor del siguiente número de secuencia que se espera recibir. Con este campo se
indica al otro extremo que los bytes anteriores se han recibido correctamente.
• Longitud del encabezado. Es la longitud de la cabecera medida en múltiplos de 32 bits
(4 bytes). El valor mínimo es de 5, que corresponde a un segmento sin datos.
• Reservado. Ocupa 6 bits, que se reservan para un posible uso futuro (de momento
deben ser 0).
• Bits de código. Son 6 bits y se utilizan para determinar el propósito y contenido del
segmento. Estos bits si están a 1 significan:
• URG. Indica que el campo “Urgente” contiene información válida.
• ACK. Indica que el campo “Número de acuse de recibo” contiene información válida, es
decir, el segmento actual lleva un ACK.
• PSH. Función “push”
• RST. Resetea la conexión.
• SYN. Sincronización de los números de secuencia. Se utiliza al crear una conexión
para indicar al otro extremo cuál va a ser el primer numero de secuencia con el que va
a comenzar a transmitir.
• FIN. Indica al otro extremo que la aplicación ya no tiene más datos para enviar. Se
utiliza para solicitar el cierre de la conexión actual.
• Ventana. Sirve para el control de flujo. Es el número de bytes que el emisor del
segmento está dispuesto a aceptar por parte del destino.
• Checksum. Es la suma de comprobación de errores del segmento actual.
• Urgente. Se utiliza cuando se están enviando datos urgentes que tienen preferencia
sobre todos los demás e indica el siguiente byte del campo “Datos” que sigue a los
datos urgentes. Esto permite al destino identificar dónde terminan los datos urgentes.
Un mismo segmento puede contener datos urgentes (al principio) y normales (después
de los urgentes).
• Opciones. Si aparece, definirá el tamaño máximo del segmento que será aceptado.
• Relleno. Se utiliza para que la longitud de la cabecera sea múltiplo de 32 bits.
• Datos: es la información que envía la aplicación.
Como ya comentamos anteriormente, es posible que una computadora esté realizando
Puertos
varias tareas simultáneamente: recibir y enviar e-mails, mensajes instantáneos, páginas
Web, ...
Puerto destino = 23
Los servicios basados en TCP y UDP mantienen un seguimiento de las aplicaciones que
A B Envía paquetes a mi
Telnet B aplicación Telnet se comunican. Para diferenciar los segmentos y datagramas para cada aplicación, tanto
TCP como UDP cuentan con campos de encabezado que pueden identificar de manera
Puerto Puerto
exclusiva estas aplicaciones. Estos identificadores únicos son los números de los
origen
1028
destino
23

puertos.
Un puerto es un número de 16 bits => existen 65.536 puertos en cada ordenador.
Puertos
Las aplicaciones utilizan estos puertos para seguir las distintas conversaciones abiertas
Puerto de Puerto
… por el equipo:
origen destino

Datagrama o Puerto de Puerto



• Los números de puertos de las aplicaciones cliente son asignados dinámicamente
origen destino
paquete del
host origen 1028 23 …
(generalmente mayor de 1024). Cuando una aplicación cliente quiere comunicarse con
un servidor, busca un puerto libre y lo utiliza.
Datagrama o Puerto de Puerto
• En cambio, las aplicaciones servidoras utilizan unos números de puerto prefijados, son

paquete origen destino
respuesta 23 1028 …
los que normalmente puertos well-known (bien conocidos).

El organismo encargado de la asignación de números de puerto es el IANA.


Tipos de puertos
• Puertos bien conocidos (Números del 0 al 1.023): estos números se reservan para
servicios y aplicaciones. Por lo general, se utilizan para aplicaciones como HTTP
Rango de números
Grupo de puertos
(servidor Web), POP3/SMTP (servidor de e-mail) y Telnet.
de puerto
De 0 a 1023 Puertos bien conocidos • Puertos Registrados (Números 1024 al 49.151): Estos puertos son los que el cliente
De 1024 a 49151 Puertos registrados selecciona de manera dinámica como puerto de origen.
De 49152 a 65535 Puertos privados y/o dinámicos
• Puertos dinámicos o privados (Números del 49.152 al 65.535): también conocidos
como puertos efímeros, suelen asignarse de manera dinámica a aplicaciones de cliente
cuando se inicia una conexión. No es muy común que un cliente se conecte a un
servicio utilizando un puerto dinámico o privado (aunque algunos programas que
comparten archivos punto a punto lo hacen).

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, ACK


(sec=300, ACK=101,)
CTL=SYN, ACK)
Recibe SYN

Tu número de secuencia es 301, mi número de secuencia es 101 y el bit ACK está


3. A envía la respuesta ACK a B
activado, pero el bit SYN no lo está.

Envía SYN
(sec = 100, CTL= SYN)
Recibe SYN

Envía SYN, ACK


(sec=300, ACK=101,)
CTL=SYN, ACK)
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.

Entrega confiable de los datos

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.

Durante la configuración de la sesión, se establece un número de secuencia inicial (ISN).


Este número de secuencia inicial representa el valor de inicio para los bytes de esta
sesión que se transmitirán a la aplicación receptora. A medida que se transmiten los
datos durante la sesión, el número de secuencia se incrementa en el número de bytes
que se han transmitido.
Los números de secuencia de segmento permiten la confiabilidad indicando cómo
reensamblar y reordenar los segmentos recibidos.
El proceso TCP receptor coloca los datos del segmento en un búfer de recepción. Los
segmentos se colocan en el orden de número de secuencia adecuado y se pasa a la
capa de Aplicación cuando son reensamblados. Todos los segmentos que llegan con
números de secuencia no contiguos se mantienen para su procesamiento posterior.
Luego, se procesan los segmentos cuando llegan con los bytes perdidos.
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.

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.

UDP no es orientado a la conexión y no cuenta con los sofisticados mecanismos de


Acuses de recibo y Control de flujo
retransmisión, secuenciación y control del flujo lo que hace que genere mucho menos
sobrecarga que TCP.
Esto no significa que las aplicaciones que utilizan UDP no sean confiables. Sólo quiere
decir que estas funciones no son contempladas por el protocolo de la capa de Transporte
y deben implementarse aparte, si fuera necesario.

También podría gustarte