Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso...

14
Tema 1bis. TCP y UDP (aka Tema 5. TCP y UDP) Ingeniería de protocolos Curso 2012/13 Jaime Benjumea Mondéjar Dpto. Tecnología Electrónica (Univ. de Sevilla)

Transcript of Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso...

Page 1: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Tema 1bis. TCP y UDP (aka Tema 5. TCP y UDP)

Ingeniería de protocolos

Curso 2012/13

Jaime Benjumea Mondéjar

Dpto. Tecnología Electrónica

(Univ. de Sevilla)

Page 2: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Indice

• Protocolos de nivel de transporte.

• Servicios TCP.

• Cabecera TCP.

• Máquina de estados

• Inicio de conexión.

• Modo ESTABLISHED: – Transferencia de información.

– Control de flujo.

– Resolución de problemas.

• Cierre de conexión.

• Opciones TCP.

• Protocolo UDP

Page 3: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Protocolos de nivel de transporte en Internet

Aplicación

TCP / UDP

IP

Acceso al medio

físico

Aplicación

TCP / UDP

IP

Acceso al medio

físico

IP

Acceso al medio

físico

• Los protocolos de nivel de transporte

son los primeros considerados

extremo a extremo, no existen nodos

intermediarios entre origen y destino.

• Requieren un protocolo de nivel de

red que haga llegar la información al

otro extremo (sin éste no saben hacer

nada).

• El nivel de transporte, no está implementado en los nodos intermedios (routers), excepto cuando

éstos actúan como nodos finales (cuando los configuramos via telnet, cuando intercambian

información, cuando generan alarmas SNMP, etc.).

• Ofrecen conectividad a las aplicaciones, a través de sus servicios cuyo centro es el concepto de

puerto (que identifica un servicio dentro de una misma máquina).

• TCP (RFC793), ofrece un servicio orientado a la conexión.

• UDP (RFC768), ofrece un servicio NO orientado a la conexión.

• Existen aplicaciones que normalmente usan TCP: FTP, HTTP, SMTP y otras que normalmente

usan UDP: SNMP, DNS(*), TFTP. (*) También usa TCP dependiendo del tipo de respuesta.

Page 4: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

TCP. Servicios

Puerto: Al igual que una dirección IP distingue una

máquina de otra, un puerto distingue un servicio

(aplicación) de otro en una misma máquina.

Socket: El par formado por IP+Puerto, identifica un

lado de la conexión. Cada ordenador tiene varios,

cada conexión se identifica por dos sockets.

192.168.5.10

22 25 80 110

SSH SMTP HTTP POP3

Puertos

Aplicaciones

Socket

Para las aplicaciones

más conocidas, se

suele usar siempre el

mismo puerto

• Transferencia de datos: Será Full-duplex, TCP es libre de retrasar el envío de un segmento (unidad

de transmisión), esperando más datos, pero se debe ofrecer la posibilidad de forzar el enviarlo (PUSH).

• Fiabilidad: TCP ofrece un servicio sin pérdidas, duplicidades ni desórdenes. Para ello se utilizan

números de secuencia, ACK y retransmisiones.

• Control de flujo: TCP ofrece un mecanismo para controlar la cantidad de información que se pone en

la red por unidad de tiempo. Para ello, con cada ACK, se indica la ventana máxima que estamos

dispuestos a aceptar.

• Multiplexación: TCP soporta múltiples conexiones sobre un mismo socket.

• Orientado a la conexión: Se establece un mecanismo para iniciar la conexión, antes de enviar datos,

y para terminarla.

Servicios

Page 5: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Cabecera TCP

Fuente: W. Stallings, Data and Computer

Comunications, 7ed. (Developed by Adrian J Pullin )

• TCP viaja sobre datagramas IP, Protocol=6.

• La longitud mínima de la cabecera TCP es 20bytes.

• Source & Destination Port (16 bits): Indican el puerto

origen y destino del segmento, estos datos junto con las

direcciones IP determinan la conexión concreta.

• Seq. Number (32 bits) : Es el número de secuencia del

primer octeto de datos del segmento, OJO: Cuenta bytes y no

