Está en la página 1de 38

REDES

Grados Ing. Informtica / Ing. de Computadores / Ing. del Software Universidad Complutense de Madrid

TEMA 7. La capa de transporte: protocolos TCP y UDP

PROFESORES: Rafael Moreno Vozmediano Rubn Santiago Montero Juan Carlos Fabero Jimnez

Protocolos de transporte en Internet: TCP y UDP


El protocolo TCP (Transmission Control Protocol) Protocolo de transporte "orientado a conexin" Garantiza un servicio extremo a extremo fiable Detectar/retransmitir segmentos de datos perdidos o errneos Detectar y descartar segmentos duplicados Ordenar los segmentos en el destino y pasarlos de forma ordenada a la capa de aplicacin Utilizado en aplicaciones en las que la seguridad en la entrega es ms importante que la rapidez Ejemplos: FTP, HTTP, Telnet, SMTP, etc. El protocolo UDP (User Datagram Protocol) Protocolo de transporte "sin conexin" No garantiza un servicio extremo a extremo fiable No controla la prdida de paquetes, los errores o la duplicidad Utilizado en aplicaciones en las que la rapidez en la entrega es ms importante que la seguridad DNS, SNMP, RIP, RTP, etc.

Protocolos de transporte en Internet: TCP y UDP


Caraterstica Tipo de Conexin TCP UDP Orientado a conexin: Sin conexin (best effort): Entrega ordenada de paquetes No garantiza la entrega Retransmisin de paquetes ordenada perdidos o errneos No retransmite paquetes Detecta duplicados perdidos o errneos No detecta duplicados Segmento (20 bytes mnimo de cabecera)
1. 2. 3.

Unidad de transferencia Fases de la comunicacin Control de errores/flujo

Datagrama (8 bytes mnimo de cabecera)


1.

Establecimiento de conexin Transferencia de datos Cierre de conexin

Transferencia de datos (bloques individuales)

Mtodo de tipo ventana deslizante Numeracin de segmentos Confirmacin Retransmisin

Sin control de errores ni flujo

Ejemplos

Telnet, FTP, HTTP, SMTP, POP3... DNS, RIP, SNMP, DHCP...

El modelo cliente-servidor
El modelo cliente-servidor Es el patrn de comunicacin usado por la mayora de las aplicaciones TCP/UDP El funcionamiento bsico se emplea en otros modelos (e.g. peer-to-peer) Cliente Es la aplicacin que inicia la conexin o el intercambio de datos con la mquina remota (servidor) La aplicacin cliente normalmente la arranca un usuario cuando quiere utilizar un servicio de la red Ejemplos: Navegador web (TCP), cliente de e-mail (TCP), consulta al servidor DNS (UDP) Servidor Es la aplicacin que recibe y acepta la solicitud de conexin o intercambio de datos del cliente Esta aplicacin normalmente est ejecutndose continuamente en la mquina remota y est a la espera de solicitudes de clientes Ejemplos: Servidor Web (TCP), Servidor de correo electrnico (TCP), Servidor DNS (UDP)

El modelo cliente-servidor: Sockets y Puertos


Sockets y Puertos El canal de comunicacin establecido entre el cliente y el servidor se denomina socket (enchufe) El socket permite el intercambio de datos bidireccional entre cliente y servidor Cada aplicacin servidor o cliente est identificada por un nmero de puerto Parmetros en una comunicacin cliente/servidor (TCP o UDP) Direccin IP del cliente: Identifica a la mquina cliente (la que inicia la conexin o intercambio de datos) Puerto del cliente: Identifica al proceso cliente en la mquina cliente Direccin IP del servidor: Identifica a la mquina servidora (la que acepta la solicitud de conexin o intercambio de datos) Puerto del servidor: Identifica al proceso servidor en la mquina servidora

El modelo cliente-servidor: Sockets y Puertos


El puerto del cliente Cuando el usuario arranca el proceso cliente El SO de la mquina cliente le asigna un nmero de puerto libre Este nmero de puerto es siempre un nmero mayor que 1023 (puertos efmeros) El puerto del servidor Cuando un proceso cliente solicita una comunicacin con un servidor debe conocer de antemano su nmero de puerto Habitualmente se usan puertos bien conocidos (well-known ports) Protocolo FTP SSH TELNET SMTP Puerto 21 22 23 25 Protocolo DNS HTTP POP3 NTP Puerto 53 80 110 123

