Uni fiee ci 2016 01 sesion 10 modelos deterministicos de propagacion
Ul rc_cap7_el nivel de transporte en internet_
1. 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
2. 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
3. 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.OperativoProgr.deusuario
4. 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.
5. 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)
6. 6
Tráfico TCP vs UDP en Internet
Redes de Computadoras
TCP: 80%
UDP: 10%
Otros: 10%
7. 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 v4
Header
8. 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.
9. 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
10. 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
11. 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
12. 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)
13. 13
Conexión UDP de un cliente contra un servidor
Redes de Computadoras
Cliente
IP 10.0.1.50
Servidor Daytime
IP 10.0.1.25
Port
13
Port
1038
Socket: 10.0.1.25.13
Mensaje UDP
p.o. 1038, p.d. 13
Mensaje UDP
p.o. 13, p.d. 1038
Socket: 10.0.1.50.1038
14. 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:
15. 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 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.
16. 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.
17. 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.
18. 18
La cabecera TCP
Redes de Computadoras
Flags: CWR: Congestion Window Reduced
ECE: ECN Echo (ECN=Explicit Congestion Notification)
URG: el segmento contiene datos urgentes
ACK: el campo número de acuse de recibo tiene sentido
PSH: el segmento contiene datos ‘Pushed’
RST: ha habido algún error y la conexión debe cerrarse
SYN: indica el inicio de una conexión
FIN: 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
20
bytes
19. 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
20. 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)
21. 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
22. 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)
23. 23
Conexión de un cliente a un servidor web
Redes de Computadoras
Conexión TCP
10.0.1.25.80-10.0.2.47.1038 Puerto
1038
El computador
ejecuta el programa
Explorer:
www.web.com
Socket: 10.0.2.47.1038
IP 10.0.2.47
IP 10.0.1.25
Puerto
80
Socket 10.0.1.25.80
(rojo = ‘LISTEN’)
Servidor Web
24. 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
25. 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
Puerto
80
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 Explorer
hacia 10.0.1.25
Computador
ejecuta Explorer
hacia 10.0.1.25
Las dos conexiones
son diferentes porque
difieren en la
dirección IP del
cliente
26. 26
Dos conexiones desde un computador a un servidor web
y uno POP3, ambos en el mismo host
Redes de Computadoras
Conexión TCP
10.0.1.25.80-10.0.2.47.1038 Puerto
1038
Computador
ejecuta Explorer
hacia 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 TCP
10.0.1.25.110-10.0.2.47.1039
Socket: 10.0.2.47.1039
Socket 10.0.1.25.110
Computador
ejecuta Outlook
hacia 10.0.1.25
27. 27
Dos conexiones diferentes del mismo
computador al mismo servidor web
Redes de Computadoras
Conexión TCP
10.0.1.25.80-10.0.2.47.1038 Puerto
1038
Computador
ejecuta Explorer
hacia 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 TCP
10.0.1.25.80-10.0.2.47.1039
Socket: 10.0.2.47.1039
Computador
ejecuta un
segundo Explorer
hacia 10.0.1.25Las dos conexiones
son diferentes porque
difieren en el número
de puerto del cliente
28. 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.
29. 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 remotaProto Dirección local Dirección remotaProto Dirección local Dirección remotaProto 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).
31. 31
Un diálogo TCP típico
Redes de Computadoras
TCP Cliente TCP Servidor←←←←Tiempo
CLOSED
SYN-SENT
LISTEN
SYN-RECEIVED
ESTABLISHED
ESTABLISHED
FIN-WAIT-1
FIN-WAIT-2
TIME-WAIT
CLOSED
CLOSE-WAIT
LAST-ACK
LISTEN
2-4 min.
Conexión
Desconexión
Intercambio
de datos
32. 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.
33. 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.
34. 34
Establecimiento de una conexión TCP por
saludo a tres vías
Redes de Computadoras
TCP A
(cliente)
TCP B
(servidor)
←←←←Tiempo
CLOSED
SYN-SENT
(ISN 100)
LISTEN
SYN-RECEIVED
(ISN 300)
ESTABLISHED
ESTABLISHED
35. 35
Saludo a tres vías, conexión simultánea
Redes de Computadoras
TCP A TCP B
←←←←Tiempo
CLOSED
SYN-SENT
(ISN 100)
CLOSED
SYN-RECEIVED
ESTABLISHED ESTABLISHED
SYN-SENT
(ISN 300)
SYN-RECEIVED
36. 36
Conexión con SYN duplicado
Redes de Computadoras
TCP A TCP B
←←←←Tiempo
CLOSED
SYN-SENT
(ISN 100)
LISTEN
SYN-RECEIVED
(ISN 300)
LISTEN
SYN-RECEIVED
(ISN 400)
ESTABLISHED
ESTABLISHED
SYN
90
SYN-SENT
(ISN 90)
(timeout)
SYN
90
SYN
100
SYN
100
37. 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 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.
38. 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.
39. 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.
40. 40
Desconexión simétrica
Redes de Computadoras
Host 1 Host 2
←←←←Tiempo
DR: Disconnect Request
Conectado
Conectado
No
Conectado No
Conectado
41. 41
Desconexión asimétrica
Redes de Computadoras
Host 1 Host 2
←←←←Tiempo
DR: Disconnect Request
Conectado
Conectado
No
Conectado
No
ConectadoDatos perdidos
42. 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.
44. 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.
45. 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.
46. 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-2
LAST-ACK
TIME-WAIT
CLOSEDCLOSED
2
MSL
MSL: Maximum Segment Lifetime (normalmente 2 minutos)
47. 47
Conexión completa TCP por saludo a tres vías
Redes de Computadoras
TCP A (cliente) TCP B (servidor)
←←←←Tiempo
CLOSED
SYN-SENT
(ISN 100)
LISTEN
SYN-RECEIVED
(ISN 300)
ESTABLISHED
ESTABLISHED
FIN-WAIT-1
CLOSE-WAIT
FIN-WAIT-2 LAST-ACK
TIME-WAIT
CLOSEDCLOSED
2
MSL
LISTEN
48. 48
Captura de una conexión TCP con Wireshark
Redes de Computadoras - Prof. Ing. Jose C. Benitez P.
Conexión al servidor web
147.156.1.4 desde 147.156.135.22
Conexión
Desconexión
Conexión
49. 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
51. 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
52. 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.
53. 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.
54. 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 de
la aplicación
A criterio del TCP emisor
(sujeto a disponibilidad
de buffer en TCP receptor
y no congestión de la red)
Empuja
Empuja
Estira
Buffer Buffer
55. 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)
56. 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.
57. 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
58. 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’
59. 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
60. 60
Control de flujo y números de secuencia
Caso normal, sin pérdidas
Redes de Computadoras
Host 1 Host 2
Seq=1000, Win=4000
Seq=1500, Ack=1001, Win=4000
Seq=1001, Ack=1501, Win=4000
1000 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=3000
1000 bytes
Seq=2501, Ack=5001, Win=0
Aplicación lee
2000 bytes
SYN
SYN
62. 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
63. 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.
64. 64
Timer de persistencia
Redes de Computadoras
TCP A TCP B←←←←Tiempo
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
65. 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
66. 66
Mensajes de keepalive
Redes de Computadoras
TCP Servidor TCP Cliente
←←←←Tiempo
Timer
Keepalive
100 bytes
(501-600)
1 byte
(600)
Datos puestos
en buffer para la
aplicación
Datos duplicados
descartados
67. 67
Cabeceras TCP del inicio de una conexión
Telnet
Redes de Computadoras
1. SYN
TCP: --- 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. SYN
TCP: --- 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. ACK
TCP: --- 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. DATA
TCP: --- 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]
68. 68
Intercambio de segmentos del caso
anterior
Redes de Computadoras
Cliente Servidor
El servidor envía la
secuencia:
UNIX
Login:
TCP Conectado
TCP Conectado