Esta seção descreve, em linhas gerais, os procedimentos dos Nível 2 do X.25. Antes, porém, de entrar nesta descrição, faz-se necessária a introdução de alguns conceitos importantes.
Tendo em vista que o Nível 2 do X.25 é um subconjunto do HDLC, torna-se necessário definir alguns conceitos introduzidos pelo HDLC. O primeiro destes conceitos é o de estação. Existem dois tipos de estações no HDLC: primárias e secundárias. Uma estação primária deve tomar a iniciativa de inicializar a transferência de informação com uma estação secundária remota. Os quadros enviados do primário para o secundário recebem o nome de comandos e os enviados do secundário para o primário são chamados de respostas.
___ ___ | P |______________________________________| S | |___| |___| Configuração Desbalanceada
No caso da ligação de dois dispositivos inteligentes, como é o caso da ligação entre o ETD e o ECD, é necessário que ambos tenham as mesmas condições para iniciar e terminar a conexão no enlace. Uma alternativa para isto é termos a configuração abaixo.
____ ____ | PA | | PB | |____|\ /|____| \__________________________/ ____ / \ ____ | SA |/ \| SB | |____| |____| Configuração Balanceada
Nesta configuração o primário (PA) envia comandos para o secundário (SB) que lhe envia respostas. O mesmo ocorre entre (PB) e (SA). A ISO definiu o conceito de estações combinadas, ilustrado abaixo, que podem receber e enviar tanto comandos quanto respostas.
___ ___ | C |______________________________________| C | |___| |___| Estações Combinadas
Baseados nestas considerações, podemos introduzir dois tipos de especificações para o Nível 2 do X.25. Uma delas é como LAP ("Linck Acess Procedure") e baseia-se numa configuração como da figura - configuração Balanceada, enquanto que a outra é conhecida como LAPB onde B significa "Balanced" e se aproxima do conceito de estações combinadas.
O bit P/F é chamado de bit P ("Pool") se aparece em um comando e de bit F ("Final") se aparece em uma resposta. Um secundário ou estação combinada, após receber um comando com bit P igual a 1 deve responder o mais rápido possível com uma resposta com bit F=1. Certos quadros podem ser usados tanto como comandos quanto como resposta. Para distinguir os dois casos usamos o campo de endereço. Assim, convencionou-se que os quadros recebidos com endereço igual a 1 (`0000000l'B) pelo ECD são comandos e devem ser respondidos com o mesmo valor no campo de endereço. Os quadros recebidos com endereço igual a 3 (`00000011'B) pelo ETD são comandos que são respondidos com o mesmo valor no campo de endereço.
A fim de controlar a numeração e a sequência correta dos quadros, devem ser mantidas duas variáveis de estado em cada lado, chamadas de V(S) e V(R):
V(S) - estado do transmissor: esta variável indica o número do próximo quadro I a ser transmitido. O valor de V(S) varia de 0 a 7 e ela é incrementada de 1 módulo 8 a cada novo quadro I transmitido.
V(R) - estado do receptor: esta varíavel indica o número esperado no campo N(S) do próximo quadro I a ser recebido. O valor de V(R) também varia de 0 a 7 e ela é incrementada de 1 módulo 8 a cada novo quadro I corretamente recebido e dentro da sequência.
Antes de entrar na fase de transferência de informação entre ETD e o ECD, o enlace deve ser logicamente inicializado. Esta inicialização fará com que as variáveis de estado V(S) e V(R), em ambos os lados sejam, inicializadas com o valor zero.
Quando um novo quadro I deve ser enviado, o seu campo N(S) é feito igual à variável V(S) e o seu campo N(R) é feito igual à variável V(R) (confirmação de "carona").
Para que o quadro I possa ser transmitido é necessário que o valor de V(S) esteja dentro da janela.
Caso a janela permita, o quadro é transmitido e a variável V(S) é incrementada de 1 módulo 8.
Se o temporizador estiver desligado quando da transmissão do quadro, ele é ligado. É importante salientar que os quadro I não são individualmente temporizados. As seguintes regras definem o comportamento da temporização:
Quadros I recebidos com FCS incorreto são descartados. Vamos considerar, pois a recepção de quadros I corretos apenas. Se o quadro I ao chegar encontrar o ECD ou ETD em condição de ocupado ("buffers cheios"), ele terá o seu campo de informação ignorado. No entanto, o seu campo N(R) será considerado para efeito de confirmação de recebimento.
Caso o receptor esteja livre e o quadro I estiver na sequência correta ele é aceito. A variável V(R) é incrementada de 1 módulo 8. Se houver algum quadro I para ser transmitido o valor de V(R) é colocado no campo N(R) deste quadro. Caso contrário é enviado um quadro RR com N(R) = V(R).
Se o quadro recebido estiver fora de sequência, o seu campo de informação é descartado. Deve ser enviado um quadro REJ com N(R) = V(R). Note que o V(R) não é incrementado neste caso. A partir deste ponto, o campo de informação de todos os quadros I será descartado até que chegue o quadro com o número esperado. Os campos N (R) e o bit P não são descartados, no entanto.
A chegada de um quadro I ou S (RR, RNR, ou REJ) confirma o recebimento de todos os quadros I até o de número N(R)-1.
Ao receber um quadro REJ o ECD ou o ETD faz a sua variável V(S) igual ao valor do campo N(R) do quadro REJ recebido. Isto fará com que o próximo quadro a ser transmitido tenha como número o primeiro número na sequência de quadros faltando.
Depois de receber um quadro RNR, o ECD ou ETD pode transmitir ou retransmitir o quadro I de número igual ao N(R) recebido no quadro RNR. Se o temporizador se esgotar antes da chegada de um quadro RR ou REJ, o ECD ou ETD deve enviar um comando para o outro lado, com o bit P igual a 1, para saber o estado do seu receptor. Isto pode ser feito através de um quadro RR.
Durante a fase de transferência de informação, o ETD pode indicar a desconexão do enlace enviando o quadro não-numerado DISC para o ECD. Ao receber um UA como resposta o ETD entra na fase de enlace desconectado.
Caso a iniciativa de desconectar o enlace seja do ECD ele também envia um quadro DISC que deve ser, porém, temporizado até que a resposta UA seja recebida.