3. HRA DEVELOPMENTS AND THEIR DATA NEEDS
3.3. Data needs
Na seção 4.1.1 foi citada a importância de haver um controle de fluxo de dados a fim de se evitar que informação seja perdida quando um transmissor envia informações mais rapidamente do que o receptor é capaz de recebê-las. Embora esta razão exista, ela não é a única. Também é objetivo do controle do fluxo de dados livrar a transmissão de problemas como inserção, duplicação e re-ordem dos dados. Além disso, também é função do controle de fluxo de dados otimizar a utilização dos canais de comunicação.
Inicialmente serão abordadas técnicas que apenas resolvem parte do problema e à medida que o assunto for sendo aprofundado, serão abordadas técnicas cada vez mais elaboradas que permitem implementar um controle de fluxo de dados completo. Assim, a primeira técnica apresentada usa duas mensagens de controle para resolver o problema da sincronização entre transmissor e receptor: uma mensagem para suspender (suspende) e outra para resumir (resume) o tráfego.
Capitulo 4 – Conceitos Básicos de Comunicação de Dados e Redes de Comunicação.
Nesta técnica, quando o número de informações recebidas pelo receptor atinge um determinado limite máximo, ele envia para o transmissor uma mensagem do tipo suspende, que vai fazer com que ele pare de enviar informações. À medida que as informações contidas no dispositivo receptor vão sendo processadas, o número de mensagens recebido vai sendo decrementado e não mais fica igual ao limite máximo de mensagens que podem ser recebidas, o que vai fazer com que o receptor envie uma mensagem do tipo resume para o transmissor. Diante deste tipo de mensagem, o dispositivo transmissor vai novamente enviar as informações para o receptor até que ele o notifique, informando que não pode mais receber mensagens. Esta técnica é conhecida como X-ON/X-OFF, que é como também podem ser chamadas respectivamente as mensagens para suspender e resumir o tráfego.
Note que com esta técnica restam alguns problemas a serem resolvidos. Nenhuma consideração foi feita em relação a alguns problemas relativos a natureza dos canais de comunicação. Como foi visto na seção 4.1.5 os canais apresentam imperfeições que ocasionam o surgimento de erros. Por exemplo, a informação pode ser perdida durante sua transmissão pelo canal. Se esta informação for uma mensagem do tipo suspende, o dispositivo transmissor sobrecarregará o receptor, resultando em falha na comunicação. Situação ainda pior é causada quando há perda de mensagens do tipo resume; o sistema entra em deadlock neste caso. Diante destes problemas, é necessária uma técnica que ofereça uma proteção eficaz contra perda de mensagens e sobrecarga do dispositivo receptor.
Uma técnica padrão empregada para evitar sobrecarga do dispositivo receptor é fazer com que o transmissor apenas envie uma nova informação face à chegada de uma informação enviada pelo receptor, indicando que recebeu a informação com sucesso. Este método é conhecido como protocolo stop and wait. Ainda assim, resta controlar o problema de perda de mensagens, o que pode fazer com que o sistema entre em deadlock. Para resolver este problema, o dispositivo transmissor deve esperar por uma resposta do receptor durante um determinado intervalo de tempo.
Caso a informação não chegue dentro deste intervalo de tempo, ocorre um timeout (sinalização de que o tempo destinado à espera de informação foi alcançado), no transmissor o que fará com que ele re-transmita a informação. Apesar de resolver o problema da sobrecarga e da perda das mensagens esta técnica ainda não é suficiente para garantir um controle efetivo do fluxo dos dados. Considere a seguinte situação:
Capitulo 4 – Conceitos Básicos de Comunicação de Dados e Redes de Comunicação.
1. Inicialmente o transmissor faz o envio da informação, que chega sem nenhum problema ao receptor. Este, por sua vez, processa a informação que acabara de chegar e envia uma outra informação para o transmissor indicando recebimento correto de informação.
2. O problema começa agora: imagine que esta informação seja perdida e nunca chegue ao transmissor. Depois de esgotado o tempo de espera pela informação, haverá um timeout no transmissor o que vai fazer com que ele entenda, equivocadamente, que a informação inicialmente enviada por ele não chegou ao seu destino. Então, mais uma vez equivocadamente, o transmissor realizará a re- transmissão da informação, que será recebida sem problemas pelo receptor, embora ele já tenha processado a mesma informação anteriormente.
Esse tipo de erro gera uma duplicidade de informação para o receptor. Se por exemplo, a informação que está sendo transferida for um arquivo, parte dele será duplicada, ocasionando em erro no sistema de arquivos. Fica claro pelo exemplo apresentado que é necessário haver um mecanismo que permita ao dispositivo receptor distinguir entre novas mensagens e mensagens repetidas. Uma maneira de resolver este problema é fazer com que o dispositivo transmissor acrescente à mensagem de controle do dado que será transmitido, um número seqüencial.
A cada instante de tempo o receptor espera um determinado número seqüencial. Se a informação que acaba de chegar ao receptor possui o número seqüencial esperado, ela é encarada como uma nova mensagem, processada e o número seqüencial que o receptor deve esperar da próxima vez é atualizado. Caso o número seqüencial contido na informação seja diferente do esperado pelo dispositivo receptor, é detectada uma retransmissão e a informação é descartada.
Além de o receptor fazer a checagem de um número seqüencial, também tem que haver um número seqüencial na informação enviada por ele, afim de que o transmissor também possa saber a que informação por ele enviada corresponde à informação que nele está chegando num determinado momento. Isto evita que a seguinte situação acarrete em falha no controle do fluxo de dados: imagine que o tempo para timeout no transmissor seja muito pequeno. Pode ocorrer uma situação na qual o timeout dispare enquanto a informação esperada, enviada pelo receptor, ainda está a caminho. Na ausência de um mecanismo de
Capitulo 4 – Conceitos Básicos de Comunicação de Dados e Redes de Comunicação.
controle, o transmissor realizará a re-transmissão por timeout e logo em seguida receberá a informação que havia sido enviada pelo receptor, mas ainda não havia chegado.
Para o transmissor esta nova mensagem é encarada como a resposta que ele estava esperando em relação à última informação enviada por ele, sem desconfiar que, potencialmente, existe uma outra informação chegando, enviada pelo dispositivo receptor. Se a última informação enviada pelo transmissor é perdida durante o trajeto até o receptor e a informação extra enviada pelo receptor chega sem problemas, o transmissor não vai realizar a re-transmissão da informação perdida e a comunicação de dados vai falhar.
Esta técnica do Protocolo stop and wait com os números de seqüência representa uma solução satisfatória para o problema do controle do fluxo de dados, mas deve ser lembrado que tal controle também deve se preocupar em otimizar a utilização dos canais de comunicação. A técnica apresentada até o momento suporta transmissão nos dois sentidos, mas não simultaneamente, operando assim no modo half-duplex. Sua grande vantagem é sua simplicidade. Existe uma técnica que suporta o modo de operação full-duplex, logo apresenta um melhor desempenho. Ela é conhecida como Windows Protocol.
Nela, numa fase inicial o dispositivo receptor informa para o dispositivo transmissor a quantidade de dados que ele pode enviar. Esta quantidade, ou crédito, pode ser atualizada dinamicamente, de acordo com mudanças na quantidade de espaço disponível no buffer de recepção do dispositivo receptor. O buffer é um local aonde os dados que vão chegando vão sendo armazenados, até que possam ser processados. Em termos práticos trata-se de um recurso limitado e sua utilização deve ser controlada.
O crédito inicial pode ser tanto negociado quanto imposto. Para cada mensagem enviada, o transmissor decrementa seu crédito, enquanto que para cada mensagem recebida, o receptor disponibiliza um novo crédito para o transmissor via um canal de retorno. Na oportunidade que estiver enviando esta mensagem, juntamente com ela deve seguir a sinalização de recebimento de dados realizada pelo receptor. Claro que até agora nenhuma consideração foi feita sobre problemas de perda, duplicação ou re-ordem dos dados transmitidos, mas as técnicas usadas para tratar esses problemas são as mesmas vistas até o momento.
A grande diferença entre esta técnica e a apresentada anteriormente, diz respeito ao transmissor poder enviar mensagens enquanto espera respostas das mensagens enviadas por
Capitulo 4 – Conceitos Básicos de Comunicação de Dados e Redes de Comunicação.
ele anteriormente; o que vai garantir um desempenho melhor para o sistema. Em contra partida, a técnica de Windows Protocol é mais complicada de ser implementada.