segmentos.

• ACK (32 bits): Indica el número de secuencia esperado del

otro extremo (confirma, por tanto, todos los anteriores).

Nótese que tal y como aparece este número (esto es, en todos los segmentos), en TCP se permite piggybacking.

•Data offset (4 bits): Indica la longitud (en palabras de 32-bits) de la cabecera TCP. Indica dónde comienzan los datos.

• Reserved (6 bits): Reservado para usos futuros.

• Flags (6 bits): Se refieren a URG: El campo Urgente pointer es válido, ACK: El campo ACK es válido, PSH: Se refiere a la

función PUSH. RST: Sirve para resetear una conexión (por ejemplo si ya no es válida). SYN: Se usa para indicar el

comienzo de una conexión. FIN: Indica que se quiere finalizar la conexión en curso.

• Window: Número máximo de octetos, comenzando por el indicado en el ACK, que estamos dispuestos a aceptar. Permite

hace control de flujo independientemente de la recepción de un ACK (cosa que ocurría en los protocolos de v. deslizante).

• Checksum: Es un código de verificación tanto de la cabecera como de los datos, se incluye en el código de verficacación

una pseudocabecera que contiene la dirección IP fuente, IP destino, tipo de protocolo (6) y Longitud total (todo TCP).

• Urgent Pointer: Indica el offset que apunta al último byte de datos urgentes.

• Options: Indican una serie de opciones adicionales (que veremos posteriormente).

Page 6: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Máquina de estados TCP

Fuente:TCP/IP Illustrated, Volume 1 By W. Richard Stevens

Una conexión TCP puede estar: estableciéndose,

establecida, cerrándose o cerrada.

Una conexión se puede establecer de dos formas

distintas: Activa y pasiva.

Apertura pasiva

(servidor)

Servidor

Web

Apertura pasiva

en puerto 80/tcp (no se envían

datos)

TCP 80

El puerto 80/tcp permanece

“LISTENING”, esperando conexiones

remotas y asociado a su aplicación.

Apertura activa

(cliente)

Navegador

Web Solicita conexión a

<IPdest>, puerto

80/tcp

TCP 1309

TCP elige (de

forma dinámica),

un puerto

“anónimo” que

no esté en uso. Este será el puerto que

se use en esta parte

de la comunicación

TCP 80

Servidor WEB

TC

P

1309

TC

P

1509

Apertura activa

Conexió

n 1

Conexión 2

Apertura pasiva

dos conexiones al mismo

puerto a Multiplexación

Diagrama ilustrativo IP1

IP2

IP3

Las conexiones las inicia el

cliente, usando un puerto

anónimo (>1024), hacia un

puerto remoto.

En este ejemplo hay 3 sockets.

Y 2 conexiones

(IP2:1309,IP1:80 y

IP3:1509,IP1:80)

Puertos anónimos: Son los que

el SO escoge al hacer una

apertura activa, son aleatorios

y, no privilegiados (son

privilegiados del 1-1024).

Page 7: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Inicio de conexión TCP NOTA: Se ha usado Tethereal para

obtener estas secuencias.

tatooine -> titan.imse.cnm.es TCP 1229 > smtp [SYN] Seq=396871380 Ack=0 Win=16320 Len=0

Cliente SMTP

(tatooine)

Servidor

SMTP (titan) IP origen IP destino

Puerto origen (lado tatooine),

lo escoge el Sistema Operativo

Puerto destino, lo abre el servidor,

lo define la aplicación en el servidor

Bandera SYN activa,

Solicitud de conexión Numero de secuencia inicial

(sentido tatooine->titan),

No tiene sentido pues, el otro extremo

todavía no ha enviado nada, el flag ACK es cero.

Indica que hemos (tatooine) lanzado una solicitud de conexión y estamos a la espera de una respuesta (de titan). SYN_SENT

Indica que se ha efectuado una apertura pasiva, el puerto 25 de titan está así inicialmente. LISTEN

Significado Estado

titan.imse.cnm.es -> tatooine TCP smtp > 1229 [SYN, ACK] Seq=647453907 Ack=396871381 Win=24648 Len=0

