Sistemas de Transportes de Datos (STD) Tema III: UDP Y TCP (Entrega 1) Nivel de. Proceso. Nivel de Transporte. Nivel de Red

Sistemas de Transportes de Datos (STD) Tema III: UDP Y TCP (Entrega 1) _________________________________________ TEMA III: UDP Y TCP _____________...
24 downloads 0 Views 147KB Size
Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

TEMA III: UDP Y TCP

_________________________________________ _________________________________________

3. Protocols UDP i TCP

3.4 Control d'errors

3.1 El protocol UDP

3.5 Control de fluxe

3.2 Funcionalitats de TCP

_________________________________________ _________________________________________ ________________________________________

3.6 Control de la congestió

3.3 Els estats de TCP

3.7 Sockets

3.3.1 Establiment de la conexió(3WHS)

3.8 RPCs

3.3.2 Finalització de la conexió

Departamento Arquitectura Computadores

©

Grupo de Aplicaciones Telemáticas

J.C. Cruellas

U PC

_________________________________________

INTRODUCCIÓN apl. apl.

apl. Traceroute

_________________________________________ _________________________________________

Nivel de Proceso FTP

Nivel de Proceso

SMTP

_________________________________________

Puerto

TCP

UDP

ICMP

IP

ARP

Nivel de Transporte

Nivel de Transporte Nivel de Red

_________________________________________

Nivel de Red

________________________________________

Nivel de Red

RARP Driver

Red Física Departamento Arquitectura Computadores

Interfaz Red

Interfaz Red Interfaz Red

©

J.C. Cruellas

Red Física Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

INTRODUCCIÓN • Entre las aplicaciones e IP existen dos protocolos de los cuales puede hacerse uso: – UDP (User Datagram Protocol): para aplicaciones NOORIENTADAS A LA CONEXIÓN (aquellas en las que los intercambios de información son puntuales y gastar recursos en que los procesos pongan en pie una conexión es excesivo -RIP, DNS para preguntas y respuestas cortas-) – TCP (Transport Control Protocol): para aplicaciones ORIENTADAS A LA CONEXIÓN, aquellas en que los procesos deben establecer un diálogo de una cierta duración (ftp, http, telnet, etc.). Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

1

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

INTRODUCCION • Ambos son protocolos extremo a extremo: – Las entidades que se comunican son dos procesos que se ejecutan en máquinas diferentes. – En una misma máquina pueden haber varios procesos en ejecución: multiplexación por número de puertos – Un proceso identifica a su interlocutor remoto (otro proceso) mediante la @IP de la máquina en que se ejecuta y el número de puerto por el que dicho proceso se comunica con UDP o TCP.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

User Datagram Protocol (UDP)

_________________________________________ _________________________________________

• Especificado en la RFC 768 • Definido para ofrecer a las aplicaciones un mecanismo de comunicación no orientado a la conexión (datagramas).

_________________________________________ _________________________________________ ________________________________________

• Se trata de un protocolo: – Extremo a extremo – No fiable (la entrega de los datagramas y la protección contra la duplicidad no están garantizadas)

• Cada datagrama UDP se encapsula en UN datagrama IP

Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

User Datagram Protocol (UDP) • UDP coloca en sus datagramas los datos tal y como los genera la aplicación. • Utilizado por RIP y por SNMP (Simple Network Management Protocol), entre otros.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

2

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

User Datagram Protocol (UDP)

_________________________________________ _________________________________________ _________________________________________

0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... ---------------- ...

Departamento Arquitectura Computadores

©

J.C. Cruellas

• Puertos fuente y destino para identificar las aplicaciones en los hosts.

_________________________________________ ________________________________________

• Longitud del datagrama • Checksum para proteger el datagrama UDP

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

User Datagram Protocol (UDP) • Cálculo del checksum: operaciones similares a las del checksum del header de IP.

_________________________________________ _________________________________________ _________________________________________

• Protege la totalidad del datagrama UDP.

_________________________________________

• En la realización de la suma intervienen:

________________________________________

– Un “pseudoheader” formado por las @IP de fuente y destino, así como indicaciones del protocolo y la longitud del datagrama UDP – El header del datagrama UDP – Los datos del datagrama UDP

Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

User Datagram Protocol (UDP) 0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | source address | +--------+--------+--------+--------+ | destination address | +--------+--------+--------+--------+ | zero |protocol| UDP length | +--------+--------+--------+--------+ +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | | data octets ... | | | | +-----------------------------------+ Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________

“Pseudoheader”

_________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

3

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Transmision Control Protocol (TCP) • Definido en la RFC 793. TCP es un protocolo: – Extremo a extremo (entre procesos ejecutados en máquinas diferentes) – Orientado a la conexión y – Fiable – Basado en el intercambio bajo ciertas premisas de secuencias de bytes sin marcas insertadas automáticamente por el protocolo.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

TCP: Introducción

_________________________________________

• Especificación del protocolo: RFC 793

_________________________________________

