290 likes | 404 Views
Prof. Edgard Jamhour email: jamhour@ppgia.pucpr.br URL: http://ppgia.pucpr.br/~jamhour. Redes. CONTEÚDO. 1) Camada de Transporte 2) TCP 3) UDP 3) Camada de Aplicação. Protocolo do nível de transporte.
E N D
Prof. Edgard Jamhour email: jamhour@ppgia.pucpr.br URL:http://ppgia.pucpr.br/~jamhour Redes
CONTEÚDO • 1) Camada de Transporte • 2) TCP • 3) UDP • 3) Camada de Aplicação
Protocolo do nível de transporte • Conceito: Os protocolos de transporte são capazes de manipular múltiplos endereços numa mesma estação, permitindo que várias aplicações executadas no mesmo computador possam enviar e receber datagramas independentemente.
Protocolo TCP • Conceito: Protocolo da camada de transporte que oferece um serviço de comunicação confiável e orientado a conexão sobre a camada de rede IP. • O Protocolo TCP (Transmission Control Protocol) é um protocolo orientado a conexão destinado a construir comunicações ponto a ponto confiáveis. • O protocolo TCP utiliza um nível de endereçamento complementar aos endereços IP, que permite distinguir vários endereços de transporte numa mesma estação. • Os endereços de transporte são números inteiros de 16 bits denominados portas.
Transmissão Por Fluxo • O protocolo TCP é implementado no sistema operacional. • Ele oferce aos desenvolvedores a possibilidade de escrever aplicações que transmitem e recebem bytes num fluxo contínuo, sem se preocupar com a fragmentação dos dados em pacotes. aplicação aplicação Fluxo contínuo de bytes (stream) Fluxo contínuo de bytes (stream) socket socket TCP TCP segmentos segmentos IP IP
Segmentação • O fluxo contínuo de bytes é transformado em segmentos para posterior encapsulamento no protocolo IP. O tamanho máximo de um segmento é denominado MSS (Maximum Segment Size). • O valor default do MSS é geralmente escolhido de forma a evitar a fragmentação IP (MSS < MTU).
TCP = Protocolo Confiável • O protocolo TCP é um protocolo confiável e orientado a conexão. A técnica usada pelo TCP é retransmissão por ausência de confirmção. Um protocolo confiável inclui mensagens para confirmação de recebimento Mensagem Processo Receptor Processo Transmissor ACK A mensagem é retransmitida se não houver confirmação Mensagem ACK Kernel Kernel REDE
Segmento TCP tamanho do cabeçalho em paravras de 32 bits FLAGS: URG, ACK, PSH, RST, SYN, FIN
Campos TCP • Número de Sequência (32 bits) • Corresponde ao número do primeiro byte do segmento em relação a fluxo contínuo de bytes da conexão TCP. • Na prática, o número inicial não é 0, mas sim um número escolhido de forma aleatória para cada conexão. • Essa técnica diminui a possiblidade de que segmentos de uma conexão antiga já encerrada sejam inseridos em novas conexões TCP. • Número de Confirmação (32 bits) • Número de sequência do próximo byte que o host está aguardando receber.
Comunicação Confiável 100 - 149 150 - 179 200 - 209 210 - 299 peer peer seq=100, conf=200, dados=50 bytes seq=200, conf=150, dados=10 bytes seq=150, conf=210, dados=30 seq=210, conf=180, dados=90 bytes tempo tempo
Estabelecimento de uma Conexão TCP • Estágio 1: do cliente para o servidor (segmento SYN) • Define o valor inicial do número de sequência do cliente: • SEQ = clienteseq • Flag de controle: • SYN = 1, ACK = 0 • Estágio 2: do servidor para o cliente (segmento SYNACK) • Confirma o valor do número de sequência: • ACK = clienteseq + 1 • Define o valor inicial do número de sequencia do servidor • SEQ = servidorseq • Flag de controle: • SYN = 1, ACK = 1 • Estágio 3: do cliente para o servidor • Confirma o valor do número de sequência: • SEQ = servidorseq + 1 • ACK = servidorseq + 1 • SYN = 0, ACK = 1
Encerramento da Conexão • O encerramento de conexão e feito utilizando o Flag FIN. • Exemplo: O cliente encerra a conexão • Do cliente para o servidor • FIN = 1 • Do servidor para o cliente • ACK • Do servidor para o cliente • FIN = 1 • Do cliente para o servidor • ACK
Retransmissão • A técnica de retransmissão do TCP é o reconhecimento positivo com temporizadores. • O TCP não usa NAK. • Se o ACK não chegar no transmissor num tempo pré-determinado, o segmento é retransmitido. • O receptor pode enviar pacotes sem dados, apenas com confirmação, quando não tem nada para transmitir.
Temporização • A temporização é estimada 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 é a seguinte: • EstimatedRTT = 0.875 EstimatedRTT + 0.125 SampleRTT • Temporizador = EstimatedRTT + 4 . Desvio • Desvio = 0.875 Desvio + 0.125 (SampleRTT – EstimatedRTT) • Onde: • SampleRTT: última medição de RTT • Desvio: medida da flutuação do valor do RTT
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). Recomendações RFC 1122 e 2581
Retransmissão Rápida • Segmentos que são recebidos fora de ordem não são confirmados pelo receptor. • O receptor repete o último valor confirmado para o transmissor. • Se o transmissor receber 3 segmentos com o mesmo número de confirmação, ele retransmite os segmentos perdidos. • Essa técnica é denominada retransmissão rápida (retransmissão antes de expirar o temporizador do segmento). • Algumas implementações de TCP usam a retransmissão de 3 ACK duplicados como um NAK implícito.
Controle de Fluxo • Janela de Recepção (32 bits) • Informa a quantidade de bytes disponíveis no buffer de recepção do host. • Quando o receptor informa ao transmissor que a janela de recepção tem tamanho 0, o transmissor entra num modo de transmissão de segmentos de 1 byte, até que o buffer do receptor libere espaço.
Controle de Fluxo • Transmissão de A para B • RcvBuffer = buffer de recepção de B • LastByteRead = número do último byte lido pela aplicação B • LastByteRcvd = último byte recebido por B • A janela de recepção enviada de B para A é definida por: • RcvWindow = RcvBuffer - [LastByteRcvd - LastByteRead] • A quantidade máxima de pacotes de A para B é dada por: • LastByteSent - LastByteAcked <= RcvWindow
Controle de Congestionamento • Na prática, o TCP impõe uma outra janela que limita o enviou de bytes pelo tranmissor: • LastByteSent - LastByteAcket <= min(CongWin, RcvWindow) • A janela CongWin é recalculada a cada RTT. • A taxa de envio máxima é dada por: • CongWing/RTT bytes/s • A janela CongWin é aumentada pelo transmissor se seus pacotes são recebidos com sucesso, e diminuída em caso de falha.
Algoritmo • a) Inicialização: • CongWin = 1 MSS (Maximum Segment Size = 1460 bytes) • Threshold = 65 kbps • b) Fase de crescimento exponencial (a cada ACK recebido) • se CongWin < Threshold vai para Partida Lenta • CongWin = CongWin + MSS • Isto é, CongWin= Congwin*2 por RTT • senão vai para Prevenção de Congestionamento • CongWin = CongWin + (MSS/CongWin) • Isto é, CongWin = CongWin + 1 MSS por RTT • c) Em caso de detecção de perda por 3 ACK duplicados: • Threshold = CongWin = CongWin/2 • Vai para prevenção de congestionamento • d) Em caso de detecção de perda por Temporização • Threshold = CongWin/2 • CongWin = 1 MSS (volta para partida lenta)
Variantes do TCP • TCP Tahoe: • mais antiga • volta para partida lenta (CongWin=1MSS) para qualquer evento de perda • TCP Reno: • mais recente • adota uma recuperação rápida (CongWin=CongWin/2) no caso de deteção de perda por 3 ACK duplicados e partida lenta em caso de detecção de perda por temporização. • TCP Vegas: • proposta • Reduz a taxa de transmissão de pacotes mesmo antes da ocorrência de perda, monitorando o aumento do valor do RTT (confirmação dos ACKs).
Outros Bits de Controle • PHS • O receptor deve passar os dados imediatamente para a camada superior. • URG • Existem dados no segmento marcados como urgentes. • A indicação do último byte considerado urgente no segmento é definida pelo ponteiro de urgência (16 bits).
Protocolo UDP • Conceito: Protocolo da camada de transporte que oferece um serviço de comunicação não orientado a conexão, construído sobre a camada de rede IP. • Sendo não orientado a conexão, o protocolo UDP pode ser utilizado tanto em comunicações do tipo difusão (broadcast) quanto ponto a ponto.
Mensagem UDP • As mensagens UDP são bem mais simples que o TCP pois não oferece a mesma qualidade de serviço.
Protocolos do nível de aplicação. • Conceito: Protocolos que disponibilizam serviços padronizados de comunicação, destinados a dar suporte ao desenvolvimento de aplicações para os usuários.
Descrição dos Protocolos de Aplicação • FTP: File Transfer Protocol. Protocolo que implementa serviços de transferência de arquivos de uma estação para outra (ponto a ponto) através de rede. • TELNET: Serviço de Terminal Remoto. Protocolo utilizado para permitir aos usuários controlarem estações remotas através da rede. • SMTP:Simple Mail Transfer Protocol. Protocolo utilizado para transferência de mensagens de correio eletrônico de uma estação para outra. Esse protocolo especifica como 2 sistemas de correio eletrônico interagem. • HTTP:Hypertext Tranfer Protocol. Protocolo utilizado para transferência de informações multimídia: texto, imagens, som, vídeo, etc. • SNMP:Simple Network Monitoring Protocol. Protocolo utilizado para monitorar o estado das estações, roteadores e outros dispositivos que compõe a rede. • NFS:Network File System. Protocolo desenvolvido pela "SUN Microsystems, Incorporated", que permite que as estações compartilhem recursos de armazenamento de arquivos através da rede.