Poczta P2P Opis protokołu. Marcin Waniek. 27 kwietnia 2010

Podobne dokumenty
Opis protokołu RPC. Grzegorz Maj nr indeksu:

Remote Quotation Protocol - opis

Przesyłania danych przez protokół TCP/IP

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Konfiguracja poczty IMO w programach Microsoft Outlook oraz Mozilla Thunderbird

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

TRX API opis funkcji interfejsu

Protokół wymiany sentencji, wersja 1

Elektroniczna Skrzynka Podawcza

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.

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

1. Rejestracja w systemie Ekran rejestracji nowego użytkownika przedstawia się następująco:

Instrukcja rejestracji organizacji w podsystemie Generator Wniosko w Aplikacyjnych (GWA) Systemu Informatycznego NAWIKUS

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

PWI Instrukcja użytkownika

Proces obsługi deklaracji Intrastat w systemie Celina WebCel

Instrukcja obsługi rejestratorów XVR. Zapoznaj się przed użyciem

Internetowy serwis Era mail Aplikacja sieci Web

Instrukcja zarządzania kontem przedsiębiorstwa w serwisie internetowym

Instrukcja zarządzania kontem jednostki samorządu terytorialnego w serwisie internetowym

CitiManager Krótki przewodnik dla Posiadaczy kart

Bezpieczeństwo w M875

Krok 1. Krok 2. Krok 3

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Konfiguracja konta pocztowego w Thunderbird

Archiwum Prac Dyplomowych - Instrukcja rejestracji pracy dyplomowej dla studenta

Konfiguracja poczty IMO dla urządzeń mobilnych z systemem ios oraz Android.

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

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

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

Instrukcja rejestrowania pracy dyplomowej w APD Archiwum Prac Dyplomowych przez studenta

WYMAGANIA TECHNICZNE

Kopiowanie przy użyciu szyby skanera. 1 Umieść oryginalny dokument na szybie skanera stroną zadrukowaną skierowaną w dół, w lewym, górnym rogu.

Instrukcja instalacji Control Expert 3.0

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Przekierowanie portów w routerze TP-LINK na przykładzie kamery Kenik. Po co wykonujemy przekierowanie portów? Spójrzmy na rysunek poniżej:

Przekierowanie portów w routerze TP-LINK na przykładzie kamery Kenik. Po co wykonujemy przekierowanie portów? Spójrzmy na rysunek

ARP Address Resolution Protocol (RFC 826)

Instrukcja instalacji usługi Sygnity SmsService

Konfiguracja Połączenia

INFO-NET.wsparcie. pppoe.in.net.pl. Pamiętaj aby nie podawać nikomu swojego hasła! Instrukcja połączenia PPPoE w Windows XP WAŻNA INFORMACJA

Instrukcja rejestracji organizacji w podsystemie. Generator Wniosków Aplikacyjnych (GWA) Systemu Informatycznego NAWIKUS

Linksys/Cisco SPA2102, SPA3102 Instrukcja Konfiguracji

Instrukcja EQU Kantech

Instrukcja obsługi dla wykonawcy

Instrukcja zakładania konta w portalu epuap i profilu zaufanego.

tel fax

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

IG1: INSTALACJA KOMUNIKATORA GADU-GADU

Instrukcja instalacji usługi Sygnity SmsService

Instrukcja obsługi dla wykonawcy

Instrukcja składania zgłoszeń do systemu OTRS

5. Model komunikujących się procesów, komunikaty

3) Należy kliknąć w zakładkę Ogłoszenia, w wyniku czego zostanie rozwinięta następująca belka:

Instrukcja obsługi dla wykonawcy

MATERIAŁY DYDAKTYCZNE. Streszczenie: Z G Łukasz Próchnicki NIP w ramach projektu nr RPMA /15

DOKUMENTACJA TECHNICZNA SMS API MT

Przewodnik Google Cloud Print

INSTRUKCJA REJESTRACJI ORGANIZACJI W GENERATORZE WNIOSKÓW APLIKACYJNYCH SI NAWIKUS

