·
Engenharia Eletrônica ·
Rede de Computadores
Send your question to AI and receive an answer instantly
Recommended for you
1
Redes 1 - 3 Lista de Exercícios Protocolos da Camada de Transporte e TCP
Rede de Computadores
CEFET/RJ
14
Uso do Wireshark para Análise de Protocolos de Redes
Rede de Computadores
CEFET/RJ
150
Camada Física e Comunicação de Dados - Modulação, Multiplexação e Meios de Transmissão
Rede de Computadores
CEFET/RJ
152
DNS Domain Name System e Camada de Aplicação - Introdução e Conceitos
Rede de Computadores
CEFET/RJ
2
Redes de Computadores - Lista de Exercícios Capítulo 1 - Topologia, Classificação e Camadas
Rede de Computadores
CEFET/RJ
5
Lista de Exercícios - Problema do Múltiplo Acesso e Soluções
Rede de Computadores
CEFET/RJ
3
Redes 1 - Provas e Conteudo Programatico
Rede de Computadores
CEFET/RJ
1
Redes 1 - 2 Lista de Exercicios sobre DNS e HTTP
Rede de Computadores
CEFET/RJ
143
Camada de Enlace de Dados - Questões de Projeto, Enquadramento, Controle de Fluxo e Erro
Rede de Computadores
CEFET/RJ
7
Lista de Exercícios sobre Redes de Computadores - Capítulo 2
Rede de Computadores
CEFET/RJ
Preview text
Capítulo 3 Camada de Transporte Introdução O Serviço de Transporte O Protocolo de Transporte da Internet UDP O protocolo de transporte da Internet TCP Introdução Juntos a camada de rede e a camada de transporte formam o núcleo da hierarquia de protocolos A camada de transporte oferece transporte de dados de um processo em uma máquina de origem a um processo de uma máquina destino com um nível de confiabilidade desejável independentemente das redes físicas em uso no momento Introdução Ela provê as abstrações de que as aplicações precisam para usar a rede figura 1 Figura 1 Comunicação na camada de Transporte Introdução Sem a camada de transporte todo o conceito de protocolos em camadas faria pouco sentido A Internet tem dois protocolos principais na camada de transporte um protocolo orientado a conexões e o outro não orientado a conexões Introdução Eles complementam um ao outro O protocolo não orientado a conexões é o UDP O protocolo orientado a conexões é o TCP O serviço de transporte O principal objetivo da camada de transporte é oferecer um serviço confiável eficiente e econômico a seus usuários que em geral são processos presentes na camada de aplicação O hardwaresoftware da camada de transporte que executa o trabalho é chamado entidade de transporte O serviço de transporte Esta pode estar localizada no núcleo do sistema operacional em um pacote de biblioteca vinculado a aplicações de rede em outro processo do usuário ou na placa de interface de rede As duas primeiras opções são mais comuns na Internet O serviço de transporte O relacionamento lógico existente entre as camadas de rede de transporte e de aplicação esta ilustrado na Figura 2 O serviço de transporte Figura 2 As camadas de rede de transporte e de aplicação O serviço de transporte O código de transporte funciona inteiramente nas maquinas dos usuários Usaremos segmento para denominar as mensagens enviadas de uma entidade de transporte a outra entidade de transporte TCP e UDP utilizam esse termo O serviço de transporte Cabe observar que na camada de transporte até mesmo uma troca de dados simples é unidirecional Cada pacote de dados enviado também será confirmado ao final Os pacotes que transportam segmentos de controle também são confirmados de forma explicita ou implícita O serviço de transporte Essas confirmações são gerenciadas por entidades de transporte e não são visíveis para os usuários de transporte As entidades de transporte tem de lidar com timers e retransmissões O serviço de transporte O serviço de transporte é implementado por um protocolo de transporte usado entre duas entidades de transporte Estes tem de lidar com o controle de erros com a definição de seqüência e com o controle de fluxo entre outros itens Na camada de transporte é necessário o endereçamento explicito de destinos O serviço de transporte Endereçamento Quando um processo de aplicação por exemplo um usuário deseja estabelecer uma conexão com um processo de aplicação remoto é necessário especificar a aplicação com a qual ele irá se conectar O serviço de transporte O método normalmente utilizado é definir os endereços de transporte que os processos podem ouvir para receber solicitações de conexão Na Internet essas extremidades são chamadas portas O serviço de transporte Estabelecimento de conexões No caso do protocolo de transporte que oferece o serviço orientado a conexão ou seja com garantia de entrega antes de transmitir os pacotes há o processo de estabelecimento da conexão chamado de handshake ou protocolo de três vias O TCP usa esse handshake para estabelecer conexões O serviço de transporte Esse protocolo de estabelecimento de conexão envolve um peer verificado com outro se a solicitação da conexão está realmente ativa O procedimento para estabelecimento de conexão usando o protocolo de três vias está indicado na figura 3 O serviço de transporte Figura 3 Protocolo para o estabelecimento de uma conexão com o uso de um handshake de três vias CR denota CONNECTION REQUEST O serviço de transporte O host 1 escolhe um número de seqüência inicial x e o envia em segmento CONNECTION REQUEST para o host 2 Por sua vez o host 2 responde com um segmento ACK que confirma x e anuncia seu próprio número de seqüência inicial y Por fim o host 1 confirma o número de seqüência inicial escolhido pelo host 2 no primeiro segmento de dados que enviar O serviço de transporte Encerramento de conexões Encerrar uma conexão é mais fácil do que estabelecêla No entanto nesse procedimento há mais armadilhas do que se poderia esperar Existem dois tipos de encerramento de conexão o encerramento simétrico e o encerramento assimétrico O serviço de transporte O encerramento assimétrico representa o funcionamento do sistema telefônico ou seja quando um dos interlocutores desliga a conexão é interrompida O encerramento assimétrico é repentino e pode resultar na perda de dados O serviço de transporte Considere o cenário da Figura 4 Figura 4 Desconexão repentina com perda de dados O serviço de transporte Após o estabelecimento da conexão o host 1 envia um segmento que chega de forma correta ao host 2 Em seguida o host 1 envia outro segmento Infelizmente o host 2 gera uma primitiva DISCONNECT antes do segundo segmento chegar o que resulta no encerramento da conexão e na perda dos dados O serviço de transporte Por outro lado o encerramento simétrico trata a conexão como duas conexões unidirecionais isoladas e exige que cada uma seja encerrada separadamente O serviço de transporte Controle de erro e controle de fluxo Controle de erro é garantir que os dados sejam entregues com nível de confiabilidade desejável normalmente que todos os dados sejam entregues sem nenhum erro Controle de fluxo é impedir que um transmissor rápido sobrecarregue um receptor lento O serviço de transporte Um quadro transporta um código de detecção de erro por exemplo CRC ou checksum que é usado para verificar se a informação foi recebida corretamente Um quadro transporta um número de sequencia para se identificar e ser retransmitido pelo transmissor até que receba uma confirmação de recebimento bemsucedido do receptor Isso é chamado ARQ Automatic Repeat Request O serviço de transporte Existe um número máximo de quadros que o transmissor permitirá que estejam pendentes ao mesmo tempo os protocolos usados são os protocolos de janela deslizante que já estudaremos no capítulo 5 O serviço de transporte Multiplexação A multiplexação ou compartilhamento de várias conversações em conexões circuitos virtuais e enlaces físicos tem um papel importante em diversas camadas da arquitetura de rede Na camada de transporte a necessidade da multiplexação pode surgir de diversas formas O serviço de transporte Por exemplo se houver apenas um endereço de rede disponível em um host todas as conexões de transporte nessa máquina terão de utilizálo Ao chegar um segmento é necessário encontrar algum meio de descobrir a qual processo ele deve ser entregue Essa situação denominada multiplexação é ilustrada na Figura 5 O serviço de transporte Figura 10 Multiplexação Figura 5 Multiplexação na camada de transporte Protocolo de Transporte da Internet UDP O protocolo de datagrama do usuário ou UDP User Datagram Protocol oferece um meio para as aplicações enviarem datagramas IP encapsulados sem que seja necessário estabelecer uma conexão O UDP é descrito na RFC 768 O UDP transmite segmentos que consistem em um cabeçalho de 8 bytes seguido pela carga útil Protocolo de Transporte da Internet UDP A figura 6 mostra o cabeçalho UDP Figura 6 O cabeçalho UDP Protocolo de Transporte da Internet UDP As duas portas servem para identificar os pontos extremos nas máquinas de origem e destino Quando um pacote UDP chega sua carga útil é entregue ao processo associado a porta de destino Protocolo de Transporte da Internet UDP Sem os campos de porta de origem e porta de destino a camada de transporte não saberia o que fazer com o pacote Com eles a camada entrega segmentos encapsulado a aplicação correta A porta de origem é necessária principalmente quando uma resposta precisa ser enviada de volta a origem Protocolo de Transporte da Internet UDP Copiando o campo porta de origem do segmento de entrada no campo porta de destino do segmento de saída o processo que transmite a resposta pode especificar qual processo na máquina transmissora deve recebêlo O campo comprimento UDP inclui o cabeçalho de 8 bytes e os dados Protocolo de Transporte da Internet UDP Um campo opcional de checksum do UDP também é fornecido para gerar confiabilidade extra O UDP não realiza controle congestionamento ou retransmissão após a recepção de um segmento incorreto nem controle de fluxo Tudo isso cabe aos processos do usuário Protocolo de Transporte da Internet UDP O que ele faz é fornecer uma interface para o protocolo IP com o recurso adicional de demultiplexação de vários processos que utilizam as portas e detecção opcional de erro fim a fim Isso é tudo que ele faz Para aplicações que precisam ter controle preciso sobre o fluxo de pacotes controle de erros ou a sincronização o UDP fornece apenas aquilo que é determinado Protocolo de Transporte da Internet UDP Uma área em que o UDP é especialmente útil é nas de situações clienteservidor Normalmente o cliente envia uma solicitação curta para servidor e espera uma resposta curta de volta Protocolo de Transporte da Internet UDP Se a solicitação ou a resposta se perderem o cliente pode entrar em timeout e tentar novamente Não apenas o código é simples mas menos mensagens são necessárias uma em cada sentido do que com um protocolo exigindo uma configuração inicial como TCP Uma aplicação que utiliza o UDP desse modo é o DNS Domain Name System que estudamos no Capitulo 2 Protocolo de Transporte da Internet UDP Resumindo um programa que precisa pesquisar o endereço IP de algum nome de host por exemplo wwwcsberkeleyedu pode enviar um pacote UDP contendo o nome do host a um servidor DNS O servidor responde com um pacote UDP que contém o endereço IP Protocolo de Transporte da Internet UDP Não é necessária nenhuma configuração antecipada e também nenhum encerramento posterior Basta enviar duas mensagens pela rede Protocolo de Transporte da Internet UDP Outra área em que o UDP é amplamente utilizado é a das aplicações de multimídia em tempo real Em particular a medida que o rádio da Internet a telefonia da Internet a música por demanda a videoconferênciao vídeo sob demanda e outras aplicações multimídia se tornaram mais comuns as pessoas descobriram que cada aplicação estava usando aproximadamente o mesmo protocolo de transporte em tempo real Protocolo de Transporte da Internet UDP Aos poucos ficou claro que seria uma boa idéia ter um protocolo de transporte de tempo real genérico para várias aplicações Desse modo foi criado o RTP protocolo de transporte em tempo real RealTime Transport Protocol Ele é descrito na RFC 1889 e agora está difundido para aplicações multimídia Protocolo de Transporte da Internet UDP Vamos descrever dois aspectos do transporte em tempo real figura 7 Figura 7 a A posição do RTP na pilha de protocolos b O alinhamento de pacotes Protocolo de Transporte da Internet UDP O primeiro aspecto é o uso do protocolo RTP para transportar dados de áudio e vídeo em pacotes O segundo aspecto é o processamento que ocorre principalmente no receptor para reproduzir o áudio e o vídeo no momento certo O RTP normalmente trabalha no espaço do usuário sobre UDP no sistema operacional Protocolo de Transporte da Internet UDP Ele opera da maneira descrita a seguir A aplicação multimídia consiste em vários fluxos de áudio vídeo texto e possivelmente outros fluxos Esses fluxos são armazenados na biblioteca RTP que se encontra no espaço do usuário juntamente com a aplicação Protocolo de Transporte da Internet UDP Essa biblioteca efetua a multiplexação dos fluxos e os codifica em pacotes RTP que são então colocados em uma porta Na outra extremidade da porta no sistema operacional os pacotes UDP são gerados e incorporados a pacotes RTP e entregues ao IP para a transmissão por um enlace como a Ethernet Protocolo de Transporte da Internet UDP O processo inverso ocorre no receptor A aplicação multimídia por fim recebe os dados multimídia da biblioteca RTP Ela é responsável por reproduzir a mídia Protocolo de Transporte da Internet UDP A pilha de protocolos para essa situação é mostrada na Figura 7a e o alinhamento de pacotes é mostrado na Figura 7b Como conseqüência dessa estrutura é um pouco difícil dizer em que camada o RTP está Figura 7 Protocolo de Transporte da Internet UDP Como ele funciona no espaço do usuário e está vinculado ao programa aplicativo certamente parece ser um protocolo de aplicação Por outro lado ele é um protocolo genérico e independente das aplicações que apenas fornecem recursos de transporte e assim também é semelhante a um protocolo de transporte Protocolo de Transporte da Internet UDP Talvez a melhor descrição do RTP seja como um protocolo de transporte implementado na camada de aplicação motivo pelo qual está sendo abordado nesse capítulo A função básica do RTP é multiplexar diversos fluxos de dados de tempo real sobre um único fluxo de pacotes UDP O fluxo UDP pode ser enviado a um único destino unicast ou a vários destinos multicast Protocolo de Transporte da Internet UDP Como o RTP utiliza simplesmente o UDP normal seus pacotes não são tratados de maneira especial pelos roteadores a menos que alguns recursos de qualidade de serviço normais do IP estejam ativos Em particular não há nenhuma garantia especial sobre entrega e pacotes podem ser perdidos atrasados adulterados etc Protocolo de Transporte da Internet UDP O formato RTP contém vários recursos para auxiliar os receptores a trabalhar com informação multimídia Cada pacote enviado em um fluxo RTP recebe um número uma unidade maior que seu predecessor e essa numeração permite ao destino descobrir se algum pacote está faltando Se um pacote for omitido a melhor ação que o destino deve executar fica a cargo da aplicação Protocolo de Transporte da Internet UDP A retransmissão não é uma opção prática pois o pacote retransmitido provavelmente chegaria tarde demais para ser útil Como consequência o RTP não tem nenhuma confirmação e nenhum mecanismo para solicitar retransmissões Protocolo de Transporte da Internet UDP Outro recurso de que muitas aplicações em tempo real necessitam é a marcação com período de tempo Aqui a idéia é permitir que a origem associe um período de tempo a primeira amostra em cada pacote Os períodos de tempo são relativos ao inicio do fluxo e assim somente as diferenças entre os períodos de tempo são significativas Protocolo de Transporte da Internet UDP Esse mecanismo permite ao destino realizar algum buffering e reproduzir cada amostra depois de um número correto de milissegundos contados desde o inicio do fluxo independente de quando chegou o pacote contendo a amostra O uso de períodos de tempo não apenas reduz os efeitos da variação no atraso na rede mas também permite a sincronização de vários fluxos Protocolo de Transporte da Internet UDP O protocolo RTP tem um irmão caçula chamado RTCP protocolo de controle de transporte em tempo real Realtime Transport Control Protocol Ele é definido com o RTP na RFC 3550 e cuida do feedback da sincronização e da interface do usuário mas não transporta nenhuma amostra multimídia Protocolo de Transporte da Internet UDP A primeira função pode ser usada para fornecer feedback sobre o atraso variação do atraso ou jitter largura de banda congestionamento e outras propriedades de rede para as origens Essas informações podem ser usadas pelo processo de codificação para aumentar a taxa de dados e oferecer melhor qualidade quando a rede estiver funcionamento bem e para reduzir a taxa de dados quando houver problemas na rede Protocolo de Transporte da Internet UDP Fornecendo feedback contínuo os algoritmos de codificação podem ser adaptados continuamente para oferecer a melhor qualidade possível sob as circunstancias atuais Um problema para fornecer feedback é que os relatórios RTPC são enviados a todos os participantes Protocolo de Transporte da Internet UDP Para uma aplicação multicast com um grupo grande a largura de banda usada pelo RTPC rapidamente se tornaria muito grande Para impedir que isso aconteça os transmissores RTCP reduzem a taxa de seus relatórios para consumir coletivamente não mais do que digamos 5 de largura de banda de mídia O protocolo de transporte da Internet TCP O protocolo de controle de transmissão ou TCP Transmission Control Protocol foi projetado especificamente para oferecer um fluxo de bytes fim a fim confiável em uma rede interligada não confiável Uma rede interligada é diferente de uma única rede porque suas diversas partes podem ter topologias larguras de banda atrasos tamanhos de pacote e outros parâmetros totalmente diferentes O protocolo de transporte da Internet TCP O TCP foi projetado para se adaptar dinamicamente as propriedades da rede interligada e ser robusto diante dos muitos tipos de falhas que podem ocorrer TCP e é o principal elemento da Internet O protocolo de transporte da Internet TCP A camada de rede IP não oferece qualquer garantia de que os datagramas serão entregues da forma apropriada nem indicação alguma da velocidade com que os datagramas podem ser enviados Cabe ao TCP enviar datagramas com velocidade suficiente para utilizar a capacidade mas sem causar congestionamento além de definir os timeouts aceitos e retransmitir quaisquer datagramas que não serão entregues O protocolo de transporte da Internet TCP Os datagramas também podem chegar fora de ordem o TCP também terá de reorganizálos em mensagens na seqüência correta Resumindo o TCP deve fornecer a confiabilidade que a maioria dos usuários deseja mas que o IP não oferece O protocolo de transporte da Internet TCP O serviço TCP é obtido quando tanto o transmissor quanto o receptor criam pontos extremos chamados soquetes como vimos para o UDP são os chamados números de portas Para que o serviço TCP funcione é necessário que uma conexão seja explicitamente estabelecida entre um soquete da máquina transmissora e um soquete da máquina receptora O protocolo de transporte da Internet TCP As portas com números abaixo de 1024 são reservadas para serviços padronizados elas são denominadas portas conhecidas A lista de portas conhecidas é dada em wwwianaorg Algumas das mais conhecidas estão listadas na tabela 1 O protocolo de transporte da Internet TCP Tabela 1 Algumas portas atribuídas O protocolo de transporte da Internet TCP Todas as conexões TCP são fullduplex e ponto a ponto Fullduplex quer dizer que o tráfego pode ser feito em ambas as direções ao mesmo tempo Ponto a ponto significa que cada conexão possui exatamente dois pontos terminais O protocolo de transporte da Internet TCP O TCP não admite os processos de multicasting ou broadcasting Uma conexão TCP é um fluxo de bytes e não um fluxo de mensagens As fronteiras das mensagens não são preservadas de uma extremidade a outra O protocolo de transporte da Internet TCP Por exemplo se o processo transmissor executar quatro gravações de 512 bytes em um fluxo TCP esses dados poderão ser entregues ao processo receptor em quatro partes de 512 bytes em duas de 1024 bytes uma de 2048 bytes ver Figura 8 ou em qualquer outra divisão Não há um meio do receptor detectar as unidades em que os dados foram gravados não importa quanto ele tente O protocolo de transporte da Internet TCP Figura 8 a Quatro segmentos de 512 bytes enviados como datagramas IP separados b Os 2048 bytes de dados entregues a aplicação em uma única chamada O protocolo de transporte da Internet TCP Quando uma aplicação repassa dados para a entidade TCP ela pode enviálos imediatamente ou armazenálos em um buffer para aguardar outros dados e enviar um volume maior de uma só vez de acordo com suas necessidades Uma característica fundamental do TCP que domina o projeto do protocolo é que cada byte em uma conexão TCP tem seu próprio número de sequencia de 32 bits O protocolo de transporte da Internet TCP São usados números de sequencia de 32 bits separados para confirmações As entidades transmissoras e receptoras do TCP trocam dados na forma de segmentos Um segmento TCP consiste em um cabeçalho fixo de 20 bytes além de uma parte opcional seguido de bytes de dados O protocolo de transporte da Internet TCP Dois fatores restringem o tamanho do segmento Primeiro cada um incluindo o cabeçalho do TCP deve caber na carga útil do IP que é de 65515 bytes Em segundo lugar cada rede tem uma unidade máxima de transferência ou MTU MaximumTransfer Unit O protocolo de transporte da Internet TCP Cada segmento deve caber na MTU no transmissor e receptor de modo que possa ser enviado ou recebido em um único pacote não fragmentado Na prática a MTU geralmente tem 1500 bytes o tamanho da carga útil Ethernet e portanto define o limite superior de tamanho de segmentos O protocolo de transporte da Internet TCP Porém ainda é possível que os pacotes IP transportando segmentos TCP sejam fragmentados ao passar por um caminho da rede por o qual algum enlace tenha uma MTU pequena Se isso acontecer o desempenho é diminuído e causa outros problemas O protocolo de transporte da Internet TCP Em vez disso as implementações do TCP na redes modernas realizam descoberta da MTU do caminho Essa técnica usa mensagens de erro ICMP protocolo de rede para encontrar a menor MTU para qualquer enlace no caminho O TCP então ajusta o tamanho do segmento para baixo para evitar fragmentação O protocolo de transporte da Internet TCP O protocolo básico utilizado pelas entidades TCP é de janela deslizante que estudaremos no capítulo 5 Quando envia um segmento o transmissor também dispara um timer O protocolo de transporte da Internet TCP Quando o segmento chega ao destino a entidade TCP receptora retorna um segmento com ou sem dados de acordo com as circunstâncias com um número de confirmação igual ao próximo número de sequencia que espera receber e o tamanho da janela restante Se o timer do transmissor expirar antes da confirmação ser recebida o segmento será retransmitido O protocolo de transporte da Internet TCP Apesar de esse protocolo parecer simples há muitos detalhes sobre ele que devem ser considerados Os segmentos podem chegar fora de ordem assim os bytes 3072 a 4095 podem chegar mas não podem ser confirmados porque os bytes 2048 a 3071 ainda não chegaram Além disso os segmentos podem se atrasar tanto que o timer do transmissor expira e ele tem de retransmitilos O protocolo de transporte da Internet TCP As retransmissões podem incluir diferentes faixas de bytes em relação a transmissão original exigindo uma administração cuidadosa para controlar quais bytes foram recebidos corretamente O TCP deve estar preparado para lidar com todos esses problemas e resolvelos de maneira eficiente Foi feito um grande esforço no sentido de otimizar o desempenho dos fluxos TCP mesmo diante dos problemas da rede O protocolo de transporte da Internet TCP A Figura 9 mostra o layout de um segmento TCP Figura 9 O cabeçalho TCP O protocolo de transporte da Internet TCP Cada segmento começa com um cabeçalho de formato fixo de 20 bytes O cabeçalho fixo pode ser seguido por opções de cabeçalho Segmentos sem quaisquer dados são válidos e são comumente usados para confirmações e mensagens de controle O protocolo de transporte da Internet TCP Os campos número de sequencia e número de confirmação desempenham suas funções habituais O número de confirmação especifica o próximo byte esperado e não o último byte recebido corretamente Ele é uma confirmação cumulativa pois resume os dados recebidos com um único número O protocolo de transporte da Internet TCP O campo comprimento de cabeçalho TCP informa quantas palavras de 32 bits existem no cabeçalho TCP CWR e ECE são usados para sinalizar congestionamento URG indica que tem dados urgentes O protocolo de transporte da Internet TCP ACK é atribuído o valor 1 para indicar que número de confirmação é válido se ACK for igual a 0 significa que o segmento não contém uma confirmação e assim o campo número de confirmação é ignorado PSH indica dados com PUSH com ele o receptor é solicitado a entregar os dados a aplicação mediante sua chegada em vez de armazenálos até que um buffer completo tenha sido recebido o que ele poderia fazer para manter a eficiência O protocolo de transporte da Internet TCP RST é utilizada para reinicializar uma conexão que tenha ficado confusa devido a uma falha no host ou por qualquer outra razão SYN é usada para estabelecer conexões FIN é utilizada para encerrar uma conexão O protocolo de transporte da Internet TCP O controle de fluxo no TCP é administrado por meio de uma janela deslizante de tamanho variável O campo tamanho de janela indica quantos bytes podem ser enviados a partir do byte confirmado O protocolo de transporte da Internet TCP Checksum também é fornecido para aumentar a confiabilidade O campo opções foi projetado como uma forma de oferecer recursos extras ou seja recursos que não foram previstos pelo cabeçalho comum O protocolo de transporte da Internet TCP As conexões são estabelecidas no TCP por meio do handshake de três vias já comentado anteriormente Apesar das conexões TCP serem fullduplex fica mais fácil compreender como as conexões são encerradas se as considerarmos um par de conexões simplex Cada conexão simplex é encerrada de modo independente de sua parceira O protocolo de transporte da Internet TCP Para encerrar uma conexão qualquer dos lados pode enviar um segmento com o bit FIN ativado o que significa que não há mais dados a serem transmitidos Quando FIN é confirmado esse sentido é desativado para novos dados No entanto os dados podem continuar a fluir no outro sentido O protocolo de transporte da Internet TCP Quando os dois sentidos da conexão estiverem desativados a conexão será encerrada O protocolo de transporte da Internet TCP Os campos número de seqüência e número de reconhecimento são parte fundamental do serviço de transferência confiável de dados do TCP Como já comentado os dados no TCP são encarados como uma cadeia de bytes ordenada O protocolo de transporte da Internet TCP O uso que o TCP faz dos número de seqüência reflete essa visão pois esses números são aplicados sobre a cadeia de bytes transmitidos e não sobre a série de segmentos transmitidos O número de seqüência para um segmento é o número do primeiro byte do segmento O protocolo de transporte da Internet TCP Por exemplo suponha que um processo no host A queira enviar uma cadeia de dados para um host B por uma conexão TCP O TCP irá numerar cada byte da cadeia de dados no host A O protocolo de transporte da Internet TCP O pacote de dados a ser enviado é composto por 500000 bytes e o MSS é fixado em 1000 bytes O primeiro byte da cadeia é numerado com zero Para o exemplo em questão o TCP monta 500 segmentos com 1000 bytes na cadeia de dados de cada um Número de segmentos 500000 bytes 1000 bytes 500 O protocolo de transporte da Internet TCP O primeiro segmento recebe o número de seqüência 0 o segundo o número de seqüência 1000 o terceiro o número de seqüência 2000 e assim por diante Cada número de seqüência é inserido no campo de número de seqüência no cabeçalho do segmento TCP apropriado O protocolo de transporte da Internet TCP O número de reconhecimento que um host atribui a seu segmento é o número de seqüência do próximo byte que ele estiver aguardando do host no outro lado da linha de comunicação O protocolo de transporte da Internet TCP Agora vamos examinar o seguinte caso Suponha que o host A tenha recebido do host B todos os bytes numerados de 0 a 535 Considerando uma próxima transferência de B para A o host A estará aguardando pelo byte 536 e por todos os bytes subseqüentes da corrente de dados do host B O protocolo de transporte da Internet TCP Sendo assim após o recebimentos dos bytes de 0 a 535 o host A coloca o número 536 no campo de número de reconhecimento do segmento que enviará para o host B O protocolo de transporte da Internet TCP Suponha agora que o host A tenha recebido um segmento do host B contendo os bytes de 0 a 535 e outro segmento contendo os bytes de 900 a 1000 Por alguma razão o host A ainda não recebeu os bytes de 536 a 899 O protocolo de transporte da Internet TCP Deste modo neste exemplo o host A ainda está aguardando o byte 536 para recriar a cadeia de dados de B Sendo assim o segmento seguinte que A envia a B conterá 536 no campo de número de reconhecimento O protocolo de transporte da Internet TCP O host A recebeu o terceiro segmento bytes de 900 a 1000 antes de receber o segmento bytes de 536 a 899 Portanto o terceiro segmento chegou fora de ordem Neste caso o que um host faz quando recebe um segmento fora de ordem em uma conexão TCP O protocolo de transporte da Internet TCP Os RFCs do TCP não impõem nenhuma regra específica para isto e deixam a decisão para quem estiver programando a implementação TCP Há basicamente duas alternativas O protocolo de transporte da Internet TCP Na primeira o destinatário descarta imediatamente os segmentos fora de ordem o que simplifica o projeto Na segunda alternativa o destinatário conserva os bytes fora de ordem e espera pelos bytes faltantes para preencher as lacunas O protocolo de transporte da Internet TCP A segunda alternativa é a mais eficiente em termos de largura de banda de rede e é a abordagem adotada na prática O protocolo de transporte da Internet TCP OBS Nos exemplos apresentados usamos o número inicial de seqüência como 0 Na realidade ambos os lados de uma conexão TCP escolhem aleatoriamente o número inicial de uma corrente de bytes O protocolo de transporte da Internet TCP A figura 10 exemplifica uma aplicação com números de sequencia e reconhecimento Figura 10 Cenário simples exemplificando números de sequencia e reconhecimento O protocolo de transporte da Internet TCP O TCP utiliza um mecanismo de controle de temporização retransmissão para recuperar segmentos perdidos Este mecanismo de controle se baseia na estimativa do tempo de ida e volta entre remetente e destinatário
Send your question to AI and receive an answer instantly
Recommended for you
1
Redes 1 - 3 Lista de Exercícios Protocolos da Camada de Transporte e TCP
Rede de Computadores
CEFET/RJ
14
Uso do Wireshark para Análise de Protocolos de Redes
Rede de Computadores
CEFET/RJ
150
Camada Física e Comunicação de Dados - Modulação, Multiplexação e Meios de Transmissão
Rede de Computadores
CEFET/RJ
152
DNS Domain Name System e Camada de Aplicação - Introdução e Conceitos
Rede de Computadores
CEFET/RJ
2
Redes de Computadores - Lista de Exercícios Capítulo 1 - Topologia, Classificação e Camadas
Rede de Computadores
CEFET/RJ
5
Lista de Exercícios - Problema do Múltiplo Acesso e Soluções
Rede de Computadores
CEFET/RJ
3
Redes 1 - Provas e Conteudo Programatico
Rede de Computadores
CEFET/RJ
1
Redes 1 - 2 Lista de Exercicios sobre DNS e HTTP
Rede de Computadores
CEFET/RJ
143
Camada de Enlace de Dados - Questões de Projeto, Enquadramento, Controle de Fluxo e Erro
Rede de Computadores
CEFET/RJ
7
Lista de Exercícios sobre Redes de Computadores - Capítulo 2
Rede de Computadores
CEFET/RJ
Preview text
Capítulo 3 Camada de Transporte Introdução O Serviço de Transporte O Protocolo de Transporte da Internet UDP O protocolo de transporte da Internet TCP Introdução Juntos a camada de rede e a camada de transporte formam o núcleo da hierarquia de protocolos A camada de transporte oferece transporte de dados de um processo em uma máquina de origem a um processo de uma máquina destino com um nível de confiabilidade desejável independentemente das redes físicas em uso no momento Introdução Ela provê as abstrações de que as aplicações precisam para usar a rede figura 1 Figura 1 Comunicação na camada de Transporte Introdução Sem a camada de transporte todo o conceito de protocolos em camadas faria pouco sentido A Internet tem dois protocolos principais na camada de transporte um protocolo orientado a conexões e o outro não orientado a conexões Introdução Eles complementam um ao outro O protocolo não orientado a conexões é o UDP O protocolo orientado a conexões é o TCP O serviço de transporte O principal objetivo da camada de transporte é oferecer um serviço confiável eficiente e econômico a seus usuários que em geral são processos presentes na camada de aplicação O hardwaresoftware da camada de transporte que executa o trabalho é chamado entidade de transporte O serviço de transporte Esta pode estar localizada no núcleo do sistema operacional em um pacote de biblioteca vinculado a aplicações de rede em outro processo do usuário ou na placa de interface de rede As duas primeiras opções são mais comuns na Internet O serviço de transporte O relacionamento lógico existente entre as camadas de rede de transporte e de aplicação esta ilustrado na Figura 2 O serviço de transporte Figura 2 As camadas de rede de transporte e de aplicação O serviço de transporte O código de transporte funciona inteiramente nas maquinas dos usuários Usaremos segmento para denominar as mensagens enviadas de uma entidade de transporte a outra entidade de transporte TCP e UDP utilizam esse termo O serviço de transporte Cabe observar que na camada de transporte até mesmo uma troca de dados simples é unidirecional Cada pacote de dados enviado também será confirmado ao final Os pacotes que transportam segmentos de controle também são confirmados de forma explicita ou implícita O serviço de transporte Essas confirmações são gerenciadas por entidades de transporte e não são visíveis para os usuários de transporte As entidades de transporte tem de lidar com timers e retransmissões O serviço de transporte O serviço de transporte é implementado por um protocolo de transporte usado entre duas entidades de transporte Estes tem de lidar com o controle de erros com a definição de seqüência e com o controle de fluxo entre outros itens Na camada de transporte é necessário o endereçamento explicito de destinos O serviço de transporte Endereçamento Quando um processo de aplicação por exemplo um usuário deseja estabelecer uma conexão com um processo de aplicação remoto é necessário especificar a aplicação com a qual ele irá se conectar O serviço de transporte O método normalmente utilizado é definir os endereços de transporte que os processos podem ouvir para receber solicitações de conexão Na Internet essas extremidades são chamadas portas O serviço de transporte Estabelecimento de conexões No caso do protocolo de transporte que oferece o serviço orientado a conexão ou seja com garantia de entrega antes de transmitir os pacotes há o processo de estabelecimento da conexão chamado de handshake ou protocolo de três vias O TCP usa esse handshake para estabelecer conexões O serviço de transporte Esse protocolo de estabelecimento de conexão envolve um peer verificado com outro se a solicitação da conexão está realmente ativa O procedimento para estabelecimento de conexão usando o protocolo de três vias está indicado na figura 3 O serviço de transporte Figura 3 Protocolo para o estabelecimento de uma conexão com o uso de um handshake de três vias CR denota CONNECTION REQUEST O serviço de transporte O host 1 escolhe um número de seqüência inicial x e o envia em segmento CONNECTION REQUEST para o host 2 Por sua vez o host 2 responde com um segmento ACK que confirma x e anuncia seu próprio número de seqüência inicial y Por fim o host 1 confirma o número de seqüência inicial escolhido pelo host 2 no primeiro segmento de dados que enviar O serviço de transporte Encerramento de conexões Encerrar uma conexão é mais fácil do que estabelecêla No entanto nesse procedimento há mais armadilhas do que se poderia esperar Existem dois tipos de encerramento de conexão o encerramento simétrico e o encerramento assimétrico O serviço de transporte O encerramento assimétrico representa o funcionamento do sistema telefônico ou seja quando um dos interlocutores desliga a conexão é interrompida O encerramento assimétrico é repentino e pode resultar na perda de dados O serviço de transporte Considere o cenário da Figura 4 Figura 4 Desconexão repentina com perda de dados O serviço de transporte Após o estabelecimento da conexão o host 1 envia um segmento que chega de forma correta ao host 2 Em seguida o host 1 envia outro segmento Infelizmente o host 2 gera uma primitiva DISCONNECT antes do segundo segmento chegar o que resulta no encerramento da conexão e na perda dos dados O serviço de transporte Por outro lado o encerramento simétrico trata a conexão como duas conexões unidirecionais isoladas e exige que cada uma seja encerrada separadamente O serviço de transporte Controle de erro e controle de fluxo Controle de erro é garantir que os dados sejam entregues com nível de confiabilidade desejável normalmente que todos os dados sejam entregues sem nenhum erro Controle de fluxo é impedir que um transmissor rápido sobrecarregue um receptor lento O serviço de transporte Um quadro transporta um código de detecção de erro por exemplo CRC ou checksum que é usado para verificar se a informação foi recebida corretamente Um quadro transporta um número de sequencia para se identificar e ser retransmitido pelo transmissor até que receba uma confirmação de recebimento bemsucedido do receptor Isso é chamado ARQ Automatic Repeat Request O serviço de transporte Existe um número máximo de quadros que o transmissor permitirá que estejam pendentes ao mesmo tempo os protocolos usados são os protocolos de janela deslizante que já estudaremos no capítulo 5 O serviço de transporte Multiplexação A multiplexação ou compartilhamento de várias conversações em conexões circuitos virtuais e enlaces físicos tem um papel importante em diversas camadas da arquitetura de rede Na camada de transporte a necessidade da multiplexação pode surgir de diversas formas O serviço de transporte Por exemplo se houver apenas um endereço de rede disponível em um host todas as conexões de transporte nessa máquina terão de utilizálo Ao chegar um segmento é necessário encontrar algum meio de descobrir a qual processo ele deve ser entregue Essa situação denominada multiplexação é ilustrada na Figura 5 O serviço de transporte Figura 10 Multiplexação Figura 5 Multiplexação na camada de transporte Protocolo de Transporte da Internet UDP O protocolo de datagrama do usuário ou UDP User Datagram Protocol oferece um meio para as aplicações enviarem datagramas IP encapsulados sem que seja necessário estabelecer uma conexão O UDP é descrito na RFC 768 O UDP transmite segmentos que consistem em um cabeçalho de 8 bytes seguido pela carga útil Protocolo de Transporte da Internet UDP A figura 6 mostra o cabeçalho UDP Figura 6 O cabeçalho UDP Protocolo de Transporte da Internet UDP As duas portas servem para identificar os pontos extremos nas máquinas de origem e destino Quando um pacote UDP chega sua carga útil é entregue ao processo associado a porta de destino Protocolo de Transporte da Internet UDP Sem os campos de porta de origem e porta de destino a camada de transporte não saberia o que fazer com o pacote Com eles a camada entrega segmentos encapsulado a aplicação correta A porta de origem é necessária principalmente quando uma resposta precisa ser enviada de volta a origem Protocolo de Transporte da Internet UDP Copiando o campo porta de origem do segmento de entrada no campo porta de destino do segmento de saída o processo que transmite a resposta pode especificar qual processo na máquina transmissora deve recebêlo O campo comprimento UDP inclui o cabeçalho de 8 bytes e os dados Protocolo de Transporte da Internet UDP Um campo opcional de checksum do UDP também é fornecido para gerar confiabilidade extra O UDP não realiza controle congestionamento ou retransmissão após a recepção de um segmento incorreto nem controle de fluxo Tudo isso cabe aos processos do usuário Protocolo de Transporte da Internet UDP O que ele faz é fornecer uma interface para o protocolo IP com o recurso adicional de demultiplexação de vários processos que utilizam as portas e detecção opcional de erro fim a fim Isso é tudo que ele faz Para aplicações que precisam ter controle preciso sobre o fluxo de pacotes controle de erros ou a sincronização o UDP fornece apenas aquilo que é determinado Protocolo de Transporte da Internet UDP Uma área em que o UDP é especialmente útil é nas de situações clienteservidor Normalmente o cliente envia uma solicitação curta para servidor e espera uma resposta curta de volta Protocolo de Transporte da Internet UDP Se a solicitação ou a resposta se perderem o cliente pode entrar em timeout e tentar novamente Não apenas o código é simples mas menos mensagens são necessárias uma em cada sentido do que com um protocolo exigindo uma configuração inicial como TCP Uma aplicação que utiliza o UDP desse modo é o DNS Domain Name System que estudamos no Capitulo 2 Protocolo de Transporte da Internet UDP Resumindo um programa que precisa pesquisar o endereço IP de algum nome de host por exemplo wwwcsberkeleyedu pode enviar um pacote UDP contendo o nome do host a um servidor DNS O servidor responde com um pacote UDP que contém o endereço IP Protocolo de Transporte da Internet UDP Não é necessária nenhuma configuração antecipada e também nenhum encerramento posterior Basta enviar duas mensagens pela rede Protocolo de Transporte da Internet UDP Outra área em que o UDP é amplamente utilizado é a das aplicações de multimídia em tempo real Em particular a medida que o rádio da Internet a telefonia da Internet a música por demanda a videoconferênciao vídeo sob demanda e outras aplicações multimídia se tornaram mais comuns as pessoas descobriram que cada aplicação estava usando aproximadamente o mesmo protocolo de transporte em tempo real Protocolo de Transporte da Internet UDP Aos poucos ficou claro que seria uma boa idéia ter um protocolo de transporte de tempo real genérico para várias aplicações Desse modo foi criado o RTP protocolo de transporte em tempo real RealTime Transport Protocol Ele é descrito na RFC 1889 e agora está difundido para aplicações multimídia Protocolo de Transporte da Internet UDP Vamos descrever dois aspectos do transporte em tempo real figura 7 Figura 7 a A posição do RTP na pilha de protocolos b O alinhamento de pacotes Protocolo de Transporte da Internet UDP O primeiro aspecto é o uso do protocolo RTP para transportar dados de áudio e vídeo em pacotes O segundo aspecto é o processamento que ocorre principalmente no receptor para reproduzir o áudio e o vídeo no momento certo O RTP normalmente trabalha no espaço do usuário sobre UDP no sistema operacional Protocolo de Transporte da Internet UDP Ele opera da maneira descrita a seguir A aplicação multimídia consiste em vários fluxos de áudio vídeo texto e possivelmente outros fluxos Esses fluxos são armazenados na biblioteca RTP que se encontra no espaço do usuário juntamente com a aplicação Protocolo de Transporte da Internet UDP Essa biblioteca efetua a multiplexação dos fluxos e os codifica em pacotes RTP que são então colocados em uma porta Na outra extremidade da porta no sistema operacional os pacotes UDP são gerados e incorporados a pacotes RTP e entregues ao IP para a transmissão por um enlace como a Ethernet Protocolo de Transporte da Internet UDP O processo inverso ocorre no receptor A aplicação multimídia por fim recebe os dados multimídia da biblioteca RTP Ela é responsável por reproduzir a mídia Protocolo de Transporte da Internet UDP A pilha de protocolos para essa situação é mostrada na Figura 7a e o alinhamento de pacotes é mostrado na Figura 7b Como conseqüência dessa estrutura é um pouco difícil dizer em que camada o RTP está Figura 7 Protocolo de Transporte da Internet UDP Como ele funciona no espaço do usuário e está vinculado ao programa aplicativo certamente parece ser um protocolo de aplicação Por outro lado ele é um protocolo genérico e independente das aplicações que apenas fornecem recursos de transporte e assim também é semelhante a um protocolo de transporte Protocolo de Transporte da Internet UDP Talvez a melhor descrição do RTP seja como um protocolo de transporte implementado na camada de aplicação motivo pelo qual está sendo abordado nesse capítulo A função básica do RTP é multiplexar diversos fluxos de dados de tempo real sobre um único fluxo de pacotes UDP O fluxo UDP pode ser enviado a um único destino unicast ou a vários destinos multicast Protocolo de Transporte da Internet UDP Como o RTP utiliza simplesmente o UDP normal seus pacotes não são tratados de maneira especial pelos roteadores a menos que alguns recursos de qualidade de serviço normais do IP estejam ativos Em particular não há nenhuma garantia especial sobre entrega e pacotes podem ser perdidos atrasados adulterados etc Protocolo de Transporte da Internet UDP O formato RTP contém vários recursos para auxiliar os receptores a trabalhar com informação multimídia Cada pacote enviado em um fluxo RTP recebe um número uma unidade maior que seu predecessor e essa numeração permite ao destino descobrir se algum pacote está faltando Se um pacote for omitido a melhor ação que o destino deve executar fica a cargo da aplicação Protocolo de Transporte da Internet UDP A retransmissão não é uma opção prática pois o pacote retransmitido provavelmente chegaria tarde demais para ser útil Como consequência o RTP não tem nenhuma confirmação e nenhum mecanismo para solicitar retransmissões Protocolo de Transporte da Internet UDP Outro recurso de que muitas aplicações em tempo real necessitam é a marcação com período de tempo Aqui a idéia é permitir que a origem associe um período de tempo a primeira amostra em cada pacote Os períodos de tempo são relativos ao inicio do fluxo e assim somente as diferenças entre os períodos de tempo são significativas Protocolo de Transporte da Internet UDP Esse mecanismo permite ao destino realizar algum buffering e reproduzir cada amostra depois de um número correto de milissegundos contados desde o inicio do fluxo independente de quando chegou o pacote contendo a amostra O uso de períodos de tempo não apenas reduz os efeitos da variação no atraso na rede mas também permite a sincronização de vários fluxos Protocolo de Transporte da Internet UDP O protocolo RTP tem um irmão caçula chamado RTCP protocolo de controle de transporte em tempo real Realtime Transport Control Protocol Ele é definido com o RTP na RFC 3550 e cuida do feedback da sincronização e da interface do usuário mas não transporta nenhuma amostra multimídia Protocolo de Transporte da Internet UDP A primeira função pode ser usada para fornecer feedback sobre o atraso variação do atraso ou jitter largura de banda congestionamento e outras propriedades de rede para as origens Essas informações podem ser usadas pelo processo de codificação para aumentar a taxa de dados e oferecer melhor qualidade quando a rede estiver funcionamento bem e para reduzir a taxa de dados quando houver problemas na rede Protocolo de Transporte da Internet UDP Fornecendo feedback contínuo os algoritmos de codificação podem ser adaptados continuamente para oferecer a melhor qualidade possível sob as circunstancias atuais Um problema para fornecer feedback é que os relatórios RTPC são enviados a todos os participantes Protocolo de Transporte da Internet UDP Para uma aplicação multicast com um grupo grande a largura de banda usada pelo RTPC rapidamente se tornaria muito grande Para impedir que isso aconteça os transmissores RTCP reduzem a taxa de seus relatórios para consumir coletivamente não mais do que digamos 5 de largura de banda de mídia O protocolo de transporte da Internet TCP O protocolo de controle de transmissão ou TCP Transmission Control Protocol foi projetado especificamente para oferecer um fluxo de bytes fim a fim confiável em uma rede interligada não confiável Uma rede interligada é diferente de uma única rede porque suas diversas partes podem ter topologias larguras de banda atrasos tamanhos de pacote e outros parâmetros totalmente diferentes O protocolo de transporte da Internet TCP O TCP foi projetado para se adaptar dinamicamente as propriedades da rede interligada e ser robusto diante dos muitos tipos de falhas que podem ocorrer TCP e é o principal elemento da Internet O protocolo de transporte da Internet TCP A camada de rede IP não oferece qualquer garantia de que os datagramas serão entregues da forma apropriada nem indicação alguma da velocidade com que os datagramas podem ser enviados Cabe ao TCP enviar datagramas com velocidade suficiente para utilizar a capacidade mas sem causar congestionamento além de definir os timeouts aceitos e retransmitir quaisquer datagramas que não serão entregues O protocolo de transporte da Internet TCP Os datagramas também podem chegar fora de ordem o TCP também terá de reorganizálos em mensagens na seqüência correta Resumindo o TCP deve fornecer a confiabilidade que a maioria dos usuários deseja mas que o IP não oferece O protocolo de transporte da Internet TCP O serviço TCP é obtido quando tanto o transmissor quanto o receptor criam pontos extremos chamados soquetes como vimos para o UDP são os chamados números de portas Para que o serviço TCP funcione é necessário que uma conexão seja explicitamente estabelecida entre um soquete da máquina transmissora e um soquete da máquina receptora O protocolo de transporte da Internet TCP As portas com números abaixo de 1024 são reservadas para serviços padronizados elas são denominadas portas conhecidas A lista de portas conhecidas é dada em wwwianaorg Algumas das mais conhecidas estão listadas na tabela 1 O protocolo de transporte da Internet TCP Tabela 1 Algumas portas atribuídas O protocolo de transporte da Internet TCP Todas as conexões TCP são fullduplex e ponto a ponto Fullduplex quer dizer que o tráfego pode ser feito em ambas as direções ao mesmo tempo Ponto a ponto significa que cada conexão possui exatamente dois pontos terminais O protocolo de transporte da Internet TCP O TCP não admite os processos de multicasting ou broadcasting Uma conexão TCP é um fluxo de bytes e não um fluxo de mensagens As fronteiras das mensagens não são preservadas de uma extremidade a outra O protocolo de transporte da Internet TCP Por exemplo se o processo transmissor executar quatro gravações de 512 bytes em um fluxo TCP esses dados poderão ser entregues ao processo receptor em quatro partes de 512 bytes em duas de 1024 bytes uma de 2048 bytes ver Figura 8 ou em qualquer outra divisão Não há um meio do receptor detectar as unidades em que os dados foram gravados não importa quanto ele tente O protocolo de transporte da Internet TCP Figura 8 a Quatro segmentos de 512 bytes enviados como datagramas IP separados b Os 2048 bytes de dados entregues a aplicação em uma única chamada O protocolo de transporte da Internet TCP Quando uma aplicação repassa dados para a entidade TCP ela pode enviálos imediatamente ou armazenálos em um buffer para aguardar outros dados e enviar um volume maior de uma só vez de acordo com suas necessidades Uma característica fundamental do TCP que domina o projeto do protocolo é que cada byte em uma conexão TCP tem seu próprio número de sequencia de 32 bits O protocolo de transporte da Internet TCP São usados números de sequencia de 32 bits separados para confirmações As entidades transmissoras e receptoras do TCP trocam dados na forma de segmentos Um segmento TCP consiste em um cabeçalho fixo de 20 bytes além de uma parte opcional seguido de bytes de dados O protocolo de transporte da Internet TCP Dois fatores restringem o tamanho do segmento Primeiro cada um incluindo o cabeçalho do TCP deve caber na carga útil do IP que é de 65515 bytes Em segundo lugar cada rede tem uma unidade máxima de transferência ou MTU MaximumTransfer Unit O protocolo de transporte da Internet TCP Cada segmento deve caber na MTU no transmissor e receptor de modo que possa ser enviado ou recebido em um único pacote não fragmentado Na prática a MTU geralmente tem 1500 bytes o tamanho da carga útil Ethernet e portanto define o limite superior de tamanho de segmentos O protocolo de transporte da Internet TCP Porém ainda é possível que os pacotes IP transportando segmentos TCP sejam fragmentados ao passar por um caminho da rede por o qual algum enlace tenha uma MTU pequena Se isso acontecer o desempenho é diminuído e causa outros problemas O protocolo de transporte da Internet TCP Em vez disso as implementações do TCP na redes modernas realizam descoberta da MTU do caminho Essa técnica usa mensagens de erro ICMP protocolo de rede para encontrar a menor MTU para qualquer enlace no caminho O TCP então ajusta o tamanho do segmento para baixo para evitar fragmentação O protocolo de transporte da Internet TCP O protocolo básico utilizado pelas entidades TCP é de janela deslizante que estudaremos no capítulo 5 Quando envia um segmento o transmissor também dispara um timer O protocolo de transporte da Internet TCP Quando o segmento chega ao destino a entidade TCP receptora retorna um segmento com ou sem dados de acordo com as circunstâncias com um número de confirmação igual ao próximo número de sequencia que espera receber e o tamanho da janela restante Se o timer do transmissor expirar antes da confirmação ser recebida o segmento será retransmitido O protocolo de transporte da Internet TCP Apesar de esse protocolo parecer simples há muitos detalhes sobre ele que devem ser considerados Os segmentos podem chegar fora de ordem assim os bytes 3072 a 4095 podem chegar mas não podem ser confirmados porque os bytes 2048 a 3071 ainda não chegaram Além disso os segmentos podem se atrasar tanto que o timer do transmissor expira e ele tem de retransmitilos O protocolo de transporte da Internet TCP As retransmissões podem incluir diferentes faixas de bytes em relação a transmissão original exigindo uma administração cuidadosa para controlar quais bytes foram recebidos corretamente O TCP deve estar preparado para lidar com todos esses problemas e resolvelos de maneira eficiente Foi feito um grande esforço no sentido de otimizar o desempenho dos fluxos TCP mesmo diante dos problemas da rede O protocolo de transporte da Internet TCP A Figura 9 mostra o layout de um segmento TCP Figura 9 O cabeçalho TCP O protocolo de transporte da Internet TCP Cada segmento começa com um cabeçalho de formato fixo de 20 bytes O cabeçalho fixo pode ser seguido por opções de cabeçalho Segmentos sem quaisquer dados são válidos e são comumente usados para confirmações e mensagens de controle O protocolo de transporte da Internet TCP Os campos número de sequencia e número de confirmação desempenham suas funções habituais O número de confirmação especifica o próximo byte esperado e não o último byte recebido corretamente Ele é uma confirmação cumulativa pois resume os dados recebidos com um único número O protocolo de transporte da Internet TCP O campo comprimento de cabeçalho TCP informa quantas palavras de 32 bits existem no cabeçalho TCP CWR e ECE são usados para sinalizar congestionamento URG indica que tem dados urgentes O protocolo de transporte da Internet TCP ACK é atribuído o valor 1 para indicar que número de confirmação é válido se ACK for igual a 0 significa que o segmento não contém uma confirmação e assim o campo número de confirmação é ignorado PSH indica dados com PUSH com ele o receptor é solicitado a entregar os dados a aplicação mediante sua chegada em vez de armazenálos até que um buffer completo tenha sido recebido o que ele poderia fazer para manter a eficiência O protocolo de transporte da Internet TCP RST é utilizada para reinicializar uma conexão que tenha ficado confusa devido a uma falha no host ou por qualquer outra razão SYN é usada para estabelecer conexões FIN é utilizada para encerrar uma conexão O protocolo de transporte da Internet TCP O controle de fluxo no TCP é administrado por meio de uma janela deslizante de tamanho variável O campo tamanho de janela indica quantos bytes podem ser enviados a partir do byte confirmado O protocolo de transporte da Internet TCP Checksum também é fornecido para aumentar a confiabilidade O campo opções foi projetado como uma forma de oferecer recursos extras ou seja recursos que não foram previstos pelo cabeçalho comum O protocolo de transporte da Internet TCP As conexões são estabelecidas no TCP por meio do handshake de três vias já comentado anteriormente Apesar das conexões TCP serem fullduplex fica mais fácil compreender como as conexões são encerradas se as considerarmos um par de conexões simplex Cada conexão simplex é encerrada de modo independente de sua parceira O protocolo de transporte da Internet TCP Para encerrar uma conexão qualquer dos lados pode enviar um segmento com o bit FIN ativado o que significa que não há mais dados a serem transmitidos Quando FIN é confirmado esse sentido é desativado para novos dados No entanto os dados podem continuar a fluir no outro sentido O protocolo de transporte da Internet TCP Quando os dois sentidos da conexão estiverem desativados a conexão será encerrada O protocolo de transporte da Internet TCP Os campos número de seqüência e número de reconhecimento são parte fundamental do serviço de transferência confiável de dados do TCP Como já comentado os dados no TCP são encarados como uma cadeia de bytes ordenada O protocolo de transporte da Internet TCP O uso que o TCP faz dos número de seqüência reflete essa visão pois esses números são aplicados sobre a cadeia de bytes transmitidos e não sobre a série de segmentos transmitidos O número de seqüência para um segmento é o número do primeiro byte do segmento O protocolo de transporte da Internet TCP Por exemplo suponha que um processo no host A queira enviar uma cadeia de dados para um host B por uma conexão TCP O TCP irá numerar cada byte da cadeia de dados no host A O protocolo de transporte da Internet TCP O pacote de dados a ser enviado é composto por 500000 bytes e o MSS é fixado em 1000 bytes O primeiro byte da cadeia é numerado com zero Para o exemplo em questão o TCP monta 500 segmentos com 1000 bytes na cadeia de dados de cada um Número de segmentos 500000 bytes 1000 bytes 500 O protocolo de transporte da Internet TCP O primeiro segmento recebe o número de seqüência 0 o segundo o número de seqüência 1000 o terceiro o número de seqüência 2000 e assim por diante Cada número de seqüência é inserido no campo de número de seqüência no cabeçalho do segmento TCP apropriado O protocolo de transporte da Internet TCP O número de reconhecimento que um host atribui a seu segmento é o número de seqüência do próximo byte que ele estiver aguardando do host no outro lado da linha de comunicação O protocolo de transporte da Internet TCP Agora vamos examinar o seguinte caso Suponha que o host A tenha recebido do host B todos os bytes numerados de 0 a 535 Considerando uma próxima transferência de B para A o host A estará aguardando pelo byte 536 e por todos os bytes subseqüentes da corrente de dados do host B O protocolo de transporte da Internet TCP Sendo assim após o recebimentos dos bytes de 0 a 535 o host A coloca o número 536 no campo de número de reconhecimento do segmento que enviará para o host B O protocolo de transporte da Internet TCP Suponha agora que o host A tenha recebido um segmento do host B contendo os bytes de 0 a 535 e outro segmento contendo os bytes de 900 a 1000 Por alguma razão o host A ainda não recebeu os bytes de 536 a 899 O protocolo de transporte da Internet TCP Deste modo neste exemplo o host A ainda está aguardando o byte 536 para recriar a cadeia de dados de B Sendo assim o segmento seguinte que A envia a B conterá 536 no campo de número de reconhecimento O protocolo de transporte da Internet TCP O host A recebeu o terceiro segmento bytes de 900 a 1000 antes de receber o segmento bytes de 536 a 899 Portanto o terceiro segmento chegou fora de ordem Neste caso o que um host faz quando recebe um segmento fora de ordem em uma conexão TCP O protocolo de transporte da Internet TCP Os RFCs do TCP não impõem nenhuma regra específica para isto e deixam a decisão para quem estiver programando a implementação TCP Há basicamente duas alternativas O protocolo de transporte da Internet TCP Na primeira o destinatário descarta imediatamente os segmentos fora de ordem o que simplifica o projeto Na segunda alternativa o destinatário conserva os bytes fora de ordem e espera pelos bytes faltantes para preencher as lacunas O protocolo de transporte da Internet TCP A segunda alternativa é a mais eficiente em termos de largura de banda de rede e é a abordagem adotada na prática O protocolo de transporte da Internet TCP OBS Nos exemplos apresentados usamos o número inicial de seqüência como 0 Na realidade ambos os lados de uma conexão TCP escolhem aleatoriamente o número inicial de uma corrente de bytes O protocolo de transporte da Internet TCP A figura 10 exemplifica uma aplicação com números de sequencia e reconhecimento Figura 10 Cenário simples exemplificando números de sequencia e reconhecimento O protocolo de transporte da Internet TCP O TCP utiliza um mecanismo de controle de temporização retransmissão para recuperar segmentos perdidos Este mecanismo de controle se baseia na estimativa do tempo de ida e volta entre remetente e destinatário