SYN sigue activo, la conexión

no está iniciada aún

El ACK

está activo

Al ser un segmento de vuelta, se

intercambian puerto origen-destino.

Numero de secuencia inicial

(sentido tintan->tatooine).

Confirmo que he recibido el SYN (I), espero (de

tatooine) que el siguiente octeto sea este

I

II

III

Indica que espera (titan) la confirmación final después de haber recibido y enviado solicitudes de conexión. SYN_RCV

Significado Estado

tatooine -> titan.imse.cnm.es TCP 1229 > smtp [ACK] Seq=396871381 Ack=647453908 Win=16320 Len=0

En este caso el segmento SYN

(I), ha contado como un octeto,

por eso se añade uno más.

Este ACK, confirma que

se recibió el SYN (II).

Ninguno de estos tres

segmentos lleva datos

Indica que la conexión está activa. ESTABLISHED

Significado Estado

CLOSEDaSYN_SENT

LISTENaSYN_RCV

LISTEN

SYN_SENT

SYN_SENTaESTABLISHED

SYN_RCV

Pasa a EST.

cuando llegue

el ACK

Page 8: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Transferencia de datos

smtp > 1229 [PSH, ACK] Seq=647453908 Ack=396871381 Win=24648 Len=92

1229 > smtp [PSH, ACK] Seq=396871381 Ack=647454000 Win=16320 Len=15

Si finalmente llega el último ACK, tendremos a tatooine (izquierda) y a titan (derecha) en el estado

ESTABLISHED y, por tanto, dispuestos a transferir información.

Se envía el primer dato, de 92 bytes.

El flag PUSH indica que tatooine

debe entregar los datos al nivel de

aplicación “inmediatamente”.

Tatooine no tiene ahora datos que enviar, así

que simplemente confirma la recepción del

segmento anterior, el ACK es la suma de la

longitud más el número de segemento que titan

puso en su anterior segmento.

Números de secuencia tras el

establecimiento de conexión 396871381 647453908

1229 > smtp [ACK] Seq=396871381 Ack=647454000 Win=16228 Len=0 Eso es un solo ACK (len=0), no se confirma

Ahora tengo datos, los envío, podemos

observar que seq y ack son iguales que

antes (no hemos recibido ni enviado

nada desde el segmento anterior).

1229 > smtp [ACK] Seq=396871396 Ack=647454247 Win=16320 Len=0 Se confirma la recepción Eso es un solo ACK (len=0), no se confirma

Piggybacking

Esto si tenía datos así que

confirmo la recepción, pero sin

enviar datos adicionales.

smtp > 1229 [ACK] Seq=647454000 Ack=396871396 Win=24648 Len=0 a

smtp > 1229 [PSH, ACK] Seq=647454000 Ack=396871396 Win=24648 Len=247 Envío nuevos datos (247 bytes) b

Consiste en retener un poco un

ACK y enviarlo con un segmento

que tiene datos. Por ejemplo a y

b. Si retraso la salida del ACK (a),

puedo emitir un único segmento

que transmita los datos y haga de

ACK.

smtp > 1229 [PSH, ACK] Seq=647454000

Ack=396871396 Win=24648 Len=247

(De hecho es idéntico a “b”, “b” por si sólo

también hubiera hecho las funciones de “a”)

tatooine titan

Eso es un solo ACK (len=0), no se confirma

Retrasar un Ack “un poco”

mejora el uso de la red.

Pero retrasarlo mucho,

provocaría retransmisiones

inútiles

Page 9: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Control de flujo TCP

Buffer saturado:

No envío ACK.

Comienzan las

Retransmisiones

(innecesario)

Transmisor Receptor

Pro

ble

ma d

e c

ontr

ol

de f

lujo

con v

enta

na

desliz

ante

tra

dic

ional

…Ack=647454000 Win=16228 Len=0

El que transmite esto, indica lo máximo que puede recibir son

Win bytes contados desde el ack.

• TCP permite cambiar la ventana del transmisor de forma dinámica.

