Your SlideShare is downloading. ×
Aula26
Aula26
Aula26
Aula26
Aula26
Aula26
Aula26
Aula26
Aula26
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Aula26

826

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
826
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. 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. 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. 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

×