ul rc_cap7_el nivel de transporte en internet_

70
1341: Redes de Computadoras Facultad de Ingeniería de Sistemas Sesión: 7 Ing. José C. Benítez P. El Nivel de Transporte en Internet

Upload: jcbpperu

Post on 14-Aug-2015

72 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Ul rc_cap7_el nivel de transporte en internet_

1341: Redes de Computadoras

Facultad de Ingeniería de Sistemas

Sesión: 7

Ing. José C. Benítez P.

El Nivel de Transporte en Internet

Page 2: Ul rc_cap7_el nivel de transporte en internet_

Redes de Computadoras 2

Sesión 7. Temas

El Nivel de Transporte en Internet

� 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

� Redes LFN, factor de escala y opciones de TCP

Page 3: Ul rc_cap7_el nivel de transporte en internet_

3

Introducción

Redes de Computadoras

Modelos OSI, TCP/IP e Hibrido:

Aplicación

Presentación

Sesión

Transporte

Red

Enlace

Física

Aplicación

Transporte

Internet

Host-red

L5: Aplicación

L4: Transporte

L3: Red

L2: Enlace

LLC

MAC

L1: Física

WAN LAN

Hardware

Firmware Software

Sist. Operativo

Progr. de usuario

Page 4: Ul rc_cap7_el nivel de transporte en internet_

4

Funciones del Nivel de Transporte

Redes de Computadoras

� Se encarga del transporte de los datos extremo a extremo (host a host).

� Realiza la comunicación de forma transparente al medio físico.

� Usa 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.

Page 5: Ul rc_cap7_el nivel de transporte en internet_

5

Funciones del Nivel de Transporte

Redes de Computadoras

� 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), TP4 (OSI)

� No orientado a conexión:

• equivale al servicio que ofrece IP, pero a nivel de transporte.

• Ej.: UDP (Internet), TP0 (OSI)

Page 6: Ul rc_cap7_el nivel de transporte en internet_

6

Tráfico TCP vs UDP en Internet

Redes de Computadoras

TCP: 80%UDP: 10%

Otros: 10%

Page 7: Ul rc_cap7_el nivel de transporte en internet_

7

Especificación del protocolo de transporte

Redes de Computadoras

32 bits

Versión Lon. Cab. DS (DiffServ) Longitud Total

Identificación Res. DF MF Desplazam. de Fragmento

Tiempo de vida (TTL) Protocolo Checksum

Dirección de origen

Dirección de destino

Opciones (de 0 a 40 octetos)

Valor Protocolo

1 ICMP

4 IP

6 TCP

17 UDP

89 OSPF

Esto son solo algunos ejemplos de los valores que puede tener el campo protocolo

IP v4Header

Page 8: Ul rc_cap7_el nivel de transporte en internet_

8

Protocolo UDP (User Datagram Protocol)

Redes de Computadoras

� 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.

Page 9: Ul rc_cap7_el nivel de transporte en internet_

9

Protocolo UDP

Redes de Computadoras

� 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

Page 10: Ul rc_cap7_el nivel de transporte en internet_

10

La cabecera UDP

Redes de Computadoras

32 bits

Dirección IP de origen

Dirección IP de destino

00000000 00010001 Long. Datagrama UDP

Puerto de origen Puerto de destino

Longitud datagrama UDP Checksum

Pseudo cabecera

Cabecera

La pseudo cabecera:• 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

32 bits

Page 11: Ul rc_cap7_el nivel de transporte en internet_

11

Multiplexación

Redes de Computadoras

� 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

Page 12: Ul rc_cap7_el nivel de transporte en internet_

12

Multiplexación

Redes de Computadoras

Ethertype 0800 DATAGRAMA IP CRC

Nivel de enlace

Nivel de red

Nivel de transporte

Nivel de aplicación

Prot. 17 DATAGRAMA UDP

P. dest. 13 DATOS APLICACIÓN

NTP(Puerto 123)

DNS(Puerto 53)

Daytime(Puerto 13)

