2.1.2.2. TRANSFERÊNCIA DE DADOS

Estando a conexão estabelecida, os dois usuários podem transferir dados em ambas as direções. O serviço de transferência de dados é não-confirmado; ou seja, os dados são emitidos e recebidos sem precisar de TPDU-ACK para confirmar a sua chegada. O usuário emissor envia um T-DATE-request ou um T-EXPEDITED-DATA-request e o usuário receptor recebe um T-DATE-indication ou um T-EXPEDITED-DATE-indication.

A figura acima mostra como é efetuada uma transferência de dados normais. As TPDU-DT são numeradas seqüencialmente, tendo a primeira TPDU-DT o seu TPDU-NR igual a zero (0). Esse controle de seqüência serve para detectar perda, duplicação e erro de seqüência das DT-TPDU recebidas. É também usado nas classes 2 a 4 para o controle de fluxo, que é implementado através da técnica janela deslizante com alocação de crédito.

Não é necessário que seja enviado uma TPDU-ACK para cada TPDU-DT recebida. A quantidade de TPDU-DT enviadas sem uma TPDU-ACK depende do crédito. Se o tamanho da janela for quatro (2), a entidade que está enviando as TPDU-DT pode enviar somente duas (2) TPDU-DT sem receber uma TPDU-ACK. Imagine que uma conexão foi estabelecida e que o crédito inicial foi fixado em cinco (4). Suponha também que a entidade remota ao receber as três (3) primeiras TPDU-DT - (0), (1) e (2), envia uma TPDU-ACK(3, 5). Bem, ela está reconhecendo as três primeiras TPDU-DT e está pedindo para que sejam enviadas as próximnas cinco (5) - TPDU-DT (3)..TPDU-DT(7). Ao mesmo tempo que foi feito o reconhecimento, foi aumentado o crédito.

Na classe 4, os números de seqüência das TPDU-DT são usados para ordená-las. A entidade remota ao receber uma TPDU-DT fora de ordem, pode guardá-la e esperar chegar as outras. Nas outras classes isso não acontece, ao receber uma TPDU-DT fora de ordem, ela é descartada, tendo que ser retransmitida outra vez. Dessa maneira, se alguma TPDU-DT é perdida e a classe que foi negociada for a classe 4, o receptor envia ao emissor uma TPDU-RJ (TPDU-reject), forçando ao emissor retransmití-la. Nas demais classes, todas as TPDU-DT a partir da perdida devem ser retransmitidas.

Uma outra característica importante da classe 4 é a retransmissão por temporizaçào. Se uma determinada TPDU-DT ou o seu ACK se perder, esta TPDU-DT será retransmitida quando estourar a temporização associada à espera da respectiva TPDU-ACK. Existe também uma temporização para as TPDU-ACK. Se após a transmissão de uma TPDU-ACK não chegar TPDU-DT alguma, logo que terminar a temporização adequada a TPDU-ACK é retransmitida. Esta retransmissão para ACK é muto importante pelo seguinte motivo: imagine que uma TPDU-ACK( ??, 0) foi transmitida. Ela indica que é para a entidade transmissora suspender as transmissões até que outra TPDU-ACK( ??, X) - tal que X é positivo e maior que zero(0), seja transmitida, alterando o crédito. Se essa TPDU-ACK que liberaria o crédito for perdida, as duas entidades ficariam esperando uma pela outra. Com o processo de retransmissão de TPDU-ACK por temporização, esse problema foi solucionado.

O exemplo que segue apresenta uma transferência unidirecional de dados normais, junto com a variação do tamanho da janela à medida que as TPDU-DT e ACK forem trocadas. Observe que na camada de transporte não são implementados mecanismos de piggybacking.

No caso de dados expressos, são utilizadas a TPDU-ED e a TPDU-EA. Tais TPDU possuem uma numeração independente a dos dados normais. Os dados expressos têm prioridade sobre os dados normais e são enviados na frente deles. É garantido que os dados expressos sejam enviados na frente dos dados normais que ainda não foram enviados, contudo não é garantido que eles cheguem na frente dos dados normais no destinatário. Para contornar esse problema, na classe 4, a transmissão dos dados normais é suspensa até que chegue a respectiva TPDU-EA (ACK dos dados expressos), o que não acontece nas demais classes.