Importante: en una misma mquina no pueden existir dos aplicaciones distintas en ejecucin (ya sea cliente o servidor) con el mismo nmero de puerto

El modelo cliente-servidor: Concurrencia


Servidores concurrentes Es necesario atender concurrentemente a mltiples usuarios Cada cliente se identifica nicamente por los parmetros de su conexin: (IP cliente Puerto cliente IP servidor Puerto servidor)

Mquina Cliente A (IP: 100.10.1.1) Puerto 2222 Puerto 2223

Mquina Servidor (IP: 173.194.34.240) Puerto 2223

Mquina Cliente A (IP: 147.89.2.1) Puerto 2222

El protocolo UDP: Caractersticas


El protocolo UDP es un protocolo sin conexin y no fiable UDP divide los mensajes en datagramas, pero stos NO se numeran El receptor NO enva confirmacin de la recepcin de los mismos UDP no garantiza: la recuperacin de datagramas perdidos o errneos, la presentacin ordenada de datagramas la eliminacin de duplicados Formato del Datagrama:

Puerto Fuente Longitud UDP Datos

Puerto destino Suma de comprobacin

Cabecera UDP Datos

El protocolo UDP: Campos de la Cabecera


Puerto origen y destino: Identifican a las aplicaciones que se comunican Longitud UDP Longitud total en bytes del datagrama UDP (incluyendo datos y cabecera) Suma de comprobacin Se calcula como el complemento a 1 de la suma en complemento a 1 de todas las palabras de 16 bits que forman parte de: El datagrama UDP (datos + cabecera UDP) Una pseudo-cabecera formada por informacin de la cabecera IP:dir. IP fuente, dir. IP destino, campo Protocolo y longitud UDP. Dir. IP fuente Dir. IP destino 17 (protocolo) Longitud UDP Cabecera UDP Datos Datagrama UDP

Pseudo-cabecera

Byte de relleno (0) Si el n de bytes de datos es impar

El protocolo UDP: Mecanismos de transmisin


Envo de paquetes UDP a un puerto de servicio ABIERTO Emisor
Segmento UDP Segmento UDP Segmento UDP Segmento UDP Segmento UDP Segmento UDP

Receptor

Envo de paquetes UDP a un puerto de servicio CERRADO Emisor


Segmento UDP Puerto destino CERRADO ICMP Destination Unreachable (UDP Port Unreachable)

Receptor

El protocolo TCP: Caractersticas


Unidad de transferencia: Segmento TCP Fases en una transmisin: 1. Establecimiento de conexin 2. Transferencia de datos 3. Cierre de conexin Mecanismos de control de errores: tipo ventana deslizante Numeracin de segmentos Cada segmento lleva un nmero de secuencia de 32 bits Indica la posicin del primer byte del segmento dentro del mensaje Confirmaciones superpuestas del receptor Cuando el receptor recibe un segmento de datos correcto y sin errores, enva una confirmacin al emisor Retransmisin de segmentos Si transcurrido un tiempo desde que se envi el segmento, el emisor no recibe confirmacin, entonces retransmite de nuevo el segmento

El protocolo TCP: Formato del segmento


Puerto destino Nmero de secuencia Nmero de confirmacin Long. Cabec. Reservad o Suma de comprobacin Tamao de ventana Puntero de urgente

Puerto origen Cabecera TCP

Opciones + relleno (opcional)

Datos

Datos (opcional)

El protocolo TCP: Formato del segmento


Puerto origen y destino: Identifican los extremos de la conexin N de secuencia: Indica la posicin del primer byte del segmento con respecto al mensaje original N de confirmacin: Para enviar confirmaciones superpuestas en sentido contrario. Indica el n de secuencia del siguiente byte que se espera recibir Longitud de la cabecera: Medida en palabras de 32 bits Tamao de ventana: Permite anunciar el tamao de la ventana de recepcin durante la conexin TCP El valor del campo ventana indica la cantidad de bytes (relativos al n de byte indicado en el campo n de confirmacin) que el receptor es capaz de aceptar

El protocolo TCP: Formato del segmento