• Protocolo:

_________________________________________

– – – –

Extremo a extremo (entre procesos), Fiable, Orientado a la conexión, De secuencia de bytes (byte-stream)

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

TCP: Introducción • Fiable: asegura la entrega de datos en destino sin errores, en orden y sin pérdida o duplicación. – TCP divide los datos de la aplicación en pedazos adecuados para ser transmitidos (segmentos TCP) dentro de datagramas IP – TCP utiliza notifica la recepción correcta de segmentos con datos mediante el el envío de segmentos con indicación de dicha recepción (ACK). – Cuando el módulo TCP envía un segmento con datos, activa un reloj y espera la llegada del ACK correspondiente durante un período de tiempo. Si se supera, RETRANSMITE el segmento no reconocido. Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

4

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

TCP: Introducción – El módulo TCP calcula un checksum sobre el “header” y los datos de un segmento (checksum extremo a extremo). – El módulo TCP reordena los datos que no llegan en orden. – El módulo TCP implanta un mecanismo de control de flujo para que procesos demasiado rápidos en la generación de información no desborden los recursos de procesos más lentos en el consumo de la información (problemas de recursos de procesos -en hosts-). – El módulo TCP implanta un mecanismo de control de congestión para ralentizar el envío de datagramas con segmentos a zonas de Internet cercanas a la congestión(problemas de recursos en Internet -redes-). Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

TCP: Introducción

_________________________________________

• Es orientado a la conexión. – Para aplicaciones en las que se prevee interacciones prolongadas entre los procesos que se comunican: conexión – TCP especifica CÓMO ESTABLECER, MANTENER y CERRAR una conexión. – Durante el establecimiento de la conexión no se intercambian datos de las aplicaciones (los segmentos TCP constarán únicamente de los “headers”). – Durante una conexión los dos extremos intercambian datos. Dos casos bien diferenciados:

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________

_________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

TCP: Introducción • Intercambios interactivos con pocos datos (Telnet, rlogin). • Intercambios de grandes cantidades (“bulk data”) de datos (ftp cuando se transfieren ficheros).

• Está orientado al intercambio de bytes.

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

– No hay marcas de registro insertadas por TCP: no diferencia unos de otros. – No interpreta en absoluto los contenidos de los datos.

Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

5

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Cabecera de segmento TCP 0

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Cabecera de segmento TCP • 16 bits con el número de puerto generador del segmento (identifica el proceso entre el resto de procesos de la máquina). • 16 bits con el número de puerto destinatario del segmento.

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

• En aplicaciones cliente-servidor, el servidor tiene un número de puerto fijo y si es un servicio estándar, conocido públicamente. A cada cliente se le asigna un número de puerto cuando arranca que puede variar (puerto efímero) Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Cabecera de segmento TCP • 32 bits codificando un NÚMERO DE SECUENCIA del primer byte de datos del segmento. – TCP numera CADA byte de datos intercambiados en una conexión con esos 32 bits.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

6

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Cabecera de segmento TCP • 32 bits codificando el “ACK number”: número del siguiente número de secuencia que quien lo envía espera recibir. – Confirma la llegada correcta de bytes hasta aquel cuyo número es “ACK number” - 1. Es un ACK de grupo. – Este campo solo contiene dicho número si el bit ACK está a 1. – En TCP enviar un ACK no “cuesta” nada: aparece en el “header”. – Una vez establecida la conexión, el bit ACK estará siempre a 1 y todos los segmentos incorporarán el número de ACK.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

UPC

_________________________________________

Cabecera de segmento TCP – La conexión mantenida con TCP es “full-duplex” (la información puede fluir desde cualquier extremo sin importar qué sucede en el otro sentido): cada extremo debe mantener su propia secuencia de números de bytes.

• 4 bits para codificar la longitud del “header” en número de palabras de 32 bits (tamaño máximo: 60 bytes, sin opciones: 20).

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

• 6 bits reservados para usos futuros. • Bits de control:

Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

UPC

_________________________________________

Cabecera de segmento TCP • URG: Indicador de que en el segmento hay datos urgentes. El módulo TCP receptor debe notificar tal situación a la aplicación. • ACK: valida el número de ACK en el campo correspondiente. • PUSH. El módulo TCP receptor debe pasar lo antes posible los datos a la aplicación. • RST: Reset de la conexión.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

UPC

Juan Carlos Cruellas Ibarz.

7

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Cabecera de segmento TCP • SYN: Indicación para proceder a la sincronización de los números de secuencia para establecer una conexión. • FIN: No habrá más datos por parte de quien envía un segmento con este flag puesto a 1.

• 16 bits para codificar el tamaño en bytes de la ventana de recepción (control de flujo).

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

