Protocolos de Transporte da Pilha TCPIP Profa Ana

  • Slides: 35
Download presentation
Protocolos de Transporte da Pilha TCP/IP Profa. Ana Cristina Benso da Silva Redes de

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

UDP (User Datagram Protocol) l O protocolo UDP é bastante simples ð Orientado a

UDP (User Datagram Protocol) l 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) l Devido a sua simplicidade é considerado não confiável Redes de Computadores Profa. Ana Benso

Header UDP 0 16 31 Porta Origem Porta Destino Tamanho Checksum Dados Onde, Porta

Header UDP 0 16 31 Porta Origem Porta Destino Tamanho Checksum Dados 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

Checksum UDP l O Checksum no UDP é opcional ð Campo de checksum =

Checksum UDP l O Checksum no UDP é opcional ð Campo de checksum = 0, não executa verificação ð Campo de checksum <> 0, executa verificação l 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

Pseudo-Header 0 16 31 Endereço IP Origem Endereço IP Destino Zero Protocolo Tamanho Onde,

Pseudo-Header 0 16 31 Endereço IP Origem Endereço IP Destino Zero Protocolo Tamanho 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

Ordem de Header para o Checksum do UDP 0 16 31 Endereço IP Origem

Ordem de Header para o Checksum do UDP 0 16 31 Endereço IP Origem Endereço IP Destino Zero Header UDP Protocolo Pseudo-Header Tamanho Porta Origem Porta Destino Tamanho Checksum Datagrama UDP Dados 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

Processamento do Checksum l Na origem, as informações necessárias são organizadas em blocos de

Processamento do Checksum l 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) l Se optar-se por não utilizar checksum, os 16 bits serão configurados todos em 0 Redes de Computadores Profa. Ana Benso

Processamento do Checksum l Se o checksum recebido tem todos os bits em zero,

Processamento do Checksum l Se o checksum recebido tem todos os bits em zero, não é necessário calculá-lo (pois não está sendo utilizado) l 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

Tamanho Máximo do Datagrama l Teoricamente o tamanho máximo é de 64 Kb ð

Tamanho Máximo do Datagrama l Teoricamente o tamanho máximo é de 64 Kb ð 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

Tamanho Máximo do Datagrama l Outros fatores podem influenciar ð Programas de aplicação podem

Tamanho Máximo do Datagrama l Outros fatores podem influenciar ð Programas de aplicação podem ser limitados pela interface de programação ð Implementação do kernel do TCP/IP l 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

UDP e ICMP Source Quench l Mensagens ICMP Source Quench ð Podem ser geradas

UDP e ICMP Source Quench l 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 l “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

UDP e ICMP Source Quench l Várias sistemas operacionais não geram estas mensagens l

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

TCP (Transmission Control Protocol) l Protocolo de transporte considerado confiável ð Orientado à conexão

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

Header TCP Porta origem Porta destino Número de Seqüência Acknowlegement Tam. Reser. Flags Checksum

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

Header TCP Onde, Porta Origem e Porta Destino identificam o processo de aplicação que

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

Controle de Conexão TCP l Três Fases ð Estabelecimento da Conexão ð Transmissão de

Controle de Conexão TCP l Três Fases ð Estabelecimento da Conexão ð Transmissão de Dados ð Encerramento da Conexão l 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

Estabelecimento da Conexão Origem A SYN 1415531521: 1415531521 (0) <mss 1024> Destino B SYN

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

Estabeleci mento da Conexão l Ativo x passivo ð A origem da solicitação de

Estabeleci mento da Conexão l 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” l 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

Inicialização do Número de Seqüência l RFC 793 ð Número de 32 bits ð

Inicialização do Número de Seqüência l RFC 793 ð Número de 32 bits ð É incrementado a cada 4 microsegundos l Como escolher o número inicial? ð 4. 4 BSD ü 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

MSS (Maximum Segment Size) l O MSS representa o tamanho do maior bloco de

MSS (Maximum Segment Size) l O MSS representa o tamanho do maior bloco de dados que poderá ser enviado para o destino. l 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

MSS. . . l Em geral, quanto maior o MSS melhor, até que ocorra

MSS. . . l 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 l Exemplo MSS 1460 A Redes de Computadores MSS 256 B ? Profa. Ana Benso

Outras Opções TCP l End of option list (1 byte) l No operation (NOP)

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

Encerramento da Conexão Origem A FIN 1415531522: 1415531522 (0) ACK 1823083522 Destino B ACK

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

Encerramento da Conexão l Half Close ð Conexões TCP são full-duplex, logo cada lado

Encerramento da Conexão l 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

Half Close - Exemplo bsdi sun FIN + ACK Exemplo: ACK sun% rsh bsdi

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

Timeout no Estabelecimento da Conexão l Trecho de tráfego monitorado (tcpdump) l Importante: tempo

Timeout no Estabelecimento da Conexão l Trecho de tráfego monitorado (tcpdump) l 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

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

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

Estados x Mensagens Origem SYN_SENT SYN Destino LISTEN SYN_RCVD SYN + ACK ESTABLISHED FIN_WAIT

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

Reset de Conexões l Em geral, um Reset é gerado sempre que é recebido

Reset de Conexões l Em geral, um Reset é gerado sempre que é recebido um segmento que não parece estar correto para a conexão identificada. l 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

Estabelecimento de Conexões Simultâneas l É possível que 2 hosts tentem estabelecer conexão entre

Estabelecimento de Conexões Simultâneas l É 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 l TCP foi projetado para suportar estes casos ð Apenas uma conexão resulta, não duas Redes de Computadores Profa. Ana Benso

Encerramento de Conexões simultâneas l Os hosts também podem tomar a iniciativa de encerrar

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

SYN FLOOD l Flooding de solicitações de conexão falsas ð Normalmente usa IP Spoofing

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

Controle de Erros l O TCP executa controle de erro com retransmissão ð Neste

Controle de Erros l 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

Controle de Fluxo l O TCP executa o Origem Dados, ACK(D), Seq (O) WIN

Controle de Fluxo l O TCP executa o Origem Dados, ACK(D), Seq (O) WIN (4096) algoritmo de janela deslizante Dados, ACK(O), Seq (D) WIN (512) Dados, ACK(D), Seq (O) WIN (4096) ð A cada envio de mensagens o host informa o número de bytes que podem ser recebidos Destino Timeout Erro!!!! 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

Fluxo Interativo piggback l Exemplo: rlogin Origem digitado Destino Dados, ACK(D), Seq (O) WIN

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