System Symfonia e-dokumenty

Instrukcja konfiguracji połączenia PPPoE w Windows XP

Instrukcja instalacji usługi Sygnity Service

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

Współpraca z platformą dokumentacja techniczna

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

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ

Instrukcja zarządzania kontami i prawami. użytkowników w systemie express V. 5

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

SUPLEMENT DO DYPLOMU

zmiany w aplikacji abcpanel MoŜliwość wysyłania informacji podatkowych SMS-em.

Aby pobrać program FotoSender naleŝy na stronę lub i kliknąć na link Program do wysyłki zdjęć Internetem.

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

PRZETARG OGRANICZONY. Postępowania zgodne z ustawą Prawo zamówień publicznych

INSTRUKCJA SKŁADANIA OFERT W SYSTEMIE WITKAC.PL

Tworzenie konta Na stronie głównej klikamy w przycisk Zarejestruj się

Dokumentacja 2SMS

Obsługa poczty elektronicznej w domenie emeritus.ue.poznan.pl

Instrukcja konfiguracji połączenia PPPoE w Windows XP (opracowana przez: Dział Techniczny Cityconnect Sp. z o.o.)

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

Model sieci OSI, protokoły sieciowe, adresy IP

Instrukcja obsługi programu służącego do uiszczania opłat drogowych za pomocą serwisów elektronicznych

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

Rejestracja konta Komornika / Asesora w portalu KomornikID

E-faktura instrukcja dla kontrahentów TVP S.A.

Manual konfiguracji konta dla fax2mail opcji BP Basic oraz BP Fiber

Część 3 - Konfiguracja

Projekt protokołu na SIK (2006/07)

Instrukcja konfiguracji powiadomień

CitiManager. Przewodnik dla Pracowników / Posiadaczy kart. Bank Handlowy w Warszawie S.A.

Spis treści REJESTRACJA NOWEGO KONTA UŻYTKOWNIKA PANEL ZMIANY HASŁA PANEL EDYCJI DANYCH UŻYTKOWNIKA EXTRANET.NET...

Problemy z bezpieczeństwem w sieci lokalnej

Klikamy zakładkę zarejestruj.

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Instrukcja aktywacji tokena w usłudze BPTP

Jak...zarejestrować się w serwisie OB10

Model OSI. mgr inż. Krzysztof Szałajko

Instrukcja korzystania z usługi 2SMS. Wersja 2.0 [12 stycznia 2014] bramka@gsmservice.pl

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Transkrypt:

Poczta P2P Opis protokołu Marcin Waniek 27 kwietnia 2010 1

Spis treści 1 Streszczenie 3 2 Cele protokołu 3 3 Założenia protokołu 3 3.1 Powiązania z innymi protokołami................ 3 3.2 Model komunikacji........................ 3 4 Format komunikatów 5 5 Opis wymienianych komunikatów 7 6 Opis stanów 9 6.1 STATE OCZEKUJACY NA PODLACZENIE......... 11 6.2 STATE AKTYWNY....................... 12 6.3 STATE WYKRYTO AWARIE.................. 15 6.4 STATE WYLACZANIE..................... 17 7 Informacje dodatkowe 18 7.1 Tworzenie nowej sieci....................... 18 7.2 Kolejne wersje protokołu..................... 18 7.3 Długość życia informacji..................... 18 8 Używane numery 18 2

