next up previous contents
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 up previous contents
Next: Protokół T=1 Up: Protokoły warstwy łącza Previous: Protokoły warstwy łącza   Spis tresci
Janina Mincer-Daszkiewicz 2001-11-21