Aula26

922 views
870 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
922
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aula26

  1. 1. User Datagram Protocol (UDP) Redes de Computadores ! Descrito na RFC 768 Instituto de Informática - UFRGS ! PDU do UDP é denominada datagrama ! Orientado a mensagem Protocolos de Transporte na Internet ! Protocolo de transporte da família TCP/IP não orientado à conexão UDP e TCP ! Por não executar controle de fluxo, de erro e de ordenamento, possui baixo custo de processamento Instituto de Informática - UFRGS ! Em relação ao IP agrega funcionalidade de multiplexação e demultiplexação e detecção de erros ! Processos origem e destino são identificados através de portas A. Carissimi -30-nov.-09 Aula 26 Redes de Computadores 2 Formato do datagrama UDP Campos do datagrama UDP 32 bits ! Porta fonte IP Header DATA ! Associada ao processo de origem Trasnferência 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 Instituto de Informática - UFRGS Cabeçalho 802.3 ! Tamanho total do datagrama UDP (inclui cabeçalho + dados) Cabeçalho IP Data ! Checksum Cabeçalho UDP ! Verificação da integridade dos dados (complemento de 1 em 16 bits) A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 ! Calculado sobre um pseudo-cabeçalho (IP destino, IP fonte, campo protocolo, tamanho TPDU e a constante zero), o cabeçalho UDP e os dados ! Dados Área de dados UDP PDU – Protocol Data Unit Área de dados IP Área de dados 802.3 Redes de Computadores 3 Redes de Computadores 4
  2. 2. Razões para usar UDP Transmission Control Protocol (TCP) ! 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 Instituto de Informática - UFRGS ! Trata os dados como uma cadeia continua de bytes ! Não há estados de conexão a monitorar/gerenciar ! Decide como agrupar os bytes em segmentos ! Não faz controle de perda, repetição, ordenamento e congestionamento ! Fornece comunicação confiável ponto a ponto entre dois processos ! Usado em aplicativos que toleram erros de entrega A. Carissimi -30-nov.-09 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 Redes de Computadores 5 Redes de Computadores 6 Serviços oferecidos pelo TCP a aplicativos Segmento TCP Orientado a conexão 32 bits ! Transferência confiável de dados dentro de um canal lógico, a ! Controle de erro e fluxo IP Header conexão ! Urgent pointer ! Garantia de entrega e de ordem Ack Source Port Destination Port ! Interface data stream (visão da aplicação) Sequence Number ! Gerenciamento da conexão Push ! Os dados são tratados como uma seqüência de bytes sem estrutura alguma Rst Acknowledgment Number ! Não há noção de registro/bloco/pacote para envio ou recepção Syn Hlen Flags Window Cabeçalho 802.3 Fin Checksum Urgent Pointer Cabeçalho IP Instituto de Informática - UFRGS Instituto de Informática - UFRGS Options+padding Cabeçalho TCP Data A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 Área de dados TCP Área de dados IP Área de dados 802.3 PDU – Protocol Data Unit Redes de Computadores 7 Redes de Computadores 8
  3. 3. Os campos mais simples primeiro: hlen, flags... ...checksum, options e padding ! 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 Instituto de Informática - UFRGS ! ACK: segmento transporta uma confirmação positiva ! Usado principalmente para definir o tamanho máximo de um segmento (MSS) ! PSH: mecanismo push foi adotado no envio do segmento ! Padding ! RST: a conexão deve ser imediatamente abortada (reset) ! Usado para “arrendondar” o número de bytes do cabeçalho para este ter A. Carissimi -30-nov.-09 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 Redes de Computadores 9 Redes de Computadores 10 Conexão TCP TCP: Controle de seqüência 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 acknowledgement number, window DATA/ACK ! Cada byte possui um número de seqüência Instituto de Informática - UFRGS Instituto de Informática - UFRGS e urgent pointer são usados nos ACK ! Indica sempre o primeiro byte de dados contido no segmento mecanismos de controle de erro e de fluxo (ordenamento). ! É o número que está no campo sequence number (SN) FIN ! Usado para manter ordenamento e detectar duplicação A. Carissimi -30-nov.-09 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 Redes de Computadores 11 Redes de Computadores 12
  4. 4. TCP: Controle de erros Controle de erros (cont.) ! Objetivo: ! Baseado em: ! Garantir o recebimento correto de T-PDUs ! Checksum: detecção de erros ! No protocolo TCP é baseado em ! timeout : segmentos não confirmados são reenviados ! Confirmação positiva (ACK) ! confirmações positivas ! Destino envia mensagem acusando correto recebimento de um segmento ! Ações ! Confirmação (ACK) pode ser enviada em pigbacking com o fluxo de ! Segmento com erro → descartado Instituto de Informática - UFRGS Instituto de Informática - UFRGS dados no sentido inverso ! Confirmação acumulativa (similar ao go-back N) ! Segmento perdido → retransmitido por time-out ! Diversos segmentos consecutivos podem ser confirmados por uma única ! Fora de ordem → ordena no buffer, confirma após ordenado (sem perdas) mensagem ! Duplicados → descarta A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 ! RFC 2018, permite o reconhecimento seletivo (similar ao selective repeat) ! Retransmissão por time-out Redes de Computadores 13 Redes de Computadores 14 TCP: Confirmação positiva TCP: Retransmissão ! 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 Instituto de Informática - UFRGS inferior é considerado duplicado e é descartado 150 151 198 199 200 201 348 349 350 351 448 449 A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 SN=150 SN=200 SN=350 ACK=200 ACK=350 ACK=450 Redes de Computadores 15 Redes de Computadores 16
  5. 5. TCP: Controle de fluxo Campo window: controle de fluxo ! 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 Instituto de Informática - UFRGS ! Créditos podem ser renegociados ! Máximo teórico é 65535 – 20 – 20, mas é definido através do MSS (Maximum ! No protocolo TCP Segment Size) divulgado por um host no momento do estabelecimento da ! Janela deslizante orientada a byte, i.é., cada byte se comporta como um buffer conexão A. Carissimi -30-nov.-09 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 Redes de Computadores 17 Redes de Computadores 18 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 Instituto de Informática - UFRGS T-PDU dados urgent ! Força a geração de um segmento com os dados disponíveis pointer ! Indica que a entidade de transporte deve repassar imediatamente o segmento para o processo destino A. Carissimi -30-nov.-09 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?) Redes de Computadores 19 Redes de Computadores 20
  6. 6. Conexão na presença de erros: problemas Problema: segmentos de conexões anteriores ! Estabelecimento da conexão ! Problema: ! Baseado em dois TPDUs SYN (two way handshake) ! T-PDU de uma conexão j chega em uma ! Perda de qualquer um dos SYN provoca retransmissão (tratar duplicados) conexão j+1 ! Sistema se resincroniza ! Chegada atrasada da T-PDU SYN provoca interpretação erradas de conexão ! Transferência de dados: controle de fluxo e de erro Instituto de Informática - UFRGS Instituto de Informática - UFRGS ! Solução: ! TPDUs ainda válidos de conexões anteriores chegando atrasadas ! Iniciar cada conexão com um número de ! Encerramento da conexão seqüência a partir do último da conexão ! Chegada de pedidos de encerramento atrasados mais recente A. Carissimi -30-nov.-09 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 Redes de Computadores 21 Redes de Computadores 22 Mais problemas: atraso na T-PDU de controle Three-way handshake ! 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 Instituto de Informática - UFRGS PDUs de abertura de conexão e número de seqüência A. Carissimi -30-nov.-09 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!! Redes de Computadores 23 Redes de Computadores 24
  7. 7. Estabelecimento de conexão Ainda problemas: Encerramento de conexão ! 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) recebe SYN (FIN) Instituto de Informática - UFRGS Instituto de Informática - UFRGS envia SYN seq=y, ACK x+1 recebe SYN seq=y, ACK x+1 PERDA !!! envia SEQ x+1, ACK y+1 ! Solução: numerar TPDUs FIN A. Carissimi -30-nov.-09 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 Encerramento de conexão simétrico Diagrama de estados conexão TCP Lado Cliente Lado Servidor ! Antes de receber a confirmação do encerramento (TPDU FIN da outra entidade) ainda recebe TPDUs de dados CLOSED CLOSED Espera 30s Recebe ACK Envia SYN Envia SYN FIN seq =x Recebe FIN seq = x TIME_WAIT SYN_SENT LAST_ACK LISTEN Envia ACK = x+1 Recebe ACK = x + 1 Recebe SYN+ACK Recebe SYN Instituto de Informática - UFRGS Instituto de Informática - UFRGS Recebe FIN Envia FIN Envia ACK Envia SYN+ACK ... 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 Envia FIN Recebe ACK Recebe ACK=y+1 Recebe ACK Recebe FIN FIN_WAIT_1 Envia ACK ESTABLISHED Redes de Computadores 27 Redes de Computadores 28
  8. 8. Instituto de Informática - UFRGS Instituto de Informática - UFRGS A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 Redes de Computadores 29 Redes de Computadores 30 Análise da sessão ftp Recuperação de falhas (crash recovery) [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 Instituto de Informática - UFRGS [ACK] seq=1, ack=1 17497 (SN=i, m) Time-out [ACK] seq=1, ack=24 (SN=i, m) Time-out (SN=i, m) A. Carissimi -30-nov.-09 A. Carissimi -30-nov.-09 [ACK] seq=1, ack=24 (RST i) USER asc.. (10 bytes) REBOOT [ACK] seq=24, ack=11 Reseta a meia conexão por excesso de Reseta a meia conexão por receber retransmissões comando de reset (RST) Redes de Computadores 31 Redes de Computadores 32
  9. 9. Leituras complementares ! Stallings, W. Data and Computer Communications (6th edition), Prentice Hall 1999. ! Capítulo 15, seção 15.3, 15.4 ! Tanenbaum, A. Redes de Computadores (4a edição), Campus, 2000. ! Capítulo 6, seção 6.1, 6.2 e 6.3 Instituto de Informática - UFRGS ! Carissimi, A.; Rochol, J; Granville, L.Z; Redes de Computadores. Série Livros Didáticos. Bookman 2009. ! Capítulo 6, seções 6.4 e 6.5 A. Carissimi -30-nov.-09 Redes de Computadores 33

×