1 Streszczenie Niniejszy dokument opisuje specyfikację protokołu poczty w modelu komunikacji P2P. Zawiera opis oraz wyjaśnienie takich elementów, jak: cele protokołu, założenia protokołu, format wymienianych komunikatów, stany przyjmowane przez program obsługujący protokół. 2 Cele protokołu Głównym celem prezentowanego protokołu jest obsługa poczty w paradygmacie P2P, a zatem modelu komunikacji, w którym nie zachodzi potrzeba korzystania z centralnego serwera oraz wszyscy użytkownicy posiadają równe uprawnienia. 3 Założenia protokołu 3.1 Powiązania z innymi protokołami Protokół niniejszy działa w warstwie aplikacji modelu sieciowego TCP/IP. W trakcie swojego działania korzysta z protokołu TCP jako warstwy transportowej. Ze względu na niezawodność protokołu TCP rezygnujemy z konieczności dostarczania pozytywnych potwierdzeń. Przy stosowaniu protokołu TCP jako domyślny numer portu nasłuchującego przyjmowana jest wartość NUMER_PORTU (opis stałych znajduje się w ostatniej sekcji dokumentu). 3.2 Model komunikacji Protokół ten korzysta z modelu komunikacji P2P. Węzły zbudowanej sieci tworzą strukturę pierścienia zacyklonych połączeń. Każdy węzeł sieci jest jednocześnie nasłuchującym (od swojego poprzednika w pierścieniu) oraz nadającym komunikaty (do następnego węzła w pierścieniu). Aby uniknąć przesyłania dużych porcji danych przez całą długość sieci, protokół dopuszcza tworzenie połączeń po cięciwie okręgu, do otrzymanego w wiadomości adresu. Jeżeli w dokumencie pada stwierdzenie o przekazaniu wiadomości dalej (bez wyszczególnienia adresu), chodzi o przekazanie jej następnikowi w cyklu. 3

Schemat struktury sieci przedstawia poniższy rysunek: W trakcie swojego działania w sieci węzeł nasłuchuje zawsze na tym samym porcie, ale następnik w sieci (a więc również połączenie TCP) może się zmieniać. Każdy węzeł sieci przechowuje adres swojego następnika w sieci, a także adres węzła będącego następnikiem jego następnika. Jest to konieczne dla odtworzenia struktury sieci w razie awarii. Węzeł przechowuje również zbiór znanych mu użytkowników sieci oraz pamięta aktualnie zalogowanego użytkownika. Węzeł przechowuje zbiór wszystkich znanych mu wiadomości pozostawionych w sieci. Informacje o użytkownikach i wiadomościach te przechowywane są tak, jak w typach komunikatów UZYTKOWNIK_MSG_T oraz 4

MAIL_MSG_T pozbawionych pól id_wiadomosci oraz adres. Informacje o typach komunikatów znajdują się w następnej sekcji tego dokumentu. Wreszcie węzeł przechowuje zachowujący kolejność zbiór wiadomości oczekujących na przetworzenie (w razie awarii sieci reagowanie na te wiadomości zostaje wstrzymane). 4 Format komunikatów Zakładam, że porządek oktetów w przesyłanych liczbach jest porządkiem sieciowym. Protokół nie przewiduje konieczności przesyłania liczb zmiennoprzecinkowych ani ujemnych. Przesyłane przez sieć napisy kodowane są przy pomocy kodu ASCII. W komunikatach stosowane będą następujące typy pomocnicze: ADRES_T { uint32 dlugosc; octet[dlugosc] nazwa; uint32 port; } Typ stanowiący reprezentację adresu węzła sieci. Zawiera nazwę komputera (w polu nazwa) oraz numer wykorzystywanego portu (w polu port). Pole dlugosc zawiera długość tablicy nazwa. DANE_T { uint32 dlugosc; octet[dlugosc] dane; } Typ stanowiący reprezentację danych tekstowych przesyłanych przez sieć. Pole dlugosc zawiera długość tablicy dane. TABLICA_ID_T { uint32 dlugosc; uint32[dlugosc] tablica; } Typ stanowiący reprezentację tablicy id wiadomości przesyłanej przez sieć. Pole dlugosc zawiera dlugość tablicy tablica. Typy używanych komunikatów: 5