Cabecera MAC Ethernet

Cabecera IP

Cabecera UDP

Checksum

Checksum

CRC

Múltiples instancias (una por interfaz)

Una instancia IP (puede haber otros

protocolos)

Dos instancias(TCP y UDP)

Múltiples instancias (una o varias por

protocolo)

Page 13: Ul rc_cap7_el nivel de transporte en internet_

13

Conexión UDP de un cliente contra un servidor

Redes de Computadoras

Cliente IP 10.0.1.50

Servidor DaytimeIP 10.0.1.25

Port13

Port 1038

Socket: 10.0.1.25.13

Mensaje UDPp.o. 1038, p.d. 13

Mensaje UDPp.o. 13, p.d. 1038

Socket: 10.0.1.50.1038

Page 14: Ul rc_cap7_el nivel de transporte en internet_

14

Cabeceras IP y Datagrama UDP en una petición/respuesta SNMP

Redes de Computadoras

IP: ----- IP Header -----

IP:

IP: Version=4, header length=20 bytes

IP: DiffServ = 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 = 2A13 (correct)

IP: Source address = [128.1.1.1]

IP: Destination address = [128.1.1.10]

IP: No options

IP:

UDP: ----- UDP Header -----

UDP:

UDP: Source Port = 1227

UDP: Destination port = 161 (SNMP)

UDP: Length = 111

UDP: No checksum

UDP:

IP: ----- IP Header -----

IP:

IP: Version=4, header length=20 bytes

IP: DiffServ = 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:

UDP: Source Port = 161 (SNMP)

UDP: Destination port = 1227

UDP: Length = 140

UDP: Checksum = 4D4F (correct)

UDP:

Page 15: Ul rc_cap7_el nivel de transporte en internet_

15

TCP (Transmission Control Protocol)

Redes de Computadoras

� El protocolo TCP ofrece el servicio de transporte orientado a conexión (CONS) en Internet.

� Está diseñado para ofrecer un transportefiable 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.

Page 16: Ul rc_cap7_el nivel de transporte en internet_

16

Servicio orientado a conexión

Redes de Computadoras

� Los SOC 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 SOC se suele utilizar un modelo cliente servidor, 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, etc.

Page 17: Ul rc_cap7_el nivel de transporte en internet_

17

Funciones de TCP

Redes de Computadoras

� Multiplexar el nivel de aplicación (port).

� Controlar errores;

• Retransmitiendo segmentos perdidos o erróneos.

• Eliminando duplicados.

� Establecer y terminar conexiones.

� Gestionar los buffers y ejercer control de flujo de forma eficiente.

� Gestionar el intercambio de datos con las aplicaciones.

� Efectuar control de congestión.

Page 18: Ul rc_cap7_el nivel de transporte en internet_

18

La cabecera TCP

Redes de Computadoras

Flags: CWR: Congestion Window ReducedECE: ECN Echo (ECN=Explicit Congestion Notification) URG: el segmento contiene datos urgentesACK: el campo número de acuse de recibo tiene sentidoPSH: el segmento contiene datos ‘Pushed’RST: ha habido algún error y la conexión debe cerrarseSYN: indica el inicio de una conexiónFIN: indica el final de una conexión

Relleno

Flags(8 bits)

Resv.(4 bits)

Puntero datos urgentes

Tamaño ventana

Puerto de destino

Opciones

Checksum

L. Cab.(4 bits)

Número de acuse de recibo

Número de secuencia

Puerto de origen

32 bits

20bytes

Page 19: Ul rc_cap7_el nivel de transporte en internet_

19

La pseudocabecera TCP

Redes de Computadoras

� 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

Dirección IP de origen

Dirección IP de destino

00000000 00000110 Long. Segmento TCP

32 bits

Page 20: Ul rc_cap7_el nivel de transporte en internet_

20

Multiplexación

Redes de Computadoras

� 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’

� 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)

Page 21: Ul rc_cap7_el nivel de transporte en internet_

21

Algunos servicios ‘bien conocidos’

