Redes TCPIP Protocolos de Transporte e Aplicao Edgard

  • Slides: 31
Download presentation
Redes TCP/IP Protocolos de Transporte e Aplicação Edgard Jamhour

Redes TCP/IP Protocolos de Transporte e Aplicação Edgard Jamhour

Pilha de Protocolos Aplicação Seqüência de empacotamento Camada de Aplicação HTTP, FTP, SMTP, etc

Pilha de Protocolos Aplicação Seqüência de empacotamento Camada de Aplicação HTTP, FTP, SMTP, etc Interface Sockets Camada de Transporte TCP, UDP mensagem segmento/datagrama S. O. Camada de Rede IP Interface de Rede Camada de Enlace e Fisica pacote quadro Edgard Jamhour

Endereçamento por Portas Dispositivo B Dispositivo A Processo B Processo 1024 Processo 1025 Porta

Endereçamento por Portas Dispositivo B Dispositivo A Processo B Processo 1024 Processo 1025 Porta TCP Porta UDP 80 80 TCP UDP Endereço IP IP IP End. MAC Ethernet 1024 80 Dados Edgard Jamhour

TCP X UDP TCP Orientado a Conexão Identifica uma sequencia de pacotes com pertencentes

TCP X UDP TCP Orientado a Conexão Identifica uma sequencia de pacotes com pertencentes a uma mesma transmissão Transmissão por Fluxo Segmentação e Remontagem feita pelo S. O. Transmissão Confiável Confirma recebimento e retransmite pacotes perdidos UDP Não Orientado a Conexão Cada pacote é uma transmissão independente Transmissão por Datagramas: Segmentação e Remontagem feita pela aplicação. Não confiável Cabe a aplicação implementar os mecanismos de retransmissão Edgard Jamhour

Orientado (TCP) vs Não-Orientado (UDP) a Conexão ABERTURA DE CONEXÃO THREE WAY HANDSHAKE TRANSMISSÃO

Orientado (TCP) vs Não-Orientado (UDP) a Conexão ABERTURA DE CONEXÃO THREE WAY HANDSHAKE TRANSMISSÃO DE DADOS. . . FIM DE CONEXÃO DE DADOS O TCP USA PACOTES DE CONTROLE PARA CRIAR E ENCERRAR CONEXÕES O CONTEÚDO TRANSPORTADO PELOS PACOTES NO INTERIOR DA CONEXÃO É NUMERADO 4 PACOTES PARA FECHAR A CONEXÃO TRANSMISSÃO DE DADOS O UDP NÃO USA PACOTES DE CONTROLE OS PACOTES UDP SÃO INDEPENDENTES Edgard Jamhour

Transmissão por Fluxo (TCP) vs Datagrama (UDP) Aplicação write(buffer) fluxo contínuo de bytes (stream)

Transmissão por Fluxo (TCP) vs Datagrama (UDP) Aplicação write(buffer) fluxo contínuo de bytes (stream) NA TRANSMISSÃO POR FLUXO A APLICAÇ O NÃO CONTROLA O TAMANHO DO PACOTE read(buffer) TCP segmentos IP IP pacotes Aplicação sendto(buffer) socket UDP recvfrom(buffer) UDP datagramas IP OS DADOS RECEBIDOS SÃO VISTOS PELA APLICAÇÃO RECEPTORA COMO UM FLUXO CONTÍNUO DE BYTES pacotes IP NA TRANSMISSÃO POR DATAGRAMA A APLICAÇÃO DEFINE O TAMANHO DOS PACOTES A MENSAGEM RECEBIDA É LIDA POR INTEIRO (recvfrom) Edgard Jamhour

Transmissão Confiável (TCP) DADOS SEGMENTO B X TCP APLICAÇÃO ACK A SEGMENTO C SEGMENTO

Transmissão Confiável (TCP) DADOS SEGMENTO B X TCP APLICAÇÃO ACK A SEGMENTO C SEGMENTO B ACK C APLICAÇ O SEGMENTO A DADOS O MODO DE COMUNICAÇÃO CONFIÁVEL DO TCP É RETRANSMISSÃO POR AUSÊNCIA DE CONFIRMAÇÃO A APLICAÇÃO RECEBE APENAS DADOS QUE CHEGAREM NA ORDEM CORRETA DE TRANSMISSÃO DADOS Edgard Jamhour

TCP X UDP TCP Controle de Congestionamento Perda de pacotes fazem o transmissor reduzir