POTWIERDZENIE_MSG_T { uint8 id_wiadomosci; } ADRES_MSG_T { uint8 id_wiadomosci; ADRES_T adres; } ADRESY_MSG_T { uint8 id_wiadomosci; ADRES_T adres1; ADRES_T adres2; } INFORMACJE_MSG_T { uint8 id_wiadomosci; ADRES_T adres; DANE_T dane; } UZYTKOWNIK_MSG_T { uint8 id_wiadomosci; ADRES_T adres; DANE_T login; DANE_T haslo; } MAIL_MSG_T { uint8 id_wiadomosci; ADRES_T adres; uint32 id_maila; DANE_T odbiorca; DANE_T nadawca; DANE_T tresc; } LISTA_MAILI_MSG_T { uint8 id_wiadomosci; ADRES_T adres; DANE_T odbiorca; 6

} TABLICA_ID maile; 5 Opis wymienianych komunikatów Poniżej zaprezentowane są komunikaty używane w protokole. Numer porządkowy na liście to jednocześnie id_wiadomosci przydzielone komunikatowi. Zgodnie z przyjętą w dalszej części dokumentu konwencją zapis KOMUNIKAT (a1, a2,...) : TYP oznacza komunikat typu TYP o nazwie KOMUNIKAT i polach poza id_wiadomosci wypełnionych kolejno wartościami a1, a2 itd. 1. PROSBA_O_PODLACZENIE_MSG (adres) : ADRES_MSG_T Węzeł pragnący podłączyć się do sieci przesyła ten komunikat, podając swój adres (adres). 2. POTWIERDZENIE_PODLACZENIA_MSG (adres1, adres2) : ADRESY_MSG_T Węzeł sieci przesyła ten komunikat pragnącemu się podłączyć do sieci, podając mu adres jego następnika w cyklu (adres1) i adres następnika następnika (adres2). 3. CZY_ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo) : UZYTKOWNIK_MSG_T Węzeł sieci pyta pozostałe, czy istnieje użytkownik o loginie login i haśle haslo, przesyłając też swój adres (adres). 4. ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo) : UZYTKOWNIK_MSG_T Informacja o tym, że istnieje użytkownik o loginie login i haśle haslo, która ma zakończyć swój bieg po sieci w węźle o adresie adres. 5. CZY_AKTYWNY_UZYTKOWNIK_MSG (adres, login) : INFORMACJE_MSG_T Węzeł sieci pyta pozostałe, czy użytkownik o loginie login jest aktywny, przesyłając też swój adres (adres). 6. AKTYWNY_UZYTKOWNIK_MSG (adres, login) : INFORMACJE_MSG_T Informacja o tym, że użytkownik o loginie login jest aktywny, przeznaczona dla węzła o adresie adres. 7

7. SZUKAM_WIADOMOSCI_MSG (adres, login, tablica) : LISTA_MAILI_MSG_T Informacja o tym, że węzeł o adresie adres poszukuje wiadomości przeznaczonych dla użytkownika o loginie login i posiada już wiadomości o id z tablicy tablica. 8. WIADOMOSC_MSG (adres, id, odbiorca, nadawca, tresc) : MAIL_MSG_T Informacja o tym, że użytkownik o loginie nadawca zostawił w systemie wiadomość o treści tresc dla użytkownika o loginie odbiorca. Informacja ta ma zakończyć swój bieg po sieci w węźle o adresie adres. 9. AWARIA_PROSBA_O_NASTEPNIK_MSG (adres1, adres2) : ADRESY_MSG_T Węzeł o adresie adres1 prosi inny o podanie mu swojego następnika (oznacza to, że nastąpiła awaria węzła o adresie adres2). 10. AWARIA_INFORMACJA_O_NASTEPNIKU_MSG (adres) : ADRES_MSG_T Węzeł wysyła informację o adresie swojego następnika (adres), aby węzeł przekazujący wiadomość o awarii mógł go używać jako swojego zapasu. 11. AWARIA_ZMIEN_ZAPASOWY_NASTEPNIK_MSG (adres1, adres2) : ADRESY_MSG_T Węzeł o adresie adres1 uległ awarii. Węzeł, który używał go w charakterze zabezpieczenia, powinien zmienić go na adres2. 12. AWARIA_POTWIERDZENIE_NAPRAWY_MSG () : POTWIERDZENIE_MSG_T Odkryta w systemie awaria została naprawiona. 13. KONIEC_ZMIEN_NASTEPNIK_MSG (adres1, adres2) : ADRESY_MSG_T Węzeł o adresie adres1 kończy pracę. Węzeł, który używał go w charakterze następnika, powinien zmienić go na swoją rezerwę, a ją na adres2. 14. KONIEC_ZMIEN_ZAPASOWY_NASTEPNIK_MSG (adres1, adres2) : ADRESY_MSG_T Węzeł o adresie adres1 kończy pracę. Węzeł, który używał go w charakterze zabezpieczenia, powinien zmienić go na adres2. 8