• El tamaño de la ventana lo anuncia el receptor en los segmentos que él

mismo envía.

• El transmisor sabe que no puede superar esa ventana (excepto URG).

Ejemplo de control de flujo (ventana en titan): (NOTA: Partimos de la trama III de la transparencia en la que se describe el inicio de conexión)

… Ack=647453908 Win=16320 Len=0

647453908 647470227

(datos enviados

y confirmados) (ventana de transmisión) (no los puedo

usar todavía)

Con ese segmento autorizo

el envío de 16320 bytes,

desde el lugar indicado.

En ese instante, titan enviaba datos (transparencia de transferencia de datos)

… Ack=396871381 Win=24648 Len=92 Se envían 92 bytes

de datos de

aplicación.

647453908 647470227

647453999 (datos enviados y

NO confirmados)

La ventana de

transmisión se

acorta por la

izquierda al

enviar datos

647454000

Tatooine, confirma la recepción, pero no aumenta la ventana

… Ack=647454000 Win=16228 Len=0 Win ahora 92 bytes

menos que el original,.

647470227

647454000

El control de flujo,

impide mover el

lado derecho a la

derecha a pesar

de recibir ack

Tatooine, más tarde, envía datos y de paso aumenta la ventana.

… Ack=647454000 Win=16320 Len=15 Ahora Win tiene el

valor original

647470319

647454000

Ahora el lado

derecho de la

ventana puede

desplazarse

Page 10: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Comportamiento ante problemas (I)

• TCP usa un esquema de corrección de errores similar al de ventana deslizante (vuelta atrás-N,

retransmisión por timeout).

• Pero hay errores en los que es necesario abortar la conexión (flag RST), en los casos en los que

claramente la conexión ya no es recuperable (caída de un extremo, cierre de la aplicación, etc).

2525 > 1660 [RST, ACK] Seq=0 Ack=3230986018 Win=0 Len=0

1660 > 2525 [SYN] Seq=3230986017 Ack=0 Win=16384 Len=0

2525/tcp

CLOSED

ssh >1665 [PSH, ACK] Seq=545722741

Ack=2864468475 Win=16060 Len=112 ESTABLISHED

CRASH

Este extremo (tatooine, cliente SSH)

“cae” sin previo aviso

1

1665 > ssh [RST] Seq=2864468475

Ack=2864468475 Win=0 Len=0

ssh > 1665 [PSH, ACK] Seq=545722741

Ack=2864468475 Win=16060 Len=112

ESTABLISHED

CLOSED

2

Titan todavía cree que la

conexión está activa (retransmite por timeout) Ese puerto (1665)

está cerrado en

tatooine

Se genera RST Se aborta la conexión

existente en titan

Situación 1. Puerto destino cerrado (CLOSED): Enviar RST al origen

1.1: Se intenta iniciar una conexión a un puerto

destino en titan que está cerrado. La respuesta es un

RST con numero de ACK uno más que el del SYN que

provoca el error.

1.2: Un extremo “cae”, tenemos un extremo de la conexión abierto y el otro cerrado por la caída (half-open connection), se envía un RST,

con el valor de Seq al indicado en el ACK el error.

Este es el caso típico de caída de cualquiera de los extremos (cliente o servidor) como

mecanismo para avisar al que no ha caído de que la conexión ya no es válida.

Es caso típico es si nos queremos conectar a un servicio (puerto) que no existe en el

destino, como mecanismo para avisarnos y no tener que esperar un timeout.

Page 11: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Comportamiento ante problemas (y II)

Recepción de RST

ssh > 1665 [RST] Seq=2864468475 Ack=2864468475 Win=0 Len=0

2525 > 1660 [RST, ACK] Seq=0 Ack=3230986018 Win=0 Len=0 Si el estado es

SYN-SENT Se valida que el ACK confirma el SYN anterior

Siguiente

estado

CLOSED

Resto de los

estados Se valida que el número de secuencia es

el válido para esta conexión.

Siguiente

estado

• Si originalmente estaba

LISTEN a LISTEN.

• Si estaba en SYN-RCV

(pero antes estaba en

LISTEN) a LISTEN

