PDF de programación - Tema 6 - Conexiones TCP

Imágen de pdf Tema 6 - Conexiones TCP

Tema 6 - Conexiones TCPgráfica de visualizaciones

Publicado el 5 de Julio del 2017
635 visualizaciones desde el 5 de Julio del 2017
622,5 KB
22 paginas
Creado hace 15a (30/10/2008)
Bloque III: El nivel de transporte

Tema 6: Conexiones TCP

Índice

• Bloque III: El nivel de transporte

– Tema 6: Conexiones TCP

• Establecimiento de conexión
• Finalización de conexión
• Diagrama de estados
• Segmentos de reset
• Establecimiento y cierre simultáneos

• Referencias

– Capítulo 3 de “Redes de Computadores: Un enfoque 

descendente basdado en Internet”. James F. Kurose, Keith 
W. Ross. Addison Wesley, 2ª edición. 2003.

– Capítulo 18 de “TCP/IP Illustrated, Volume 1: The 

Protocols”, W. Richard Stevens, Addison Wesley, 1994.

RC ­ Bloque III ­ Tema 6

2

Conexión TCP: Establecimiento
Las conexiones las inicia, normalmente, el cliente (apertura activa)  El 
servidor hace una apertura pasiva.



• Protocolo de establecimiento de conexión:

– El emisor (cliente) envía un segmento SYN especificando el nº de puerto 

del servidor al que quiere conectarse y el nº de secuencia inicial (segmento 
1).

– El servidor responde con su propio segmento SYN que contiene el nº de 

secuencia inicial del servidor (segmento 2). También asiente (ACK) el SYN 
del cliente + 1 (los mensajes SYN consume un nº de secuencia).

– El cliente asiente el SYN del servidor con un nº de ack igual al ISN del 
Servidor:discard

servidor +1 (segmento 3).
Cliente:2768

Segmento 1

Segmento 3

SYN 13281:13281(0)
<MSS 1024>

S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 3 2 8 2 , < M S S 1 0 2 4 >
ACK 45828

Segmento 2

RC ­ Bloque III ­ Tema 6

3

Conexión TCP: Finalización

• Se intercambian 4 segmentos para cerrar una conexión.

– Una conexión TCP es full­duplex y cada dirección se cierra 

independientemente.

– Cada extremo envía un FIN cuando a finalizado el envío de datos 

 El otro extremo puede continuar enviando datos (half­close).
• El extremo que envía el primer FIN realiza el cierre activo, y el otro 

extremo el cierre pasivo.
– Cualquiera de los dos extremos puede iniciar el cierre.

• Protocolo de finalización de conexión:

– El cliente finaliza la aplicación  El cliente TCP envía un FIN 

(segmento 4) con el número de secuencia correspondiente (cierre 
del flujo de datos cliente a servidor).

– El servidor responde con un ACK (segmento 5) del nº de secuencia 

+ 1 (los mensajes FIN consumen un nº de secuencia).
– A continuación, el servidor envía un FIN (segmento 6).
– El cliente confirma la recepción del FIN, con un ACK del nº de 

secuencia recibido + 1 (segmento 7).

RC ­ Bloque III ­ Tema 6

4

Conexión TCP: Finalización

Cliente:2768

Servidor:discard

Segmento 1

Segmento 3

Segmento 4

Segmento 7

RC ­ Bloque III ­ Tema 6

ACK 45829

SYN 13281:13281(0)
<MSS 1024>

S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 3 2 8 2 , < M S S 1 0 2 4 >
ACK 45828

FIN 13282:13282(0)
ACK 45828

F I N 4 5 8 2 8 : 4 5 8 2 8 ( 0 )

A C K 1 3 2 8 3
A C K 1 3 2 8 3

Segmento 2

Segmento 5
Segmento 6

Para animación

5

Conexión TCP: Timeout

• Tiempo que ha de transcurrir para que un cliente tratando de 

establecer una conexión indique que dicha conexión no puede 
ser establecida.
– No se especifica el motivo en la aplicaciones estándares.

• Este timeout varía de unas implementaciones a otras.
• En el caso del UNIX BSD y derivados, este timeout vale 75 

segundos en los que se suelen mandar entre 3 y 5 paquetes de 
establecimiento.

• Funciona en base a ticks de 500 mseg.

11 10 9 8 7 6 5 4 3 2 1
0

La aplicación establece el timeout

500 msegs

