Redes Prof. Edgard Jamhour email: [email protected] URL: http://ppgia.pucpr.br/~jamhour Redes TCP/IP CONTEÚDO • • • • 1) Camada de Transporte 2) TCP 3) UDP 3) Camada de Aplicação 2007, Edgard Jamhour 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. Camada de Aplicação Camada de Transporte (TCP ou UDP) cabeçalho de controle Dados Dados Unidade de dados do protocolo de transporte T-PDU datagrama IP Camada de Rede (IP) Dados Camada de Enlace de dados quadros representação lógica binária 0001101010101010101010001 A T-PDU é encapsulad a no campo de dados do datagrama IP. Camada Física representação elétrica ou óptica meio físico de transmissão 2007, Edgard Jamhour 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. 2007, Edgard Jamhour Endereçamento por Portas O protocolo TCP identifica u ma conexão pelo par (IP,porta) de ambas as extremidades. Dessa forma, u ma mes ma porta pode ser usada para estabelecer simu ltaneamente duas conexões sem nenhuma ambiguidade. A aplicação B se comunica como se estivesse utilizando uma ligação ponto a ponto dedicada com cada u ma das outras aplicações. Aplicação B Aplicação A CAMADA DE APLICAÇÃO CAMADA TDP Porta 53 Porta 1184 4 Porta 25 Porta 53 Aplicação C Porta 1184 Porta 1069 CAMADA IP CAMADAS INFERIO RES 128.10.2.3 ESTAÇÃO A Conexão bid irecional formada pelo par (128.10.2.3,1184) e (128.10.2.4,53) 128.10.2.4 128.10.2.5 ESTAÇÃO B ESTAÇÃO C Conexão bid irecional formada pelo par (128.10.2.5,1184) e (128.10.2.4,53) 2007, Edgard Jamhour 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) socket Fluxo contínuo de bytes (stream) socket TCP TCP segmentos IP segmentos IP 2007, Edgard Jamhour 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). Fluxo Contínuo de Bytes 0 200 0 Dados SEGMENTO 800 500 200 Dados SEGMENTO 500 bytes Dados SEGMENTO 2007, Edgard Jamhour 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 Transmissor ACK Processo Receptor Mensagem ACK Kernel Kernel A mensagem é retransmitida se não houver confirmação REDE 2007, Edgard Jamhour Segmento TCP 0 4 8 12 Byte 1 16 Byte 2 20 Byte 3 Porta de origem 24 28 31 Byte 4 Porta de destino Número de Seqüência Número de Confirmação HLEN Reservado Janela de Recepção BITS DE CÓDIGO Ponteiro de Urgência Checksum Opções Dados ….. FLAGS: URG, ACK, PSH, RST, SYN, FIN tamanho do cabeçalho em paravras de 32 bits 2007, Edgard Jamhour 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. 2007, Edgard Jamhour 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 2007, Edgard Jamhour 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 2007, Edgard Jamhour Encerramento da Conexão • O encerramento de conexão e feito utilizando o Flag FIN. • Exemplo: O cliente encerra a conexão 1. Do cliente para o servidor – FIN = 1 2. Do servidor para o cliente – ACK 3. Do servidor para o cliente – FIN = 1 4. Do cliente para o servidor – ACK 2007, Edgard Jamhour 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. 2007, Edgard Jamhour 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 2007, Edgard Jamhour 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). 2007, Edgard Jamhour 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. 2007, Edgard Jamhour 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. 2007, Edgard Jamhour 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 2007, Edgard Jamhour 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. 2007, Edgard Jamhour 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) 2007, Edgard Jamhour 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). 2007, Edgard Jamhour 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). 2007, Edgard Jamhour 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. aplicação A aplicação B CAMADA DE APLICAÇÃO Porta 1 Porta 2 Porta 3 As aplicações recebem as mensagens endereçando as portas da camada UDP. Porta N ... Demulti plexagem CAMADA UDP CAMADA IP CAMADAS INFERIO RES A demult iplexagem é feita analisando a porta de destino, indicada no cabeçalho de controle das mensagens que chegam na estação. datagrama co m a mensagem UDP encapsulada. 2007, Edgard Jamhour Mensagem UDP • As mensagens UDP são bem mais simples que o TCP pois não oferece a mesma qualidade de serviço. 16 0 31 Porta de Origem Porta de Destino Comprimento da Mensagem checksum Dados ….. 2007, Edgard Jamhour TCP X UDP TCP UDP Orientado a Conexão Não Orientado a Conexão Transmissão por Fluxo Segmentação e Remontagem feita pelo S.O. Transmissão por Datagramas: Segmentação e Remontagem feita pela aplicação. Confiável (confirma recebimento e retransmite pacotes perdidos) Não confiável Somente Unicast Unicast, Multicast ou BroadCast Controle de Fluxo Controle de Congestionamento Sem controle Indicado para transferir grandes quantidades de dados Indicado para transmissões rápidas (poucos dados) ou que não admitam grande atraso (temporeal) 2007, Edgard Jamhour 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. Modelo OSI Arquitetura TCP/IP Aplicação FTP TELNET SMTP HTTP Apre sentação SNMP ... NFS Protocolos de Aplicação Sessão Transporte TCP UDP Rede IP Enlace de Dados Enlace de Dados Física Física 2007, Edgard Jamhour 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. 2007, Edgard Jamhour