TCP X UDP TCP Controle de Congestionamento Perda de pacotes fazem o transmissor reduzir sua taxa de transmissão entre confirmações Controle de Fluxo O espaço livre no buffer do S. O. do receptor é informado ao transmissor a cada confirmação Apenas Unicast O destino de um pacote é apenas um dispositivo UDP Sem controle Perda de pacotes não interfere na velocidade de transmissão Sem controle: O transmissor não recebe nenhuma informação sobre o buffer do receptor. Unicast, Broadcast e Multicast O destino de um pacote pode ser um ou mais dispositivos Edgard Jamhour

Controle de Congestionamento e Fluxo DADOS SEGMENTO A DADOS ACK A DADOS SEGMENTO B

Controle de Congestionamento e Fluxo DADOS SEGMENTO A DADOS ACK A DADOS SEGMENTO B SEGMENTO C ACK C DADOS … ACK D (BUFFER LIVRE) DADOS APLICAÇ O DADOS TCP ACK D (BUFFER CHEIO) DADOS TCP APLICAÇÃO SEGMENTO D A QUANTIDADE DE BYTES QUE PODE SER ENVIADA SEM CONFIRMAÇÃO É A MENOR QUANTIDADE IMPOSTA PELO CONTROLE DE FLUXO E CONTROLE DE CONGESTIONAMENTO SEGMENTO E SEGMENTO F SEGMENTO G X ACK E SEGMENTO F ACK G Edgard Jamhour

Unicast, Broadcast e Multicast UNICAST: O DESTINO DE CADA PACOTE É APENAS UM UNICAST:

Unicast, Broadcast e Multicast UNICAST: O DESTINO DE CADA PACOTE É APENAS UM UNICAST: O DESTINO DO PACOTE SÃO TODOS A B C B TODOS SWITCH A C MULTICAST: O DESTINO DO PACOTE É UM GRUPO 1 SWICH PERTENCE AO GRUPO 1 X NÃO PERTENCE AO GRUPO 1 ENDEREÇOS DE GRUPO SÃO ENDEREÇO IP DA CLASSE D: DE 224. 0. 0. 0 ATÉ 239. 255 PERTENCE AO GRUPO 1 Edgard Jamhour

Protocolo TCP 0 4 8 Byte 1 12 16 Byte 2 24 20 Byte

Protocolo TCP 0 4 8 Byte 1 12 16 Byte 2 24 20 Byte 3 Porta de Origem 28 31 Byte 4 Porta de Destino Número de Seqüência Número de Confirmação HLEN Reservado Flags Janela de Recepção Checksum Ponteiro de Urgência Opções Dados. . FLAGS: ACK, SYN, FIN, RST, URG, CWR, ECN, PUSH Edgard Jamhour

Segmentação e Remontagem Início da Conexão FLUXO CONTÍNUO DE BYTES 1000 DADOS NS =

Segmentação e Remontagem Início da Conexão FLUXO CONTÍNUO DE BYTES 1000 DADOS NS = NIS+2920 SEGMENTO C 1460 DADOS 1460 NS = NIS+1460 SEGMENTO B DADOS NS = NIS+0 SEGMENTO A FLUXO DE PACOTES Edgard Jamhour

TCP/IP Overhead = 40 BYTES 20 BYTES (sem opções) Edgard Jamhour

TCP/IP Overhead = 40 BYTES 20 BYTES (sem opções) Edgard Jamhour

MSS: Maximum Segment Size MTU ETHERNET = 1500 BYTES 1460 BYTES O TAMANHO MÁXIMO

MSS: Maximum Segment Size MTU ETHERNET = 1500 BYTES 1460 BYTES O TAMANHO MÁXIMO DO CAMPO DE DADOS DO ETHERNET (MTU) É 1500 BYTES O CABEÇALHO IP SEM OPÇÕES TEM 20 BYTES O CABEÇALHO TCP SEM OPÇÕES TEM 20 BYTES SEGMENTO É O NOME DADO AO PDU DO TCP MSS É A QUANTIDADE MÁXIMA DE DADOS TRANSPORTADA POR UM SEGMENTO MSS = Maximum Segment Size MTU = Maximum Transmission Unit PDU = Protocol Data Unit Edgard Jamhour

Conexão TCP cliente tempo servidor NS NC FLGS ACK, SYN, FIN C LIXO SYN

