• Nenhum resultado encontrado

3.3 CAMADA DE TRANSPORTE

3.3.1 Transmission Control Protocol

O Transmission Control Protocol (TCP) é um protocolo orientado à conexão, usualmente utilizado na Internet. Algumas das aplicações que utilizam o TCP para gerenciar suas funcionalidades, são o File Transfer Protocol (FTP) e o Hypertext Transfer Protocol (HTTP), para transferência de informações pela Internet. O TCP utiliza serviços fornecidos pelo protocolo IP (Internet Protocol) da camada de rede, com o objetivo de oferecer uma transmissão confiável, ordenada, controlável e com velocidade de transmissão adaptável entre emissor e receptor. Apesar das informações particionadas poderem chegar em ordem aleatória, o receptor contém as informações necessárias para realizar a ordenação das partições para formar a informação original (SOHRABY et al., 2007). O TCP é composto por três fases de operações, sendo elas (SOHRABY et al., 2007):

1. estabelecimento de conexão: o emissor envia uma mensagem de solicitação ao receptor para estabelecer uma conexão. Se o receptor estiver disponível e houver um caminho entre origem e destino, a conexão será estabelecida utilizando um enlace virtual;

2. transmissão de dados: após a conexão ter sido estabelecida, inicia-se a transmissão de dados entre transmissor e receptor. Durante a troca de informações, a taxa de transmissão em ambos os lados pode ser ajustada de acordo com congestionamentos. Como dados podem ser perdidos durante a transmissão, métodos de detecção de perda e recuperação de dados perdidos, podem ser utilizados;

3. desconexão: ao finalizar a transmissão de dados, a conexão é desabilitada. Em alguns casos, o receptor pode se tornar indisponível no meio da transmissão, o que ocasiona numa falha de conexão.

Para realizar o controle de fluxo e congestionamento, são realizados em três fases no protocolo TCP (SOHRABY et al., 2007):

1. começo lento: por padrão, todas as transmissões iniciam lentamente, e conforme verifica-se sua estabilidade, incrementa-se a taxa de transmissão;

2. prevenção de congestionamento: após atingir uma determinada taxa de transmissão, o sistema entra em modo de prevenção de congestionamento, reduzindo o incremento da taxa de transmissão. Se ocorrer perda de dados, o protocolo retorna a sua fase de “começo lento”. Confirmada a perda de pacote, o sistema entra em um estado de Fast Recovery Fast Transmission (FRFT);

3. FRFT: quando o sistema entra nesse estado, a taxa de transmissão é atualizada da mesma forma que no modo de prevenção de congestionamento. A razão desse estado é pelas falhas esporádicas de segmentos, às quais nem sempre indicam um elevado nível de congestionamento, e, portanto, não há necessidade de recomeçar do zero a verificação de congestionamento.

De acordo com o padrão estabelecido por Postel (1981), o cabeçalho TCP é composto por 24 bytes de informação para controle, conforme apresentado na Figura 14.

Figura 14 – Cabeçalho TCP.

Fonte: Adaptado de Postel (1981, p. 15).

As portas de origem e destino são identificadores, utilizados em conjunto com endereços de origem e destino, para especificar a qual processo o pacote pertence. Número de Sequência é o valor que representa o primeiro byte de um segmento (com exceção de quando o sinal SYN está ativo). Se o sinal SYN estiver ativo, o Número de Sequência é o número inicial da sequência (ISN), e o primeiro byte de dados é ISN+1 (POSTEL, 1981).

O Número de Confirmação, quando o campo ACK está ativo, contém o valor do próximo Número de Sequência que o emissor está esperando receber. Data Offset, ou

0 15 31 Porta de Origem (16 bits) Porta de Destino (16 bits)

Número de Sequência (32 bits) Número de Confirmação (32 bits)

Data Offset (4 bits) Reservado (6 bits) U R G A C K P S H R S T S Y N F I N Janela (16 bits)

Soma de Verificação (16 bits) Ponteiro Urgente (16 bits)

Opção (24 bits) Preenchimento (8 bits)

deslocamento de dado, indica o local da memória que inicia a sequência de dados. O campo reservado não possui designação e deve ser sempre zero. Em sequência, têm-se os bits de controle, em ordem da esquerda para direita: ponteiro urgente; confirmação; função de push; reiniciar conexão; sincronizar números de sequência; fim dos dados do emissor (POSTEL, 1981).

O campo Janela indica a quantidade de bytes que o remetente desse segmento está disposto a aceitar. A Soma de Verificação é calculada pelo método de complemento de um com outras informações do cabeçalho IP para validar a integridade das informações do cabeçalho e dados. Ponteiro Urgente é utilizado para indicar quantos bytes são urgentes, com necessidade de serem processados com prioridade. Esse campo só é utilizado se o bit de controle URG estiver ativo. O campo Preenchimento é utilizado para garantir que o campo Opção termine em 32 bits, preenchendo com zeros caso for menor (POSTEL, 1981).

Apesar de possuir controle de fluxo, prevenção de congestionamento e meios de recuperar dados perdidos, o TCP não é recomendado para uso em RSSF pelos seguintes motivos (SOHRABY et al., 2007):

 devido o tamanho de dados utilizados em RSSF serem geralmente pequenos, o processo de estabelecimento de conexão demanda muita memória e tempo para ser realizado para um volume de dados tão pequeno;

 perda de segmentos no protocolo TCP pode acionar os processos de controle de congestionamento, quando na realidade o segmento pode ser perdido por falha da conexão e não por congestionamento. Esse comportamento irá reduzir significativamente a taxa de transmissão, especialmente em redes que utilizam múltiplos saltos, como as RSSFs;

 o TCP utiliza um processo de controle de congestionamento fim-a-fim, o que, geralmente, resulta em longas esperas de respostas, ocasionando perda de segmentos. Com isso, há necessidade de retransmissões de dados, o que causa maior perda energética e menor taxa efetiva de transmissão;

 a confirmação de recebimento é realizada fim-a-fim, e quando necessário são realizadas transmissões do mesmo modo. Isso reduz a taxa efetiva de comunicação e aumenta o tempo necessário para o envio de dados;

 em RSSF, os sensores podem estar situados a alguns saltos de distância do seu destino. Nesse cenário, sensores próximos ao coletor de dados devem receber

mais oportunidades de transmissão, ocasionando uma perda de energia maior. Além disso, nodos mais distantes podem ser afetados por desconexões da rede.