Pr. Dr. Xavier Bonnairebonnaire/download/RED_9_Transport.pdf · – El servicio HTTP tiene la...
Transcript of Pr. Dr. Xavier Bonnairebonnaire/download/RED_9_Transport.pdf · – El servicio HTTP tiene la...
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 11
Pr. Dr. Xavier BonnairePr. Dr. Xavier Bonnaire
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 22
Temario
● Introducción● UDP● TCP
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 33
Introducción
● Protocolo de transporte– Nivel 4 de las capas de red (Transport)
● Servicio de protocolo End to End (aplicación)
Network
Data Link
Hardware1
2
3Modelo TCP/IP
(Layer 4)
IP
Network4 TCP / UDP
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 44
Servicios de protocolos End to End
● Servicios deseables:– Garantía de despacho de mensajes a destino– Despacho al destino en orden– Cuidar que no existan duplicados– Soporte de mensajes muy largos– Soporte de sincronización entre extremos– Permitir al receptor control de flujo– Soportar muchos procesos de aplicación
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 55
Protocolo UDP
● UDP = User Datagram Protocol● Es el modelo más simple es el que extiende el servicio
de despacho host to host– UDP no es confiable (perdidas, errores, ...)– No es un modelo con conexión
● Cada host tiene varios procesos● Los procesos comunican entre ellos● ¿Cómo identificar un processo en un host?
– ¿Dirección de proceso?
● Se usa un número de identificación del proceso llamado puerta
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 66
Puertas
● Un proceso recibe/envia mensaje por una puerta
Proceso 1
Proceso 2
Proceso n
Host 2
Proceso 1
Proceso 2
Proceso k
Host 1
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 77
Formato del Datagrama UDP
Puerta Fuente Puerta destino
Checksum (opcional) Largo
Datos
Datos
0 16 31
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 88
Campos del Datagrama
● Checksum: es opcional en IPv4. Se calcula sobre:– header UDP– Contenido del cuerpo del mensaje– pseudoheader: consiste en tres campos del header IP:– Largo– Dirección IP Fuente– Dirección IP Destino
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 99
Puertas UDP
● Hay 64K (65536) puertas posibles. – Para cada Host
● La identificación completa de un proceso es: – <host, puerta>
● ¿Cómo sabe un proceso en qué puerta reside otro proceso?
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1010
Puertas UDP
● Un proceso cliente transmite a un servidor– ¿Como encontrar la puerta correspondiente?
● Es una puerta bien conocida (Well Known Port)– Por ejemplo el DNS tiene la puerta bien conocida 53– El servicio HTTP tiene la puerta 80
● No es una puerta bien conocida– El cliente busca la correspondencia entre el nombre del servicio y la
puerta asociada– En Linux (Unix), el archivo /etc/services contiene una tabla de
correspondencia● Servicios bien conocidos (Well Known Services) y servicios adicionales
● El servidor conoce la puerta de repuesta
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1111
Puertas UDP
● Ejemplo de archivo /etc/services
ftp 21/tcpftp 21/udp fsp fspdssh 22/tcp # SSH Remote Login Protocolssh 22/udp # SSH Remote Login Protocoltelnet 23/tcptelnet 23/udp...domain 53/tcp # name-domain serverdomain 53/udp...http 80/tcp www www-http # WorldWideWeb HTTPhttp 80/udp www www-http # HyperText Transfer Protocol
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1212
Puertas - Implementación
● Depende del sistema operativo● Pero generalmente se implementa con colas de
mensajes● Cuando el proceso quiere leer un mensaje, los extrae
de la cola asociada a la puerta
Proceso
● Si la cola está vacía, se puede bloquear hasta recibir un mensaje
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1313
TCP (Transmission Control Protocol)
● Es un protocolo más sofisticado que UDP– Flujo confiable– Servicio de conexión– Despacho de bytes en orden– Manejo de mensajes de gran tamaño– Gestión de errores
● Especificación oficial del protocolo: RFC 793 (1981)
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1414
Flujos TCP
● TCP es un modelo con conexión– Soporta dos flujos de comunicación (FDX -Full Duplex)– Además incluye un mecanismo de control de flujo para prevenir al
receptor ser inundado por datos● No es un mecanismo de control de congestión
ProcesoProceso
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1515
Control de Flujo TCP: ventanas deslizantes
● El corazón de TCP es el algoritmo de ventanas deslizantes. – Este algoritmo difiere del estudiado anteriormente.
● Las diferencias son.– El algoritmo anterior (ARQ), funciona sobre links simples que
conectan 2 computadores. TCP en cambio funciona entre cualquier par de computadores sobre Internet
– En TCP, el RTT no puede ser fijo sino variable. Por ejemplo depende de la hora y por lo tanto el Timeout que controla retransmisiones debe ser adaptivo.
– Como TCP está diseñado para distintos computadores, un extremo debe conocer los recursos que están asignados en el otro (buffers)
– En el camino hay distintas velocidades
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1616
Distintas velocidades en un enlace TCP
Ethernet 1 GBits/sInternet
Ethernet 100 MBits/s
Ethernet 10 MBits/s
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1717
Segmentos TCP
● TCP es un protocolo orientado al byte– se implementa a través de segmentos
Byte Stream
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1818
Proceso deAplicación
Buffer de Transmisión
TCP
Proceso deAplicación
Buffer de Recepción
TCP
Segmentos
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 1919
Construcción de Segmentos
● ¿Cómo decide TCP formar un segmento?● TCP tiene tres mecanismos que disparan la
generación de un segmento:– TCP mantiene una variable llamada MSS (máximo tamaño de
segmento). Usualmente se iguala al MTU de la red conectada directamente.
– El proceso que envía hace una operación push.– A través de un timer que actúa en forma periódica
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2020
Formato Segmento TCP
Puerta Fuente Puerta Destino
Número de Secuencia (se numera cada Byte)Ventana deslizante
ACKVentana deslizante
HdrLen 0 Flag AdvertiseWindowVentana deslizante
ChecksumIgual que UDP
URGPtr
Opciones (variable)
Datos
Datos
0 4 8 16 31
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2121
Campos Segmento TCP
● Puerta Fuente y Puerta Destino: Similar a UDP– La dirección completa es: < IPdestino, Puertadestino>
● Flags (6 bits): información de control entre pares TCP. ● Por ejemplo:
– SYN: Inicio conexión - PUSH: indica al receptor que se– ACK: ACK válido invocó una operación PUSH– FIN: Fin conexión -RESET: el receptor está– URG: Datos urgentes confundido.
● UrgPtr: Es válido cuando el flag URG es set. Indica el byte donde termina la urgencia
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2222
Campos Segmento TCP
● CheckSum: se usa igual que UDP. ● Se calcula sobre el header TCP, los datos y el
pseudoheader (dirección IP fuente, dirección IP destino y largo del header IP)
● HdrLen: indica el largo del header en palabras de 32 bits. También se le denomina campo de Offset
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2323
Control de Flujo
Transmisor Receptor
Datos, Número de Secuencia
ACK, Advertise Window
Advertise Window:
Tamaño de la ventana detransmisión
La fija el receptor acordeal tamaño de sus buffers
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2424
Establecimiento y terminación de Conexión
● Distinguiremos dos actores: cliente y servidor● Una conexión TCP comienza con el cliente haciendo
un open activo a un servidor (previamente, el servidor ha hecho un open pasivo)
● Ambos lados intercambian mensajes para establecer conexión.
● Posteriormente se comienza el intercambio de datos.● Una vez que se termina de enviar datos, cierra la mitad
de la conexión, con lo cual TCP inicia intercambio de mensajes de terminación.
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2525
Conexión TCP
● El Cliente transmite un primer mensaje al servidor– Con el flag SYN– Con su número de secuencia inicial– Con la capacidad máxima de su segmento TCP
● El Servidor recibe el mensaje y constesta con– El flag ACK, y el número de secuencia ACK = número de secuencia
del cliente +1– Su propia capacidad máxima de segmento TCP
● El Cliente– Transmite un mensaje ACK con el número de secuencia del
servidor +1
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2626
TCP - Terminación
● Lado Activo (el que inicia la terminación)– Transmite un mensaje con
El flag SYNSECUENCIA +1ACK unchangedACK flag set
● Lado Pasivo– Transmite dos mensajes
Acknowledgment para el lado activo (ACK+1)Flag FIN + ACK igual
● Lado Activo– Transmite un mensaje
ACK +1
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2727
TCP – Ejemplo – Conexión y Terminación
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2828
TCP – Sequence Numbers
● The sequence numbers correspond to the number of bytes sent since the opening of the connection
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 2929
Observación
● El establecimiento de una conexión es una actividad asimétrica (open activo y open pasivo)
● El término de una conexión es simétrico: cada lado hace un cierre de la conexión en forma independiente.
● Es posible que uno de los lados cierre (no envía más datos), pero el otro lado mantenga abierta la conexión y continúe enviando datos (recordar que es full duplex)– Comando Linux: netstat -a
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3030
TCP – Diagrama de Estado
30
CERRADA
ESCUCHA
SYN_RCVD SYN_SENT
ESTABLECIDA
FIN_WAIT_1
FIN_WAIT_2CERRANDO
TIME_WAIT
CLOSE_WAIT
LAST_ACK
CERRADA
Open Activo/SYN
Cerrar
CerrarOpen pasivo
Cerrar/FIN
ACK
FIN/ACK
ACK
FIN/ACK
Cerrar/FIN
ACK
Cerrar/FINACK
FIN/ACK
SYN/SYN+ACK
SYN+ACK/ACK
SYN/SYN+ACK
Send/SYN
Timeout
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3131
Terminación
● El termino de una conexión es más complicado – Ambos extremos en forma independiente pueden cerrar la mitad de
la conexión. Esto significa que en cualquiera de los dos lados pueden ocurrir tres combinaciones de transiciones:
● Este lado cierra primero:– ESTABECIDA → FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT
→CERRADA
● El otro lado cierra primero:– ESTABECIDA → CLOSE_WAIT → LAST_ACK → CERRADA
● Ambos lados cierran al mismo tiempo:– ESTABECIDA → FIN_WAIT_1 → CERRANDO → TIME_WAIT
→CERRADA
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3232
Ventanas Deslizantes - Transmisor
● TCP usa un ventana en terminos de bytes
Buffer de transmisión
LastByte Acked LastByte Sent LastByte Writen
Application
LastByteSent - LastByteAcked ≤ AdvertisedWindow
EffectiveWindow=AdvertisedWindow – (LastByteSent - LastByteAcked)
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3333
Ventanas Deslizantes - Receptor
Buffer de recepción
LastByte Read
NextByte Expected
LastByte Rcvd
Application
AdvertisedWindow= MaxRcvBuffer - (LastByteRcvd-LastByteRead)
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3434
Ventanas Deslizantes - Receptor
● La contracción de la ventana de aviso depende de cuan rápido la aplicación local esté consumendo los datos.
● Si la tasa de consumo es igual a la tasa de recepción de datos, la ventana de advertencia permanece abierta– AdvertisedWindow = MaxRcvBuffer.
● Si por el contrario, el consumo de datos se pone lento, esta ventana se comienza a achicar llegando eventualmente a cero.
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3535
Ventanas Deslizantes - Transmisor
● ¿Cómo logra el lado transmisor saber que la ventana de advertencia ya no es 0?
● TCP siempre envía un segmento en respuesta a un segmento recibido.– Esta respuesta contiene el último valor de Acknowledge y
AdvertisedWindow, aún si estos campos no han cambiado desde la última vez que se enviaron.
– El problema es que una vez que el receptor advierte un tamaño de ventana 0, el transmisor no puede enviar más datos.
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3636
Ventanas Deslizantes - Transmisor
● TCP trata esta situación de la siguiente manera– toda vez que el otro lado advierte una ventana de tamaño 0, el lado
transmisor insiste en enviar un segmento con 1 byte de datos en forma seguida.
– Este dato no será aceptado, pero logra el efecto de generar una respuesta que contenga la ventana de advertencia actual.
● La razón por la cual el lado transmisor envía segmentos de prueba en forma periódica es que TCP está diseñado para hacer el receptor lo más simple posible.
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3737
Números de Secuencia Finitos
● El campo SequenceNum de TCP es de 32b.● El campo AdvertisedWindows es de 16b.● Se cumple el principio que el espacio de números de
secuencia es el doble que el tamaño de ventana (232 >> 2 x 216).
● De todas maneras podría ocurrir que un byte con un número de secuencia X enviado en un momento, después de un tiempo un segundo byte con el mismo número de secuencia X sea enviado más tarde.
Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa MarPr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María – Departamento de Informáticaía – Departamento de InformáticaSlide Slide 3838
Números de Secuencia Finitos
● Para que lo anterior ocurra va a depender de cuan rápido se consuman los números de secuencia en Internet. Obviamente esto dependerá del ancho de banda. Para links actuales estos tiempos son:– T1: 6.4 hrs– Eth: 57minutos– FDDI: 6 minutos– STS-24 (1.2Gbps): 28seg.