Академический Документы
Профессиональный Документы
Культура Документы
Marzo de 2014
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
Introducción
Multiplexación, demultiplexación
El Nivel de Transporte TCP/IP:
multiplexa las unidades de datos que envı́an las aplicaciones a través de
los puertos, encapsulándolas en unidades de datos de UDP o TCP
demultiplexa las unidades de datos de UDP y TCP, pasando los datos a
las aplicaciones.
Multiplexación Demultiplexación
p1 p2 p3 p4 p1 p2 p3 p4
IP IP
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
UDP
Length Checksum
Los extremos se identifican mediante puertos
Data
© GSyC 2009
UDP
5 Bind(6000)
m1 Send(A, 6000, m2) 6
Lectura de
7 Buffer_A := Receive(6000) bytes
m2
Lectura de
bytes
Escritura de
m1 Escritura de
6000 bytes
8000 m2 bytes
in out in out
UDP UDP
IP IP
Ethernet m1 3 Ethernet
Máquina A 8 m2
Máquina B
32
GSyC - 2014 Nivel de transporte: UDP y TCP 10
TCP: Fundamentos
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
in out in out
TCP TCP
in: buffer de envío in: buffer de envío
out: buffer de recepción Se transmiten Y segmentos TCP out: buffer de recepción
Las conexiones son full duplex: ambos lados pueden enviar datos
simultáneamente.
GSyC - 2014 Nivel de transporte: UDP y TCP 12
TCP: Fundamentos
Servicio Fiable
Éste es el primer nivel (de abajo a arriba) en TCP/IP en el que se
proporciona fiabilidad.
Objeto: Recuperarse de las posibles pérdidas y desorden producido
por IP.
Idea básica:
Los segmentos con datos llevan un número
de secuencia.
Nº sec=1001
El receptor de los datos debe mandar
Nº ACK=1101
asentimientos (ACKs). 100 bytes
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 15
TCP: Fundamentos Formato de segmento
!"#$%&'&$()#*' !"#$%&'+#,-*&'
*./#$&'+#',#0"#*0(1'
913#0#$1'>9;'
*./#$&'+#'1,#*-/(#*%&'
567'
89:'
;<='
<?@'
6<>'
2&*)(%"+'
AB@'
013#0#$1' $#,#$41+&' 4#*%1*1'1*"*0(1+1'
0C#0D,"/',#)/#*%&' !"*%#$&'1'+1%&,'"$)#*%#,'
&!0(&*#,'
'!"##$%&'()*&%#+,-./0''
E1%&,'>9;'
E8>F<'>9;'
Flags
SYN: Establecimiento de conexión
FIN: Finalización de conexión
ACK: Hay información en el campo número de ACK
RST: Situación de error.
Ejemplo: Una aplicación cliente quiere establecer una conexión con una
aplicación que escucha en el puerto 6000 de otra máquina, y en esa máquina
no hay ninguna aplicación esperando conexiones en ese puerto 6000.
PSH: El receptor debe ”entregar los datos a la aplicación”.
No sólo se entrega ese segmento, sino también todos los datos anteriores
asentidos que el receptor tuviera pendientes de entregar a la aplicación.
URG: Pueden enviarse datos denominados urgentes que el receptor debe
pasar inmediatamente a la aplicación, lo antes posible, incluso fuera de orden.
Ejemplo: Envı́o de un CTRL-C.
Se indican mediante el empleo del flag URG: Cuando está activado, el campo
puntero a datos urgentes apunta al último byte de datos urgentes del segmento.
No está especificado dónde empiezan los datos urgentes. Se deja a la aplicación.
Número de secuencia
Número de asentimiento
Número de asentimiento
200 bytes
asentimiento. Es decir se envı́an los datos y
el asentimiento de los datos recibidos
(piggybacking).
Si el lado que ha recibido datos no tiene
Nº sec=1001
nada que enviar, construirá un segmento Nº ACK=1101
FLAGS =ACK
100 bytes
(sólo con la cabecera de TCP) donde
enviará el número de asentimiento que le
corresponda.
Importante: Cada lado de la conexión utiliza sus números de
secuencia (partiendo de su número de secuencia inicial) y
asiente los números de secuencia que está usando el otro
extremo.
GSyC - 2014 Nivel de transporte: UDP y TCP 21
TCP: Fundamentos Formato de segmento
Como ambos extremos pueden enviar datos, hay dos ventanas de flujo
diferentes, una para cada sentido de la comunicación.
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 23
TCP: Fundamentos Establecimiento y cierre de la conexión
stablecimiento
Establecimiento de
de laconexión
conexión Cierre de la conexión
Cierre de conexión
Cliente Servidor
Cliente Servidor FIN,
SYN, Sequ
ence
S equ Num
ence = p
Num
= x
m = y,
ceNu dgment =
p + 1
S e quen nt =x+1 ACK, Ackn
owle
ACK, dgme
SYN+ cknowle enceNu m = q
A FIN, Sequ
ACK,
Ackno
wledg ACK, Acknow
ment ledgme nt = q + 1
= y +1
© GSyC 2009 13
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 25
TCP: Fundamentos Ejemplo
Ejemplo
p1 p2
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
Ejemplo
Send p1 p2
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
Ejemplo
Send p1 p2
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
…# 100 bytes
Ejemplo
Send p1 p2
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
Ejemplo
Send p1 p2
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…#
…#
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…#
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in
cab
FLAGS =ACK
out
…
Nº sec=1001
…
cab datos
…
Nº sec=1101
100 bytes
out
cab datos
Nº ACK=1101 in
FLAGS =ACK
…
cab
100 bytes AdvertisedWindow =100
out
…
in
…
in
in
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
100 bytes
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Ejemplo
Send p1 p2 Receive
Nº sec=1000 cab
FLAGS =SYN
Nº sec=9000
cab Nº ACK=1001
FLAGS =SYN+ACK
AdvertisedWindow =200
Nº ACK=9001 in#
cab
FLAGS =ACK
out# …#
Nº sec=1001
…# cab datos
…# Nº sec=1101
100 bytes
out# cab datos
Nº ACK=1101 in#
FLAGS =ACK
…#
cab
100 bytes AdvertisedWindow =100
out#
…# in#
…# in#
in#
out#
…# cab
Nº ACK=1201
FLAGS =ACK
AdvertisedWindow =200
…# Nº sec=1201
cab datos
Nº sec=9001
cab Nº ACK=1402
FLAGS =FIN+ACK
Nº ACK=9002
cab
FLAGS =ACK
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 44
TCP: Fundamentos Efecto de la Ventana Anunciada en el Emisor
!"#$%&%$'()
*+%,$-$*(./).&0/+)
(5"132316*.
!"#$%&#'$/)341#-.
785"'8'*#2316*.,'.9:;.
!"#$%&#'$()'*+,-. !"#$%&#'$/*012,-.
120*+)*(3$&./+)2)(/)&+*(4./+) 120*+)"*(.$*(0*+).*)*(35/)
546172718(&
$07%191$('+&'2-+0&
(5"132316*.
!"#$%&#'$/)341#-.
785"'8'*#2316*.,'.9:;.
!"#$%&'$&$()*+&,+"-.&
!"#$%&#'$()'*+,-. !"#$%&#'$/*012,-.
!/-$0&$()12'+0&/&(+&20$(3'+0& !/-$0&4$('1$(-$0&'$&$()*+&
4+5)(%()6#&
"0(-)7)"#*,&*%$,0&
(5"132316*.
!"#$%&#'$/)341#-.
785"'8'*#2316*.,'.9:;.
.'8"-&*"&"#13,&9,'$:&
!"#$%&#'$()'*+,-. !"#$%&#'$/*012,-.
!"#$%#%&%#'#()%*%&+,-&-"("+$,-&
./$"0&"#1)%*,0&/&#,&%0"#2*,0& ./$"0&+"#*)"#$"0&*"&"#13,&
La Ventana anunciada por el receptor establece los máximos bytes que pueden
estar enviados y no asentidos:
Últ_Byte_Enviado - Últ_Byte_Asentido ≤ Tama~ no_Ventana_Anunciada
Cuando avanza el Últ_Byte_Asentido, la Ventana anunciada se va deslizando
hacia la derecha. Por esta razón la ventana de TCP se llama también “ventana
deslizante”.
El extremo derecho de la ventana no puede ir hacia atrás. Sı́ puede quedarse
parado mientras avanza el extremo izquierdo, estrechándose la ventana (incluso
hasta llegar a ventana cero).
5+6)(%()7#&
"3(-)8)"#*,&*%$,3&
(5"132316*.
!"#$%&#'$/)341#-.
785"'8'*#2316*.,'.9:;.
1'9"-&*"&"#04,&:,'$;&
!"#$%&#'$()'*+,-. !"#$%&#'$/*012,-.
!"#$%#%&%#'#()%*%&+,-&-"("+$,-&
12$"3&"#0)%*,3&2&#,&%3"#/*,3& 12$"3&+"#*)"#$"3&*"&"#04,& !"#$%#%&"."(/0%&
Ventana efectiva: Parte de la Ventana anunciada que aún está disponible para
que el emisor envı́e nuevos bytes:
no_Ventana_Efectiva = Tama~
Tama~ no_Ventana_Anunciada −
− (Últ_Byte_Enviado − Últ_Byte_Asentido)
Último byte que puede enviarse =
= Últ_Byte_Asentido + Tama~
no_Ventana_Anunciada =
= Últ_Byte_Enviado + Tama~
no_Ventana_Efectiva
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 49
TCP: Fundamentos Efecto de la Ventana Anunciada en el Receptor
!"#$%&%$'()
#*+*(,-),&.-/)
8*143,349:/
01#%&'#$%6$7-./
;<*1$<$:#,349:/-$/=>?/
!"#$%&'#$%()*$+,-./ 01#%&'#$%2$3454-./
0+.*/)1*%$2$,-/)*()-1,*() 0+.*/)1*%$2$,-/)34*1&),*)-1,*()
6)7*(5(*+,&
7$/$,'3&'5031&
8*143,349:/
01#%&'#$%6$7-./
;<*1$<$:#,349:/-$/=>?/
!"#$%&'$&%$($)(*+,&-*,.&
!"#$%&'#$%()*$+,-./ 01#%&'#$%2$3454-./
!/0$1&%$(*2*'31&$,&3%'$,& !/0$1&%$(*2*'31&4"$%5&'$&3%'$,&
234)(%()5#&
4","#*0&*%$0-&
8*143,349:/
01#%&'#$%6$7-./
;<*1$<$:#,349:/-$/=>?/
+'6".&*"&."("3()5#&7)#8&
!"#$%&'#$%()*$+,-./ 01#%&'#$%2$3454-./
!"#$%#%&%#'#()%*%&
+,$"-&."()/)*0-&"#&0.*"#& +,$"-&."()/)*0-&1'".%&*"&0.*"#&
La Ventana anunciada del receptor establece los bytes aún caben Buffer de
recepción a partir del Sgte_Byte_Esperado:
Tama~no_Ventana_Anunciada = Tama~ no_Buffer_Recepción −
− ((Sgte_Byte_Esperado-1) - Últ_Byte_Leı́do)
Cuando avanza el Últ_Byte_Leı́do, el tamaño de la Ventana anunciada
aumenta.
Cuando avanza el Sgte_Byte_Esperado, si la aplicación no lee más bytes
avanzará el extremo izquierdo de la Ventana anunciada, estrechándose la
ventana (incluso hasta llegar a ventana cero).
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 53
TCP: Fundamentos Sondas de ventana
Sondas de ventana
Si la aplicación en el lado receptor no lee los datos que se están
recibiendo, la implementación de TCP en el lado del receptor irá llenando
su buffer de recepción e irá anunciando un valor de ventana (ventana de
flujo) cada vez menor, incluso llegando a valer cero.
Si el emisor recibe del receptor AdvertisedWindow = 0, el emisor no
puede seguir enviando datos nuevos. El receptor ”ha cerrado la ventana”.
En esta situación, el emisor va a enviar periódicamente un segmento con
un número secuencia igual al último que tiene asentido y longitud 0
bytes para provocar el envı́o de asentimientos desde el receptor. Estos
segmentos se denominan sondas de ventana.
Cuando la aplicación en el lado receptor lea los datos que se están
recibiendo el buffer irá vaciándose y la implementación de TCP en el lado
receptor podrá guardar nuevos datos en dicho buffer y se lo comunicará al
emisor rellenando el valor correspondiente en el campo
AdvertisedWindow de los asentimientos que esté enviando como
respuesta a las sondas de ventana.
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 55
TCP: Fundamentos Interfaz de programación
4 Buffer_B := Receive(c)
6 Send(c, m2)
5 Buffer_A := Receive(c) m2
m2
out
bloqueado m2
in ACK
7 Close (c) FIN
bloqueado
ACK
FIN 8 Close (c)
ACK bloqueado
bloqueado
Máquina B
Máquina A 33
© GSyC 2009
GSyC - 2014 Nivel de transporte: UDP y TCP 56
TCP: Opciones
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
Extensiones de TCP
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 59
TCP: Opciones Window Scale
Extensiones de TCP
Window Scale
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
Formato de segmento
Establecimiento y cierre de la conexión
Ejemplo
Efecto de la Ventana Anunciada en el Emisor
Efecto de la Ventana Anunciada en el Receptor
Sondas de ventana
Interfaz de programación
4 TCP: Opciones
Window Scale
MSS
5 TCP: Plazos de retransmisión
6 Referencias
GSyC - 2014 Nivel de transporte: UDP y TCP 61
TCP: Opciones MSS
Extensiones de TCP
MSS
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
Plazos de retransmisión
Cuando se envı́a un segmento se arranca un temporizador para esperar su
asentimiento. Transcurrido el plazo marcado en el temporizador (timeout), si no se ha
recibido el ACK de ese segmento, se retransmite. Problema: ¿qué plazo ponemos?
Si el plazo es muy grande, puede tardarse mucho tiempo en retransmitir un segmento
que se ha perdido.
Si el plazo es muy pequeño, puede que no de tiempo a que se reciba el ACK e
innecesariamente se retransmita un segmento.
Nº sec=1001 Nº sec=1001
100 bytes
Nº sec=1001
100 bytes
Retransmisión adaptativa
SampleR TT
Retr
ansm
issio ACK
n Retr
ansm
issio
n
ACK
Contenidos
1 Nivel de transporte
2 UDP
3 TCP: Fundamentos
4 TCP: Opciones
6 Referencias
Referencias