Conexão TCP cliente tempo servidor NS NC FLGS ACK, SYN, FIN C LIXO SYN S C+1 SYN, ACK C+1 S+1 ACK S+1 C+2 ACK C+2 S+1002 ACK … … … u v FIN, ACK v u+1 ACK … … … w u+1 FIN, ACK u+1 w+1 ACK tempo Edgard Jamhour

Encerramento da Conexão • FIN = Terminar a conexão – Método normal de encerramento

Encerramento da Conexão • FIN = Terminar a conexão – Método normal de encerramento (close chamado pela aplicação) – Encerra a conexão em apenas uma direção – Indica que não haverão mais transmissões, mas o canal ficará aberto para recepção. • RST = Abortar a conexão – Método anormal de encerramento (erro detectado pelo kernel) – Acontece quando um segmento que não pertence a conexão é recebido – Indica que não haverão mais tranmissões e o canal será fechado para recepção Edgard Jamhour

EXEMPLO: HTTP 1. 1 www. ppgia. pupcr. br 10. 32. 1. 22 10. 32.

EXEMPLO: HTTP 1. 1 www. ppgia. pupcr. br 10. 32. 1. 22 10. 32. 1. 166 53171 80 O Wireshark mostra números de sequencia relativos CONEXÃO ENCERRADA PELO SERVIDOR OBS. Essa conexão TCP está usando opções Edgard Jamhour

Máquina de Estados TCP Aguarda para ter certeza que não reberá outro FIN devido

Máquina de Estados TCP Aguarda para ter certeza que não reberá outro FIN devido a perda do ACK Edgard Jamhour

Comunicação Confiável C B A 1 2 800 1200 100 200 cliente A …

Comunicação Confiável C B A 1 2 800 1200 100 200 cliente A … C K 3 … NS NC DADOS 1 1 1000 1 100 101 1001 200 1001 301 1200 2201 301 800 301 3001 sem dados 302 3001 200 servidor Edgard Jamhour

Recomendações RFC 1122 e 2581 EVENTO • Chegada de um segmento na ordem. •

Recomendações RFC 1122 e 2581 EVENTO • Chegada de um segmento na ordem. • Chegada de um segmento fora de ordem (número mais alto que o esperado). • Chegada de um segmento que preenche a lacuna. AÇÃO TCP DESTINATÁRIO • Aguarda 500 ms. Se outro segmento não chegar, confirma o segmento. Se outro segmento vier, confirma os dois com um único ACK. • Envia imediatamente o ACK duplicado com o número do byte aguardado (isto é, repete o último ACK de ordem correta). • Envia imediatamente o ACK (se o preechimento foi na parte contigua baixa da lacuna). Edgard Jamhour

Algoritmo de Confirmação • O tempo máximo para aguardar uma confirmação é estimado em

Algoritmo de Confirmação • O tempo máximo para aguardar uma confirmação é estimado em função do tempo médio de Round-Trip Time (RTT) para enviar e confirmar um segmento. • O transmissor pode adotar várias técnicas para estimar este tempo. Uma estratégia comum é calcular iterativamente a cada confirmação recebida: Media. RTT = 0. 875 Media. RTT + 0. 125 Ultimo. RTT Temporizador = Media. RTT + 4. Desvio = 0. 875 Desvio + 0. 125 (Ultimo. RTT - Media. RTT) Onde: – Ultimo. RTT: última medição de RTT – Temporizador: tempo máximo para aguardar uma confirmação – Desvio: medida da flutuação do valor do RTT Edgard Jamhour

Controle de Fluxo O TRANSMISSOR (A) precisa estimar o espaço livre no buffer do

Controle de Fluxo O TRANSMISSOR (A) precisa estimar o espaço livre no buffer do S. O. do RECEPTOR (B). O espaço livre no buffer de B é enviado junto com cada confirmação (Rcv. Window), mas ela não é absoluta pois podem haver pacotes em trânsito. S. O. Rcv. Buffer Então A calcula o espaço livre em B pela fórmula: 3000 Rcv. Buffer = Rcv. Window - [Last. Byte. Sent - Last. Byte. Rcvd] Rcv. Buffer = estimativa do buffer livre em B Rcv. Window = buffer livre informado por B Last. Byte. Sent = último byte enviado por A Last. Byte. Rcvd = último byte confirmado por B (NC-1) 1000 A Transmissor 2000 Last. Byte. Rcvd aplicação 1000 0 1000 Bytes lidos liberam o buffer 1000 NC=2001, Rcv. Window=1000 B Receptor Edgard Jamhour