15. KONIEC_POTWIERDZENIE_MSG () : POTWIERDZENIE_MSG_T Węzeł, który używał odbiorcy tej wiadomości jako następnika lub zabezpieczenia, potwierdza przełączenie adresów. 6 Opis stanów Węzeł sieci obsługujący ten protokół może znajdować się w następujących stanach: STATE_OCZEKUJACY_NA_PODLACZENIE, STATE_AKTYWNY, STATE_WYKRYTO_AWARIE, STATE_WYLACZANIE. Poniżej znajduje się opis poszczególnych stanów, zawierający komunikaty akceptowane w danej chwili przez węzeł sieci. Jeżeli węzeł otrzyma komunikat o znanym mu id_wiadomosci, który nie należy do akceptowanych w danej chwili, ignoruje go, nie przesyłając dalej. Komunikat ten zostaje zniszczony i zapomniany. Opis słowny zawiera analizę scenariuszy mogących się pojawić w trakcie działania programu. 9

W diagramach opisujących poniższe stany przyjęto następującą konwencję: 10

6.1 STATE OCZEKUJACY NA PODLACZENIE Większość węzłów (te, które nie były pierwszymi węzłami sieci) zaczyna swoje istnienie w tym stanie. Komunikaty wymienione na powyższym diagramie w zielonych strzałkach są akceptowane. Pozostałe są nieakceptowane. Użytkownik podaje adres węzła, do którego mamy się podłączyć. Następnie wysyłany jest pod niego komunikat PROSBA_O_PODLACZENIE_MSG (adres), gdzie adres to adres świeżo utworzonego węzła. Węzeł ten odpowiada serią komunikatów ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo) oraz WIADOMOSC_MSG (adres, id, odbiorca, nadawca, tresc), zawierających znanych mu użytkowników sieci oraz wiadomości w niej składowane (które nowy węzeł powinien zapamiętać). Po tej serii komunikatów węzeł sieci przesyła do nowego węzła wiadomość POTWIERDZENIE_PODLACZENIA_MSG (nastepnik, rezerwa), gdzie nastepnik oraz rezerwa to adresy odpowiednio następnika i następnika następnika nowego węzła w sieci, po czym odpowiednio zmienia te wartości u siebie. Nowy węzeł ustawia te wartości, stając 11

się częścią sieci i przechodzi w stan STATE_AKTYWNY. 6.2 STATE AKTYWNY 12

13

