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