Controle de Congestionamento MSS congwindow evento de falha crescimento exponencial prevenção de congestionamento Threshold

Controle de Congestionamento MSS congwindow evento de falha crescimento exponencial prevenção de congestionamento Threshold t RTT A RTT RTT RTT B envio RTT confirmação Edgard Jamhour

Tipos de TCP: Tahoe e Reno Edgard Jamhour

Tipos de TCP: Tahoe e Reno Edgard Jamhour

TCP RENO • Cong. Win é calculada em múltiplos de MSS (Maximum Segment Size

TCP RENO • Cong. Win é calculada em múltiplos de MSS (Maximum Segment Size = 1460 bytes). A) Inicialização Cong. Win = 1 MSS Threshold = Estimado (65 K) B) Partida Lenta: Cong. Win < Threshold Cong. Win = Cong. Win+1 MSS A cada segmento confirmado, ou seja: Cong. Win = 2* Cong. Win por RTT C) Prevenção de congestionamento Cong. Win >= Threshold Cong. Win = Cong. Win + (MSS/Cong. Win) A cada segmento confirmado, ou seja: Cong. Win = Cong. Win +1 MSS por RTT Em caso de detecção de segmentos fora Threshold = Cong. Win/2 de ordem: Vai para prevenção de congestionamento Em caso de detecção de perda por temporização Threshold = Cong. Win/2 Cong. Win = 1 MSS Vai para partida Lenta Edgard Jamhour

Congestionamento X Controle de Fluxo A quantidade de bytes que pode ser transmitida sem

Congestionamento X Controle de Fluxo A quantidade de bytes que pode ser transmitida sem confirmação é o menor valor entre Cong. Win e Rcv. Win tempo Buffer de Transmissão 2000 Rcv. Window Cong. Window 1800 QUANTO AINDA PODE SER ENVIADO 1500 Last. Byte. Sent 1000 Last. Byte. Acked 0 A B envio RTT confirmação Edgard Jamhour

Protocolo UDP 0 4 8 Byte 1 12 16 Byte 2 24 20 28

Protocolo UDP 0 4 8 Byte 1 12 16 Byte 2 24 20 28 Byte 3 31 Byte 4 Porta de Origem Porta de Destino Ponteiro de Urgência Checksum Dados. . Aplicação sendto(buffer) socket UDP recvfrom(buffer) UDP datagramas IP pacotes IP NA TRANSMISSÃO POR DATAGRAMA A APLICAÇÃO DEFINE O TAMANHO DOS PACOTES A MENSAGEM RECEBIDA É LIDA POR INTEIRO OU BYTES REMANECENTES SÃO DESCARTADOS (recvfrom) Edgard Jamhour

OS RISCOS DO UDP • É muito mais simples injetar pacotes falsos em uma

OS RISCOS DO UDP • É muito mais simples injetar pacotes falsos em uma comunicação UDP do que TCP 1. 2. 3. 4 9999 GERENCIADOR VERDADEIRO 8888 GERENCIADOR FALSO 40901 ABRIR PORTA 5. 6. 7. 8 Em uma comunicação TCP, só é possível injetar pacotes em uma conexão ABERTA se: A) IP de origem e destino forem os usados na abertura de conexão B) Porta de origem e destino forme os usados na abertura da conexão C) O número de sequência do pacote estive na ordem correta em relação aos pacotes recebidos anteriormente Edgard Jamhour

Protocolos de Aplicação Camada de Transporte Camada de Rede HTTP FTP SMTP NFS TCP

Protocolos de Aplicação Camada de Transporte Camada de Rede HTTP FTP SMTP NFS TCP DNS DHCP UDP IP Edgard Jamhour

Portas bem Conhecidas httpd 80 >1023 wget ftp control 21 ftpd >1023 20 servidor

Portas bem Conhecidas httpd 80 >1023 wget ftp control 21 ftpd >1023 20 servidor ftp data >1023 cliente smtp smptd 25 >1023 firefox nfsd 2049 >1023 nfs client dns named 53 >1023 dig >1023 dhclient dhcpd 67 Edgard Jamhour

Conclusão Protocolos de Transporte e Aplicação Edgard Jamhour

Conclusão Protocolos de Transporte e Aplicação Edgard Jamhour