Stan, w którym węzeł sieci znajduje się przez większość czasu swojego działania. W tym stanie zaczyna działanie pierwszy węzeł nowej sieci. Oprócz tego reaguje na wymienione poniżej polecenia użytkownika. Komunikaty wymienione na powyższych diagramach w zielonych strzałkach oraz komunikaty AWARIA_POTWIERDZENIE_NAPRAWY_MSG () i KONIEC_POTWIERDZENIE_MSG () są akceptowane. Razem tworzą grupę oznaczoną na pozostałych diagramach jako AKTYWNY_AKC. Pozostałe komunikaty są nieakceptowane. Jeżeli użytkownik poprosi o zalogowanie, a węzeł nie będzie miał danych o jego istnieniu, wysyła komunikat CZY_ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo), opatrzony własnym adresem. Węzeł otrzymujący taki komunikat jest zobowiązany do przekazania go dalej (jeżeli również nie posiada informacji o tym użytkowniku) lub otworzenia kanału do węzła pytającego (przy pomocy adresu adres) i przesłania mu wiadomości ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo). Jeżeli węzeł otrzyma ten komunikat, loguje użytkownika. Jeżeli zaś powróci do niego komunikat CZY_ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo) lub przekroczony zostanie dopuszczalny czas oczekiwania (CZAS_OCZEKIWANIA), odmawia zalogowania. Jeżeli użytkownik poprosi o zarejestrowanie, a nie jest pierwszym użytkownikiem sieci (jego login i hasło muszą zostać podane przy tworzeniu sieci), musi znać login aktywnego użytkownika sieci. Węzeł wysyła komunikat CZY_AKTYWNY_UZYTKOWNIK_MSG (adres, login), opatrzony własnym adresem. Węzeł otrzymujący taki komunikat jest zobowiązany do przekazania go dalej (jeżeli nie jest na nim zalogowany użytkownik o loginie login) lub otworzenia kanału do węzła pytającego (przy pomocy adresu adres) i przesłania mu wiadomości AKTYWNY_UZYTKOWNIK_MSG (adres, login). Jeżeli do węzła powróci komunikat CZY_AKTYWNY_UZYTKOWNIK_MSG (adres, login) lub przekroczony zostanie dopuszczalny czas oczekiwania (CZAS_OCZEKIWANIA) procedura rejestracji jest przerywana. Jeżeli węzeł otrzyma stosowny komunikat, wysyła zapytanie CZY_ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo), zostawiając pole haslo puste. Jeżeli otrzyma wiadomość, że taki użytkownik już istnieje (przez komunikat ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo)) lub przekroczony zostanie dopuszczalny czas oczekiwania (CZAS_OCZEKIWANIA) procedura rejestracji zostaje przerwana. Jeżeli zaś komunikat CZY_ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo) powróci do niego, użytkownik jest rejestrowany, a po sieci rozgłaszany jest komunikat ISTNIEJE_UZYTKOWNIK_MSG (adres, login, haslo). Aby zapobiec konfliktom loginów w czasie operacji rejestracji węzeł przyjmuje, że rejestracja się powiodła. Dzięki temu, że protokół zachowuje kolejność przesyłanych komunikatów, powoduje to, że gdy dwóch użytkowników spróbuje w dwóch 14

węzłach zarejestrować ten sam login, żadnemu z nich się nie powiedzie, ale to akceptowalne ryzyko. Dla uproszczenia protokołu zakładamy brak możliwości zmiany hasła. Jeżeli użytkownik wprowadzi do węzła wiadomość, jest ona rozgłaszana przez komunikat WIADOMOSC_MSG (adres, id, odbiorca, nadawca, tresc), gdzie odbiorca i nadawca to loginy adresata i pozostawiającego wiadomość, id to stempel czasowy (ilość sekund, jaka minęła od czasu POCZATEK_STEMPLA), tresc to treść wiadomości, zaś adres to adres węzła (na nim zakończy się bieg wiadomości). Jeżeli użytkownik wyrazi chęć otrzymania pozostawionych dla niego wiadomości, wysyłana jest wiadomość SZUKAM_WIADOMOSCI_MSG (adres, login, tablica), gdzie adres to adres węzła, login to login użytkownika, zaś tablica zawiera wszystkie id wiadomości do danego użytkownika, które dany węzeł już posiada. Węzeł, który otrzyma taki komunikat, przesyła poprzez bezpośredni kanał (otworzony za pomocą adresu adres) wszystkie wiadomości do danego użytkownika nie wymienione w tablicy (za pomocą komunikatów WIADOMOSC_MSG (adres, id, odbiorca, nadawca, tresc)), dodaje ich id do tablicy, po czym przesyła ją dalej. Droga wiadomości SZUKAM_WIADOMOSCI_MSG (adres, login, tablica) kończy się w chwili, gdy dotrze ona do węzła, z którego ją wysłano. 6.3 STATE WYKRYTO AWARIE Węzeł wchodzi w ten stan, gdy wykryje awarię połączenia ze swoim następnikiem (przypuszczalnie przez niemożność wysłania komunikatu). Komunikaty 15