Flag URG y puntero urgente: Si URG=1, el segmento transporta datos urgentes a partir del n de byte especificado en el campo puntero urgente Flag ACK: Si ACK=1, el segmento un nmero de confirmacin vlido Todos los segmentos de una conexin TCP, excepto el primero, llevan ACK=1 y transportan un nmero de confirmacin vlido Flag PUSH: Si PUSH=1, indica que los datos deben ser pasados inmediatamente a la aplicacin. Si PUSH=0, los datos se pueden almacenar en un buffer de recepcin y stos se pasan a la aplicacin cuando el buffer se llena. Flag RST: Flag utilizado para abortar una conexin Flag SYN: Flag utilizado en el establecimiento de la conexin. Significa que los extremos deben sincronizar los nmeros de secuencia iniciales de la transmisin Flag FIN: Flag utilizado en la finalizacin de la conexin

El protocolo TCP: Formato del segmento


Suma de comprobacin Se calcula como el complemento a 1 de la suma en complemento a 1 de todas las palabras de 16 bits que forman parte de: El segmento TCP (datos + cabecera TCP) Una pseudo-cabecera formada por informacin de la cabecera IP: dir. IP fuente, dir. IP destino, campo Protocolo y longitud del segmento TCP.

Dir. IP fuente PseudoDir. IP destino 6 (protocolo) Longitud segmento TCP cabecera Cabecera TCP Datos Byte de relleno (0) Si el n de bytes de datos es impar Segmento TCP

El protocolo TCP: Formato del segmento


Opciones Permite negociar parmetros adicionales de la conexin El parmetro ms comn es el tamao mximo del segmento (MSS) El valor por defecto del MSS es 536 Bytes Si se negocia el valor del MSS, este debera ajustarse al valor de la MTU mnima de las redes que debe atravesar el segmento (MTU del camino) Si se impone un MSS muy grande, puede empeorar el rendimiento

Ejemplo: Supongamos una transmisin con MTU del camino de 576 bytes para la que se elige MSS=16.384 bytes. Analizar la fraccin de fragmentos retransmitidos para una tasa de errores del 0.1%, 1% y 5%

El protocolo TCP: Formato del segmento


Ejemplo: Cada segmento tiene que dividirse en 30 paquetes TCP: N Paquetes = Tamao Segmento / Tamao fragmento N Paquetes = 16384 / ( 576 - 20 ) ~ 30 Si se pierde uno solo de los 30 paquetes, es necesario retransmitir el segmento completo Tasa de errores es 0,1% (se pierde un paquete de cada 1000) N Segmentos = N paquetes enviados / N paquetes por segmento N Segmentos = 1000 / 30 = 33.3 Retransmitir 1 de cada 33.3 segmentos enviados retransmisin del 3% de segmentos Tasa de errores es 1% (se pierde un paquete de cada 100) N Segmentos = 100 / 30 = 3.33 Retransmitir 1 de cada 3.33 segmentos enviados retransmisin del 30% de segmentos Tasa de errores es 5% (se pierde un paquete de cada 20) Ser necesario retransmitir todos los segmentos (cada segmento da lugar a 30 paquetes) retransmisin del 100% de segmentos

El protocolo TCP: Establecimiento y Cierre


Establecimiento de la conexin: Protocolo de 3 vas (3-way handshake)

SYN

SYN,ACK

ACK

El protocolo TCP: Establecimiento y Cierre


Mecanismo de desconexin: Protocolo de 4 vas Uno de los extremos (A) ha terminado de transmitir y cierra primero la conexin El extremo A ya no enviar ms datos, pero puede recibir datos del extremo contrario y devolver confirmaciones El otro extremo (B) todava puede tener datos pendientes de envo Cierre activo A
FIN* ACK

Cierre pasivo

FIN* ACK

(*) Los dos segmentos de FIN, tambin llevan el ACK activado y transportan un n de confirmacin vlido

El protocolo TCP: Establecimiento y Cierre


Mecanismo de desconexin: Protocolo de 3 vas Ambos extremos (A y B) han terminado de transmitir y estn de acuerdo en cerrar la conexin

Cierre activo

A
FIN* FIN* ACK

B Cierre pasivo

(*) Los dos segmentos de FIN, tambin llevan el ACK activado y transportan un n de confirmacin vlido

El protocolo TCP: Establecimiento y Cierre


Mecanismo de desconexin abrupta (comunicacin abortada)

