Introdução a Redes de Computadores - 6 - Nível de Transporte - TCP (p1)
-
Upload
andre-peres -
Category
Education
-
view
95 -
download
0
Transcript of Introdução a Redes de Computadores - 6 - Nível de Transporte - TCP (p1)
Introdução a Redes de Computadores
- Nível de Transporte -Protocolo TCP
(parte 1)
Prof. André [email protected]
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