• Resto: CLOSED

Situación 2. Puerto destino en estado no sincronizado ( LISTEN, SYN-

SENT y SYN-RECEIVED). Se recibe un ACK inaceptable Enviar RST, NO

modificar estado local

smtp > 1234 [RST] Seq=420 Ack=420

Win=0 Len=0

1234 > smtp [ACK] Seq=123 Ack=420

Win=512 Len=0

ESTABLISHED

LISTEN

Se genera RST Se aborta la conexión

existente en tatooine

La situación es similar a la anterior, pero en este caso en

“titan” se ha vuelto a arrancar el servicio smtp

Situación 3. Resto de estados. Si se recibe un segmento con numero de seq o

ack no válidos, enviar un ack (vacío) con los números de seq y ack correctos.

ssh > 1093 [ACK] Seq=948910617

Ack=3275328194 Win=16480 Len=0

1093 > ssh [ACK] Seq=420 Ack=420

Win=512 Len=0

ESTABLISHED

ESTABLISHED

Se genera ACK

Puede tratarse de un

segmento que se ha

“perdido” y llega ahora

No es usa RST, dado que puede tratarse de segmentos

duplicados, retrasados, etc.

Page 12: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Cierre de conexión • Una conexión TCP puede cerrarse por parte de cualquier

extremo.

• La conexión es FDX, así que aunque un extremo cierre,

el otro puede enviarnos todavía datos antes de cerrar él.

El usuario cierra

la aplicación

Se informa al otro

lado: Yo no enviaré

más datos

El otro lado todavía

puede enviar datos

El otro lado, cierra: Yo

no tengo más que decir

Cierre de conexión visto desde el lado que inicia el cierre

T=1) Desde (p. ej.) ESTABLISHED, se solicita

(app) el cierre, se envía un segmento FIN

indicando yo no tengo más datos y se pasa a

FIN_WAIT1:

smtp > 1229 [FIN, ACK] Seq=647454324

Ack=396871408 Win=24648 Len=0

T=3) El otro lado me confirma la recepción del

FIN, paso a esperar a que él cierre su parte de

la conexión (FIN_WAIT2):

1229 > smtp [ACK] Seq=396871408

Ack=647454325 Win=16320 Len=0

T=5) El otro lado cierra su parte de la

conexión, confirmo la recepción y paso a

TIME_WAIT.

Envío

R

ecib

o

1229 > smtp [FIN, ACK] Seq=396871408

Ack=647454325 Win=16320 Len=0

smtp > 1229 [ACK] Seq=647454325

Ack=396871409 Win=24648 Len=0

Envío

R

ecib

o

Cierre de conexión visto desde el lado que recibe el cierre

smtp > 1229 [FIN, ACK] Seq=647454324

Ack=396871408 Win=24648 Len=0

Recib

o

T=2) Se recibe la petición de cierre del otro extremo,

se confirma con ACK (FIN=1byte) se pasa a

CLOSE_WAIT

1229 > smtp [ACK] Seq=396871408

Ack=647454325 Win=16320 Len=0 Envío

T=4) Mientras estábamos en el estado anterior, la

aplicación podía seguir enviando datos. Cuando la

app. ordena el cierre de su parte, enviamos FIN y

pasamos a LAST_ACK.

1229 > smtp [FIN, ACK] Seq=396871408

Ack=647454325 Win=16320 Len=0 Envío

T=6) Al recibir el ACK del FIN, pasamos al estado

CLOSED

smtp > 1229 [ACK] Seq=647454325

Ack=396871409 Win=24648 Len=0

Recib

o

Permanece en TIME_WAIT hasta asegurarse de que el ACK enviado ha llegado al

otro extremo, se considera válida una espera de 2 veces Maximun Segment

Lifetime

Si T=6 no se produce, después de un t/o se aborta la conexión (se pasa a CLOSED)

informando a la aplicación de este hecho.

Page 13: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Opciones TCP

MSS (Maximun Segment Size) OPTION: Indica el tamaño máximo del

segmento (es como una MTU respecto a la aplicación). Se suele tomar