El protocolo TCP: Mecanismos de transmisin


Mecanismo similar al mtodo de la ventana deslizante usado en la capa de enlace El emisor enva todas los segmentos numerados El campo n de secuencia indica la posicin del primer byte del segmento con respecto al inicio de la conexin El receptor enva una confirmacin por cada segmento recibido El campo n de confirmacin siempre contiene el identificador del siguiente byte que se espera recibir En caso de que falte algn segmento: Por cada segmento recibido fuera de secuencia, se devuelve una confirmacin que contiene el identificador del siguiente byte que se espera recibir en secuencia Cuando llega el segmento que completa la secuencia, el receptor enva una confirmacin de la secuencia completa

El protocolo TCP: Mecanismos de transmisin


Simplificaciones adoptadas en los siguientes ejemplos: Slo se transmiten datos en un sentido (Emisor Receptor). En el caso general la transmisin es bidireccional Se supone que todos los segmentos transportan 100 bytes de datos En el caso general los segmentos pueden transportar diferente nmero de bytes, hasta un mximo fijado por el valor del MSS (Maximun Segment Size) Se supone que el nmero de secuencia inicial del emisor es SEQ=1 En el caso general el valor de los nmeros de secuencia iniciales se acuerda durante el proceso de establecimiento de conexin TCP

El protocolo TCP: Mecanismos de transmisin


Ejemplo 1: Transmisin sin errores

Emisor
SEQ = 1 (bytes 1 - 100) SEQ = 101 (bytes 101 - 200) SEQ = 201 (bytes 201 - 300) SEQ = 301 (bytes 301 - 400) SEQ = 401 (bytes 401 - 500) SEQ = 501 (bytes 501 - 600)

Receptor
Datos enviados a la aplicacin ACK = 101 bytes 1 al 100 ACK = 201 bytes 101 al 200 ACK = 301 bytes 201 al 300 ACK = 401 bytes 301 al 400 ACK = 501 bytes 401 al 500 ACK = 601 bytes 501 al 600

El protocolo TCP: Mecanismos de transmisin


Ejemplo 2: Retardo en la transmisin de un segmento El receptor recibe segmentos fuera de secuencia Devuelve un ACK indicando cual el siguiente byte en secuencia que espera recibir El emisor recibe un ACK fuera de secuencia No inicia la retransmisin del segmento inmediatamente despus de recibir el ACK Un segmento slo se retransmite cuando se reciben tres ACKs duplicados para ese segmento El receptor recibe el segmento retardado que le faltaba Enva una confirmacin de toda la secuencia completa

El protocolo TCP: Mecanismos de transmisin

Ejemplo 2: Retardo en la transmisin de un segmento

Emisor
SEQ = 1 (bytes 1 - 100) SEQ = 101 (bytes 101 - 200) SEQ = 201 (bytes 201 - 300) SEQ = 301 (bytes 301 - 400)

Recepto r

Datos enviados a la aplicacin

ACK = 101 bytes 1 al 100 ACK = 201 bytes 101 al 200

ACK = 201 SEQ = 401 (bytes 401 - 500) SEQ = 501 (bytes 501 - 600) ACK = 401 bytes 201 al 400 ACK = 501 bytes 401 al 500 ACK = 601 bytes 501 al 600

El protocolo TCP: Mecanismos de transmisin


Ejemplo 3: Prdida de un segmento El receptor recibe los segmentos fuera de secuencia: Devuelve un ACK indicando cual el siguiente byte en secuencia que espera recibir El emisor recibe tres ACKs duplicados con el mismo identificador: Retransmite el segmento pendiente de confirmacin El receptor recibe el segmento que le faltaba Enva una confirmacin de toda la secuencia completa

El protocolo TCP: Mecanismos de transmisin


Ejemplo 3: Prdida de un segmento:

SEQ = 1 (bytes 1 - 100) SEQ = 101 (bytes 101 - 200) SEQ = 201 (bytes 201 - 300) SEQ = 301 (bytes 301 - 400) SEQ = 401 (bytes 401 - 500) SEQ = 501 (bytes 501 - 600) SEQ = 601 (bytes 601 - 700) SEQ = 701 (bytes 701 - 800) SEQ = 201 (bytes 201 - 300) ACK = 201 (I) ACK = 201 (II) ACK = 201 (III) ACK = 201 ACK = 201 ACK = 801 bytes 201 al 800 ACK = 101 bytes 1 al 100 ACK = 201 bytes 101 al 200

