Introdução a Redes de Computadores - 6 - Nível de Transporte - TCP (p1)

Preview:

Citation preview

Introdução a Redes de Computadores

- Nível de Transporte -Protocolo TCP

(parte 1)

Prof. André Peresandre.peres@poa.ifrs.edu.br

Sobre este material

• Vídeos da apresentação em:Parte 1 - Nível de Transporte - Protocolo TCP

Parte 2 - Protocolo TCP (flags)

Parte 3 - Protocolo TCP (sequência)

Parte 4 - Protocolo TCP (parte 1 - prática)

Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-NãoComercial-SemDerivações 4.0 Internacional. Para ver uma

cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/4.0/.

Referências

Redes de Computadores (impresso)

Redes de Computadores (e-book)

Redes de Computadores II (impresso)

Redes de Computadores II (e-book)

Redes de Computadores III (impresso)

Redes de Computadores III (e-book)

Nível de Transporte

• TCP - Transmission Control Protocol (RFC 793)

• Orientado à conexão• Garante a chega dos pacotes

• em ordem• recebendo confirmações (ACK)• retransmitindo em caso de perda ou erro• controlando time-out• controlando duplicação de pacotes• controlando o fluxo de envio

Nível de Transporte - TCP

• Cabeçalho TCP:

Nível de Transporte - TCP

• Multiplexação de portas• Source Port → porta de origem• Destination Port → porta de destino

• Tamanho de cabeçalho• Header length

• Identificação de erros no destino• Checksum

Nível de Transporte - TCP

• Multiplexação de portas, tamanho de cabeçalho e controle de erros no destino

Nível de Transporte - TCP

• Controle de conexão• FLAG (1 bit) identificando início de conexão → SYN• FLAG (1 bit) indicando a finalização de conexão → FIN• FLAG (1 bit) de reconhecimento → ACK

Nível de Transporte - TCP

• Controle de Conexão

Nível de Transporte - TCP

Controle de Conexão• Estabelecimento de conexões (three-way handshake)

Nível de Transporte

Controle de Conexão• Finalização de conexões (4 vias)

Nível de Transporte

Controle de Conexão• Finalização de conexões (3 vias)

Nível de Transporte - TCP

• Controle de Conexão• Visão geral de uma conexão

• Demais FLAGS e Urgent Pointer

Nível de Transporte - TCP

• Demais FLAGS• ECN - Explicit Congestion Notification

• Quando um roteador identifica uma situação de congestionamento seta ECN = 1

• CWR - Congestion Window Reduced• Ao ser notificado com ECN=1, o TCP diminui o fluxo

de transmissão diminuindo o valor do Congestion Window e notifica o roteador setando CWR =1

Nível de Transporte - TCP

• Demais FLAGS

• URG e Urgent Pointer• não são utilizados por aplicações modernas• cria prioridades de dados de aplicação• Urgent Pointer - especifica o volume (quantidade de

bytes) urgentes• quando URG = 1 o TCP irá entregar os dados urgentes

para a aplicação imediatamente• o TCP notifica a aplicação de que se tratam de dados

urgentes

Nível de Transporte - TCP

• Demais FLAGS

• PSH - Push• notificação para entrega de dados para a aplicação• identifica o final de um fluxo de dados• ao receber PSH = 1 o TCP entrega os dados para a

aplicação• RST - Reset

• interrupção de conexão abrupta• indicação de problema na comunicação• ao receber RST = 1 o TCP encerra a conexão sem mais

nenhuma troca de pacotes

Nível de Transporte - TCP

• Controle de Sequência• Sequence number (Número de sequência)• Acknowledgement number (Número de reconhecimento)

Nível de Transporte - TCP

Nível de Transporte - TCP

• Controle de Sequência• Sequence number (Número de sequência)

• 32 bits (0 - 4.294.967.296)• Incrementado quando:

• flag SYN=1• incrementado em 1

• flag FIN=1• incrementado em 1

• existem dados de aplicação• incrementado no número de bytes de

aplicação

Nível de Transporte - TCP

Controle de Sequência• Número de reconhecimento (Acknowledgement number)

• 32 bits (0 - 4.294.967.296)• indica o valor de sequence number esperado• reconhece o recebimento de todos os pacotes

anteriores

Nível de Transporte - TCP

Controle de Sequência

Nível de Transporte - TCP

C S

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

SeqNum = 1 | AckNum = 45

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

SeqNum = 1 | AckNum = 45

SeqNum = 1 | AckNum = 45350 bytes aplicação

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

SeqNum = 1 | AckNum = 45

SeqNum = 1 | AckNum = 45350 bytes aplicação

SeqNum = 45 | AckNum = 351

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

SeqNum = 1 | AckNum = 45

SeqNum = 1 | AckNum = 45350 bytes aplicação

SeqNum = 45 | AckNum = 351

SeqNum = 351 | AckNum = 45 FIN

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SeqNum = 0 | AckNum = 1 SYN/ACK

SeqNum = 1 | AckNum = 1 ACK

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

2 bytes aplicação SeqNum = 43 | AckNum = 1

SeqNum = 1 | AckNum = 45

SeqNum = 1 | AckNum = 45350 bytes aplicação

SeqNum = 45 | AckNum = 351

SeqNum = 351 | AckNum = 45 FIN

FIN/ACKSeqNum = 45 | AckNum = 352

Nível de Transporte - TCP

C S

SeqNum = 0 | AckNum = 0 SYN

SYN/ACK

ACK

SeqNum = 0 | AckNum = 1

SeqNum = 1 | AckNum = 1

42 bytes aplicação SeqNum = 1 | AckNum = 1

SeqNum = 1 | AckNum = 43

SeqNum = 43 | AckNum = 1 2 bytes aplicação

SeqNum = 1 | AckNum = 45

SeqNum = 1 | AckNum = 45350 bytes aplicação

SeqNum = 45 | AckNum = 351

SeqNum = 351 | AckNum = 45 FIN

SeqNum = 45 | AckNum = 352

SeqNum = 352 | AckNum = 46 ACK

FIN/ACK

Nível de Transporte - TCP

• Cálculo de tempo médio de envio/recebimento de pacotes• RTT (Round Trip Time)• Calculado durante o estabelecimento da conexão• Monitorado durante toda a conexão

Nível de Transporte - TCP

• Exercício: captura e análise de cabeçalhos TCP

Recommended