Tema 3 El Nivel de Transporte en Internet

  • Slides: 82
Download presentation
Tema 3 El Nivel de Transporte en Internet Estefanía Cortés Ancos D. I. E.

Tema 3 El Nivel de Transporte en Internet Estefanía Cortés Ancos D. I. E. S. I. A E. T. S. I La Rábida. Universidad de Huelva 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Funciones del Nivel de Transporte • Se encarga del transporte de los datos extremo

Funciones del Nivel de Transporte • Se encarga del transporte de los datos extremo a extremo (host a host). • Realiza la comunicación de forma transparente al medio físico. Utiliza los servicios del nivel de red • Multiplexa tráfico de diversas instancias (procesos) del nivel de aplicación. El nivel de transporte (como el de red) tiene una sola instancia en el host • El servicio que ofrece puede ser de dos tipos: – Orientado a conexión: garantiza la entrega de los datos, sin pérdidas ni duplicados. Ej. : TCP (Internet), TP 4 (OSI) – No orientado a conexión: equivale al servicio que ofrece IP, pero a nivel de transporte. Ej. : UDP (Internet), TP 0 (OSI) 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Protocolo UDP • Servicio sencillo, CLNS, no fiable • Se utiliza en los siguientes

Protocolo UDP • Servicio sencillo, CLNS, no fiable • Se utiliza en los siguientes entornos: – El intercambio de mensajes es muy escaso, ej. : consultas al DNS (servidor de nombres) – La aplicación es en tiempo real y no puede esperar confirmaciones. Ej. : videoconferencia, voz sobre IP. – Los mensajes se producen regularmente y no importa si se pierde alguno. Ej: NTP, SNMP – El medio de transmisión es altamente fiable y sin congestión (LANs). Ej: NFS – Se envía tráfico broadcast/multicast 3º Ingeniería Informática Interconexión de Redes

Protocolo UDP • Las TPDUs de UDP se denominan mensajes o datagramas UDP •

Protocolo UDP • Las TPDUs de UDP se denominan mensajes o datagramas UDP • UDP multiplexa los datos de las aplicaciones y efectúa opcionalmente una comprobación de errores, pero no realiza: – – Control de flujo Control de congestión Retransmisión de datos perdidos Conexión/desconexión 3º Ingeniería Informática Interconexión de Redes

La cabecera UDP 32 bits Dirección IP de origen Dirección IP de destino Pseudocabecera

La cabecera UDP 32 bits Dirección IP de origen Dirección IP de destino Pseudocabecera 0000 Cabecera 000132 bits Long. Datagrama UDP Puerto de origen Puerto de destino Longitud datagrama UDP Checksum La pseudocabecera se añade al principio del datagrama para el cálculo del checksum, pero no se envía. Permite a UDP comprobar que IP no se ha equivocado (ni le ha engañado) en la entrega del datagrama. El valor 100012 = 1710 indica que el protocolo de transporte es UDP 3º Ingeniería Informática Interconexión de Redes

Multiplexación • La multiplexación se realiza mediante el puerto (origen o destino) que puede

Multiplexación • La multiplexación se realiza mediante el puerto (origen o destino) que puede valer de 0 a 65535. • Los puertos 0 a 1023 están reservados para servidores ‘bien conocidos’ (‘well known ports’) • La combinación de una dirección IP y un puerto identifica un ‘socket’ (origen o destino de los datagramas UDP): 147. 156. 135. 22. 1038 Dirección IP Puerto Socket 3º Ingeniería Informática Interconexión de Redes

Multiplexación Nivel de aplicación Múltiples instancias (una o varias por protocolo) Daytime DNS NTP

Multiplexación Nivel de aplicación Múltiples instancias (una o varias por protocolo) Daytime DNS NTP (Puerto 13) (Puerto 53) (Puerto 123) Nivel de transporte Dos instancias (TCP y UDP) P. dest. 13 Cabecera UDP Múltiples instancias (una por interfaz) Prot. 17 DATAGRAMA UDP Cabecera IP Nivel de enlace Ethertype 0800 Cabecera MAC Ethernet 3º Ingeniería Informática Checksum Nivel de red Una instancia IP (puede haber otros protocolos) DATOS APLICACIÓN DATAGRAMA IP CRC Interconexión de Redes

“Conexión” UDP de un cliente contra un servidor Mensaje UDP p. o. 1038, p.

“Conexión” UDP de un cliente contra un servidor Mensaje UDP p. o. 1038, p. d. 13 Port 13 Servidor Daytime IP 10. 0. 1. 25 Port 1038 Mensaje UDP p. o. 13, p. d. 1038 Cliente IP 10. 0. 1. 50 Socket: 10. 0. 1. 50: 1038 Socket: 10. 0. 1. 25: 13 3º Ingeniería Informática Interconexión de Redes

Cabeceras IP y UDP en una petición/respuesta SNMP IP: ----- IP Header ----IP: Version=4,

Cabeceras IP y UDP en una petición/respuesta SNMP IP: ----- IP Header ----IP: Version=4, header length=20 bytes IP: Diff. Serv = 00 IP: Total length = 131 bytes IP: Identification = 21066 IP: DF = 0, MF = 0 IP: Fragment offset = 0 bytes IP: Time to live = 60 seconds/hops IP: Protocol = 17 (UDP) IP: Header checksum = 2 A 13 (correct) IP: Source address = [128. 1. 1. 1] IP: Destination address = [128. 1. 1. 10] IP: No options IP: UDP: ----- UDP Header ----UDP: Source Port = 1227 UDP: Destination port = 161 (SNMP) UDP: Length = 111 UDP: No checksum UDP: 3º Ingeniería Informática IP: ----- IP Header ----IP: Version=4, header length=20 bytes IP: Diff. Serv = 00 IP: Total length = 160 bytes IP: Identification = 2015 IP: DF = 0, MF = 0 IP: Fragment offset = 0 bytes IP: Time to live = 64 seconds/hops IP: Protocol = 17 (UDP) IP: Header checksum = 7061 (correct) IP: Source address = [128. 1. 1. 10] IP: Destination address = [128. 1. 1. 1] IP: No options IP: UDP: ----- UDP Header ----UDP: Source Port = 161 (SNMP) UDP: Destination port = 1227 UDP: Length = 140 UDP: Checksum = 4 D 4 F (correct) UDP: Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

TCP (Transmission Control Protocol) • El protocolo TCP ofrece el servicio de transporte orientado