Al recibir el la 3 confirm. duplicada con ACK =201 retransmite dicho segmento

El protocolo TCP: Temporizadores


Ejemplo 4: Temporizador de retransmisin Para contemplar la posibilidad de que el emisor no reciba confirmaciones Por cada nuevo segmento transmitido se inicia un temporizador de retransmisin El segmento se retransmite el emisor no recibe una confirmacin antes de que expire el temporizador.
Datos enviados a la aplicacin receptora bytes 1 al 100 bytes 101 al 200

bytes 201 al 300

El protocolo TCP: Temporizadores


TCP utiliza un mecanismo adaptativo La eleccin del tiempo de vencimiento del temporizador de retransmisin (timeout) est basada en los retardos observados en la red Los retardos en la red pueden variar dinmicamente, por tanto los timeouts debe adaptarse a esta situacin

Mtodos para fijar los temporizadores de retransmisin Mtodo de la media ponderada (algoritmo de Jacobson) Mide el tiempo de ida-y-vuelta (Round-trip) de cada segmento El temporizador se ajusta a 2 veces el tiempo de ida-y-vuelta estimado Mtodo de la varianza (algoritmo de Jacobson/Karels) Corrige el mtodo de Jacobson para situaciones de gran variabilidad Algoritmo de Karn Descarta el uso de segmentos retransmitidos para el clculo del tiempo de ida-y-vuelta

El protocolo TCP: Control de Flujo


El control de flujo en TCP se realiza mediante la ventana de recepcin El tamao de esta ventana indica el nmero de bytes que puede aceptar el receptor en un instante dado Este tamao viene determinado por el espacio libre disponible en el buffer de recepcin utilizado para esa conexin TCP El buffer de recepcin, almacena aquellos datos recibidos a travs de la conexin TCP, hasta que estos son ledos por parte de la aplicacin receptora El tamao de la ventana vara a lo largo de una conexin El tamao de la ventana de recepcin se anuncia en cada segmento de confirmacin Si el receptor anuncia una ventana de tamao 0, el emisor no puede enviar ms datos hasta que se anuncie un nuevo tamao de ventana mayor Datos recibidos (pendientes de lectura por la aplicacin)

El protocolo TCP: Control de Flujo


Ejemplo Buffer de transmisin de 8K, de recepcin de 4K y segmentos de 1K Envo de ACK's cada dos segmentos Buffer de transmisin (8K)
(segmentos enviados pdte. de confirmacin)
1K (1) 1K (2) 1K (1)
Seg. (1) (ta mao: 1024 , N Seq=X )

Buffer de recepcin (4K)


(segmentos recibidos pdte. de lectura)

Seg. (2) (tam ao: 1024, N Seq=X+1024 )


ACK (N Ack=X+2048 , Win = 2K)

1K (1) 1K 1K (1) (2)

1K (3) 1K (4) 1K (3)

Seg. (3) (ta ma Seq=X+204 o: 1024, N 8)

Seg. (2) (tam ao: 1024, N Seq=X+3072 )


ACK (N Ack=X+4096 , Win = 0)

1K 1K 1K (1) (2) (3) 1K 1K 1K 1K (1) (2) (3) (4) 1K 1K (3) (4) 1K (3) 1K (4) 1K (5)

No se pueden enviar ms datos hasta recibir Win > 0 pueden enviar datos Se
1K (3) 1K (4) 1K (3)

ACK (N Ack=X+4096

, Win = 2048)

Buffer lleno (Win = 0) La aplicacin lee 2Kb (1,2)

Seg. (4) (ta ma Seq=X+409 o: 1024, N 6)

Seg. (5) (tam ao: 1024, N Seq=X+5120 )

AC

n = 2048) K (N Ack=X+6144, Wi

1K 1K (5) (6)

La aplicacin lee 2Kb (3,4)

El protocolo TCP: Diagrama de Estados

El protocolo TCP: Cierre, protocolo de 3 vas

El protocolo TCP: Apertura simultnea

El protocolo TCP: Apertura y Cierre de 4 vas

El protocolo TCP: Rechazo de una conexin

El protocolo TCP: Abortar una conexin