• 16 bits para el checksum del segmento TCP. Calculado de forma similar al del datagrama UDP (incluido el pseudoheader).

Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Cabecera de segmento TCP • 16 bits para el “puntero de datos urgentes”. Cuando el flag URG está a 1, el valor de este campo, sumado al número de secuencia del segmento apunta al último byte de los datos urgentes.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Control de errores y ACKs • TCP numera los bytes enviados, NO los segmentos. • Sigue un mecanismo de reconocimiento de bytes correctamente llegados: – Una vez establecida la conexión, todos los segmentos fijan el flag ACK a 1. – Además en el campo ACK de la cabecera, se incorpora el valor del número de secuencia (N) del siguiente segmento que espera recibirse. – En definitiva, se reconoce la correcta llegada de hasta el byte cuyo número de secuencia es N-1.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

8

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Control de errores y ACKs Los acks viajan en la cabecera de segmento.

100 - 130 131 - 200

100 - 130

201 - 220

ack 201

131 - 200 201 - 220

221 - 240

221 - 240

241 - 260 ack 201

261 - 280 Time-out segm. 3! 201 - 220

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

241 - 260 261 - 280

ack 201

ack 281

Departamento Arquitectura Computadores

©

J.C. Cruellas

El receptor vuelve a generar ack 201 porque NO ha recibido el byte 201! Tras recibir el segmento 201 a 221, el primer ACK reconoce todos los bytes hasta el 280 Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Establecimiento de la conexión • Se lanza cuando una aplicación (cliente de ftp, telnet o http, por ejemplo) desea dialogar con otra aplicación remota. • La aplicación lanza una indicación a su módulo TCP (después de invocar al “resolver”) de su deseo de dialogar con la aplicación que escucha en el puerto P que se ejecuta en la máquina cuya @IP es D.

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

• El módulo TCP inicia entonces un diálogo con el módulo TCP que sirve a la aplicación remota para poner en pie una CONEXIÓN TCP. Cuando esta fase acaba, TCP lo notifica a la aplicación que puede dar comienzo al diálogo. Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Establecimiento de la conexión

_________________________________________ _________________________________________

• Terminología: – Cuando un extremo solicita abrir una conexión al otro, se dice que intenta llevar a cabo una apertura activa de la conexión. – Si el extremo al que llega la solicitud acepta establecer la conexión, se dice que lleva a cabo una apertura pasiva de la conexión.

_________________________________________ _________________________________________ ________________________________________

• Dos posibles escenarios: – La apertura activa tiene lugar en un extremo. – La apertura activa tiene lugar en ambos extremos (apertura simultánea). Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

9

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

Apertura activa desde un extremo • Durante esta fase, los extremos intercambian segmentos SIN datos, solo contienen los headers. Secuencia: – Para solicitar la apertura de una conexión el extremo A envía un header TCP con el flag SYN puesto a 1. – Cuando B lo recibe y decide aceptar la conexión, le contesta con un segmento TCP (header) sin datos con los flags SYN y ACK a 1. El valor del campo ACK es el ACK del segmento recibido. – Cuando A recibe este segmento, envía el último de la negociación: un segmento TCP con el flag ACK a 1 y el campo ACK NUMBER del segmento llegado de B Departamento Arquitectura Computadores

©

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

J.C. Cruellas

U PC

_________________________________________

Apertura activa desde un extremo Conexión establecida

_________________________________________ 1 A genera un num de secuencia inicial y envía SYNC para pedir conexión

_________________________________________ _________________________________________ ________________________________________

K

50

00

00

00

01

2 B admite conexión. SYNC con ACK

AC

SY N

) 0 (0 000 000 ) 500 1 (0 789 SYN 456 123 ACK

12 34 56 78 90

TCP B

_________________________________________

3 A finaliza esta fase enviando el ACK del SYN de B

TCP A Departamento Arquitectura Computadores

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

_________________________________________

Apertura simultánea • En este escenario, los extremos deciden solicitar la apertura al otro. – A envía un SYN a B, y antes de recibirlo, B envía un SYN a A – Cuando A y B reciben los respectivos SYN, generan los SYN de respuesta con los ACK correspondientes. La llegada de estos dos SYN a los dos extremos significa que la conexión está establecida.

Departamento Arquitectura Computadores

©

J.C. Cruellas

_________________________________________ _________________________________________ _________________________________________ _________________________________________ ________________________________________

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

10

Sistemas de Transportes de Datos (STD)

Tema III: UDP Y TCP (Entrega 1)

_________________________________________

SY N1 23 45 67 AC 89 K5 0 (0) 00 00 00 00 1

Apertura simultánea

SY N1 23 45 67 89 0

) 0 (0 000 000 500 891 SYN 567 234 K1 AC

A

) 0 (0 000 000 500 SYN

(0)

B

2. B envía SYN a A

_________________________________________ _________________________________________ _________________________________________ Conexión establecida

________________________________________

4. B envía SYN y ACK a A 3. A envía SYN y ACK a B

1. A envía SYN a B Departamento Arquitectura Computadores

_________________________________________

©

J.C. Cruellas

Grupo de Aplicaciones Telemáticas

U PC

Juan Carlos Cruellas Ibarz.

11