Escenarios en conexiones TCP

1 Escenarios en conexiones TCPContenidos Algunos recorrid...
Author: Gustavo García Soriano
0 downloads 2 Views

1 Escenarios en conexiones TCPContenidos Algunos recorridos del diagrama de estado TCP ELO-309

2 Establecimiento y Término de ConexiónActive participant Passive participant (client) (server) SYN, SequenceNum = x y , 1 SYN + ACK, SequenceNum = x + Acknowledgment = ACK, Acknowledgment = y + 1 ELO-309

3 Diagrama de Estado de TransmisiónCLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive open Close Send/ SYN SYN/SYN + ACK SYN + ACK/ACK ACK /FIN FIN/ACK ACK + FIN/ACK Timeout after two segment lifetimes Active open /SYN ELO-309

4 Escenario 1: Establecimiento de una conexiónCliente Servidor CLOSED Active open/SYN CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive open Close Send/SYN SYN/SYN + ACK SYN + ACK/ACK ACK Close/FIN FIN/ACK ACK + FIN/ACK Time after two segment lifetimes Active open/SYN Passive open Close Close LISTEN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK Close/FIN ESTABLISHED Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN/ACK Close/FIN ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 ACK ACK FIN/ACK TIME_WAIT CLOSED Time after two segment lifetimes ELO-309

5 Escenario 1: El servidor debe prepararse parra recibir conexiones La aplicación solicita abrir un socket (o punto de conexión en un puerto) CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Servidor Cliente ELO-309

6 Escenario 1: Un cliente pide abrir un socket y envía un SYN pidiendo establecimiento de conexiónCLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED SYN Time after two segment lifetimes Time after two segment lifetimes open Cliente Servidor

7 Escenario 1: Un servidor recibe un SYN y responde con un ACK y SYNCLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED SYN Time after two segment lifetimes Time after two segment lifetimes open Cliente Servidor SYN + ACK

8 Escenario 1: El cliente recibe el SYN + ACK y para él queda establecida la conexiónCLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED SYN Time after two segment lifetimes Time after two segment lifetimes open Cliente Servidor SYN + ACK ACK

9 Escenario 1: El servidor recibe su ACK y queda establecida la conexión para él.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED SYN Time after two segment lifetimes Time after two segment lifetimes open Cliente Servidor SYN + ACK ACK Intercambio de mensajes

10 Escenario 2: Cierre de la conexión por el servidor.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Cliente Servidor

11 Escenario 2: La aplicación en el servidor solicita un close del socket.Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN

12 Escenario 2: El cliente recibe el FIN y envía acuse de recibo.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK

13 Escenario 2: El servidor recibe el acuse y queda a la espera del cierre por parte del cliente.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK

14 Escenario 2: El cliente decide cerrar conexión, envía su FIN.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK FIN Close

15 Escenario 2: El servidor recibe el FIN y acusa su recibo.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK FIN Close ACK

16 Escenario 2: El cliente recibe el ACK de su FIN y cierra la conexión.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK FIN Close ACK La conexión es cerrada

17 Escenario 2: El cliente recibe el ACK de su FIN y cierra la conexión.CLOSED Active open/SYN CLOSED Active open/SYN Passive open Close Passive open Close Close Close LISTEN LISTEN SYN/SYN + ACK Send/SYN SYN/SYN + ACK Send/SYN SYN_RCVD SYN/SYN + ACK SYN_SENT SYN_RCVD SYN/SYN + ACK SYN_SENT ACK SYN + ACK/ACK ACK SYN + ACK/ACK Close/FIN Close/FIN ESTABLISHED ESTABLISHED Close/FIN FIN/ACK Close/FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN_WAIT_1 CLOSE_WAIT FIN/ACK FIN/ACK Close/FIN Close/FIN ACK ACK ACK + FIN/ACK CLOSING LAST_ACK ACK + FIN/ACK CLOSING LAST_ACK FIN_WAIT_2 FIN_WAIT_2 ACK ACK ACK ACK FIN/ACK FIN/ACK TIME_WAIT CLOSED TIME_WAIT CLOSED Time after two segment lifetimes Time after two segment lifetimes Intercambio de mensajes Close Cliente Servidor FIN ACK FIN Close ACK La conexión es cerrada Luego de un tiempo el servidor cierra su socket también

18 Iniciador de Cierre Diagrama recorrido por quien inicia el cierreCLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive open Close Send/ SYN SYN/SYN + ACK SYN + ACK/ACK ACK /FIN FIN/ACK ACK + FIN/ACK Timeout after two segment lifetimes Active open /SYN Diagrama recorrido por quien inicia el cierre ELO-309

19 Receptor del cierre (Me colgó el muy $ # % @ & !!!)CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive open Close Send/ SYN SYN/SYN + ACK SYN + ACK/ACK ACK /FIN FIN/ACK ACK + FIN/ACK Timeout after two segment lifetimes Active open /SYN Secuencia seguida por quien recibe el cierre de su par no habiendo iniciado él el cierre ELO-309

20 Diagrama de Estado de TransmisiónLos distintos caminos dependen de si hay cierre en ambos lados o no y si los FIN se cruzan en el camino. CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive open Close Send/SYN SYN/SYN + ACK SYN + ACK/ACK ACK Close/FIN FIN/ACK ACK + FIN/ACK Time after two segment lifetimes Active open/SYN Intercambio de mensajes Close FIN FIN Close ACK ACK Intercambio de mensajes Close FIN Close FIN + ACK ACK ELO-309

21 Algoritmo ventana deslizanteNS: Network simulator es un simulador de redes bastante evolucionado y de libre disposición. Ref: Invito a los interesados a verlo. Ojo no es un programa trivial, por lo cual se escapa al alcance de este curso. A través de este simulador se puede estudiar los fenómenos de ventana deslizante y otros. ELO-309