Redes de Computadoras

Servicio Puerto TCP UDP

DayTime 13 X X

FTP 21 X

SSH 22 X

TelNet 23 X

SMTP 25 X

Domain (DNS) 53 X X

BOOTP 67 X

TFTP 69 X

HTTP 80 X

POP3 110 X

NTP 123 X

SNMP 161 X

LDAP 389 X

HTTPS 443 X

Page 22: Ul rc_cap7_el nivel de transporte en internet_

22

Multiplexación

Redes de Computadoras

Nivel de enlace

Nivel de red

Nivel de transporte

Nivel de aplicación

Ethertype (0800) DATAGRAMA IP CRC

Prot. (6) SEGMENTO TCP

P. dest. (23) DATOS APLICACIÓN

SMTP(Puerto 25)

Telnet(Puerto 23)

FTP(Puerto 21)

Cabecera MAC Ethernet

Cabecera IP

Cabecera TCP

Checksum

Checksum

HTTP(Puerto 80)

HTTP(Puerto 400)

Múltiples instancias (una por interfaz)

Dos instancias(TCP y UDP)

Múltiples instancias (una o varias por

protocolo)

Una instancia IP (puede haber otros

protocolos)

Page 23: Ul rc_cap7_el nivel de transporte en internet_

23

Conexión de un cliente a un servidor web

Redes de Computadoras

Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto

1038El computador

ejecuta el programa Explorer:

www.web.com

Socket: 10.0.2.47.1038

IP 10.0.2.47IP 10.0.1.25

Puerto 80

Socket 10.0.1.25.80

(rojo = ‘LISTEN’)

Servidor Web

Page 24: Ul rc_cap7_el nivel de transporte en internet_

24

Conexión simultánea de un computador a dos servidores web

Redes de Computadoras

Servidor Web 2 IP 10.0.3.47

Puerto 1038

El computador ejecuta Explorer hacia

10.0.1.25

Socket 10.0.3.47.80

Socket: 10.0.2.47.1038

Puerto 1039

Socket: 10.0.2.47.1039

IP 10.0.2.47

Servidor Web 1 IP 10.0.1.25

Puerto 80

Puerto 80

Socket 10.0.1.25.80

El computador ejecuta otro Explorer

hacia 10.0.3.47

Page 25: Ul rc_cap7_el nivel de transporte en internet_

25

Conexión desde dos computadores a un mismo servidor web

Redes de Computadoras

IP 10.0.1.50

Servidor Web IP 10.0.1.25

Puerto80

Puerto 1038

Puerto 1038

IP 10.0.2.47

Este socket tiene dos conexiones simultáneas

Socket 10.0.1.25.80

Socket: 10.0.2.47.1038

Socket: 10.0.2.47.1038

Computador ejecuta Explorerhacia 10.0.1.25

Computador ejecuta Explorerhacia 10.0.1.25

Las dos conexiones son diferentes porque

difieren en la dirección IP del

cliente

Page 26: Ul rc_cap7_el nivel de transporte en internet_

26

Dos conexiones desde un computador a un servidor web y uno POP3, ambos en el mismo host

Redes de Computadoras

Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto

1038

Computador ejecuta Explorerhacia 10.0.1.25

Socket: 10.0.2.47.1038

IP 10.0.2.47

IP 10.0.1.25

Puerto 80

Socket 10.0.1.25.80

Servidor Web y POP3

Puerto 1039

Puerto 110

Conexión TCP10.0.1.25.110-10.0.2.47.1039

Socket: 10.0.2.47.1039

Socket 10.0.1.25.110

Computador ejecuta Outlookhacia 10.0.1.25

Page 27: Ul rc_cap7_el nivel de transporte en internet_

27

Dos conexiones diferentes del mismo computador al mismo servidor web

Redes de Computadoras

Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto

1038

Computador ejecuta Explorerhacia 10.0.1.25

Socket: 10.0.2.47.1038

IP 10.0.2.47

IP 10.0.1.25

Puerto 80