como MTU-40. Por defecto 536. Pertenece a la especificación original 802.5

Ethernet [SYN], xxx,

MSS=4460

1

[SYN,ACK],

xxx, MSS=1460

2

Sólo se ve en segmentos

SYN, obliga al que lo recibe

a enviar como máximo ese

temaño.

Evita la fragmentación

sKbytes

RTT

WinMAX

/131

PROBLEMA: En comunicación por

satélite, el tamaño de ventana

máximo (216) es muy pequeño para

tanta latencia (RTT=500ms).

Velocidad

Máxima

posible

SOLUCIÓN: Usar ventanas mayores.

WINDOW SCALE OPTION (RFC1323): Especifica que la

ventana original tiene un shift left indicado por un campo de un

byte. NOTA: Máximo valor 14.

PROBLEMA: Medir correctamente

el RTT es crítico para establecer

los temporizadores.

Dato1, Tsopt = (12, 50)

ACK (Dato1), Tsopt = (52, 12)

TIMESTAMP OPTION (RFC1323): Indica (dos palabras

de 32-bits), dos temporizadores; el primero es el de ese

segmento; el segundo es un eco del segmento anterior del

otro lado. Por ejemplo: 12 es el eco.

PROBLEMA: El tiempo de

reutilización de números de

secuencia es 232 bytes = 4GBytes.

En los años 80 era suficiente.

En redes a 10Gbps,

1,25GBytes/s, el tiempo

de reutilización es: 3,2

seg

PROBLEMA: La fragmentación representa un problema de rendimiento.

SOLUCIÓN: Usar la opción Timestamp

PAWS (Protecion Against Wrapped Sequence Numbers)

(RFC1323): Utiliza la opción timestamp para detectar

segmentos antiguos.

PROBLEMA: El sistema de

vuelta atrás-N definido en TCP

es ineficiente para redes con alto

índice de errores y latencia

elevada (con ventanas grandes).

A B C

La ventana permite

transmitir A-B-C, sólo

B se pierde.

ACK (B)

El siguiente

que espera es

B (incluso si C

llegó bien)

B C Se tiene que

transmitir B y C

SACK (Selective ACK) OPTION (RFC2018): Se permite

indicar un rango de números de secuencia recibidos

correctamente, aunque haya un hueco sin recibir.

1-15 16-20 21-25

ACK (16),

Sack=(21,25)

El campo ACK sigue

indicando una confirmación

acumulativa, pero la opción

Sack, determina que los

bytes 21 a 25 si se han

recibido bien

Page 14: Tema 3. TCP y UDP · Protocolos de nivel de transporte en Internet Aplicación TCP / UDP IP Acceso al medio físico otro extremo (sin éste no saben hacer Aplicación

Protocolo UDP

Fuente: W. Stallings, Data and Computer Comunications, 7ed. (Developed by Adrian J Pullin )

• Definido en el RFC 768 es una

alternativa de transporte a TCP.

• Es un protocolo no fiable, no

orientado a la conexión.

• Source Port: Si tiene sentido será distinto de cero, indica el puerto (aplicación) que origina ese datagrama. Se

puede asumir que, habitualmente, la respuesta que demos será a ese puerto origen.

• Dest. Port: Mismo significado que en TCP.

• Longitud: Indica la longitud del datagrama UDP completo (cabecera y datos), la cabecera siempre es 8 bytes.

• Checksum: Se utiliza igual que en TCP.

¿POR QUÉ UDP?

UDP es una alternativa barata y poco fiable de enviar datos, en determinadas ocasiones puede ser útil:

• Sistemas de arranque remoto, desde tarjeta de red, es mucho más sencillo implementar UDP que TCP (ahorro en

el chip de arranque de la tarjeta), además en LAN la probabilidad de error es pequeña.

• A veces me interesa hacer la conexión sin mucho overhead como puede ocurrir con DNS.

• A veces el control de errores no me importa, transmisión de video por Internet (no merece la pena retransmitir,

porque el dato llegará tarde y no se usará).

• A veces el control de errores es imposible: Recepción de TV. por satélite.