Diferencia entre revisiones de «Práctica 4: End-to-End (Teoría de las Comunicaciones)»
De Cuba-Wiki
Sin resumen de edición |
Sin resumen de edición |
||
Línea 84: | Línea 84: | ||
state->CongestionWindow = MIN(cw + incr, TCP_MAXWIN); | state->CongestionWindow = MIN(cw + incr, TCP_MAXWIN); | ||
} | } | ||
==Ejercicio 01== | |||
==Ejercicio 02== | |||
==Ejercicio 03== | |||
==Ejercicio 04== | |||
==Ejercicio 05== | |||
==Ejercicio 06== | |||
==Ejercicio 07== | |||
==Ejercicio 08== | |||
==Ejercicio 09== | |||
==Ejercicio 10== | |||
==Ejercicio 11== | |||
==Ejercicio 12== | |||
==Ejercicio 13== | |||
==Ejercicio 14== | |||
==Ejercicio 15== | |||
==Ejercicio 16== | |||
==Ejercicio 17== | |||
==Ejercicio 18== | |||
==Ejercicio 19== | |||
==Ejercicio 20== | |||
==Ejercicio 21== | |||
==Ejercicio 22== | |||
==Ejercicio 23== | |||
==Ejercicio 24== | |||
==Ejercicio 25== | |||
==Ejercicio 26== | |||
==Ejercicio 27== | |||
==Ejercicio 28== | |||
==Ejercicio 29== | |||
==Ejercicio 30== | |||
==Ejercicio 31== | |||
==Ejercicio 32== | |||
==Ejercicio 33== | |||
==Ejercicio 34== | |||
==Ejercicio 35== | |||
==Ejercicio 36== | |||
==Ejercicio 37== | |||
==Ejercicio 38== | |||
==Ejercicio 39== | |||
==Ejercicio 40== | |||
==Ejercicio 41== | |||
==Ejercicio 42== | |||
==Ejercicio 43== | |||
==Ejercicio 44== | |||
==Ejercicio 45== | |||
==Ejercicio 46== | |||
==Ejercicio 47== | |||
==Ejercicio 48== | |||
==Ejercicio 49== | |||
==Ejercicio 50== | |||
==Ejercicio 51== | |||
==Ejercicio 52== | |||
==Ejercicio 53== | |||
==Ejercicio 54== | |||
==Ejercicio 55== | |||
==Ejercicio 56== | |||
==Ejercicio 57== | |||
==Ejercicio 58== | |||
==Ejercicio 59== | |||
==Ejercicio 60== | |||
==Ejercicio 61== | |||
==Ejercicio 62== | |||
==Ejercicio 63== | |||
==Ejercicio 64== | |||
==Ejercicio 65== | |||
==Ejercicio 66== | |||
==Ejercicio 67== | |||
==Ejercicio 68== | |||
==Ejercicio 69== | |||
==Ejercicio 70== | |||
==Ejercicio 71== | |||
==Ejercicio 72== | |||
==Ejercicio 73== | |||
==Ejercicio 74== | |||
==Ejercicio 75== | |||
==Ejercicio 76== | |||
==Ejercicio 77== |
Revisión del 01:18 23 ago 2007
Header
SrcPort
DestPort
SequenceNum
Acknowledgment
HdrLen
0
Flags
AdvertisedWindow
Checksum
UrgPtr
Options (variable)
Data
Connection Setup
SYN, SequenceNum = x
SYN + ACK, SequenceNum = y, Acknowledgment = x + 1
ACK, Acnkowledment = y + 1
Invariants
LastByteAcked LastByteSent
LastByteSent LastByteWritten
LastByteRead NextByteExpected
NextByteExpected LastByteRcvd + 1
Fórmulas
Flow Control
Invariants
LastByteRcvd - LastByteRead MaxRcvBuffer
EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked)
LastByteWritten - LastByteAcked MaxSendBuffer
(LastByteWritten - LastByteAcked) + y MaxSendBuffer
Original Algorithm
Jacobson/Karels Algorithm
Actually:
Implementation:
{ SampleRTT -= (EsimatedRTT >> 3); EsimatedRTT += SampleRTT; if (SampleRTT < 0) { SampleRTT = -SampleRTT; } SampleRTT -= (Deviation >> 3); Deviation += SampleRTT; TimeOut = (EstimatedRTT >> 3) + (Deviation >> 1); }
Something
When the application produces data to send
if both the avaiable data and the window MSS
send a full segment
else
if there is unACKed data in flight
buffer the new data until an ACK arrives
else
send all the new data now
TCP Congestion Control
Formulas
Additive Increase / Multiplicative Decrease
Slow Start
{ int cw = state->CongestionWindow; int incr = state->maxseg; if (cw > state->CongestionThreshold) { incr = incr * incr / cw; } state->CongestionWindow = MIN(cw + incr, TCP_MAXWIN); }