domingo, 29 de julho de 2012

Características do Cabeçalho TCP


Características

   TCP é um protocolo orientado à conexão que permite a entrega sem erros de um fluxo de bytes originados de uma determinada máquina em qualquer computador da inter-rede. Esse protocolo atua na camada de transporte oferecendo um serviço de transferência de bytes fim a fim, confiável, em uma inter-rede não-confiável.
   O protocolo fragmenta o fluxo de bytes de entrada em mensagens e passa cada uma delas para a camada Inter-Rede. No host destino, o protocolo TCP remonta as mensagens recebidas no fluxo de saída. O TCP cuida também do controle de fluxo, impedindo que um transmissor rápido sobrecarregue um receptor lento com um volume de mensagens muito grande.
   Todas as conexões TCP são full-duplex e ponto a ponto. Full-duplex quer dizer que o tráfego pode ser feito em ambas as direções ao mesmo tempo. Ponto a ponto quer dizer que cada conexão possui exatamente dois pontos terminais. O TCP é compatível com os processos de multicast e difusão. 

Pontos Finais de Comunicação

   O serviço TCP é obtido quando tanto o transmissor quanto o receptor criam pontos terminais, denominados sockets. Cada socket tem um número (endereço) que consiste no endereço IP do host mais um número de 16 bits local para esse host, chamado porta. Porta é o nome usado pelo TCP para um TSAP (transport service acess point). Para que uma conexão funcione, é necessário que uma conexão seja explicitamente estabelecida entre um socket da máquina transmissora e um socket da máquina receptora. 

Protocolo de Janela Deslizante

   O protocolo básico utilizado pelas entidades TCP é o protocolo de janela deslizante. Quando um seguimento de datagrama IP é enviado, o transmissor também dispara um temporizador.       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 seqüência que espera receber. Se o temporizador do transmissor expirar antes de a confirmação ser recebida, o segmento será retransmitido. Ainda há outros problemas que o protocolo TCP deve estar preparado para resolver como: perda de parte do segmento, chegada de segmento fora de ordem, duplicação de segmentos, congestionamento da rede, dentre outros.

Fluxo de Dados

   Cada máquina compatível com o TCP tem uma entidade de transporte TCP, que pode ser um processo de usuário ou parte do kernel que gerencia fluxos e interfaces TCP para a camada IP. Uma entidade TCP aceita fluxos de dados do usuário provenientes de processos locais, divide-os em partes e envia cada parte em um datagrama IP distinto. Quando os datagramas IP que contêm os dados TCP chegam a uma máquina, eles são enviados à entidade TCP, que restaura os fluxos originais.
   A camada IP não oferece qualquer garantia de que os datagramas serão entregues da forma apropriada; portanto, cabe ao TCP administrar os temporizadores e retransmití-los sempre que necessário. 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 querem, mas que o IP não oferece.
   Um segmento que é grande demais para uma rede pela qual deve transitar pode ser dividido em vários outros segmentos por um roteador. Cada novo segmento receberá seus próprios cabeçalhos TCP e IP; portanto, a fragmentação realizada pelos roteadores aumenta o overhead total.

Controle de Congestionamento

   Os pontos finais de comunicação geralmente não conhecem detalhes de onde um congestionamento esta ocorrendo ou porque. Para eles, um congestionamento significa apenas um atraso durante a transmissão de dados. Infelizmente, a maioria dos protocolos da camada de transporte utilizam timeout e retransmissão de dados, aumentando o congestionamento.
  Para evitar congestionamento, O protocolo TCP reduz a taxa de transmissão quando ocorre um congestionamento. Os roteadores são informados da ocorrência de um congestionamento através do protocolo ICMP.
   O protocolo TCP utiliza duas técnicas para evitar congestionamento: slow-start e multiplicative  decrease. Em uma situação normal de transmissão de dados, tanto a janela de transmissão do emissor quanto a janela de recepção do receptor possuem o mesmo tamanho. No momento em que é detectado o início de um congestionamento, o TCP usa a técnica multiplicative decrease, que diminui pela metade a capacidade de recepção da janela do receptor, assim, a taxa de transferencia de dados do emissor também cai pela metade, diminuindo a retransmissão dos dados e, consequentemente, diminuindo o congestionamento na rede. Quando a rede volta ao normal, através da técnica slow-start o TCP aumenta gradualmente o tamanho da janela do receptor, até que esta retorne ao seu tamanho original.