Socket 10.0.1.25.80

Servidor Web

Puerto 1039

Conexión TCP10.0.1.25.80-10.0.2.47.1039

Socket: 10.0.2.47.1039

Computador ejecuta un

segundo Explorerhacia 10.0.1.25Las dos conexiones

son diferentes porque difieren en el número de puerto del cliente

Page 28: Ul rc_cap7_el nivel de transporte en internet_

28

Comando netstat

Redes de Computadoras

� El comando netstat nos permite saber que conexiones TCP tenemos establecidas y que sockets la forman en el extremo local y el remoto.

� En los servidores también nos permite averiguar que puertos están en modo ‘LISTEN’, es decir que puertos tenemos abiertos.

� Una de las formas típicas de protección de los cortafuegos (firewall) es bloquear puertos innecesarios, es decir no dejar pasar paquetes cuyo número de puerto de destino no sea alguno de los servicios abiertos.

Page 29: Ul rc_cap7_el nivel de transporte en internet_

29

Comando netstat en un host

Redes de Computadoras

C:C:C:C:\\\\>netstat>netstat>netstat>netstat

Conexiones activasConexiones activasConexiones activasConexiones activas

Proto Dirección local Dirección remota Proto Dirección local Dirección remota Proto Dirección local Dirección remota Proto Dirección local Dirección remota EstadoEstadoEstadoEstado

TCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHED

TCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAIT

TCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAIT

TCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHED

TCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHED

TCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTEN

C:C:C:C:\\\\>>>>

Nombre de host local

Nombre de host remotoPuerto local

Puerto remoto

Servidor web a la escucha en este host.

Conexión de clientes (miro.uv.es y hal9.uv.es) con el servidor web de este host.

Sesión pendiente de cerrar de un cliente de correo de este host con ‘cuervo.ci.uv.es’

Conexión de un cliente ftp de este host con ftp.uv.es.

El programa netstat intenta convertir las direcciones IP y los números de puerto a nombres siempre que puede (por ejemplo pone ‘pop3’ en vez de 110).

Page 30: Ul rc_cap7_el nivel de transporte en internet_

30

Comando netstat en un host

Redes de Computadoras

Page 31: Ul rc_cap7_el nivel de transporte en internet_

31

Un diálogo TCP típico

Redes de Computadoras

TCP Cliente TCP Servidor←← ←←

Tie

mp

o

CLOSED

SYN-SENT

LISTEN

SYN-RECEIVED

ESTABLISHED

ESTABLISHED

FIN-WAIT-1

FIN-WAIT-2

TIME-WAIT

CLOSED

CLOSE-WAIT

LAST-ACK

LISTEN2-4 min.

Conexión

Desconexión

Intercambio de datos

Page 32: Ul rc_cap7_el nivel de transporte en internet_

32

Conexión por Saludo a tres vías

Redes de Computadoras

• 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 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.

Page 33: Ul rc_cap7_el nivel de transporte en internet_

33

Procedimiento del saludo a tres vías

Redes de Computadoras

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 recibe este tercer mensaje.

Page 34: Ul rc_cap7_el nivel de transporte en internet_

34

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

Redes de Computadoras

TCP A(cliente)

TCP B(servidor)

←← ←←T

iem

po

CLOSED

SYN-SENT(ISN 100)

LISTEN

SYN-RECEIVED

(ISN 300)

ESTABLISHED

ESTABLISHED

Page 35: Ul rc_cap7_el nivel de transporte en internet_

35

Saludo a tres vías, conexión simultánea

Redes de Computadoras

TCP A TCP B

←← ←←T

iem

po

CLOSED

SYN-SENT(ISN 100)

CLOSED

SYN-RECEIVED

ESTABLISHED ESTABLISHED

SYN-SENT(ISN 300)

SYN-RECEIVED

Page 36: Ul rc_cap7_el nivel de transporte en internet_

36

Conexión con SYN duplicado

Redes de Computadoras

TCP A TCP B←← ←←

Tie

mp

o

