1 / 43

Protocolos de Transporte da Pilha TCP/IP

Protocolos de Transporte da Pilha TCP/IP. Profa. Ana Cristina Benso da Silva Redes de Computadores. UDP (User Datagram Protocol). O protocolo UDP é bastante simples Orientado a datagrama Não orientado à conexão Não executa controle de fluxo, controle de erro e sequenciamento

Download Presentation

Protocolos de Transporte da Pilha TCP/IP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Protocolos de Transporte da Pilha TCP/IP Profa. Ana Cristina Benso da Silva Redes de Computadores

  2. UDP (User Datagram Protocol) • O protocolo UDP é bastante simples • Orientado a datagrama • Não orientado à conexão • Não executa controle de fluxo, controle de erro e sequenciamento • Não tem reconhecimento dos datagramas (ACK/NACK) • Devido a sua simplicidade é considerado não confiável Redes de Computadores Profa. Ana Benso

  3. 0 16 31 Porta Origem Porta Destino Tamanho Checksum Dados Header UDP Onde, Porta Origem e Porta Destino identificam o processo de aplicação que está enviando dados e o processo de aplicação que irá receber os dados. Tamanho é representa o tamanho total do frame UDP Checksum é calculado usando o header UDP e também a área de dados, e destina-se a verificação de erros de transmissão. Redes de Computadores Profa. Ana Benso

  4. Checksum UDP • O Checksum no UDP é opcional • Campo de checksum = 0, não executa verificação • Campo de checksum <> 0, executa verificação • O cálculo do checksum utiliza o header, os dados e também o Pseudo-Header • Este pseudo-header é utilizado para verificação adicional e confirmação de que o datagrama chegou ao destino correto Redes de Computadores Profa. Ana Benso

  5. 0 16 31 Endereço IP Origem Endereço IP Destino Zero Protocolo Tamanho Pseudo-Header Onde, Endereço IP Origem e Endereço IP destino são do nível de rede (protocolo IP) utilizadas para a segunda validação do destino do datagrama. Zero é um campo com valor zero para complementar a estrutura do pseudo-header. Protocolo indica qual o protocolo de transporte (TCP ou UDP), pois o pseudo-header é utilizado para os dois protocolos. Tamanho indica o tamanho do frame de transporte (UDP ou TCP) Redes de Computadores Profa. Ana Benso

  6. 0 16 31 Endereço IP Origem Endereço IP Destino Pseudo-Header Zero Protocolo Tamanho Porta Origem Porta Destino Header UDP Tamanho Checksum Datagrama UDP Dados Ordem de Header para o Checksum do UDP Atenção! O Pseudo-Header não é transmitido junto com o datagrama UDP, ele é utilizado apenas para cálculo do Checksum. Redes de Computadores Profa. Ana Benso

  7. Processamento do Checksum • Na origem, as informações necessárias são organizadas em blocos de 16 bits para o cálculo do checksum • Caso o cálculo resulte em zero, os 16 bits do checksum serão configurado todos em 1 (valor = 65535) • Se optar-se por não utilizar checksum, os 16 bits serão configurados todos em 0 Redes de Computadores Profa. Ana Benso

  8. Processamento do Checksum • Se o checksum recebido tem todos os bits em zero, não é necessário calculá-lo (pois não está sendo utilizado) • Caso contrário, o cálculo do checksum é realizado novamente • Se o cálculo resultar em Zero, o datagrama não contém erros • Se o cálculo resultar diferente de Zero, o datagrama é descartado Redes de Computadores Profa. Ana Benso

  9. Tamanho Máximo do Datagrama • Teoricamente o tamanho máximo é de 64Kb • Porque no IP o campo tamanho total é de 16 bits • Mas deve-se considerar que no IP estão sendo calculado • Tamanho do Header do IP (20 bytes) • Datagrama UDP (8 bytes) • Assim, o tamanho máximo é de 65507 bytes Redes de Computadores Profa. Ana Benso

  10. Tamanho Máximo do Datagrama • Outros fatores podem influenciar • Programas de aplicação podem ser limitados pela interface de programação • Implementação do kernel do TCP/IP • Truncando Datagramas • Apesar do tamanho máximo, nem todas as aplicações podem estar preparadas para receber um datagrama maior que esperado • Truncar ou não? Depende da implementação de cada interface de programação Redes de Computadores Profa. Ana Benso

  11. UDP e ICMP Source Quench • Mensagens ICMP Source Quench • Podem ser geradas pelo sistema quando ele recebe dados a uma taxa maior que ele consegue processar • Não é obrigatória a geração, mesmo que o sistema descarte os datagramas • “O sentimento corrente é que esta mensagem deve ser considerada obsoleta” • Porque consome largura de banda e é ineficaz para o controle de congestionamento • Almquist 1993 (RFC???) Redes de Computadores Profa. Ana Benso

  12. UDP e ICMP Source Quench • Várias sistemas operacionais não geram estas mensagens • Vários sistemas operacionais não repassam tais mensagens para o protocolo UDP • Somente o TCP é notificado quando estas mensagens ocorrem!!! Redes de Computadores Profa. Ana Benso

  13. TCP (Transmission Control Protocol) • Protocolo de transporte considerado confiável • Orientado à conexão • Controle de erros com retransmissão • Controle de fluxo • Sequenciamento • Entrega ordenada • Orientado a “byte stream” Redes de Computadores Profa. Ana Benso

  14. Porta origem Porta destino Número de Seqüência Acknowlegement Tam. Reser. Flags Window Checksum Urgent Pointer Opções (se houver) Dados Header TCP Redes de Computadores Profa. Ana Benso

  15. Header TCP Onde, Porta Origem e Porta Destino identificam o processo de aplicação que está enviando dados e o processo de aplicação que irá receber os dados. Número de seqüência identifica os bytes enviados. Na prática ele é a identificação do primeiro byte de dados contido no segmento enviado. Os demais são seqüenciados a partir deste byte. Acknowledgement identifica os bytes que foram recebidos e tratados sem erro pelo destino, bem como a seqüência do próximo byte esperado Tamanho é representa o tamanho total do frame TCP Reservado é um campo ainda não utilizado FLAGS identifica as flags (syn, fin, psh, rst, ack, urg) Window identifica o tamanho da janela para o controle de fluxo Checksum destina-se a verificação de erros de transmissão. É calculado usando o pseudo header, o header TCP e também a área de dados Urgent Poninter é um ponteiro para dados urgentes, contidos na área de dados. Redes de Computadores Profa. Ana Benso

  16. Controle de Conexão TCP • Três Fases • Estabelecimento da Conexão • Transmissão de Dados • Encerramento da Conexão • Flags • SYN – solicitação de conexão • FIN – Finalização da Conexão • RST – Reset da Conexão • ACK – Reconhecimento de recebimento Redes de Computadores Profa. Ana Benso

  17. Estabelecimento da Conexão Origem A Destino B SYN 1415531521:1415531521 (0) <mss 1024> SYN 1823083521: 1823083521 (0) <mss 1024> ACK 1415531521 ACK 1823083522 Redes de Computadores Profa. Ana Benso

  18. Estabeleci mento da Conexão • Ativo x passivo • A origem da solicitação de conexão executa o “active open” • O destino que recebe a solicitação de conexão executa o “passive open” • Origem e destino enviam seus número de seqüência iniciais para a conexão em curso • Este número deve ser alterado ao longo do tempo e ser diferente de conexão para conexão Redes de Computadores Profa. Ana Benso

  19. Inicialização do Número de Seqüência • RFC 793 • Número de 32 bits • É incrementado a cada 4 microsegundos • Como escolher o número inicial? • 4.4BSD • Quando sistema é inicializado o número de seqüência é 1 (violação da RFC) • A variável é incrementada de 64.000 a cada ½ segundo • Isso significa que irá retornar a 0 em períodos de 9 horas e ½ Redes de Computadores Profa. Ana Benso

  20. MSS (Maximum Segment Size) • O MSS representa o tamanho do maior bloco de dados que poderá ser enviado para o destino. • Não é negociável, cada host divulga o seu MSS • Default: 536 bytes (20 bytes IP, 20 bytes TCP, para um total de 576 bytes) • Ethernet: 1460 bytes (20 bytes IP, 20 bytes TCP, para um total de 1500 bytes) Redes de Computadores Profa. Ana Benso

  21. MSS... • Em geral, quanto maior o MSS melhor, até que ocorra fragmentação • Quanto maior a quantidade de dados enviados em um único bloco, menor o overhead de headers do TCP e do IP • Exemplo ? MSS 1460 A B MSS 256 Redes de Computadores Profa. Ana Benso

  22. Outras Opções TCP • End of option list (1 byte) • No operation (NOP) (1 byte) • Windows scale factor (3 bytes) • Timestamp (10 bytes) • MSS (4 bytes) Redes de Computadores Profa. Ana Benso

  23. Encerramento da Conexão Origem A Destino B FIN 1415531522:1415531522 (0) ACK 1823083522 ACK 1415531523 FIN 1823083522: 1823083522 (0) ACK 1415531523 ACK 1823083523 Redes de Computadores Profa. Ana Benso

  24. Encerramento da Conexão • Half Close • Conexões TCP são full-duplex, logo cada lado da conexão deve finalizar a conexão de forma independente • Quando um dos lados envolvidos recebe uma solicitação de finalização deve enviar a notificação para a aplicação • Uma aplicação após receber o pedido de finalização ainda pode mandar dados Redes de Computadores Profa. Ana Benso

  25. Half Close - Exemplo bsdi sun FIN + ACK Exemplo: sun% rsh bsdi < datafile ACK Data Ack of Data std input sun bsdi datafile sort rsh FIN + ACK terminal std output ACK Redes de Computadores Profa. Ana Benso

  26. Timeout no Estabelecimento da Conexão • Trecho de tráfego monitorado (tcpdump) • Importante: tempo entre cada tentativa vs. tempo máximo exigido na RFC • Tempo: 75 segundos • 4.4 BSD: leva 76 segundos • Problema: Timeout Redes de Computadores Profa. Ana Benso

  27. Diagrama de Estados - TCP Redes de Computadores Profa. Ana Benso

  28. Estados x Mensagens Origem Destino SYN LISTEN SYN_SENT SYN_RCVD SYN + ACK ESTABLISHED ACK ESTABLISHED FIN FIN_WAIT 1 CLOSE_WAIT ACK FIN_WAIT 2 FIN + ACK LAST_ACK TIME_WAIT 2 ACK CLOSED Redes de Computadores Profa. Ana Benso

  29. 2MSL Wait State • O TIME_WAIT é tabém chamado 2MSL • MSL = Maximum Segment Life • Tempo máximo que um segmento pode existir antes de ser descartado • TTL do IP ??? • RFC 793 • “MSL dever ser de 2 minutos” • Mas as implementações variam de entre 30 segundos, 1 minuto e 2 minutos Redes de Computadores Profa. Ana Benso

  30. Utilização do 2MSL • Quando é executado um active close e enviado o ACK final, a conexão deve permanecer no estado TIME_WAIT pelo dobro do tempo especificado no MSL • Isso irá permitir a retransmissão do ACK final, caso o primeiro seja perdido • Outra conseqüência é a não liberação do par de sockets utilizados para a conexão • Algumas implementações restringem também o uso das portas locais durante o 2MSL Redes de Computadores Profa. Ana Benso

  31. Utilização do 2MSL • Socket option • SO_REUSEADDR • Transpor as regras sobre uso do endereço das portas • Quanto a transmissão de dados • Qualquer segmento que chegue para uma conexão neste período (2MSL) deverá ser descartado • Conseqüências para clientes e servidores? Redes de Computadores Profa. Ana Benso

  32. Quite Time • Considere a seguinte situação • Ocorre uma falha no host que está no estado 2MSL • Ele faz o reboot ainda no período de espera do MSL • Ele estabelece uma nova conexão imediatamente, usando o mesmo endereço de porta local e porta remota • O que poderá ocorrer neste caso? • Para prevenir, o host deve esperar por MSL segundos, após o reboot, antes de estabelecer qualquer conexão nova. Redes de Computadores Profa. Ana Benso

  33. Reset de Conexões • Em geral, um Reset é gerado sempre que é recebido um segmento que não parece estar correto para a conexão identificada. • Casos • Solicitações de conexões para portas inexistentes • Aborto de conexões • Solicitações de conexões falsas Redes de Computadores Profa. Ana Benso

  34. Estabelecimento de Conexões Simultâneas • É possível que 2 hosts tentem estabelecer conexão entre eles simultaneamente • Ambos executam um active open • Exemplo: • Host A solicita conexão ao Host B na porta 777 e usa como porta local 888 • Host B solicita conexão ao Host A na porta 888 e usa como porta local 777 • TCP foi projetado para suportar estes casos • Apenas uma conexão resulta, não duas Redes de Computadores Profa. Ana Benso

  35. Origem Destino FIN FIN FIN_WAIT 1 FIN_WAIT 1 CLOSING CLOSING ACK ACK TIME_WAIT TIME_WAIT Encerramento de Conexões simultâneas • Os hosts também podem tomar a iniciativa de encerrar a conexão simultaneamente Redes de Computadores Profa. Ana Benso

  36. Intruso Destino Suposta Origem SYN SYN + ACK SYN RST SYN RST SYN SYN SYN SYN FLOOD • Flooding de solicitações de conexão falsas • Normalmente usa IP Spoofing Redes de Computadores Profa. Ana Benso

  37. Controle de Erros • O TCP executa controle de erro com retransmissão • Neste caso o checksum não é opcional • Se um segmento TCP é recebido com checksum igual a zero, ele é descartado • O destino envia mensagens de reconhecimento positivo • Não envia NACK • A necessidade de realizar uma retransmissão é detectada pela ausência do ACK Redes de Computadores Profa. Ana Benso

  38. Controle de Fluxo Origem Destino • O TCP executa o algoritmo de janela deslizante • A cada envio de mensagens o host informa o número de bytes que podem ser recebidos Dados, ACK(D), Seq (O) WIN (4096) Dados, ACK(O), Seq (D) WIN (512) Dados, ACK(D), Seq (O) WIN (4096) Erro!!!! Timeout Dados, ACK(D), Seq (O) WIN (4096) Dados, ACK(O), Seq (D) WIN (3000) Dados, ACK(D), Seq (O) WIN (512) Redes de Computadores Profa. Ana Benso

  39. Origem Destino Origem Destino Dados, ACK(D), Seq (O) WIN (4096) Dados, ACK(D), Seq (O) WIN (4096) digitado digitado servidor servidor ACK(O) + WIN DADOS + ACK(O) + WIN echo display ACK(D) + WIN Dados, ACK(O), Seq (D) WIN echo display ACK(D) + WIN Fluxo Interativo piggback • Exemplo: rlogin delayed Redes de Computadores Profa. Ana Benso

  40. Algoritmo de Nagle • Exemplo do Rlogin • 1 byte de dados • 20 bytes TCP + 20 Bytes IP • Problema? • Overhead de controle • Nagle: • Pequenos segmentos só podem ser enviados após o recebimento do ACK dos dados enviados anteriormente Redes de Computadores Profa. Ana Benso

  41. Algoritmo de Nagle • Assim, o TCP coleta pequenos segmentos de dados e os envia juntos • A velocidade de envio irá variar com de acordo com a velocidade de recebimento do ACK • Algoritmo é self-clocking • Exemplo: Ethernet • RTT aproximadamente de 16 ms • Para ser mais rápido deveria digitar mais de 60 caracteres por segundo • Isto significa que raramente é aplicado nestas redes • Utilizado em redes com RTT maior (p.ex: WAN) Redes de Computadores Profa. Ana Benso

  42. Desabilitando Nagle • Quando é necessário? • Trafego Interativo • Xwindow (movimentos do mouse....) • A API do socket pode utilizar a opção TCP_NODELAY para desabilitar o algoritmo Redes de Computadores Profa. Ana Benso

  43. Redes de Computadores Profa. Ana Benso

More Related