RC ­ Bloque III ­ Tema 6

6

Conexión TCP: MSS

• Cuando se establece una conexión TCP, cada extremo anuncia el 

MSS que espera recibir:
– La opción MSS sólo aparece en un segmento SYN.
– Si no se declara, se toma por defecto el valor 536 (datagrama IP 

– MSS no incluye las longitudes de cabecera IP y TCP (MTU – 20 – 

de 576 bytes).

20 = MSS)

• En general es preferible un MSS grande que amortice el coste de 

cabeceras. Pero, obviamente, interesa evitar fragmentación.

• No se realiza una negociación del MSS, el tamaño de segmento será el 

menor de los dos.

173.197.15.10

MTU = 296 bytes

173.197.24.1

173.197.15.4

MTU = 1500 bytes

SYN, <MSS 1460>

SYN, <MSS 256>

RC ­ Bloque III ­ Tema 6

7

Conexión TCP: Half­close

• Una parte termina la conexión (da por finalizado su emisión de datos) 

mientras todavía está recibiendo datos (half­close).
– No puede enviar más datos, pero si ACKs, ...
• Pocas aplicaciones se beneficien de esta utilidad:

Cliente:2768

– rsh servidor sort < ficheroEntrada.txt
FIN 13282:13282(0)
ACK 45828

Servidor:discard

A C K 1 3 2 8 3

P S H 4 5 8 2 8 : 4 6 8 5 2 ( 1 0 2 4 )
P S H 4 6 8 5 2 : 4 7 8 7 6 ( 1 0 2 4 )
ACK 47876

A C K 1 3 2 8 3
A C K 1 3 2 8 3

F I N 4 7 8 7 6 : 4 7 8 7 6 ( 0 )

A C K 1 3 2 8 3

RC ­ Bloque III ­ Tema 6

ACK 47877

8

TCP: Diagrama de estados

CLOSED

a

p

e

appl: apertura pasiva
enviar: <nada>

LISTEN

appl: cerrar
o timeout

a

p

e

n

p

n

pl: a
viar: S
pl: e
viar: S

ertura a
viar d
ctiv

Y

n

N

a

Y

N

ato
s

SYN_RCVD

enviar: SYN, ACK
recibir: SYN
recibir: RST
recibir: ACK
enviar: <nada>

appl: cerrar
enviar: FIN
FIN_WAIT_1

recibir: SYN
enviar: SYN, ACK
Apertura simultánea
c i b ir: S
r: A
v i a
n
Transferencia de datos

r
ESTABLISHED

e

e

K

SYN_SENT
C
N , A
K

Y

C

RC ­ Bloque III ­ Tema 6

9

TCP: Diagrama de estados

SYN_RCVD
appl: cerrar
enviar: FIN

FIN_WAIT_1

recibir: FIN
enviar: ACK

a

p

p l: c
v i a

ESTABLISHED
r
a
r r
e
r : F I N
e
recibir: FIN
enviar: ACK

Cierre simultáneo
CLOSING

n

Cierre pasivo

CLOSE_WAIT

appl: cerrar
enviar: FIN
LAST_ACK

r
e

e

ci

n

vi

a

b

ir:
FI

r:

A

N

recibir: ACK
enviar: <nada>

recibir: ACK
enviar: <nada>

recibir: ACK
enviar: <nada>

C

,

K

A

C

K

FIN_WAIT_2

recibir: FIN
enviar: ACK

Cierre activo

RC ­ Bloque III ­ Tema 6

TIME_WAIT
Timeout 2MSL

CLOSED

10

TCP: Diagrama de estados

Cliente:2768

Servidor:discard

SYN 13281:13281(0)
<MSS 1024>

S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 3 2 8 2 , < M S S 1 0 2 4 >
ACK 45828

FIN 13282:13282(0)
ACK 45828

F I N 4 5 8 2 8 : 4 5 8 2 8 ( 0 )

A C K 1 3 2 8 3
A C K 1 3 2 8 3

ACK 45829

SYN_SENT

ESTABLISHED

FIN_WAIT_1

FIN_WAIT_2
TIME_WAIT

SYN_RCVD

ESTABLISHED

CLOSE_WAIT
LAST_ACK

RC ­ Bloque III ­ Tema 6

11

TCP: Diagrama de estados

• Estado TIME_WAIT: estado de espera durante 2 MSL

– MSL (Maximum Segment Lifetime): tiempo máximo que un 