CLOSED

SYN-SENT(ISN 100)

LISTEN

SYN-RECEIVED(ISN 300)

LISTEN

SYN-RECEIVED(ISN 400)

ESTABLISHED

ESTABLISHED

SYN90

SYN-SENT(ISN 90)

(timeout)

SYN90

SYN100

SYN100

Page 37: Ul rc_cap7_el nivel de transporte en internet_

37

Conexión en TCP

Redes de Computadoras

• 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 SequenceNumber) 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.

Page 38: Ul rc_cap7_el nivel de transporte en internet_

38

Conexión en TCP

Redes de Computadoras

• 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.

Page 39: Ul rc_cap7_el nivel de transporte en internet_

39

Desconexión

Redes de Computadoras

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.

Page 40: Ul rc_cap7_el nivel de transporte en internet_

40

Desconexión simétrica

Redes de Computadoras

Host 1 Host 2←← ←←

Tie

mp

o

DR: Disconnect Request

Conectado

Conectado

NoConectado No

Conectado

Page 41: Ul rc_cap7_el nivel de transporte en internet_

41

Desconexión asimétrica

Redes de Computadoras

Host 1 Host 2←← ←←

Tie

mp

o

DR: Disconnect Request

Conectado

Conectado

NoConectado

NoConectadoDatos perdidos

Page 42: Ul rc_cap7_el nivel de transporte en internet_

42

Mensaje de Desconexión

Redes de Computadoras

• El mensaje solicitando la desconexión se puede perder. Por eso se pide una confirmación (ACK).

• Pero la confirmación también podría perderse, por lo que habría que enviar una reconfirmación, y así sucesivamente.

• Este problema no tiene solución infalible, pues estamos usando un canal no fiable para asegurar un envío de información. Es lo que se conoce como el problema de los dos ejércitos.

Page 43: Ul rc_cap7_el nivel de transporte en internet_

43

El problema de los dos ejércitos

Redes de Computadoras

Page 44: Ul rc_cap7_el nivel de transporte en internet_

44

Desconexión por saludo a tres vías

Redes de Computadoras

• 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.

Page 45: Ul rc_cap7_el nivel de transporte en internet_

45

Desconexión en TCP

Redes de Computadoras

• 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.

Page 46: Ul rc_cap7_el nivel de transporte en internet_

46

Desconexión a tres vías, caso normal

Redes de Computadoras

TCP A TCP B

ESTABLISHED

FIN-WAIT-1

ESTABLISHED

CLOSE-WAIT

FIN-WAIT-2LAST-ACK

TIME-WAIT

CLOSEDCLOSED

2MSL

MSL: Maximum Segment Lifetime (normalmente 2 minutos)

Page 47: Ul rc_cap7_el nivel de transporte en internet_

47

Conexión completa TCP por saludo a tres vías

Redes de Computadoras

TCP A (cliente) TCP B (servidor)←← ←←

Tie

mp

o

CLOSED

SYN-SENT(ISN 100)

LISTEN

SYN-RECEIVED(ISN 300)

ESTABLISHED

ESTABLISHEDFIN-WAIT-1

CLOSE-WAIT

FIN-WAIT-2 LAST-ACK

TIME-WAIT

CLOSEDCLOSED

2MSL

LISTEN

Page 48: Ul rc_cap7_el nivel de transporte en internet_

48

Captura de una conexión TCP con Wireshark

Redes de Computadoras - Prof. Ing. Jose C. Benitez P.

Conexión al servidor web147.156.1.4 desde 147.156.135.22

Conexión

Desconexión

Conexión

Page 49: Ul rc_cap7_el nivel de transporte en internet_

49

Desconexión a tres vías, casos anormales

Redes de Computadoras

Libera conexión

Envía ACK

Host 1

(Timeout)libera

conexión

Host 2 Host 1

Libera conexión

Host 2

Envía FIN y arranca timer

(Timeout)envía FIN y

arranca timer

Envía FIN y arranca timer

Envía FIN y arranca timer