TCP (Transmission Control Protocol) • El protocolo TCP ofrece el servicio de transporte orientado a conexión (CONS) en Internet. • Está diseñado para ofrecer un transporte fiable sobre un servicio no fiable del nivel de red (el que le suministra IP). • Las TPDUs de TCP se llaman segmentos. • El TCP actual se especificó en el RFC 793 en 1981 y sigue plenamente vigente. 3º Ingeniería Informática Interconexión de Redes

Servicio orientado a conexión • Los servicios orientados a conexión requieren un procedimiento explícito

Servicio orientado a conexión • Los servicios orientados a conexión requieren un procedimiento explícito de establecimiento y terminación de la comunicación. • Durante la conexión las entidades participantes mantienen en memoria una información relativa a dicha conexión (contadores de bytes, espacio libre en buffers, etc. ). Dicha información se conoce como información de estado. • Para describir los servicios orientados a conexión se suele utilizar un modelo basado en dos protagonistas: – Cliente: el que inicia la conexión – Servidor: el que está a la espera de recibir peticiones de conexión • Una conexión puede terminarse tanto por iniciativa del cliente como del servidor. • También hay aplicaciones que utilizan el modelo igual a igual (peer-to-peer) como Emule, Edonkey, Spotify, Skype, etc. 3º Ingeniería Informática Interconexión de Redes

Funciones de TCP • Multiplexar el nivel de aplicación (puertos) • Gestionar el intercambio

Funciones de TCP • Multiplexar el nivel de aplicación (puertos) • Gestionar el intercambio de datos con las aplicaciones • Establecer y terminar conexiones • Controlar errores, retransmitiendo segmentos perdidos o erróneos. • Eliminar duplicados • Gestionar los buffers y ejercer control de flujo de forma eficiente • Efectuar control de congestión 3º Ingeniería Informática Interconexión de Redes

La cabecera TCP 32 bits Puerto de origen Puerto de destino Número de secuencia

La cabecera TCP 32 bits Puerto de origen Puerto de destino Número de secuencia 20 bytes L. Cab. (4 bits) Número de acuse de recibo Resv. (4 bits) Flags (8 bits) Checksum Opciones Flags: 3º Ingeniería Informática CWR: ECE: URG: ACK: PSH: RST: SYN: FIN: Tamaño ventana Puntero datos urgentes Relleno Congestion Window Reduced ECN Echo (ECN=Explicit Congestion Notification) el segmento contiene datos urgentes el campo número de acuse de recibo tiene sentido el segmento contiene datos ‘Pushed’ ha habido algún error y la conexión debe cerrarse indica el inicio de una conexión indica el final de una conexión Interconexión de Redes

Campos de la cabecera del segmento TCP Puerto origen y destino: Identifican los extremos

Campos de la cabecera del segmento TCP Puerto origen y destino: Identifican los extremos de la conexión Nº de secuencia: Indica la posición del primer byte del segmento con respecto al mensaje original Nº de confirmación: 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 Puntero urgente: Si URG=1, el segmento transporta datos urgentes a partir del nº de byte especificado Código de redundancia: Checksum de todas las palabras de 16 bits incluyendo la parte de datos Ventana: Permite negociar dinámicamente el tamaño de la ventana de transmisión Opciones: Permite negociar parámetros adicionales de la conexión, por ejemplo el tamaño máximo del segmento (MSS) 3º Ingeniería Informática Interconexión de Redes

La pseudocabecera TCP 32 bits Dirección IP de origen Dirección IP de destino 00000110

La pseudocabecera TCP 32 bits Dirección IP de origen Dirección IP de destino 00000110 Long. Segmento TCP Se añade al principio del segmento solo para el cálculo del Checksum, no se envía. Permite a TCP comprobar que IP no se ha equivocado (ni le ha engañado) en la entrega del segmento. El valor 1102 = 610 indica que el protocolo de transporte es TCP 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Multiplexación • Se utiliza el número de puerto (origen o destino) como en UDP.

Multiplexación • Se utiliza el número de puerto (origen o destino) como en UDP. Puede valer de 0 a 65535. – Como en UDP los puertos 0 a 1023 están reservados para servidores ‘bien conocidos’. (“Well known ports”). – Puertos registrados ("Registered ports"). 48127 puertos comprendidos entre 1024 y 49151. – Puertos dinámicos y privados. Los comprendidos entre los números 49152 y 65535. • Como en UDP la combinación de dirección IP y puerto identifica el ‘socket’ • Una conexión TCP queda especificada por los dos sockets que se comunican: IP origen-puerto origen, IP destino-puerto destino 3º Ingeniería Informática Interconexión de Redes

Algunos servicios ‘bien conocidos’ 3º Ingeniería Informática Servicio Puerto TCP UDP Day. Time 13

Algunos servicios ‘bien conocidos’ 3º Ingeniería Informática Servicio Puerto TCP UDP Day. Time 13 X X FTP 21 X SSH 22 X Tel. Net 23 X SMTP 25 X Domain (DNS) 53 X BOOTP 67 X TFTP 69 X HTTP 80 X POP 3 110 X NTP 123 X SNMP 161 X LDAP 389 X HTTPS 443 X X Interconexión de Redes

Multiplexación Nivel de aplicación Múltiples instancias (una o varias por protocolo) FTP (Puerto 21)

Multiplexación Nivel de aplicación Múltiples instancias (una o varias por protocolo) FTP (Puerto 21) HTTP (Puerto 80) (Puerto 400) Nivel de transporte Dos instancias (TCP y UDP) Telnet (Puerto 23) SMTP (Puerto 25) Checksum P. dest. (23) DATOS APLICACIÓN Cabecera TCP Una instancia IP (puede haber otros protocolos) Múltiples instancias (una por interfaz) Checksum Nivel de red Prot. (6) SEGMENTO TCP Cabecera IP Nivel de enlace Ethertype (0800) DATAGRAMA IP CRC Cabecera MAC Ethernet 3º Ingeniería Informática Interconexión de Redes

Dos conexiones TCP a un mismo socket desde dos sockets con el mismo número

Dos conexiones TCP a un mismo socket desde dos sockets con el mismo número de puerto Este socket tiene dos conexiones simultáneas TCP. 1038 n exió. 0. 1. 50 n o C -10 3 2. 25 0. 1. 10. Port 23 Servidor telnet IP 10. 0. 1. 25 Socket: 10. 0. 1. 25: 23 10. 0 Port 1038 Cliente IP 10. 0. 1. 50 Socket: 10. 0. 1. 50: 1038 Co. 1. 2 nexió n 5. 23 -10. TCP 0. 2. 47. 1 03 8 Port 1038 Cliente IP 10. 0. 2. 47 Socket: 10. 0. 2. 47: 1038 3º Ingeniería Informática Interconexión de Redes

Dos conexiones TCP a un mismo socket desde dos sockets con la misma dirección

Dos conexiones TCP a un mismo socket desde dos sockets con la misma dirección IP Socket: 10. 0. 1. 80: 1038 P Conexión TC 0. 0. 1. 80: 1038 Port 10. 0. 1. 25: 23 -1 1038 Port 23 Port Conexión TC P 1039 10. 0. 1. 25: 23 -1 0. 0. 1. 80: 1039 Servidor IP 10. 0. 1. 25 Socket: 10. 0. 1. 25: 23 3º Ingeniería Informática Cliente IP 10. 0. 1. 80 Socket: 10. 0. 1. 80: 1039 Interconexión de Redes

Conexiones TCP del host UNIX 147. 156. 1. 25 (conectado por telnet desde 147.

Conexiones TCP del host UNIX 147. 156. 1. 25 (conectado por telnet desde 147. 156. 1. 219) Netstat -an Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 0 147. 156. 1. 25. 2480 147. 156. 1. 1. 143 tcp 0 0 147. 156. 1. 25. 23 147. 156. 96. 8. 1034 tcp 0 240 147. 156. 1. 25. 23 147. 156. 1. 219. 1036 tcp 0 0 147. 156. 1. 25. 513 147. 156. 1. 3. 1018 tcp 0 0 147. 156. 1. 25. 513 147. 156. 1. 3. 1019 tcp 0 0 147. 156. 1. 25. 2429 147. 156. 1. 15. 6000 t. CP 0 0 147. 156. 1. 25. 2428 147. 156. 1. 15. 6000 tcp 0 0 147. 156. 1. 25. 1022 147. 156. 1. 3. 1002 tcp 0 0 147. 156. 1. 25. 514 147. 156. 1. 3. 1004 tcp 0 0 147. 156. 1. 25. 1023 147. 156. 1. 3. 1005 tcp 0 0 147. 156. 1. 25. 514 147. 156. 1. 3. 1007 tcp 0 0 147. 156. 1. 25. 139 147. 156. 1. 219. 1029 tcp 0 0 *. 143 *. * tcp 0 0 *. 144 *. * tcp 0 0 147. 156. 1. 25. 23 147. 156. 3. 12. 1945 tcp 0 0 *. 139 *. * tcp 0 0 *. 5000 *. * tcp 0 0 *. 25 *. * tcp 0 0 *. 19 *. * tcp 0 0 *. 9 *. * udp 0 0 *. 16522 *. * udp 0 0 *. 16520 *. * udp 0 0 147. 156. 1. 25. 123 *. * udp 0 0 127. 0. 0. 1. 123 *. * udp 0 0 *. 123 *. * 3º Ingeniería Informática (state) ESTABLISHED ESTABLISHED CLOSE_WAIT ESTABLISHED LISTEN LISTEN Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Conexión por ‘Saludo a tres vías’ • Los segmentos pueden llegar duplicados (p. ej.

Conexión por ‘Saludo a tres vías’ • Los segmentos pueden llegar duplicados (p. ej. se pierde la confirmación de un segmento con lo que el emisor lo reenvía) • Con un procedimiento de conexión simple los segmentos duplicados podrían causar problemas. Una sesión entera podría duplicarse. • Para evitar los problemas debidos a duplicados lo se utiliza un procedimiento de conexión más elaborado denominado saludo a tres vías. • El saludo a tres vías se basa en la elección de un número que identifica de forma única cada intento de conexión y que actúa como PIN. De este modo se evita el riesgo de aceptar como válidos segmentos retrasados que pudieran aparecer fruto de conexiones anteriores. 3º Ingeniería Informática Interconexión de Redes

Procedimiento del saludo a tres vías 1. El cliente elige para cada intento de

Procedimiento del saludo a tres vías 1. El cliente elige para cada intento de conexión un número único. El número elegido lo incluye en la petición de conexión que envía al servidor. 2. El servidor, cuando recibe la petición, elige otro número único y envía una respuesta al cliente indicándoselo. 3. El cliente al recibir la respuesta considera establecida la conexión. A continuación envía un tercer mensaje en el que acusa recibo del anterior. El servidor considera establecida la conexión cuando el recibe este tercer mensaje. 3º Ingeniería Informática Interconexión de Redes

Establecimiento de una conexión TCP por saludo a tres vías TCP A TCP B

Establecimiento de una conexión TCP por saludo a tres vías TCP A TCP B CLOSED LISTEN SYN-SENT seq=100, SY N (ISN 100) SYN-RECEIVED 1, SYN, ACK Tiempo =10 seq=300, ack (ISN 300) ESTABLISHED 3º Ingeniería Informática seq=101, ack =301, ACK ESTABLISHED Interconexión de Redes

Saludo a tres vías, conexión simultánea TCP A TCP B CLOSED SYN-SENT (ISN 100)

Saludo a tres vías, conexión simultánea TCP A TCP B CLOSED SYN-SENT (ISN 100) CLOSED seq=100, SY N N seq=300, SY Tiempo SYN-RECEIVED 3º Ingeniería Informática (ISN 300) SYN-RECEIVED seq=100, ack =301, SYN, ACK ESTABLISHED SYN-SENT =101, seq=300, ack SYN, ACK ESTABLISHED Interconexión de Redes

Conexión con SYN duplicado TCP A SYN-SENT TCP B seq=90, SYN 90 (ISN 90)

Conexión con SYN duplicado TCP A SYN-SENT TCP B seq=90, SYN 90 (ISN 90) LISTEN (timeout) CLOSED SYN-SENT seq=100, SY N SYN 100 Tiempo (ISN 100) SYN 90 seq=90, SYN =9 seq=300, ack 1, SYN, ACK SYN-RECEIVED (ISN 300) seq=91, RST SYN 100 ESTABLISHED 3º Ingeniería Informática seq=100, SY N =101, seq=400, ack seq=101, ack SYN, ACK =401, ACK LISTEN SYN-RECEIVED (ISN 400) ESTABLISHED Interconexión de Redes

Conexión en TCP • Los dos primeros segmentos de la conexión se identifican con

Conexión en TCP • Los dos primeros segmentos de la conexión se identifican con el flag SYN. • El número de secuencia es un campo de 32 bits que cuenta bytes en módulo 232 (el contador se da la vuelta cuando llega al valor máximo). • El número de secuencia no empieza normalmente en 0, sino en un valor denominado ISN (Initial Sequence Number) elegido al azar; el ISN sirve de ‘PIN’ en el saludo a tres vías para asegurar la autenticidad de la comunicación. • Una vez establecida la comunicación el ‘seq’ y el ‘ack’ sirven para contar los bytes transmitidos y recibidos. 3º Ingeniería Informática Interconexión de Redes

Conexión en TCP • El ISN es elegido por el sistema (cliente o servidor).

Conexión en TCP • El ISN es elegido por el sistema (cliente o servidor). El estándar sugiere utilizar un contador entero incrementado en 1 cada 4 s aproximadamente. En este caso el contador se da la vuelta (y el ISN reaparece) al cabo de 4 horas 46 min. • El MSL (Maximum Segment Lifetime) típico es de unos 2 minutos, con lo que la probabilidad de que dos ISN coincidan es despreciable. • El mecanismo de selección de los ISN es suficientemente fiable para proteger de coincidencias debidas al azar, pero no es un mecanismo de protección frente a sabotajes. Es muy fácil averiguar el ISN de una conexión e interceptarla suplantando a alguno de los dos participantes. 3º Ingeniería Informática Interconexión de Redes

Desconexión • Puede ser de dos tipos: – Simétrica: la conexión se considera formada

Desconexión • Puede ser de dos tipos: – Simétrica: la conexión se considera formada por dos circuitos simplex y cada host solo puede cortar uno (aquel en el que él emite datos). El cierre de un sentido se interpreta como una ‘invitación’ a cerrar el otro. – Asimétrica: desconexión unilateral (un host la termina en ambos sentidos sin esperar a recibir confirmación del otro). Puede provocar pérdida de información. 3º Ingeniería Informática Interconexión de Redes

Desconexión asimétrica Host 1 Host 2 Tiempo DATOS Conectado DATOS No Conectado DR Datos

Desconexión asimétrica Host 1 Host 2 Tiempo DATOS Conectado DATOS No Conectado DR Datos perdidos No Conectado DR: Disconnect Request (Bit FIN activado) 3º Ingeniería Informática Interconexión de Redes

Desconexión por saludo a tres vías • Se trata de una desconexión simétrica en

Desconexión por saludo a tres vías • Se trata de una desconexión simétrica en la que se tiene una seguridad razonable de que no se pierden datos. • Supone el intercambio de tres mensajes, de forma análoga a la conexión, de ahí su nombre. • En caso de que alguno de los mensajes de desconexión se pierda una vez iniciado el proceso la conexión se termina por timeout. 3º Ingeniería Informática Interconexión de Redes

Desconexión en TCP • Se utiliza el ‘saludo a tres vías’ invitando a la

Desconexión en TCP • Se utiliza el ‘saludo a tres vías’ invitando a la otra parte a cerrar. • Para indicar el cierre se utiliza el flag FIN • La desconexión puede iniciarla cualquiera de los dos TCP (el cliente o el servidor). • Una vez efectuada la desconexión el host que inició el proceso está un cierto tiempo a la espera por si aparecen segmentos retrasados 3º Ingeniería Informática Interconexión de Redes

Desconexión a tres vías, caso normal TCP A TCP B ESTABLISHED FIN-WAIT-1 ESTABLISHED seq

Desconexión a tres vías, caso normal TCP A TCP B ESTABLISHED FIN-WAIT-1 ESTABLISHED seq = 100, ac k=300, FIN, A CK CLOSE-WAIT = seq=300, ack 101 ACK FIN-WAIT-2 =101 seq=300, ack , FIN, ACK LAST-ACK TIME-WAIT seq=101, ack 2 MSL =301, ACK CLOSED MSL: Maximum Segment Lifetime (normalmente 2 minutos) 3º Ingeniería Informática Interconexión de Redes

Desconexión a tres vías, casos anormales Host 1 Envía FIN y arranca timer Libera

Desconexión a tres vías, casos anormales Host 1 Envía FIN y arranca timer Libera conexión Envía ACK Host 2 FIN Envía FIN y arranca timer ACK Pérdida de ACK final Host 1 (timeout) envía FIN y arranca timer (N timeouts) Libera conexión FIN Libera conexión Envía ACK Host 2 FIN FIN ACK Host 1 Envía FIN y arranca timer FIN (timeout) envía FIN y arranca timer FIN (Timeout) libera conexión Envía FIN y arranca timer Libera conexión Pérdida de respuesta FIN Host 2 Pérdida de todo menos primer FIN 3º Ingeniería Informática Envía FIN y arranca timer (Timeout) envía FIN y arranca timer (Timeout) libera conexión Envía FIN y arranca timer Host 1 (N timeouts) Libera conexión Host 2 Conectado Pérdida de todos los FIN de host 1 Interconexión de Redes

3º Ingeniería Informática Interconexión de Redes

3º Ingeniería Informática Interconexión de Redes

Números de secuencia y flags • El número de secuencia es el que corresponde

Números de secuencia y flags • El número de secuencia es el que corresponde al primer byte enviado en ese segmento. • TCP incrementa el número de secuencia de cada segmento según los bytes que tenía el segmento anterior, con una sola excepción: Los flags SYN y FIN, cuando están puestos, incrementan en 1 el número de secuencia. • Esto permite que se pueda acusar recibo de un segmento SYN o FIN sin ambigüedad. • Podemos considerar que los segmentos que tienen puesto el flag SYN o FIN lleva un byte de datos ‘virtual’ • La presencia del flag ACK no incrementa el número de secuencia 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Intercambio de datos TCP aplicación • Aplicación TCP: la aplicación envía los datos a

Intercambio de datos TCP aplicación • Aplicación TCP: la aplicación envía los datos a TCP cuando quiere (siempre y cuando TCP tenga espacio libre en el buffer de emisión) • TCP Aplicación: la aplicación lee del buffer de recepción de TCP cuando quiere y cuanto quiere. Excepción: datos urgentes • Para TCP los datos de la aplicación son un flujo continuo de bytes, independientemente de la separación que pueda tener la aplicación (registros, etc. ). Es responsabilidad de la aplicación asegurarse que esa separación (si existe) se mantendrá después de transmitir los datos. 3º Ingeniería Informática Interconexión de Redes

Intercambio de datos TCP • El TCP emisor manda los datos cuando quiere. Excepción:

Intercambio de datos TCP • El TCP emisor manda los datos cuando quiere. Excepción: datos ‘Pushed’ • El TCP emisor decide el tamaño de segmento según sus preferencias. Al inicio de la conexión se negocia el MSS (Maximum Segment Size) • Cada segmento ha de viajar en un datagrama • Normalmente TCP intenta agrupar los datos para que los segmentos tengan la longitud máxima, reduciendo así el overhead debido a cabeceras y proceso de segmentos. • El TCP emisor puede aplicar la técnica de descubrimiento de la MTU del trayecto (‘Path MTU Discovery’, MTU = Maximum Transfer Unit) para ajustar el MSS al tamaño óptimo para esa comunicación. 3º Ingeniería Informática Interconexión de Redes

Intercambio de datos TCP Aplicación y TCP Aplicación origen Escribe TCP emisor Aplicación destino

Intercambio de datos TCP Aplicación y TCP Aplicación origen Escribe TCP emisor Aplicación destino Lee 2048 Bytes Buffer 512 B 1024 Bytes Buffer Envía 512 B 1024 Bytes 512 B TCP receptor (MSS 512 Bytes) 3º Ingeniería Informática Interconexión de Redes

Netstat -p tcp: 978740 packets sent 949215 data packets (1306073886 bytes) 544 data packets

Netstat -p tcp: 978740 packets sent 949215 data packets (1306073886 bytes) 544 data packets (329353 bytes) retransmitted 10186 ack-only packets (8786 delayed) 0 URG only packets 188 window probe packets 17669 window update packets 938 control packets 432947 packets received 251266 acks (for 863756680 bytes) 1294 duplicate acks 0 acks for unsent data 76150 packets (68148251 bytes) received in-sequence) 174 completely duplicated packets (57347 bytes) 15 packets with some dup. data (34 bytes duped) 341 out-of-order packets (4224 bytes) 23 packets (0 bytes) of data after window 0 window probes 23158 window update packets 1 packet received after close 0 discarded for bad checksums 0 discarded for bad header offset fields 0 discarded because packet too short 397 connection requests 414 connection accepts 629 connections established (including accepts) 848 connections closed (including 38 drops) 179 embryonic connections dropped 313267 segments updated rtt (of 314002 attempts) 347 retransmit timeouts 2 connections dropped by rexmit timeout 190 persist timeouts 54 keepalive timeouts 53 keepalive probes sent 1 connection dropped by keepalive 3º Ingeniería Informática Interconexión de Redes

Gestión de buffers y Control de Flujo • El TCP receptor informa en cada

Gestión de buffers y Control de Flujo • El TCP receptor informa en cada segmento al emisor del espacio que le queda libre en el buffer para esa comunicación. Para ello usa el campo tamaño de ventana. • Anunciando una ventana cero el receptor puede bloquear al emisor, y ejercer así control de flujo. • La ventana anunciada es un espacio que el TCP receptor reserva para esa comunicación en su buffer. • Tanto los números de secuencia como los tamaños de ventana cuentan bytes. 3º Ingeniería Informática Interconexión de Redes

Gestión de buffers y Control de flujo Emisor Buffer Receptor 0 La aplicación escribe

Gestión de buffers y Control de flujo Emisor Buffer Receptor 0 La aplicación escribe 2 KB Seq = 0 Win = 2048 , 8 4 0 2 = k c A La aplicación escribe 3 KB Emisor Bloqueado Vacío 2 KB Seq = 2048 Ack = 4096, Win = 0 in = 2048 W Ack = 4096, El emisor puede enviar hasta 2 KB 4 K 1 K Lleno La aplicación lee 2 KB Seq = 4096 3 KB 3º Ingeniería Informática Interconexión de Redes

Gestión de buffers y Control de Flujo • El TCP receptor nunca debería retirar

Gestión de buffers y Control de Flujo • El TCP receptor nunca debería retirar el espacio en buffer que ya ha anunciado al emisor. • Sin embargo TCP debe estar preparado por si el del otro lado lo hace (esto se denomina ‘contraer la ventana’). 3º Ingeniería Informática Interconexión de Redes

Reenvío de segmentos • En caso de pérdida de un paquete en la red

Reenvío de segmentos • En caso de pérdida de un paquete en la red el segmento TCP no llegará a su destino • Cada TCP cuando envía un segmento espera recibir el ACK; si este no llega dentro de un tiempo razonable reenvía el segmento. • Si se enviaron varios segmentos y se pierde uno se puede hacer dos cosas: – Enviar solo ese segmento (repetición selectiva) – Enviar todos los segmentos a partir de ese (retroceso n) • Lo normal es utilizar retroceso n (Por defecto) 3º Ingeniería Informática Interconexión de Redes

Control de flujo y números de secuencia Caso normal, sin pérdidas Host 1 SYN

Control de flujo y números de secuencia Caso normal, sin pérdidas Host 1 SYN Host 2 Seq=1000, Win=4000 Seq=1500, Ack=1001, Win=4000 1000 bytes Seq=1001, Ack=1501, Win=4000 Seq=1501, Ack=2001, Win=3000 1000 bytes Seq=2001, Ack=2501, Win=3000 1000 bytes Seq=3001, Ack=2501, Win=3000 1000 bytes Seq=4001, Ack=2501, Win=3000 Seq=2501, Ack=5001, Win=0 Bloqueado Seq=2501, Ack=5001, Win=2000 1000 bytes SYN 1000 bytes Aplicación lee 2000 bytes Seq=5001, Ack=2501, Win=3000 Seq=2501, Ack=6001, Win=3000 3º Ingeniería Informática Interconexión de Redes

Pérdida de un paquete Retransmisión con retroceso n Host 1 SYN Host 2 Seq=1000,

Pérdida de un paquete Retransmisión con retroceso n Host 1 SYN Host 2 Seq=1000, Win=4000 Seq=1500, Ack=1001, Win=4000 1000 bytes Seq=1001, Ack=1501, Win=4000 Seq=1501, Ack=2001, Win=3000 Timeout 1000 bytes Seq=2001, Ack=2501, Win=3000 1000 bytes Seq=3001, Ack=2501, Win=3000 1000 bytes Seq=4001, Ack=2501, Win=3000 Bloqueado Seq=2501, Ack=3001, Win=2000 1000 bytes SYN 1000 bytes Ignorado Seq=3001, Ack=2501, Win=3000 Seq=4001, Ack=2501, Win=3000 Seq=2501, Ack=5001, Win=2000 Aplicación lee 2000 bytes Seq=5001, Ack=2501, Win=3000 Seq=2501, Ack=6001, Win=3000 3º Ingeniería Informática Interconexión de Redes

Pérdida de un paquete Retransmisión con repetición selectiva Host 1 SYN Seq=1000, Win=4000 Seq=1500,

Pérdida de un paquete Retransmisión con repetición selectiva Host 1 SYN Seq=1000, Win=4000 Seq=1500, Ack=1001, Win=4000 1000 bytes Timeout 1000 bytes Seq=2001, Ack=2501, Win=3000 1000 bytes Seq=3001, Ack=2501, Win=3000 Bloqueado 1000 bytes Seq=4001, Ack=2501, Win=3000 Seq=2501, Ack=3001, Win=1000 Seq=3001, Ack=2501, Win=3000 Seq=2501, Ack=5001, Win=2000 1000 bytes SYN Seq=1001, Ack=1501, Win=4000 Seq=1501, Ack=2001, Win=3000 1000 bytes Host 2 1000 bytes Aplicación lee 2000 bytes Seq=5001, Ack=2501, Win=3000 Seq=2501, Ack=6001, Win=3000 3º Ingeniería Informática Interconexión de Redes

Intercambio de datos: casos excepcionales • Datos ‘Pushed’ (bit PSH) – La aplicación pide

Intercambio de datos: casos excepcionales • Datos ‘Pushed’ (bit PSH) – La aplicación pide al TCP emisor que envíe esos datos lo antes posible. El TCP receptor los pondrá a disposición de la aplicación de inmediato, para cuando ésta le pida datos. Ejemplo: telnet. • Datos Urgentes (bit URG y Urgent Offset) – Los datos se quieren entregar a la aplicación remota sin esperar a que esta los pida. Ejemplo: abortar un programa con CTRL-C en una sesión telnet 3º Ingeniería Informática Interconexión de Redes

Timer de Persistencia • Mientras la ventana está cerrada el TCP emisor puede enviar

Timer de Persistencia • Mientras la ventana está cerrada el TCP emisor puede enviar de vez en cuando un segmento con un byte de datos; esto provoca el envío de un ACK por parte del receptor. • Evita el bloqueo que se podría producir en caso de pérdida de un segmento anunciando una ventana mayor que cero • La frecuencia con que el TCP emisor envía los reintentos se fija en el ‘Timer de Persistencia’. 3º Ingeniería Informática Interconexión de Redes

Timer de persistencia Tiempo TCP A 100 bytes (501 -600) TCP B (seq=501)(ac k=401)(ctl=A

Timer de persistencia Tiempo TCP A 100 bytes (501 -600) TCP B (seq=501)(ac k=401)(ctl=A CK)(datos) tl=ACK)(W= )(ack=601)(c (seq=401 C k=601)(ctl=A c a )( 1 0 4 = q e (s 0) K)(W=400) Buffer lleno Datos leídos por la aplicación Timer de Persistencia Bloqueado 1 byte (601) (seq=601)(ac k=401)(ctl=A CK)(datos) W=(399) )( K C A = tl c )( 2 k=60 (seq=401)(ac 3º Ingeniería Informática Datos puestos en buffer para la aplicación Interconexión de Redes

Mensaje y timer de keepalive • Evita que se queden conexiones ‘medio abiertas’ •

Mensaje y timer de keepalive • Evita que se queden conexiones ‘medio abiertas’ • Se implementa reenviando el último byte transmitido en un segmento; el receptor descarta el dato pero devuelve un ACK • Si se envían varios mensajes de keepalive sin respuesta se considera que se trata de una conexión medio abierta y se cierra. • Para declarar una conexión medio abierta se espera a veces hasta 2 horas. • El tiempo de envío de los mensajes se regula con el timer de keepalive. • El keepalive no requiere modificaciones en el TCP receptor. 3º Ingeniería Informática Interconexión de Redes

Mensajes de keepalive Tiempo TCP Servidor 100 bytes (501 -600) TCP Cliente (seq=501)(ac k=401)(ctl=A

Mensajes de keepalive Tiempo TCP Servidor 100 bytes (501 -600) TCP Cliente (seq=501)(ac k=401)(ctl=A CK)(datos) k=601)( (seq=401)(ac ctl=ACK) Datos puestos en buffer para la aplicación Timer Keepalive 1 byte (600) (seq=600)(ac k=401)(ctl=A k=601)( (seq=401)(ac 3º Ingeniería Informática CK)(datos) ctl=ACK) Datos duplicados descartados Interconexión de Redes

Cabeceras TCP del inicio de una conexión Telnet 1. SYN TCP: --- TCP header

Cabeceras TCP del inicio de una conexión Telnet 1. SYN TCP: --- TCP header --TCP: Source port = 2345 TCP: Dest port = 23 (Telnet) TCP: Initial seq. Number = 16421121 TCP: TCP: Data offset = 24 bytes Flags = 02 (SYN) Window = 2048 Checksum = F 2 DA (correct) Options follow Max segment size = 1460 3. ACK TCP: --- TCP header --TCP: Source port = 2345 TCP: Dest port = 23 (Telnet) TCP: Seq. Number = 16421122 TCP: Acknowledgment Number = 390272002 TCP: Data offset = 20 bytes TCP: Flags = 10 (ACK) TCP: Window = 2048 TCP: Checksum = DF 43 (correct) TCP: No TCP options 3º Ingeniería Informática 2. SYN TCP: --- TCP header -TCP: Source port = 23 (Telnet) TCP: Dest port = 2345 TCP: Initial seq. Number = 390272001 TCP: Acknowledgment Number = 16421122 TCP: Data offset = 24 bytes TCP: Flags = 12 (ACK, SYN) TCP: Window = 4096 TCP: Checksum = C 13 A (correct) TCP: Options follow TCP: Max segment size = 1024 4. DATA TCP: --- TCP header --TCP: Source port = 23 (Telnet) TCP: Dest port = 2345 TCP: Seq. Number = 390272002 TCP: Acknowledgment Number = 16421122 TCP: Data offset = 20 bytes TCP: Flags = 18 (ACK, PSH) TCP: Window = 4096 TCP: Checksum = 9 FEF (correct) TCP: No TCP options TCP: [12 byte(s) of data] Interconexión de Redes

Intercambio de segmentos del caso anterior Cliente Servidor SEQ=1642 1 121, SYN YN 6421122,

Intercambio de segmentos del caso anterior Cliente Servidor SEQ=1642 1 121, SYN YN 6421122, S =1 2001, ACK 7 2 0 9 3 = Q SE TCP Conectado SEQ=1642 1122, ACK =39027200 2 =16421122 02, ACK Q=3902720 SE 3º Ingeniería Informática TCP Conectado El servidor envía la secuencia: UNIX Login: Interconexión de Redes

Cliente El usuario teclea una ‘C’ Servidor SEQ=92, AC K=109, Dato s =C atos

Cliente El usuario teclea una ‘C’ Servidor SEQ=92, AC K=109, Dato s =C atos =C D , 3 9 = K C A SEQ=109, El TCP envía un ACK del segmento recibido El servidor telnet procesa el mensaje y devuelve una ‘C’; como la respuesta llega con rapidez en el mismo segmento se envían los datos de vuelta y el ACK SEQ=93, AC K=110 Funcionamiento de TCP en Telnet con eco remoto cuando el host responde rápidamente a los mensajes 3º Ingeniería Informática Interconexión de Redes

Cliente El usuario teclea una ‘C’ Servidor SEQ=92, AC K=109, Dato s =C CK=93

Cliente El usuario teclea una ‘C’ Servidor SEQ=92, AC K=109, Dato s =C CK=93 A , 9 0 1 = Q E S atos=C =93, D K C A , 9 0 1 = SEQ El TCP envía un ACK del segmento recibido SEQ=93, AC K=110 El TCP receptor, al ver que no se produce respuesta en un tiempo razonable, genera un mensaje de ACK Cuando el servidor telnet ha procesado el mensaje devuelve otro segmento con el carácter ‘C’ Funcionamiento de TCP en Telnet con eco remoto cuando el host responde con lentitud a los mensajes 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Baja eficiencia en TCP • El funcionamiento eficiente de TCP aconseja enviar segmentos del

Baja eficiencia en TCP • El funcionamiento eficiente de TCP aconseja enviar segmentos del tamaño máximo permitido • Cuando la aplicación emisora genera los datos en pequeñas dosis (telnet con eco remoto por ejemplo) se da un problema de eficiencia que se resuelve con el Algoritmo de Nagle. • Si la aplicación receptora los recoge byte a byte también se puede dar una baja eficiencia; esto se conoce como síndrome de la ventana tonta y se resuelve con la Solución de Clark. 3º Ingeniería Informática Interconexión de Redes

Algoritmo de Nagle • Cuando la aplicación envía datos en pequeños grupos TCP. •

Algoritmo de Nagle • Cuando la aplicación envía datos en pequeños grupos TCP. • Envía el primero y retiene los demás hasta recibir el ACK: – Por cada ACK recibido envía un segmento con los bytes que hubiera pendientes, y así sucesivamente. • También se envía un segmento cuando los datos acumulados igualan o superan el MSS (tamaño máximo de un segmento), o la mitad de la ventana. • El mecanismo es autoadaptativo, pues cuanto más cargada esté la red mas tardarán los ACK y mas agrupados irán los datos • Se puede aplicar a datos pushed en caso necesario 3º Ingeniería Informática Interconexión de Redes

Síndrome de la ventana tonta 1. La aplicación que envía datos los genera rápidamente

Síndrome de la ventana tonta 1. La aplicación que envía datos los genera rápidamente 2. La aplicación receptora los recupera lentamente, un byte cada vez 3. El buffer del TCP receptor se llena 4. El TCP receptor notifica al emisor que su ventana está cerrada 5. La aplicación receptora lee un byte 6. EL TCP receptor envía un ACK al emisor para anunciarle que dispone de un byte libre 7. El TCP emisor envía un segmento con un byte de datos 8. Volvemos al punto 3 3º Ingeniería Informática Interconexión de Redes

Síndrome de la ventana tonta Buffer receptor lleno La aplicación lee un byte Un

Síndrome de la ventana tonta Buffer receptor lleno La aplicación lee un byte Un byte libre Cabecera IP-TCP Se envía segmento de actualización de ventana 40 Bytes Se recibe segmento con un byte de datos Cabecera IP-TCP 40 Bytes 1 Byte 3º Ingeniería Informática Buffer receptor lleno Interconexión de Redes

Solución de Clark (RFC 813) • El TCP receptor solo debe notificar una nueva

Solución de Clark (RFC 813) • El TCP receptor solo debe notificar una nueva ventana cuando tenga una cantidad razonable de espacio libre. • Razonable significa: – Un MSS (segmento del tamaño máximo), o – La mitad del espacio disponible en el buffer. 3º Ingeniería Informática Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Control de congestión • Por medio del tamaño de ventana el receptor puede dosificar

Control de congestión • Por medio del tamaño de ventana el receptor puede dosificar al emisor en función del buffer disponible. Esto es control de flujo. • Pero puede que el receptor tenga espacio de sobra pero la red esté congestionada. En este caso el TCP debe regularse para no inyectar demasiado tráfico, a pesar de que la ventana disponible sea muy grande. Esto es control de congestión. 3º Ingeniería Informática Interconexión de Redes

Control de congestión en TCP • Cuando hay congestión TCP ha de reducir el

Control de congestión en TCP • Cuando hay congestión TCP ha de reducir el flujo de transmisión • El mecanismo para detectarla es implícito, por la pérdida de segmentos. Cuando ocurre TCP baja el ritmo de trasmisión. • Se presupone que la red es altamente fiable a nivel físico y que las pérdidas se deben a congestión únicamente. Cuando no es así (redes con errores) bajar el ritmo es contraproducente. • Además de la ventana de control de flujo (dictada por el receptor y transmitida en la cabecera TCP) el emisor tiene una ventana de control de congestión, que ajusta a partir de los segmentos perdidos. En cada momento se usa la más pequeña de ambas. • El mecanismo de control de congestión de TCP se denomina slow-start (arranque lento) y fue diseñado por Van Jacobson en los años 80. 3º Ingeniería Informática Interconexión de Redes

Slow Start (primera fase) • Inicialmente la ventana de congestión tiene el tamaño de

Slow Start (primera fase) • Inicialmente la ventana de congestión tiene el tamaño de un MSS (Maximum Segment Size) • Por cada segmento enviado con éxito la ventana se amplía en un MSS • En la práctica esto supone un crecimiento exponencial (en potencias de dos) • Si la ventana de congestión supera a la de control de flujo se aplica ésta con lo cual aquella deja de crecer 3º Ingeniería Informática Interconexión de Redes

Funcionamiento de slow start, fase 1 Ventana Emisor 1 MSS SEG 1 Receptor ACK

Funcionamiento de slow start, fase 1 Ventana Emisor 1 MSS SEG 1 Receptor ACK 1 2 MSS 4 MSS 8 MSS 3º Ingeniería Informática SEG 2 SEG 3 SEG 4 SEG 5 SEG 6 SEG 7 SEG 8 SEG 9 SEG 10 SEG 11 SEG 12 SEG 13 SEG 14 SEG 15 ACK 2 ACK 3 Con MSS = 1 KB en 7 iteraciones se llega a 64 KB, tamaño máximo de la ventana ACK 4 ACK 5 ACK 6 ACK 7 ACK 8 ACK 9 ACK 10 ACK 11 ACK 12 ACK 13 ACK 14 ACK 15 Interconexión de Redes

Slow start (segunda fase) • Cuando se pierde un segmento: – La ventana de

Slow start (segunda fase) • Cuando se pierde un segmento: – La ventana de congestión vuelve a su valor inicial. – Se fija un ‘umbral de peligro’ en un valor igual a la mitad de la ventana que había cuando se produjo la pérdida. – La ventana de congestión crece como antes hasta el umbral de peligro; a partir de ahí crece en sólo un segmento cada vez 3º Ingeniería Informática Interconexión de Redes

Funcionamiento de slow start, fase 2 Ventana Emisor Receptor 1 MSS SEG 15 ACK

Funcionamiento de slow start, fase 2 Ventana Emisor Receptor 1 MSS SEG 15 ACK 15 2 MSS SEG 16 SEG 17 ACK 16 ACK 17 4 MSS SEG 18 SEG 19 SEG 20 SEG 21 ACK 18 ACK 19 ACK 20 ACK 21 5 MSS SEG 22 SEG 23 SEG 24 SEG 25 SEG 26 ACK 22 ACK 23 ACK 24 ACK 25 ACK 26 6 MSS SEG 27 SEG 28 SEG 29 SEG 30 SEG 31 SEG 32 ACK 27 ACK 28 ACK 29 ACK 30 ACK 31 ACK 32 Interconexión de Redes 3º Ingeniería Informática ACK del segmento 15 perdido y retransmitido

Timer de retransmisión • Debe ser adecuado para la comunicación: – Si es excesivo

Timer de retransmisión • Debe ser adecuado para la comunicación: – Si es excesivo se esperará innecesariamente – Si es muy corto se harán reenvíos innecesarios • Como la fluctuación es muy grande se utilizan mecanismos autoadaptativos. • A partir de los ACK se mide el tiempo de ida y vuelta o Round Trip Time (RTT) • La estimación de este timer es crucial para el correcto funcionamiento del ‘slow-start’. 3º Ingeniería Informática Interconexión de Redes

Timer de retransmisión • El valor medio de RTT (MRTT) se calcula por la

Timer de retransmisión • El valor medio de RTT (MRTT) se calcula por la fórmula: MRTTn = MRTTn-1 + (1 - ) RTT donde: RTT: Valor más reciente medido de RTT : Factor de amortiguación. Normalmente 7/8 • Para deducir el timeout a partir de MRTT tenemos que tener una idea de la dispersión de los valores. Para eso calculamos la desviación estándar como: Dn = Dn-1 + (1 - ) | MRTTn-1 – RTT donde suele valer 3/4. • El timeout se calcula normalmente como MRTT + 4*D 3º Ingeniería Informática Interconexión de Redes

Evolución de MRTT, D y timeout de retransmisión en función del valor de RTT

Evolución de MRTT, D y timeout de retransmisión en función del valor de RTT N MRTTn-1 0 3º Ingeniería Informática RTTn MRTTn 230, 00 Dn-1 Dn Timeout 64 494 1 230, 00 294 238, 00 264 241, 25 64 54, 5 459, 25 3 241, 25 340 253, 59 54, 5 65, 56 515. 83 4 253, 59 246 252, 64 65, 56 51, 07 456. 92 5 252, 64 201 246, 19 51, 07 51, 21 451. 27 6 246, 19 340 257, 92 51, 21 61, 86 505. 36 7 257, 92 272 259, 68 61, 86 49, 92 459, 36 8 259, 68 311 266, 10 49, 92 50, 27 467, 18 9 266, 10 282 268, 09 50, 27 41, 68 434, 81 10 268, 09 246 265, 33 41, 68 36, 78 412, 45 11 265, 33 304 270, 16 36, 78 37, 25 419, 16 12 270, 16 308 274, 89 37, 25 37, 40 424, 49 13 274, 89 230 269, 28 37, 40 39, 27 426, 36 14 269, 28 328 276, 62 39, 27 44, 13 453, 14 Interconexión de Redes

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP

Sumario • Aspectos generales del nivel de transporte • Protocolo UDP • Protocolo TCP – – – Multiplexación Conexión/Desconexión Intercambio de datos y control de flujo Casos de baja eficiencia en TCP Control de congestión Opciones de TCP 3º Ingeniería Informática Interconexión de Redes

Opciones y extensiones de TCP • La opción más habitual es el intercambio de

Opciones y extensiones de TCP • La opción más habitual es el intercambio de valores de MSS entre los dos comunicantes al inicio de la conexión. • Otras opciones son: – Factor de escala, para ventanas de hasta 1 GB (RFC 1323). – Repetición selectiva y acuse de recibo negativo (NAK) (RFC 1106). • Se suelen negociar en el segmento de inicio de la conexión (el que lleva el bit SYN puesto). 3º Ingeniería Informática Interconexión de Redes

Comparación TCP - UDP Función Transporte Multiplexación Detección de errores TCP Sí Sí Sí

Comparación TCP - UDP Función Transporte Multiplexación Detección de errores TCP Sí Sí Sí UDP Sí Sí Opcional(*) Corrección de errores Control de flujo Control de congestión Establecimiento/ terminación de conexión Sí Sí No No (*) Obligatorio en IPv 6 3º Ingeniería Informática Interconexión de Redes

Proceso de una trama Ethernet TCP/IP recibida por un host Depositar contenido en buffer

Proceso de una trama Ethernet TCP/IP recibida por un host Depositar contenido en buffer para proceso en puerto destino y devolver ACK (TCP) No Sí Descartar y devolver ACK Sí ¿Puerto destino reconocido? No Sí ¿Checksum TCP/UDP correcto? No Descartar y devolver ICMP destino inacc. ¿Datos duplicados (TCP)? Proceso TCP/UDP Sí ¿Protocolo reconocido? Proceso IP Driver Tarjeta Sí ¿IP destino reconocida? No Sí ¿Checksum IP correcto? No Sí ¿MAC destino reconocida? No Sí ¿CRC correcto? Tarjeta de red No Sí ¿Trama long. entera 64 1518? No No Descartar CPU Descartar y devolver ICMP destino inacc. Descartar Tarjeta red Descartar Trama recibida 3º Ingeniería Informática Interconexión de Redes