Sieci Komputerowe 2008/2009. Opis Protokołu

Podobne dokumenty
Remote Quotation Protocol - opis

Protokół wymiany sentencji, wersja 1

Aukcja trwa od momentu, gdy informacje o przedmiocie są dostępne dla klientów, a kończy się wraz z wysłaniem opisanego dalej komunikatu FINISH_MSG.

Protokół aukcji internetowych

Opis protokołu RPC. Grzegorz Maj nr indeksu:

PAI2009:: Protokół aukcji internetowych

Dokumentacja smsapi wersja 1.4

Specyfikacja HTTP API. Wersja 1.6

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

TRX API opis funkcji interfejsu

Opis protokołu do obsługi aukcji

1 Moduł Konfigurowanie Modułu

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

Spis treści. 1 Moduł Modbus TCP 4

Elektroniczna Skrzynka Podawcza

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Laboratorium Sieci Komputerowych - 2

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Sieci Komputerowe Modele warstwowe sieci

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Definiowanie filtrów IP

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Programowanie współbieżne i rozproszone

SERWER AKTUALIZACJI UpServ

Konfiguracja Konfiguracja kasy fiskalnej z poziomu 01systemu jest dostępna w opcji Gospodarka magazynowa Funkcje dodatkowe Kasy fiskalne.

Cele. Założenia. Format komunikatów

Kurs walut. Specyfikacja projektu. Marek Zając

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

1 Moduł Diagnostyki Sieci

Opis protokołu komunikacji programu mpensjonat z systemami zewnętrznymi (np. rezerwacji online)

Aplikacja Sieciowa wątki po stronie klienta

Program dla praktyki lekarskiej

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Współpraca z platformą Emp@tia. dokumentacja techniczna

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