Envía FIN y arranca timer

Envía FIN y arranca timer

Libera conexión

Envía ACK

Host 1 Host 2

(timeout)envía FIN y

arranca timer

Envía FIN y arranca timer

(N timeouts)Libera

conexión Conectado

Pérdida de ACK final Pérdida de respuesta FIN

Pérdida de todos los FIN de host 1

Host 1 Host 2

(timeout)envía FIN y

arranca timer

Envía FIN y arranca timer

Envía FIN y arranca timer

(N timeouts)Libera

conexión

(Timeout)libera

conexión

Pérdida de todo menos primer FIN

Conectado

Page 50: Ul rc_cap7_el nivel de transporte en internet_

50

Diagrama TCP

Redes de Computadoras - Prof. Ing. Jose C. Benitez P.

Page 51: Ul rc_cap7_el nivel de transporte en internet_

51

Números de secuencia y flags

Redes de Computadoras

� 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

Page 52: Ul rc_cap7_el nivel de transporte en internet_

52

Intercambio de datos TCP ↔ aplicación

Redes de Computadoras

� 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.

Page 53: Ul rc_cap7_el nivel de transporte en internet_

53

Intercambio de datos TCP ↔ TCP

Redes de Computadoras

� 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.

Page 54: Ul rc_cap7_el nivel de transporte en internet_

54

Intercambio de datos

TCP ↔ Aplicación y TCP ↔ TCP

Redes de Computadoras

Aplicación

origen

TCP

receptor

TCP

emisor

Aplicación

destino

A criterio de la aplicación(sujeto a disponibilidad de buffer en TCP emisor)

A criterio dela aplicación

A criterio del TCP emisor(sujeto a disponibilidadde buffer en TCP receptory no congestión de la red)

Empuja

Empuja

Estira

Buffer Buffer

Page 55: Ul rc_cap7_el nivel de transporte en internet_

55

Intercambio de datos

TCP ↔ Aplicación y TCP ↔ TCP

Redes de Computadoras

Aplicación

origen

TCP

receptor

TCP

emisor

Aplicación

destino

Buffer Buffer

Escribe

Envía

Lee2048 Bytes

1024 Bytes

1024 Bytes

512 B 512 B512 B 512 B

(MSS 512 Bytes)

Page 56: Ul rc_cap7_el nivel de transporte en internet_

56

Gestión de buffers y Control de Flujo

Redes de Computadoras

� 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.

Page 57: Ul rc_cap7_el nivel de transporte en internet_

57

Gestión de buffers y Control de flujo

Redes de Computadoras

Emisor Receptor

Emisor

Bloqueado

Buffer

La aplicación

escribe 2 KB

La aplicación

escribe 3 KB

El emisor

puede enviar

hasta 2 KB

Vacío

Lleno

2 KB

2 KB

0 4K

La aplicación

lee 2 KB

3 KB

Page 58: Ul rc_cap7_el nivel de transporte en internet_

58

Gestión de buffers y Control de Flujo

Redes de Computadoras

� 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’).

(Recordemos la Ley de Postel):

‘Sé estricto al enviar y tolerante al recibir’

Page 59: Ul rc_cap7_el nivel de transporte en internet_

59

Reenvío de segmentos

Redes de Computadoras

� 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

Page 60: Ul rc_cap7_el nivel de transporte en internet_

60

Control de flujo y números de secuenciaCaso normal, sin pérdidas

Redes de Computadoras

Host 1 Host 2Seq=1000, Win=4000

Seq=1500, Ack=1001, Win=4000

Seq=1001, Ack=1501, Win=40001000 bytes

Seq=1501, Ack=2001, Win=3000 1000 bytes

Seq=2001, Ack=2501, Win=3000

Seq=3001, Ack=2501, Win=3000

Seq=4001, Ack=2501, Win=3000

1000 bytes

1000 bytes

1000 bytes

Bloqueado

Seq=2501, Ack=5001, Win=2000

Seq=5001, Ack=2501, Win=3000

