estabelecimento e encerramento de conexão tcp

19
Estabelecimento e Encerramento de Conexão TCP Luis Octávio C. de Moraes [email protected]

Upload: luisoctaviomoraes

Post on 18-Dec-2014

1.011 views

Category:

Documents


5 download

DESCRIPTION

Material descreve o conceito do estabelecimento e do encerramento de uma conexão TCP entre dois host. Ao final há um exemplo para demonstrar como as flags e campos do cabeçalho se comportam.

TRANSCRIPT

Page 1: Estabelecimento e encerramento de conexão tcp

Estabelecimento e Encerramento de Conexão TCP

Luis Octávio C. de Moraes [email protected]

Page 2: Estabelecimento e encerramento de conexão tcp

1. Um lado (o servidor) aguarda passivamente por uma conexão de entrada, executando as primitivas LISTEN e ACCEPT através da especificação de uma determinada origem ou de ninguém em particular.

2. O outro lado (o cliente) executa a primitiva CONNECT, especificando o endereço do socket (ip+porta) a qual deseja conectar, o tamanho máximo do segmento TCP que está disposto a aceitar, opcionalmente, alguns dados do usuário (por exemplo, uma senha).

Estabelecimento

SYN = 1; Sequence number = x;

ACK = 0; Acknowledgement number = 0

Page 3: Estabelecimento e encerramento de conexão tcp

3. Quando o segmento chega ao servidor, a entidade TCP verifica se existe um processo executando a primitiva LISTEN na porta informada no campo ‘destination port’. Caso não tenha, ela envia uma resposta com o bit RST ativado para rejeitar a conexão.

4. Se algum processo estiver na escuta da porta, esse processo receberá o segmento TCP de entrada. Em seguida, ele poderá aceitar ou registrar a conexão. Se aceitar, um segmento de confirmação será retornado.

Estabelecimento

SYN = 1; Sequence number = y;

ACK = 1; Acknowledgement number = x + 1

Page 4: Estabelecimento e encerramento de conexão tcp

5. Agora o servidor aguarda uma confirmação final do cliente, para poder dar início a transmissão de dados.

6. Os dados são transmitidos.

Estabelecimento

SYN = 0; Sequence number = x + 1;

ACK = 1; Acknowledgement number = y + 1

Page 5: Estabelecimento e encerramento de conexão tcp

Segue exemplo:

Estabelecimento

Page 6: Estabelecimento e encerramento de conexão tcp

Estabelecimento

Cliente Servidor

Rede

Page 7: Estabelecimento e encerramento de conexão tcp

Estabelecimento

Cliente Servidor

SYN: 1 ACK: 0 FIN: 0

Seq: 22 Ack numb: 0

Page 8: Estabelecimento e encerramento de conexão tcp

Estabelecimento

Cliente Servidor

SYN: 1 ACK: 0 FIN: 0

Seq: 22 Ack numb: 0

SYN: 1 ACK: 1 FIN: 0

Seq: 45 Ack numb: 23

Page 9: Estabelecimento e encerramento de conexão tcp

Estabelecimento

Cliente Servidor

SYN: 1 ACK: 0 FIN: 0

Seq: 22 Ack numb: 0

SYN: 1 ACK: 1 FIN: 0

Seq: 45 Ack numb: 23

SYN: 0 ACK: 1 FIN: 0

Seq: 23 Ack numb: 46

Page 10: Estabelecimento e encerramento de conexão tcp

Estabelecimento

Cliente Servidor

SYN: 1 ACK: 0 FIN: 0

Seq: 22 Ack numb: 0

SYN: 1 ACK: 1 FIN: 0

Seq: 45 Ack numb: 23

SYN: 0 ACK: 1 FIN: 0

Seq: 23 Ack numb: 46

Transferência de Dados

Page 11: Estabelecimento e encerramento de conexão tcp

Apesar das conexões TCP serem full-duplex, fica mais fácil compreender como as conexões são encerradas se as considerarmos um par de conexões simplex. Cada conexão simplex é encerrada de modo independente de sua parceira.

Qualquer dos lados pode enviar um segmento com o bit FIN ativado, o que significa que não há mais dados para serem transmitidos. Quando FIN é confirmado, esse sentido é desativado para novos dados. No entanto, os dados podem continuar a fluir indefinitamente no outro sentido.

De modo geral, são necessários quatro segmentos TCP para encerrar uma conexão, isto é um FIN e um ACK para cada sentido. Porém é possível que o primeiro ACK e o segundo FIN ocupem o mesmo segmento, o que baixa o número total para três.

Encerramento

Page 12: Estabelecimento e encerramento de conexão tcp

Segue exemplo:

Encerramento

Page 13: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

Page 14: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

SYN: 0 ACK: 1 FIN: 1

Seq: 23 Ack numb: 46

Page 15: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

SYN: 0 ACK: 1 FIN: 1

Seq: 23 Ack numb: 46

SYN: 0 ACK: 1 FIN: 0

Seq: 46 Ack numb: 24

Page 16: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

SYN: 0 ACK: 1 FIN: 1

Seq: 23 Ack numb: 46

SYN: 0 ACK: 1 FIN: 0

Seq: 46 Ack numb: 24

Obs: Neste momento foi encerrado o envio de novos dados

apenas no sentido cliente-servidor. Nada impede do

servidor continuar enviando novos dados.

Page 17: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

SYN: 0 ACK: 1 FIN: 1

Seq: 23 Ack numb: 46

SYN: 0 ACK: 1 FIN: 0

Seq: 46 Ack numb: 24

SYN: 0 ACK: 1 FIN: 1

Seq: 46 Ack numb: 24

Page 18: Estabelecimento e encerramento de conexão tcp

Encerramento

Cliente Servidor

SYN: 0 ACK: 1 FIN: 1

Seq: 23 Ack numb: 46

SYN: 0 ACK: 1 FIN: 0

Seq: 46 Ack numb: 24

SYN: 0 ACK: 1 FIN: 1

Seq: 46 Ack numb: 24

SYN: 0 ACK: 1 FIN: 0

Seq: 24 Ack numb: 47

Encerramento da conexão finalizado para os dois lados da conexão.

Page 19: Estabelecimento e encerramento de conexão tcp

Referências

• TANENBAUM. A. Rede de computadores. 4º Edição.

• http://support.microsoft.com/kb/172983/pt-br

– Último acesso em 12/03/2013.