Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A. Carissimi -30-nov.-09
Aula 26
Redes de Computadores 2
Source Port Destination Port DATA ! Permite ao destino retornar mensagens ao processo de origem
length Checksum
DATA ! Porta destino
! Usada para demultiplexação das mensagens encapsuladas nos datagramas
! Tamanho
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
! Melhor controle dos dados enviados ! Descrito nas RFCs 793, 1122, 1323, 2018 e 2581
! Dados da aplicação são empacotados pelo UDP e enviados ao IP ! Protocolo orientado a conexão
! Cada mensagem aplicação deve caber em um datagrama UDP
! PDU do TCP é denominada de segmento
! Desejável que caiba em um datagrama IP para evitar fragmentação
! Mensagens geradas por processos são fragmentadas em segmentos TCP
! Não há estabelecimento de conexão ! Abordagem baseada em fluxo de dados (data stream)
! Não há atrasos (troca de T-PDUs e processamento)
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
! Cada conexão TCP envolve exatamente duas extremidades
! Cabeçalho simplificado ! Envio pode ocorrer entre uma ou outra direção de uma mesma conexão TCP
Options+padding
Cabeçalho TCP
Data
A. Carissimi -30-nov.-09
A. Carissimi -30-nov.-09
! Hlen ! Checksum
! Fornece o tamanho do cabeçalho TCP em múltiplos de 4 bytes (palavra) ! Verificação da integridade dos dados (complemento de 1 em 16 bits)
! Tipicamente assume o valor 5 (20 bytes), exceto quando há options ! Calculado sobre um pseudo-cabeçalho (IP destino, IP fonte, campo protocolo,
! Flags tamanho da TPDU e a constante zero), o cabeçalho TCP e os dados
! Indica o propósito e o tipo do segmento ! Options
! URG: segmento transporta dados urgentes ! Lista variável de informações e parâmetros para o TCP
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
! SYN: segmento transporta requisição de abertura de conexão sempre um número inteiro de palavras de 32 bits.
! FIN: segmento transporta requisição de encerramento da conexão
SYN
! Objetivo:
Estabelecimento
SYN/ACK
! Garantir que dados são recebidos na ordem em que foram emitidos (e sem
ACK duplicação)
! O protocolo TCP faz isso através de um número de seqüência
Campos sequence number, DATA ! Número inicial é negociado durante o estabelecimento da conexão
Trasnferência
A. Carissimi -30-nov.-09
Encerramento
ACK
FIN
150 151 198 199 200 201 348 349 350 351 448 449
ACK
Segmento 150 Segmento 200 Segmento 350
A. Carissimi -30-nov.-09
! RFC 2018, permite o reconhecimento seletivo (similar ao selective
repeat)
! Retransmissão por time-out
! Baseado no valor do campo acknowledge number (ACK) ! O protocolo TCP emprega timeout por segmentos
! Indica o número de seqüência do próximo byte que espera receber ! Processo origem dispara um timeout para cada segmento enviado
! Informa o correto recebimento dos bytes com número de seqüência inferiores ! Segmento é retransmitido quando a origem não recebe a confirmação antes
ao da mensagem de confirmação da expiração do temporizador
! O bit de ACK do campo de flags deve estar ativo para dar significado ao ! Tratamento da duplicação é feito pelo sequence number
campo acknowledgement number
! Destino espera segmento com número x, qualquer segmento com número
Instituto de Informática - UFRGS
150 151 198 199 200 201 348 349 350 351 448 449
A. Carissimi -30-nov.-09
A. Carissimi -30-nov.-09
! Baseado em um esquema de crédito (genérico) ! Origem do segmento informa o tamanho do seu buffer de recepção
! Variação de janela deslizante onde os buffers de transmissão e recepção são (janela) a partir do último byte que confirmou
de tamanho variável (blocos múltiplos de bytes) ! RcvWindow = RcvBuffer – [ LastByteRcvd – LastByteRead ]
! Emissor tem crédito para enviar até n blocos de bytes ao destino
! Segmento ao ser aceito (processado), o destino renova a quantidade de ! Questão paralela: como se sabe o tamanho da área de dados?
créditos por um valor c (0 < c ≤ n)
! Tamanho TPDU (informado no IP) – Tamanho do cabeçalho TCP
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
! Tamanho máximo da janela é negociado no estabelecimento da conexão ! Valor default: 536 bytes
! Confirmações (ACKs) servem renovar os créditos ! Ethernet: 1460 bytes
Transferência de dados: urgent data Transferência de dados: mecanismo data stream push (bit PSH)
! Flag URG indica a presença de dados “urgentes” no segmento ! Buffer de transmissão do TCP tenta otimizar uso da rede
! Usuário (processo) destino decide o que fazer ! Objetivo é diminuir a quantidade de segmentos na rede, bufferizando os
! O campo urgent pointer sinaliza a posição em que termina os dados urgentes dados e enviando quando eles atinjam uma determinada quantidade
! Problema: prejudicar tempo de resposta da aplicação (ex. telnet)
cabeçalho ! Bit PSH
! Processo origem pode solicitar a transmissão de dados até esse momento
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
! Possibilidade raramente usada no TCP ! Encaminha todos os bytes que estão no buffer e não apenas os do
segmento identificado com o PSH
! Necessário que o processo destino priorize os dados (não seria
responsabilidade da aplicação?)
A. Carissimi -30-nov.-09
! Encerramento feito antes de receber todos os segmentos de dados ! TPDUs SYN incluem números de
seqüência
! SYN i
! T-PDU que chega atrasado é um T-PDU SYN i ! Solução para problema do two-way handshake
! Formalmente provado que a troca de 3 mensagens é condição
necessária e suficiente para assegurar um acordo não ambíguo
entre duas partes
! Mesmo considerando perdas, duplicação e atrasos
! Basicamente consiste em cada lado confirmar o recebimento de T-
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
B pensa que está abrindo conexão que espera números de seqüência a partir de i e
responde a partir de j. A considera que a conexão é com k e j. Ao chegar segmento
com k, B descarta como erro por não pertencer a conexão negociada!!
! Three way handshake ! Baseado em duas T-PDUs FIN (two way handshake)
! Entre pares de porta ! Apresenta problemas similares ao estabelecimento da conexão
Host 1 Host 2 ! Perdas de TPDUs e TPDUs atrasadas
! Problema:
envia SYN seq=x (SN=i; m)
A. Carissimi -30-nov.-09
recebe SEQ=x+1, ACK y+1
(SN=i; m)
Espera dados chegarem antes (FIN i+m+1)
de encerrar a conexão.
Posterga!
Redes de Computadores 25 Redes de Computadores 26
Envia ACK
Envia FIN seq = y ACK = x+1
Recebe FIN seq=y ACK=x+1 FIN_WAIT_2 ESTABLISHED CLOSE_WAIT SYN_RCVD
Envia ACK=y+1
A. Carissimi -30-nov.-09
A. Carissimi -30-nov.-09
A. Carissimi -30-nov.-09
Redes de Computadores 29 Redes de Computadores 30
[SYN] seq=0 MSS=1460 ! Em caso de falhas as informações de estado de uma conexão são
perdidas por um lado, o outro mantém meia-conexão
[SYN, ACK] seq=0, ack=1, W=5840, MSS=1460
CRASH CRASH
[ACK] seq=1, ack=1 (SN=i, m) (SN=i, m)
17520 220 FTP server Ready ... (23 bytes) Time-out
Time-out
REBOOT
Instituto de Informática - UFRGS
A. Carissimi -30-nov.-09
Redes de Computadores 33