Seq=2501, Ack=6001, Win=30001000 bytes

Seq=2501, Ack=5001, Win=0Aplicación lee2000 bytes

SYN

SYN

Page 61: Ul rc_cap7_el nivel de transporte en internet_

61

Pérdida de un paqueteRetransmisión con repetición selectiva

Redes de Computadoras

Host 1 Host 2Seq=1000, Win=4000

Seq=1500, Ack=1001, Win=4000

Seq=1001, Ack=1501, Win=40001000 bytes

Seq=1501, Ack=2001, Win=30001000 bytes

Seq=2001, Ack=2501, Win=3000

Seq=3001, Ack=2501, Win=3000

Seq=4001, Ack=2501, Win=3000

1000 bytes

1000 bytes

1000 bytes

Bloqueado

Seq=2501, Ack=5001, Win=2000

Seq=5001, Ack=2501, Win=3000

Seq=2501, Ack=6001, Win=30001000 bytes

Seq=2501, Ack=3001, Win=1000

Seq=3001, Ack=2501, Win=3000

Timeout

1000 bytesAplicación lee2000 bytes

SYN

SYN

Seq=2501, Ack=5001, Win=0

Page 62: Ul rc_cap7_el nivel de transporte en internet_

62

Intercambio de datos: casos excepcionales

Redes de Computadoras

� 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

Page 63: Ul rc_cap7_el nivel de transporte en internet_

63

Timer de Persistencia

Redes de Computadoras

� 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 y 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.

Page 64: Ul rc_cap7_el nivel de transporte en internet_

64

Timer de persistencia

Redes de Computadoras

TCP A TCP B←← ←←

Tie

mp

o

Timer de Persistencia

100 bytes(501-600)

Buffer lleno

Datos leídos por la aplicación

Datos puestos en buffer para la aplicación

1 byte (601)

Bloqueado

Page 65: Ul rc_cap7_el nivel de transporte en internet_

65

Mensaje y timer de keepalive

Redes de Computadoras

� 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

Page 66: Ul rc_cap7_el nivel de transporte en internet_

66

Mensajes de keepalive

Redes de Computadoras

TCP Servidor TCP Cliente←← ←←

Tie

mp

o

Timer Keepalive

100 bytes (501-600)

1 byte (600)

Datos puestos en buffer para la aplicación

Datos duplicados descartados

Page 67: Ul rc_cap7_el nivel de transporte en internet_

67

Cabeceras TCP del inicio de una conexión Telnet

Redes de Computadoras

1. SYNTCP: --- TCP header ---

TCP:

TCP: Source port = 2345

TCP: Dest port = 23 (Telnet)

TCP: Initial seq. Number = 16421121

TCP: Data offset = 24 bytes

TCP: Flags = 02 (SYN)

TCP: Window = 2048

TCP: Checksum = F2DA (correct)

TCP:

TCP: Options follow

TCP: Max segment size = 1460

2. SYNTCP: --- TCP header --

TCP:

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 = C13A (correct)

TCP:

TCP: Options follow

TCP: Max segment size = 1024

3. ACKTCP: --- TCP header ---

TCP:

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 = DF43 (correct)

TCP: No TCP options

4. DATATCP: --- TCP header ---

TCP:

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 = 9FEF (correct)

TCP: No TCP options

TCP: [12 byte(s) of data]

Page 68: Ul rc_cap7_el nivel de transporte en internet_

68

Intercambio de segmentos del caso anterior

Redes de Computadoras

Cliente Servidor

El servidor envía la

secuencia:

UNIX

Login:

TCP Conectado

TCP Conectado

Page 69: Ul rc_cap7_el nivel de transporte en internet_

69

Referencias QoS

� Proyecto Quantum: www.dante.net/quantum

Redes de Computadoras

Page 70: Ul rc_cap7_el nivel de transporte en internet_

Redes de Computadoras - Prof. Ing. Jose C. Benitez P. 70

Sesión 7. El Nivel de Transporte en Internet

Redes de Computadoras