Cabeçalho TCP

O cabeçalho TCP é constituído de:
  • Número Porta Origem/Destino: número da porta do programa de aplicação nos pontos terminais locais da conexão;
  • Número de Seqüenciação: posição de cada segmento de dado na palavra original;
  • Acknowledgement: especifica o próximo byte aguardado;
  • Tamanho do Cabeçalho: informa quantas palavras de 32-bits existem no cabeçalho TCP;
  • Reservado: campo reservado para uso futuro;
  • URG: usado para indicar um deslocamento de bit no número de seqüência no qual os dados urgentes deverão estar;
  • ACK: indica se o Acknowledgement é válido;
  • PSH: indica que o receptor dos dados deve entregar os dados à aplicação mediante sua chegada, em vez de armazená-los até que um buffer completo tenha sido recebido;
  • RST: reinicia uma conexão que tenha ficado confusa devido a uma falha no host ou por qualquer outra razão;
  • SYN: usado para estabelecer conexões. Basicamente, SYN é usado para denotar CONNECTION.REQUEST e CONNECTION.ACCEPT
  • FIN: encerramento de uma conexão;
  • Tamanho da Janela de Transmissão: indica quantos bytes podem ser enviados a partir do byte confirmado (o controle do fluxo de dados é gerenciado por meio de uma janela deslizante);
  • Checksum: confere o cabeçalho TCP;
  • Ponteiro Urgente: indica um deslocamento de bit no número de seqüência no qual os dados urgentes deverão estar;
  • Dados: dados a serem transmitidos.



sábado, 14 de julho de 2012

Protocolo de janelas deslizantes


Protocolo de janelas deslizantes é usado para a entrega confiável e ordenada de mensagens.
É um protocolo orientado a conexão (primeiro garante que a conexão está ativa, para depois iniciar o envio das mensagens) que garante que todas as mensagens enviadas são entregues aos destinatários integralmente e na ordem correta de envio.
receptor envia uma mensagem de confirmação de recebimento (ACK) a cada mensagem recebida. Se o transmissor não recebe o ACK de uma mensagem num tempo pré-estabelecido, ele envia a mesma mensagem novamente. O transmissor cria uma espécie de tabela, onde cada posição é uma janela, em que são gravadas todas as mensagens que foram enviadas.
A cada ACK recebido, avança uma posição da tabela para a direita (a janela “desliza”). Por questão de segurança, se o receptor receber uma mensagem com numeração fora do intervalo de numeração das janelas a mesma é descartada e se estiver na numeração, porém fora de ordem a mensagem é armazenada.

Protocolo de Janelas Deslizantes

  1. Um protocolo que envia um frame e aguarda a sua confirmação é ineficiente porque desperdiça o canal que é full duplex;
  2. Um sistema que resolve esse problema é o de janelas deslizantes;
  3. O emissor mantém uma janela de transmissão de frames enviados mas ainda não confirmados;
  4. Desta forma o mesmo pode transmitir mais frames enquanto aguarda a confirmação;
  5. A medida que o receptor recebe os frames, envia para a origem uma confirmação especificando até qual frame já recebeu corretamente;
  6. Com base nas confirmações recebidas, o emissor elimina da janela de envio os confirmados e transmite novos frames;
  7. O emissor deve manter um controle de timeout para cada frame enviado;
  8. O tempo de timeout define o limite de tempo em que a confirmação pode chegar do destinatário;
  9. Se dentro deste tempo, a confirmação não chegar, o emissor assume que o frame não foi enviado;


Fonte: http://pt.wikipedia.org/wiki/Protocolo_de_janelas_deslizantes