wymienione na powyższym diagramie w zielonych strzałkach są akceptowane. W takim wypadku węzeł wysyła komunikat AWARIA_PROSBA_O_NASTEPNIK_MSG (adres1, adres2) (zawierający w polu adres1 swój adres, zaś w polu adres2 adres uszkodzonego węzła) do węzła stanowiącego jego rezerwę. Zakładamy, że ryzyko jednoczesnej awarii dwóch sąsiednich węzłów sieci jest akceptowalnie małe. Jeżeli taki przypadek zajdzie, dopuszczamy dowolne zachowanie sieci. Ten odpowiada komunikatem AWARIA_INFORMACJA_O_NASTEPNIKU_MSG (adres) (zawierającym w polu adres adres jego następnika), w dalszą drogę po sieci (jeżeli zawiera ona więcej niż trzy węzły) puszcza komunikat AWARIA_ZMIEN_ZAPASOWY_NASTEPNIK_MSG (adres1, adres2), stanowiący polecenie dla węzła używającego jako rezerwy uszkodzonego węzła (adres1) zmiany tego adresu na adres węzła wysyłającego komunikat (adres2). Adresat tej wiadomości przesyła swojemu następnikowi (a więc węzłowi, który wykrył awarię) wiadomość AWARIA_POTWIERDZENIE_NAPRAWY_MSG (), aby ten mógł powrócić do stanu STATE_AKTYWNY. 16

6.4 STATE WYLACZANIE Węzeł wchodzi w ten stan, gdy użytkownik podejmie decyzję o wyłączeniu aplikacji. Komunikaty wymienione na powyższym diagramie w zielonych strzałkach są akceptowane. Węzeł wysyła do sieci dwa komunikaty - KONIEC_ZMIEN_NASTEPNIK_MSG (adres, rezerwa) oraz KONIEC_ZMIEN_ZAPASOWY_NASTEPNIK_MSG (adres, nastepnik) (gdzie adres to adres wyłączającego się węzła, nastepnik to adres jego następnika, zaś rezerwa to adres jego rezerwy). Węzły używające jego adresu w odpowiedniej roli zmieniają przechowywane adresy, po czym wysyłają do niego wiadomość KONIEC_POTWIERDZENIE_MSG (). Po otrzymaniu dwóch takich wiadomości węzeł może bezpiecznie się wyłączyć. 17

7 Informacje dodatkowe 7.1 Tworzenie nowej sieci Ze względu na specyficzne wymogi rejestracji do sieci (konieczna jest znajomość aktywnego użytkownika), wraz z utworzeniem nowej sieci musi zostać utworzone konto pierwszego użytkownika. Pierwszy węzeł sieci zaczyna istnienie w stanie STATE_AKTYWNY, z adresami następnika i rezerwy oznaczonymi jako puste. 7.2 Kolejne wersje protokołu Zakładam, że kolejne wersje protokołu będą zachowywać semantykę komunikatów zaprezentowanych powyżej. Aby umożliwić współdziałanie z aplikacjami stosującymi późniejsze wersje protokołu, węzeł sieci przekazuje dalej wszystkie wiadomości o nieznanym sobie id_wiadomosci. 7.3 Długość życia informacji Tak informacje o użytkownikach, jak i o wiadomościach nie są nigdy usuwane. Jeżeli wszystkie węzły zawierające informację o danym użytkowniku zostaną odłączone od sieci, informacja ta przepada. Kolejny użytkownik może zostać zarejestrowany z tym samym loginem. Jeżeli wszystkie węzły zawierające informację o danej wiadomości pozostawionej w systemie zostaną odłączone, informacja ta przepada. 8 Używane numery W tekście stosowane są następujące stałe: NUMER_PORTU - domyślny numer portu to 1138, CZAS_OCZEKIWANIA - zalecana wartość to 10 sekund, POCZATEK_STEMPLA - 12 lipca 1989 roku, godzina 12:05. 18