segmento puede estar en la red antes de ser descartado.

– Permite a TCP reenviar el ACK en caso de que se haya perdido (el 

otro extremo reenviará el FIN).

– Mientras la conexión está en este estado, no se pueden reutilizar el 

par de sockets de esa conexión  Cualquier segmento retrasado 
recibido es descartado  Garantiza que no aparecen 
reencarnaciones de segmentos en futuras conexiones.

• Quiet time: un host permanecerá durante MSL sin crear ninguna 

conexión después de reiniciarse.

• Estado FIN_WAIT_2:

– Permanecerá en este estado hasta recibir el FIN del otro extremo.
– El otro extremo está en el estado CLOSE_WAIT y debe esperar a 

que se cierre la aplicación.

– Para evitar una espera infinita las implementaciones suelen 

establecer un tiempo de espera (p.e. 10 minutos), tras el cual pasa 
directamente al estado CLOSED.

RC ­ Bloque III ­ Tema 6

12

TCP: Segmentos de Reset

• Un segmento es de Reset cuando se activa en la 

cabecera TCP el flag RST.

• Se activa el bit de Reset en una conexión TCP 

cuando el paquete que ha llegado no parece, en 
principio, estar relacionado con la conexión a la que 
está referido el paquete.

• Las causas de generar un paquete con este bit para 

una conexión TCP pueden ser varias:
– Intento de conexión a un puerto no existente
– Abortar una conexión
– Respuesta ante conexiones semi­abiertas

RC ­ Bloque III ­ Tema 6

13



TCP: Segmentos de Reset
Intento de conexión a un puerto no existente:
– Si se trata de realizar una conexión a un puerto 

sin aplicación asociada  No hay ningún proceso 
escuchando una posible llegada de conexiones.

Cliente:2768

Servidor:47322

SYN 13281:13281(0)
<MSS 1024>

R S T 0 : 0 ( 0 )
A C K 1 3 2 8 2

RC ­ Bloque III ­ Tema 6

14

TCP: Segmentos de Reset

• Abortar conexión

– Existe la posibilidad de acabar mediante un paquete con el 

bit de RST (terminación anormal)  Cualquier dato 
esperando ser enviado será descartado automáticamente.

Cliente:2768

Servidor:discard

SYN 13281:13281(0)
<MSS 1024>

S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 , < M S S 1 0 2 4 >
ACK 1

PSH 1:14(13)
ACK 1

A C K 1 4

RST 14:14 (0)
ACK 1

RC ­ Bloque III ­ Tema 6

15

TCP: Segmentos de Reset

• Respuesta ante conexiones semi­abiertas

– Sucede cuando el servidor se cae y se vuelve a levantar, después 

– La respuesta en este caso es un segmento de RESET

de lo cual recibe datos del cliente.
SYN 13281:13281(0)
<MSS 1024>

Cliente:2768

S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 , < M S S 1 0 2 4 >

ACK 45828
PSH 1:11(10)
ACK 45828 A C K 1 1
PSH 11:25(14)
ACK 45828

R S T 4 5 8 2 8 : 4 5 8 2 8 ( 0 )
A C K 2 5

RC ­ Bloque III ­ Tema 6

Servidor:discard

El servidor se cae y

se vuelve a

levantar

16

TCP: Establecimiento simultáneo



La posibilidad de establecimiento de conexión simultáneo es mínima 
aunque posible:
– Dos aplicaciones en dos hosts se envían mensajes de conexión 

– No existe una figura clara de cliente y servidor, ahora hay dos 

simultáneamente.

“clien­servidor”.

• TCP está diseñado para manejar correctamente esta posibilidad.
• Este tipo de apertura requiere el envío de 4 segmentos (uno más de lo 
habitual) y sigue algunas variantes sobre el diagrama de transición de 
estados habitual.

• ¿Esto es una apertura simultánea?

– host1% telnet host2                      host2% telnet host1

host1:1111

host2:23

host2:2222

host1:23

SYN J

SYN K

RC ­ Bloque III ­ Tema 6

17

TCP: Establecimiento simultáneo

host1:1111

host2:2222

SYN_SENT

SYN J

SYN_RCVD

SYN J, ACK K+1

ESTABLISHED

S Y N K

SYN_SENT
S Y N K , A C
  • Links de descarga
http://lwp-l.com/pdf4872

Comentarios de: Tema 6 - Conexiones TCP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad