Next: Protokół T=1
Up: Protokoły warstwy łącza
Previous: Protokoły warstwy łącza
  Spis tresci
Protokół T=0
Protokół T=0 nie odpowiada dokładnie warstwie łącza
w siedmiowarstwowym modelu ISO, lecz miesza cechy właściwe różnym warstwom
modelu. Dzieje się tak dlatego, że twórcy protokołu starali się, by
komunikacja za jego pomocą była tak wydajna, jak to tylko możliwe.
Trzeba bowiem pamiętać, że prędkość transmisji danych pomiędzy kartą
a czytnikiem jest stosunkowo niewielka (nominalnie 9600 bitów na sekundę).
Zatem przekaz danych pomiędzy kartą a czytnikiem może zajmować dużą część
czasu przeznaczonego na realizację transakcji.
Protokół T=0 jest protokołem zorientowanym bajtowo (ang.
byte-oriented), co
oznacza, że jednostką transmitowanych danych jest jeden bajt.
W szczególności błędy transmisji są wykrywane właśnie na poziomie jednego
bajtu. Aby ograniczyć liczbę przesyłanych danych wykorzystano nieskomplikowany
sposób wykrywania błędów transmisji -- wraz z każdym bajtem danych jest przesyłany
bit parzystości.
Przyjrzyjmy się teraz strukturom TPDU w protokole T=0.
TPDU wysyłane przez
czytnik do karty (polecenia) różnią się od TPDU odsyłanych przez karty do
czytnika (odpowiedzi).
Nagłówek polecenia składa się z pięciu pól:
- CLA
- jednobajtowe pole określające grupę instrukcji, do której należy wydawane
polecenie. Pole to nazywać będziemy klasą instrukcji.
- INS
- jednobajtowe pole, które wraz z klasą instrukcji jednoznacznie określa, jaką
instrukcję należy wykonać na karcie po otrzymaniu polecenia.
Pole to nazywać będziemy instrukcją.
- P1
- jednobajtowe pole zawierające pierwszy parametr dla wywoływanej
instrukcji.
- P2
- jednobajtowe pole zawierające drugi parametr dla wywoływanej
instrukcji.
- P3
- jednobajtowe pole zawierające długość przekazywanych danych. W zależności od
wydawanego polecenia chodzi o długość danych przekazywanych przez
czytnik do karty albo oczekiwaną długość danych, jakie karta przekaże do
czytnika jako wynik polecenia.
Zauważmy, że pola zawarte w nagłówku polecenia odwołują się do warstwy
aplikacji. Nagłówek zawiera polecenie wykonania konkretnych działań przy
użyciu przekazanych w polach parametrów.
Odpowiedź składa się z czterech pól:
- ACK
- jednobajtowe pole, za pomocą którego karta informuje czytnik, że
otrzymała jego polecenie.
- NULL
- jednobajtowe pole informujące czytnik, że karta nie zakończyła jeszcze
operacji związanych z otrzymanym poleceniem. Czytnik czeka bowiem jedynie
określony czas na odpowiedź karty. Jeśli operacje wykonywane w odpowiedzi
na polecenie wydane przez czytnik zajmują więcej czasu, to karta
musi poinformować o tym czytnik, wysyłając bajt NULL. Może się
zdarzyć, że
wykonanie wszystkich operacji związanych z wydanym poleceniem będzie wymagało,
by karta wysłała do czytnika wiele bajtów NULL.
- SW1
- jednobajtowe pole zawierające status zakończenia operacji wykonanych przez
kartę w odpowiedzi na polecenie wydane przez czytnik.
- SW2
- jednobajtowe opcjonalne pole. W wyniku polecenia wydanego przez czytnik, karta
może wygenerować dane, które mają być przekazane do czytnika. W takim
przypadku w polu SW2 karta przesyła do czytnika ilość danych, które
powinien od niej odebrać. Aby odebrać dane wygenerowane przez kartę, czytnik
wysyła następnie do niej polecenie GetResponse, umieszczając w polu
P3
nagłówka polecenia otrzymaną wcześniej od karty liczbę danych. W odpowiedzi na
GetResponse karta wysyła do czytnika wygenerowane wcześniej dane.
Zauważmy tutaj ponownie, że protokół T=0 miesza cechy właściwe różnym warstwom
modelu ISO. Wartości pól SW1 i SW2
odpowiedzi odwołują się bowiem do warstwy
aplikacji. Służą do przekazania aplikacji działającej po stronie czytnika
statusu zakończenia wykonanego przez kartę polecenia.
Next: Protokół T=1
Up: Protokoły warstwy łącza
Previous: Protokoły warstwy łącza
  Spis tresci
Janina Mincer-Daszkiewicz
2001-11-21