DOKUMENTACJA TECHNICZNA SMS API MT

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Przesyłania danych przez protokół TCP/IP

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Dr Michał Tanaś(

Sieci komputerowe Warstwa transportowa

1 Moduł Inteligentnego Głośnika

Opis modułu pl.id w programie Komornik SQL-VAT

Specyfikacja API 1.0. Specyfikacja kontroli Konta systemu CashBill z wykorzystaniem API opartego na REST

Integracja sklepu internetowego z serwisem aukcyjnym Swistak.pl

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Sesje i logowanie. 1. Wprowadzenie

1 Moduł Inteligentnego Głośnika 3

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

DOKUMENTACJA INTERFEJSU MY MYSQL. Platforma SMeSKom instrukcja podłączenia poprzez mysql Protokół w wersji 2.0

Instrukcja obsługi. Helpdesk. Styczeń 2018

Ministerstwo Finansów Departament Informatyki NAJCZĘSTSZE PRZYCZYNY ŁĘDU 415 DLA

INSTRUKCJA OBSŁUGI DLA SIECI

Protokoły sieciowe - TCP/IP

1. Otwieranie kont w KDPW_CCP wykorzystywanych w celu rejestracji transakcji zestawianych na platformie konfirmacji OTC MarkitWire

Projekt z Laboratorium Sieci Komputerowych Protokół sterujący połączeniami telefonicznymi w sieci IP

System DiLO. Opis interfejsu dostępowego v. 2.0

Omega Plus. Wersja

Dokumentacja interfejsu MySQL. Platforma BSMS.PL Instrukcja podłączenia po przez mysql

1. Rejestracja 2. Logowanie 3. Zgłaszanie nowego wniosku projektowego

Kalipso wywiady środowiskowe

4. Podstawowa konfiguracja

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

PRZYJMOWANIE/WYDAWANIE KOLEKTORAMI BY CTI

1. Po kliknięciu we wspomniany link otworzy się strona o następującym wyglądzie:

Płatności CashBill - SOAP

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Narzędzia diagnostyczne protokołów TCP/IP

1. Proszę wejść na stronę: poczta.home.pl i zalogować się do nowej skrzynki za pomocą otrzymanych danych.

DOKUMENTACJA INTERFEJSU API - HTTPS

11. Autoryzacja użytkowników

Klient-Serwer Komunikacja przy pomocy gniazd

MPH Mini. Instrukcja użytkownika ver 102 ( )

Instrukcja obsługi DHL KONWERTER 1.6

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

DOKUMENTACJA INTERFEJSU MY MYSQL. Platforma SMeSKom instrukcja podłączenia poprzez mysql Protokół w wersji 3.1

Współpraca z platformą dokumentacja techniczna

INSTRUKCJA OBSŁUGI PRZYSTAWKI PEN-01 DO PENDRIVE A

Instrukcja integratora - obsługa dużych plików w epuap2

Specyfikacja protokołu zdalnych kolejek RQP Krzysztof Choromański 19 kwietnia, 2008

Instrukcja obsługi Multiconverter 2.0

Instrukcja obsługi programu Klient SMS v.1.0

Opis przykładowego programu realizującego komunikację z systemem epuap wykorzystując interfejs komunikacyjny "doręczyciel"

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

SSL (Secure Socket Layer)

DHL24 SZABLONY PRZESYŁEK. Warszawa, listopad 2017

Konfiguracja programu MS Outlook 2007 dla poczty w hostingu Sprint Data Center

Konfiguracja interfejsu (złącza) PENDRIVE. Plik: PEN-01 PEN_45 PL

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

ARP Address Resolution Protocol (RFC 826)

OPROGRAMOWANIE STEROWNIKA ROLET UNIV

FARA INTENCJE ONLINE. Przewodnik dla użytkownika programu FARA. Włodzimierz Kessler SIGNUM-NET

Faza Określania Wymagań

FAQ: /PL Data: 9/04/2013 WinCC v7 Wymiana danych ze sterownikiem serii S poprzez protokół Modbus TCP

Transkrypt:

Sieci Komputerowe 2008/2009 Opis Protokołu (Iteracja 2/2) 30.04.2009 Paweł Bedyński pb239764 1/12

1. Streszczenie Poniższy dokument opisuje specyfikację protokołu do obsługi aukcji internetowych, w którym nie występuje żaden centralny serwer, a wszyscy użytkownicy są równouprawnieni. Składa się z następujących części: opis celów protokołu opis założeń opis formatów komunikatów opis stanów 2. Cele Protokół ma umożliwiać dwie fazy komunikacji przeprowadzane podczas każdej aukcji. faza pierwsza: W pierwszej fazie użytkownicy zadają sobie na wzajem pytania o udostępniane przedmioty. Możliwe jest także zadanie pytania doprecyzowującego o konkretny przedmiot wystawiony przez danego użytkownika. Faza pierwsza nie wymaga identyfikacji użytkowników ani zapewnienia przymusu udzielenia odpowiedzi (lub innych potwierdzeń). faza druga: W drugiej fazie użytkownicy zapisują się do licytacji danego przedmiotu, licytują dany przedmiot (wysyłają oferty nowej ceny), dostają informacje o nowej cenie produktu (jeśli są zapisani do licytacji danego przedmiotu) oraz są informowani o zakończeniu aukcji (wraz z wynikiem aukcji - ostateczną ceną). Faza druga wymaga wzajemnej identyfikacji poprzez mechanizm identyfikatorów. 3. Terminologia Wykaz używanych w tekście terminów i ich znaczenia: Wystawca użytkownik instancji protokołu wystawiający na aukcji określony, wystawiany przedmiot Oferent Identyfikator Potwierdzenie pozytywne Potwierdzenie negatywne użytkownik instancji protokołu zgłaszający ofertę kupna danego przedmiotu unikatowy numer służący do rozpoznawania użytkowników instancji protokołu (dot. fazy drugiej) komunikat wysyłany przez użytkownika instancji protokołu, który odebrał inny komunikat w celu potwierdzenia jego przyjścia. Uwaga: dodatkowo potwierdzenie pozytywne oznacza, że zaistniała sytuacja zgodna z intencją użytkownika, który otrzymuje potwierdzenie pozytywne. (dot. fazy drugiej) podobnie jak potwierdzenie negatywne, z tym że: Uwaga: potwierdzenie negatywne informuje, że zaistniała sytuacja niezgodna z intencją użytkownika oczekującego na potwierdzenie. 2/12

4. Założenia 1. Połączenie Zakładamy że adresy IP użytkowników protokołu dostarczane są z zewnątrz tj. zadaniem protokołu nie jest ich pozyskiwanie. Stroną nawiązującą połączenie jest za każdym razem Oferent. Połączenie zamyka również Oferent - zauważmy że posiada on wiedzę o innych powiązaniach z wystawcą, którego połączenie chce zamknąć (inna aukcja w fazie drugiej łącząca więzią wystawca/oferent dwóch użytkowników). Nawiązanie połączenia następuje w chwili gdy użytkownik A chce poznać przedmioty wystawiane przez użytkownika B (inicjuje A w sytuacji gdy nie ma jeszcze połączenia A-B). Zerwanie połączenia następuje po otrzymaniu informacji o zakończeniu aukcji (sprawdzane jest czy jest to ostatnia aukcja łącząca A i B), lub po otrzymaniu negatywnych potwierdzeń na wszystkie żądania przyłączenia się do aukcji (np. na skutek posiadania przez oferenta zbyt starej [nieobsługiwanej już] wersji protokołu). Pozostałe przypadki reguluje rozdział Timeout. 2. Powiązania z innymi protokołami Protokół działa w warstwie aplikacji ISO-OSI. Pierwsza faza komunikacji nie wymaga (w założeniach zadania) niezawodności połączenia, jednak ewentualna funkcjonalność przesyłania plików-opisów wystawianych przedmiotów skłania to wykorzystania protokołu TCP a nie UDP. Druga faza wymaga już niezawodnego połączenia zatem zostanie zrealizowana w oparciu o protokół TCP. 3. Model komunikacyjny Protokół zakłada brak jakiegokolwiek centralnego serwera sterującego aukcjami. Każdy użytkownik instancji protokołu jest zarówno serwerem (tzn. może prowadzić aukcje jako Wystawca) jak i potencjalnym Oferentem. 5. Identyfikacja użytkowników Uwaga: dotyczy fazy II Identyfikacja użytkowników odbywa się poprzez kolejność zgłoszeń na aukcje i jest identyfikacją per przedmiot a nie per osoba. Oferent zgłaszając się na aukcje wysyła do Wystawcy komunikat zgłoszeniowy, a ten wystawia mu identyfikator. Identyfikatorem jest czwórka : numer portu Oferenta numer przedmiotu ustalony przez Wystawce (numer ten Oferent zdobywa w fazie I) numer wystawiany przez Wystawce według kolejności zgłoszeń na dany przedmiot adres oferenta (zmiennej długości ciąg bajtów), może to być adres IP oferenta. Identyfikator jest odsyłany do Oferenta jako potwierdzenie zapisu na aukcje. Od tej pory Oferent i Wystawca autoryzują komunikaty dotyczące danego przedmiotu tym właśnie numerem. Uwaga: to w szczególności oznacza, że ci sami użytkownicy protokołu mogą poprawnie identyfikować się wzajemnie za pomocą wielu różnych identyfikatorów (jeśli dotyczy to różnych przedmiotów). 3/12

6. Opis formatów komunikatów Założenia: Każdy komunikat składa się z Header'a i następującego bezpośrednio po nim właściwego komunikatu (typy opisane w dziale typy komunikatów) porządek octetów w liczbach: sieciowy sposób interpretacji liczb ze znakiem: jak w arytmetyce U2 sposób reprezentacji napisów: domyślnie UTF-8 (ew. rozszerzenia mogą dodać inne formaty kodowania znaków, zabezpieczeniem przed odczytaniem napisów w złym kodowaniu może być mechanizm wersji) Typy pomocnicze: Header: MSG_HDR{ msg_id; protocole_v; msg_len; msg_id to numer komunikatu właściwego (zgodnie z sekcją Numery) protocole_v to wersja protokołu, a tym samym komunikatu (nowa wersja choćby jednego komunikatu implikuje nowy numerek protocole_v). UWAGA: msg_len to całkowita długość komunikatu właściwego tzn BEZ headera. Zatem komunikaty tego samego typu mogą mieć różną długość (wersje). Identyfikator: ID_T { product_id; queue_id; port key_len; octet[key_len] key; product_id - unikalny dla Wystawcy identyfikator wystawianego produktu. UWAGA: format key (znaczenie bajtów) może być przypisywane za pomocą mechanizmu wersji. key_len - długość jedynie pola key Plik: FILE_T { uint64 file_len; octet[file_len] file_data; file_name_len; octet[file_name_len] file_name; 4/12

file_len - pole zawierające długość jedynie pola file_data (tj. rozmiar pliku w bajtach). file_name_len pole zawierające długość jedynie pola file_name (tj długość nazwy pliku) kodowanie domyślne lub zmienione przez wersje. Cecha przedmiotu: (to pary np.: <kolor,zielony>) OBJECT_FEATURE_T { uint16 key_len; octet[key_len] key; value_len; octet[value_len] value; key_len - pole zawierające długość jedynie pola key value_len pole zawierające długość jedynie pola value Opis przedmiotu: OBJECT_DETAILS_T { unit32 product_id; uint8 total_files; FILE_T[total_files] files_array; uint16 total_features; OBJECT_FEATURE[total_features] features; product_id to numerek przedmiotu unikalny wśród przedmiotów wystawianych przez jednego wystawce (nadawany przez wystawce) total_files pole zawierające liczbę struktur FILE_T dołączonych do struktury OBJECT_DETAILS_T total_features pole zawierające liczbę struktur OBJECT_FEATURE_T dołączonych do struktury OBJECT_DETAILS_T Typy komunikatów: Typy używane w fazie I: REQUEST_ONE_I_MSG_T { product_id; // future_use; Jest to zapytanie przez oferenta o przedmiot któremu wystawca nadał numer product_id. Pole future_use w kolejnych wersjach protokołu może konkretyzować zapytanie oferenta (o pojedyncze szczegóły opisu przedmiotu) REQUEST_I_MSG_T { Jest to pytanie o wszystkie przedmioty danego użytkownika. Wszystko co w obecnej wersji protokołu jest potrzebne do zadania takiego pytania jest zawarte w numerze komunikatu (Header). Wprowadzam tą strukturę dla ew. przyszłych wersji (tu np. użytkownik może wpisać rodzaj filtra które informacje o produktach już teraz chce poznać). 5/12

ANSWER_I_MSG_T { total_items; OBJECT_DETAILS_T[total_items] items; total_items pole zawierające liczbę struktur OBJECT_DETAILS_T dołączonych do struktury ANSWER_I_MSG_T, a zatem określa o ilu produktach oferent się dowiaduje. Typy używane w fazie II: ENQUEUE_REQUEST_MSG_T { unit32 item_id; msg_nr; Uwaga: msg_nr - to numer komunikatu (nie jego typ). pole to jest potrzebne byśmy wiedzieli, że ew. potwierdzenie negatywne odnosi się właśnie do tego żądania. są to kolejne liczby naturalne - w zasadzie ważne jest byśmy nie wysyłali dwóch komunikatów o tym samym numerku do tej samej osoby odnośnie tego samego przedmiotu w zbyt krótkich odstępach czasu (a to jest raczej pewne). (ustala Oferent) NEW_OFFER_MSG_T { msg_nr; float64 price; ID_T id; NEGATIVE_CONFIRMATION_MSG_T { errno; msg_nr; ID_T id; errno numer błędu zgodny z sekcją Numerki LEADING_PRICE_MSG_T { msg_nr; uint8 is_finished; float64 price; ID_T id; Uwaga: pole is_finished z wartością niezerową oznacza komunikat o zakończeniu aukcji danego przedmiotu wtedy price oznacza końcową cenę produktu. msg_nr patrz uwaga z ENQUEUE_REQUEST_MSG_T AUCTION_RESULT_REQ_T{ product_id; 6/12

7. Opis wymienianych komunikatów Numery komunikatów opisane są w sekcji Numerki 1. REQUEST_ITEMS_LIST_MSG : REQUEST_I_MSG_T Uwaga: powyższe założenia protokołu oznaczają, że Wystawca przedmiotu może zdecydować jaką cześć informacji o poszczególnych wystawianych przez siebie przedmiotach wysyła w odpowiedzi na ten komunikat. (może wysyłać same numerki, a może też pełną informacje o każdym przedmiocie), przyszłe wersje protokołu mogą specyfikować konkretyzacje pytania do wystawcy (np. poprzez filtry). 2. REQUEST_ITEM_DETAIL_MSG(product_id) : REQUEST_ONE_I_MSG_T zapytanie o szczegółowy opis przedmiotu (product_id) wystawianego przez wystawce Uwaga: wersje - analogicznie jak w komunikacie REQUEST_ITEMS_LIST_MSG.. 3. ANSWER_ITEMS_LIST_MSG(products_list) : ANSWER_I_MSG_T odpowiedź wystawcy, w której informuje użytkownika instancji protokołu o wystawianych przez siebie przedmiotach. 4. ANSWER_ITEM_DETAIL_MSG(product_id) :ANSWER_I_MSG_T odpowiedź wystawcy, w której informuje użytkownika instancji protokołu o szczegółach dotyczących przedmiotu, o który user pytał. Uwaga: w praktyce rozróżnianie odpowiedzi o konkretny przedmiot i listę przedmiotów jest zbędne (to jest kwestia czy tablica jest jedno czy wieloelementowa)... Taki jednak był wymóg zadania więc wprowadzam ten komunikat. 5. AUCTION_ENQUEUE_MSG(product_id) : ENQUEUE_REQUEST_MSG_T prośba oferenta o dopisanie go do listy osób zarejestrowanych w aukcji wystawcy przedmiotu (product_id). 6. AUCTION_ENLISTED_CONFIRMATION_MSG() : LEADING_PRICE_MSG_T przekazanie Oferentowi jego identyfikatora oraz aktualnej ceny danego przedmiotu. 7. AUCTION_OFFER_MSG(ID,price) : NEW_OFFER_MSG_T oferta oferenta zakupu przedmiotu (numer zaszyty w ID - identyfikatorze) od wystawcy po cenie (price). 8. INFO_NEW_PRICE_MSG(ID,price) : LEADING_PRICE_MSG_T wystawca informuje oferenta przedmiotu (zaszyte w ID) o jego nowej cenie (price) jest to zarazem potwierdzenie pozytywne dla oferenta który zgłosił cenę price. 7/12

9. INFO_AUCTION_CLOSED_MSG(ID,is_finished,price) : LEADING_PRICE_MSG_T wystawca informuje oferentów o zakończeniu aukcji przedmiotu (zaszyty w ID) po cenie (price). 10. NEGATIVE_CONFIRMATION_MSG(ID,msg_nr) : NEGATIVE_CONFIRMATION_MSG_T potwierdzenie negatywne skierowane do użytkownika odnośnie przedmiotu (zaszytego w ID) w odpowiedzi na komunikat msg_nr. UWAGA: Oferent, który chce zapisać się na aukcje wysyłając komunikat AUCTION_ENQUEUE_MSG z niepoprawnym numerem product_id otrzymuje potwierdzenie negatywne.. jednak z pustym ID bo przecież go nie jeszcze dostał. UWAGA2: Oferent, który posługuje się zbyt starą wersją protokołu również otrzyma potwierdzenie negatywne w odpowiedzi na komunikat: AUCTION_ENQUEUE_MSG z pustym ID. 11. AUCTION_RESULT_REQ_MSG(product_id): AUCTION_RESULT_REQ_T Za pomocą tego komunikatu użytkownicy mogą dowiedzieć się o wynikach aukcji UWAGA: Zobacz timeout'y w fazie II UWAGA2: Tu nie ma identyfikatora (wynika to z wykorzystania tego komunikatu w timeoutach). 8/12

8. Timeout-y standardowy timeout: 5s (rozdział Numerki) Timeout następujący w pierwszej fazie Z uwagi na niezobowiązujący charakter wymiany komunikatów w fazie pierwszej ewentualne wystąpienie timeout'u nie powoduje żadnych następstw. Oferent w fazie pierwszej nie uzyskawszy odpowiedzi na pytanie może je po prostu retransmitować. Timeout następujący w drugiej fazie Jeśli timeout wystąpi w fazie drugiej Oferent po stronie Wystawcy jest skreślany z listy chętnych na dany przedmiot. W celu ponownego dołączenia się do listy chętnych Oferent musi nawiązać połączenie oraz wysłać komunikat AUCTION_ENQUEUE_MSG (jeśli chce dalej podbijać cenę). Jeśli zacznie podbijać cenę zanim ponownie zgłosi się na aukcje dostanie negatywne potwierdzenie z błędem WRONG_ID. Problem pojawia się, gdy pomiędzy wystąpieniem timeout'a i powtórnym przyłączeniem się oferenta do aukcji Wystawca zdecyduje się na zakończenie aukcji. W takim wypadku Oferent przy próbie przyłączenia się do aukcji w/w komunikatem dostanie negatywne potwierdzenie z błędem AUCTION_IS_CLOSED. Jeśli użytkownik nie podbijał ceny produktu bądź odebrał komunikat LEADING_PRICE_MSG z nie swoją ceną po tym jak sam próbował (z sukcesem bądź nie) podbić cenę, to wiemy że on na pewno nie wygrał aukcji. W przeciwnym wypadku Oferent powinien dowiedzieć się czy przypadkiem to nie on wygrał aukcje. Oferent wysyła wtedy komunikat AUCTION_RESULT_REQ(bez Identyfikatora, bo wydawanie identyfikatorów na dany przedmiot kończy się wraz z zakończeniem aukcji). W odpowiedzi Wystawca retransmituje komunikat kończący aukcję (ten sam którym poinformował wszystkich innych Oferentów o zakończeniu aukcji). Na podstawie tego komunikatu użytkownik może dowiedzieć się, czy to on wygrał aukcje. Protokół nie zakłada zmiany zwycięzcy aukcji z powodu utraty połączenia z nim i braku prób powtórnego połączenia. 9/12

9. Opis stanów 1. Opis stanów z perspektywy użytkownika biorącego udział w aukcji. Diagram stanów widziany jest z perspektywy pojedynczej aukcji. Użytkownik powinien mieć możliwość równolegle brać udział w wielu aukcjach, oraz dodatkowo przedmioty tych aukcji mogą być w tym samym momencie w różnych fazach. 10/12

2. Opis stanów z perspektywy wystawcy. Diagram przedstawia stany i przejścia widziane z perspektywy pojedynczego przedmiotu wystawianego przez Wystawce. Wystawca może wystawiać wiele przedmiotów jednocześnie i różne przedmioty mogą być w różnych fazach w tym samym czasie. Jedyne ograniczenie jest takie, by Wystawca wysyłał potwierdzenia negatywne (z pustym ID) do oferentów którzy chcą się zapisać na listę na dany product_id, gdy ten jest jeszcze w fazie I. (na tym diagramie celowo pomijam timeouty, te zostały opisane w innym rozdziale) 11/12

10. Numerki 1. Numery Komunikatów msg_id 0x000000 0x000100 0x000200 0x000300 0x000400 0x000500 0x000600 0x000700 0x000800 0x000900 0x000A00 komunikat REQUEST_ITEMS_LIST_MSG REQUEST_ITEM_DETAIL_MSG ANSWER_ITEMS_LIST_MSG ANSWER_ITEM_DETAIL_MSG AUCTION_ENQUEUE_MSG AUCTION_ENLISTED_CONFIRMATION_MSG AUCTION_OFFER_MSG INFO_NEW_PRICE_MSG INFO_AUCTION_CLOSED_MSG NEGATIVE_CONFIRMATION_MSG AUCTION_RESULT_REQ_MSG 2. Błędy Numery błędów wraz z kolejnymi wersjami protokołu powinny być dopisywane na koniec a nie podmieniane (tak by numer błędu z kolejną wersją nie zmieniał swojego znaczenia).. Ewentualna podmiana znaczeń jest możliwa (!!! oprócz błędu PROTOCOLE_VERSION_NOT_SUPPORTED) ale może wiązać się z utratą kompatybilności wstecz (użytkownicy ze starszą wersją protokołu nie będą mogli uczestniczyć w aukcjach). Errno 1 PROTOCOLE_VERSION_NOT_SUPPORTED 2 WRONG_ID 3 PRICE_TOO_LOW 4 NO_SUCH_PRODUCT 5 AUCTION_IS_CLOSED 6 AUCTION_STILL_IN_STAGE_ONE 3. Inne Stałe Timeout: 5s 12/12