Projekt protokołu na SIK (2006/07)

Podobne dokumenty
Projekt protokołu na SIK (2006/07)

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

Wirtualna centralka telefoniczna P2P

Remote Quotation Protocol - opis

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

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Protokół wymiany sentencji, wersja 1

Klient-Serwer Komunikacja przy pomocy gniazd

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.

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

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

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

TCP/IP formaty ramek, datagramów, pakietów...

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

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

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

TRX API opis funkcji interfejsu

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

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

Aplikacja Sieciowa wątki po stronie klienta

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

Dr Michał Tanaś(

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

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

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

Definiowanie filtrów IP

r. Informacja uzupełniająca

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

5. Algorytm genetyczny przykład zastosowania

Celem tego projektu jest stworzenie

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

Nazwa załącznika/link. Nazwa materiału/opis informacji

Programowanie współbieżne i rozproszone

Sieci komputerowe Warstwa transportowa

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

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

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

Instrukcja wysyłania depesz do Sekretariatu Stowarzyszenia Gmin Dorzecza Górnej Odry polskiej części Euroregionu Silesia

Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK.

Ćwiczenia z arytmetyki komputera Budowa adresu IP

ArtPlayer. Odtwarzacz plików video sterowany poprzez Artnet/DMX V Instrukcja obsługi.

Ćwiczenie 1. Badanie struktury pola komutacyjnego centrali S12

Rozdział 1. Integracja systemu "KasNet" z pinpadami firmy "First Data Polska S.A."

Udostępnianie drukarek za pomocą systemu Windows (serwer wydruku).

Maciej Piotr Jankowski

Laboratorium 10: Maszyna stanów

Protokoły sieciowe - TCP/IP

Zadanie 2: transakcyjny protokół SKJ (2015)

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja

System obsługi ubezpieczeń FORT

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

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

Projektowanie bezpieczeństwa sieci i serwerów

asix4 Podręcznik użytkownika CtMus04 - drajwer do wymiany danych z urządzeniami sterującymi MUS-04 firmy ELEKTORMETAL S.A.

asix4 Podręcznik użytkownika SRTP - drajwer protokołu SRTP Podręcznik użytkownika

Adresacja IPv4 - podstawy

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Colloquium 1, Grupa A

Scenariusz lekcji Opracowanie: mgr Bożena Marchlińska NKJO w Ciechanowie Czas trwania jednostki lekcyjnej: 90 min.

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

Model OSI. mgr inż. Krzysztof Szałajko

PAI2009:: Protokół aukcji internetowych

1 Moduł Inteligentnego Głośnika

MODEM GSM-01. INSTRUKCJA OBŁUGI MODUŁU KOMUNIKACYJNEGO GSM-01 wersja 1.0 GSM-01 INSTRUKCJA OBSŁUGI - 1 -

Panel Konta - instrukcja. Warszawa, 2013 r

elektroniczna Platforma Usług Administracji Publicznej

System magazynowy małego sklepu.

Instrukcja EQU Kantech

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

Zapisz i autoryzuj płatności w folderze

1 Moduł Inteligentnego Głośnika 3

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

ZAKŁAD SYSTEMÓW ROZPROSZONYCH. Politechnika Rzeszowska BEZPIECZEŃSTWO I OCHRONA INFORAMCJI

ARP Address Resolution Protocol (RFC 826)

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Systemu Zwrotu Palet KN-WO

Jak złożyć wniosek na szkolenie w SMK

mh-v4 Czterokanałowy moduł elektrozaworów systemu F&Home.

FAQ: /PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

Proces uprawniania w module klubowym

Przekierowanie portów w routerze - podstawy

elektroniczna Platforma Usług Administracji Publicznej

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

System automatyki domowej. Nexo.API Protokół Karty komend NXW396

Programowanie centrali telefonicznej Platan Libra

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

Konfiguracja i uruchomienie usługi Filtry adresów IP dla użytkowników Centrum Usług Internetowych dla Klientów Banku Spółdzielczego w Łęcznej.

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

OmniTouch 8400 Instant Communications Suite Telefon aplikacji My Instant Communicator. My Instant Communicator dla serii Alcatel-Lucent /4068

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

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Rok szkolny 2014/15 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. SIECI KOMPUTEROWE kl. 2c

Ekonometria, lista zadań nr 6 Zadanie 5 H X 1, X 2, X 3

Uniwersalny Konwerter Protokołów

Metoda Karnaugh. B A BC A

Warstwa sieciowa rutowanie

Działanie komputera i sieci komputerowej.

Transkrypt:

Projekt protokołu na SIK (2006/07) Kuba Pochrybniak 189315 kwiecień 2007 Streszczenie Niniejszy dokument opisuje protokół komunikacyjny, mający służyć przeprowadzaniu rozmów głosowych przez sieć. Spis treści 1. Opis celów protokołu..................................... 2 2. Opis założeń protokołu.................................... 2 3. Opis formatu komunikatów................................. 2 3.1. Niskopoziomowy opis przesyłanych danych....................... 2 3.2. Pola w komunikacie.................................... 2 3.2.1. Komunikaty niezależne od kanałów....................... 2 3.2.2. Komunikaty idące kanałem sterującym..................... 2 3.2.3. Komunikaty zmiennej długości.......................... 3 3.2.4. Komunikaty idące kanałem głosowym...................... 3 4. Opis wymienianych komunikatów............................. 3 5. Opis stanów........................................... 4 5.1. Skrócony opis........................................ 4 5.1.1. Awarie....................................... 4 5.2. Szczegółowy opis stanów dla komputerów niebędących w grupie........... 5 5.2.1. Ogólnie....................................... 5 5.2.2. NIC NIE ROBIE STATE............................. 5 5.2.3. CHCE ZADZWONIC STATE.......................... 6 5.2.4. KTOS CHCE ZADZWONIC STATE...................... 6 5.2.5. ROZMAWIAM STATE.............................. 6 5.2.6. CHCE ZAWIESIC STATE............................ 6 5.2.7. ZAWIESILEM STATE.............................. 6 5.2.8. KTOS ZAWIESIL STATE............................ 6 5.2.9. CHCE ODWIESIC STATE............................ 7 5.2.10. CHCE ROZLACZYC STATE.......................... 7 5.3. Opis sytuacji związanych z grupami........................... 7 5.3.1. Nawiązywanie rozmowy.............................. 7 5.3.2. Zawieszanie rozmowy............................... 7 5.3.3. Kończenie rozmowy................................ 8 5.3.4. Z drugiego punktu widzenia........................... 8 5.3.5. Grupa grupa.................................... 8 6. Podsumowanie używanych numerów........................... 8 6.1. Komunikaty........................................ 8 6.2. Stany............................................ 9

1. Opis celów protokołu Protokół ma na celu umożliwienie przeprowadzania internetowych rozmów głosowych między komputerami w sieci IP. Poniższy opis dotyczy jedynie sterowania nawiązywaniem, zawieszaniem i zrywaniem połączeń, bez wchodzenia w szczegóły dotyczące samego przesyłania danych głosowych. 2. Opis założeń protokołu Protokół części sterującej będzie opierał się na TCP/IP. Zapewni to niezawodność, niestety kosztem wydajności. Wydajność nie powinna jednak być problemem, gdyż narażona na największe obciążenia część, tj. przesyłanie samej treści rozmowy głosowej, opierać się będzie na protokole UDP. Wykorzystywany będzie model P2P. Między komputerami będą tworzone połączenia składające się z dwóch kanałów: głosowego i sterującego, którym będą szły komunikaty. Zanim połączenie zostanie stworzone, komputer, który chce zainicjować rozmowę, będzie wysyłał komunikat do komputera o danym IP na port 6666. 3. Opis formatu komunikatów 3.1. Niskopoziomowy opis przesyłanych danych Przyjęte są następujące założenia co do przesyłanych danych: sieciowy porządek oktetów w liczbach, brak uzupełniania formatu liczby n-oktetowe są przesyłane za pomocą ciągu n bajtów, nie przewiduje się wysyłania liczb zmiennoprzecinkowych ani stałoprzecinkowych ze znakiem. 3.2. Pola w komunikacie 3.2.1. Komunikaty niezależne od kanałów typ uint8 numer typu komunikatu ip uint32 IP nadawcy port s uint16 numer portu kanału sterującego port g uint16 numer portu kanału głosowego los uint32 liczba losowa wygenerowana przy wysyłaniu wiadomości Długość komunikatu w bajtach będzie równa 8 + 32 + 16 + 16 + 32 = 104. 3.2.2. Komunikaty idące kanałem sterującym Ponieważ kanał sterujący będzie dla danej trójki (użytkownik1, użytkownik2, rozmowa) wyznaczony jednoznacznie, informacje o nadawcy i jego parametrach byłyby zbędną redundancją.

typ uint8 numer typu komunikatu los uint32 liczba losowa wygenerowana przy wysyłaniu wiadomości Długość komunikatu w bajtach będzie równa 3.2.3. Komunikaty zmiennej długości 8 + 32 = 40. typ uint8 numer typu komunikatu ip uint32 IP nadawcy wielkosc uint16 liczba linii linie uint16[wielkosc] tablica zajmowanych linii Długość komunikatu w bajtach będzie równa 8 + 32 + 16 + 16 wielkosc. 3.2.4. Komunikaty idące kanałem głosowym Kanał głosowy nie musi być tak niezawodny jak sterujący, będzie więc opierał się na protokole UDP. Jednak w związku z przyjętym rozwiązaniem, trzeba będzie zapewnić, by komunikaty dochodzące w losowej kolejności były czytane w kolejności właściwej. Dlatego prócz samej treści będą musiały mieć znacznik czasowy. czas uint32 znacznik czasowy msg char[wielkosc MSG] fragment wiadomości długości WIELKOSC MSG Ponieważ rozmowy z założenia będą krótsze niż panowanie Elżbiety II, na znacznik czasowy wystarczą cztery bajty. Pole msg będzie wypełnione w większości znakami o kodzie większym od 0. Pierwszy pojawiający się znak o kodzie 0 będzie oznaczał koniec wiadomości. Kolejne pola wiadomości nie będą umyślnie zerowane. 4. Opis wymienianych komunikatów Komunikaty postaci 3.2.1: PROSBA O POLACZENIE MSG, ODRZUCENIE POLACZENIA MSG, PRZYJECIE POLACZENIA MSG, PROSBA O ROZLACZENIE MSG, ZGODA NA ROZLACZENIE MSG, GR LUDZISKA KTOS DO NAS DZWONI MSG, GR CHCE MUTEKSA LACZACEGO MSG, GR BRAK ZGODY NA MUTEKSA LACZACEGO MSG, GR ODDAJE MUTEKSA LACZACEGO MSG, GR CHCE MUTEKSA ODWIESZAJACEGO MSG,

GR BRAK ZGODY NA MUTEKSA ODWIESZAJACEGO MSG, GR ODDAJE MUTEKSA ODWIESZAJACEGO MSG, ZMIEN ROZMOWCE MSG, GR SKONCZYLEM GADAC MSG. Komunikaty idące utworzonym kanałem sterującym po ustanowieniu połączenia, czyli PROSBA O ZAWIESZENIE MSG, ZGODA NA ZAWIESZENIE MSG, PROSBA O ODWIESZENIE MSG, będą miały postać opisaną w punkcie 3.2.2. Komunikaty zmiennej długości, czyli jak w punkcie 3.2.3: GR ZGODA NA MUTEKSA LACZACEGO MSG, GR ZGODA NA MUTEKSA ODWIESZAJACEGO MSG, GR ZAWIESILEM MSG. Pola nieużywane nie mają być specjalnie wypełnianie z kontekstu będzie wynikać, czy danych pól należy użyć. Autor zdecydował się na korzystanie z komunikatów zawierających niepotrzebne pola, aby nie mnożyć ponad normę typów komunikatów. Z tego samego powodu w polu linie komunikatu GR ZAWIESILEM MSG będzie jednoelementowa tablica, zawierająca numer aktualnie zawieszonej linii. 5. Opis stanów 5.1. Skrócony opis Ponieważ protokół ma zapewniać użytkownikowi możliwość przeprowadzania wielu rozmów telefonicznych równolegle, stany (poza stanem NIC NIE ROBIE STATE) będą charakterystyczne nie dla użytkownika, a dla pary (użytkownik, rozmowa). Stan NIC NIE ROBIE STATE będzie charakterystyczny dla użytkownika. Zakładam, że w chwili otrzymania lub wysłania komunikatu PROSBA O POLACZENIE MSG jest uruchamiany nowy wątek, który niezależnie od innych obsługuje daną rozmowę. Ponieważ związane z poszczególnymi komunikatami czynności bywają złożone, nie ma sensu wypisywać ich szczegółowego działania na diagramie stanów (patrz rysunek); opis ich działania znajduje się w punkcie 5.2. 5.1.1. Awarie W dowolnym stanie może dojść do awarii: możemy otrzymać komunikat TCP o zerwaniu połączenia, możemy też np. nie doczekać się odpowiedzi w odpowiednio ograniczonym czasie. 1 Jeśli dojdzie do takiej sytuacji, rozłączamy połączenie, zwalniamy linię telefoniczną oraz porty i przechodzimy do stanu NIC NIE ROBIE STATE. 1 Dla wszelkiego rodzaju działań wymagających komunikatów zwrotnych, stosujemy timeout, niezależny od wbudowanego w protokół TCP.

ODRZUCENIE_POLACZENIA_MSG? PROSBA_O_POLACZENIE_MSG! NIC_NIE_ROBIE_STATE ODRZUCENIE_POLACZENIA_MSG! PROSBA_O_POLACZENIE_MSG? CHCE_ZADZWONIC_STATE KTOS_CHCE_ZADZWONIC_STATE PRZYJECIE_POLACZENIA_MSG? PRZYJECIE_POLACZENIA_MSG! ROZMAWIAM_STATE PROSBA_O_ZAWIESZENIE_MSG! CHCE_ZAWIESIC_STATE PROSBA_O_ZAWIESZENIE_MSG? ZGODA_NA_ZAWIESZENIE_MSG! ZGODA_NA_ZAWIESZENIE_MSG? ZAWIESILEM_STATE ROZMOWCA_ZAWIESIL_STATE PROSBA_O_ODWIESZENIE_MSG! ZGODA_NA_ODWIESZENIE_MSG! CHCE_ODWIESIC_STATE ZGODA_NA_ODWIESZENIE_MSG? ZGODA_NA_ROZLACZENIE_MSG? CHCE_ROZLACZYC_STATE PROSBA_O_ROZLACZENIE_MSG! 5.2. Szczegółowy opis stanów dla komputerów niebędących w grupie 5.2.1. Ogólnie W dowolnym (prócz ZAWIESILEM STATE) stanie możemy stwierdzić, że zrywamy połączenie wysyłamy wtedy komunikat PROSBA O ROZLACZENIE MSG przechodzimy do stanu CHCE ROZLACZYC STATE. W dowolnym stanie możemy dostać komunikat PROSBA O ROZLACZENIE MSG. Przestajemy wtedy nadawać kanałem głosowym i wysyłamy komunikat ZGODA NA ROZLA- CZENIE MSG. Zwalniamy linię telefoniczną oraz porty i przechodzimy do stanu NIC NIE ROBIE STATE. Ponieważ powyższe rzeczy dotyczą generalnie wszystkich stanów, nie będę ich opisywać szczegołowo w każdym stanie osobno. 5.2.2. NIC NIE ROBIE STATE W tym stanie możemy przyjąć przychodzącą rozmowę bądź wysłać prośbę o jej zainicjowanie. W pierwszym przypadku, czyli po otrzymaniu komunikatu PROSBA O POLACZENIE MSG, przechodzimy do stanu KTOS CHCE ROZMAWIAC STATE. W drugim przypadku postępujemy następująco: jeśli mamy wolną linię telefoniczną, próbujemy zarezerwować dwa porty, w przypadku niepowodzenia rezygnujemy z dalszych działań, w przypadku powodzenia wysyłamy komunikat PROSBA O POLACZENIE MSG, zawierając w nich numery portów,

przechodzimy do stanu CHCE ZADZWONIC STATE. 5.2.3. CHCE ZADZWONIC STATE Jeśli przyjdzie komunikat ODRZUCENIE POLACZENIA MSG, zwalniamy zarezerwowane porty i numer linii i wracamy do stanu zerowego. Jeśli przyjdzie komunikat PRZYJECIE POLACZENIA MSG, będzie to oznaczać, że na podanych w komunikacie numerach portów zostały już stworzone oba kanały komunikacyjne. Przechodzimy do stanu ROZMAWIAM STATE. 5.2.4. KTOS CHCE ZADZWONIC STATE Sprawdzamy, czy mamy wolną linię telefoniczną. Jeśli nie mamy, wysyłamy komunikat ODRZUCENIE POLACZENIA MSG. Jeśli mamy, rezerwujemy dwa porty i pytamy użytkownika, czy chce przyjąć rozmowę. Jeśli nie udało się zarezerwować portów lub użytkownik nie chce przyjąć rozmowy, wysyłamy komunikat ODRZUCENIE POLACZENIA MSG (zwalniając zarezerwowane porty, jeśli udało nam się je zarezerwować). Jeśli użytkownik chce przyjąć rozmowę, wysyłamy komunikat PRZYJECIE POLACZENIA MSG, zawierając w nim numery zarezerwowanych portów. Po wysłaniu komunikatu ODRZUCENIE POLACZENIA MSG przechodzimy do stanu NIC NIE ROBIE STATE, zaś po wysłaniu komunikatu PRZYJECIE POLACZENIA MSG do stanu ROZMAWIAM STATE. 5.2.5. ROZMAWIAM STATE Jeśli dostaniemy komunikat PROSBA O ZAWIESZENIE MSG, przestajemy nadawać kanałem głosowym i wysyłamy komunikat ZGODA NA ZAWIESZENIE MSG, po czym przechodzimy do stanu KTOS ZAWIESIL STATE. Jeśli użytkownik chce zawiesić, przechodzimy do stanu CHCE ZAWIESIC STATE. 5.2.6. CHCE ZAWIESIC STATE Po znalezieniu się w tym stanie, przestajemy nadawać kanałem głosowym, wysyłamy komunikat PROSBA O ZAWIESZENIE i po otrzymaniu komunikatu ZGODA NA ZAWIE- SZENIE MSG zawieszamy kanał głosowy i przechodzimy do stanu ZAWIESILEM STATE. Jeżeli w niniejszym stanie dojdzie do nas komunikat PROSBA O ZAWIESZENIE MSG, mamy konflikt. Spór rozstrzyga się za pomocą liczb losowych, dołączonych do komunikatu (większy wygrywa, tj. oczekuje na komunikat ZGODA NA ZAWIESZENIE MSG, który ma wysłać mniejszy). 2 5.2.7. ZAWIESILEM STATE Jeżeli użytkownik chce odwiesić rozmowę, wysyłamy komunikat PROSBA O ODWIE- SZENIE MSG i przechodzimy do stanu CHCE ODWIESIC STATE. 5.2.8. KTOS ZAWIESIL STATE Jeżeli przyjdzie do nas komunikat PROSBA O ODWIESZENIE MSG, wysyłamy komunikat ZGODA NA ODWIESZENIE MSG i przechodzimy do stanu ROZMAWIAM STATE. 2 W zupełnie nieprawdopodobnym, ale jednak możliwym przypadku, rozstrzyga porządek leksykograficzny numerów IP wygrywa ten o większym IP. Z jednej strony jest to rozwiązanie niesprawiedliwe, ale z drugiej takie zdarzenie ma prawie zerowe prawdopodobieństwo zajścia.

5.2.9. CHCE ODWIESIC STATE Jeśli dojdzie do nas komunikat ZGODA NA ODWIESZENIE MSG, odwieszamy kanał głosowy i przechodzimy do stanu ROZMAWIAM STATE. 5.2.10. CHCE ROZLACZYC STATE Jeżeli przyjdzie do nas komunikat POZWOLENIE NA ROZLACZENIE MSG, zwalniamy linię telefoniczną oraz porty i przechodzimy do stanu NIC NIE ROBIE STATE. 5.3. Opis sytuacji związanych z grupami W poprzedniej sekcji nie był poruszony problem, co zrobić, jeśli biorący udział w zdarzeniu komputer jest w grupie. Ogólny schemat działania jest podobny, ale w szczegółach występują pewne różnice, które przedstawię poniżej. Poniższe sytuacje z powodu czytelności rysunku nie są uwzględnione w diagramie stanów. 5.3.1. Nawiązywanie rozmowy Jeśli dzwoni do nas jakiś komputer, rozsyłamy do całej grupy (razem ze sobą) komunikat GR LUDZISKA KTOS DO NAS DZWONI MSG, zawierający m.in. IP potencjalnego rozmówcy. Teraz zostanie zastosowana krzyżówka Ricarta Agrawali z muteksami. Każdy komputer, który chce przyjąć tę rozmowę, wysyła do wszystkich poza sobą komunikat GR CHCE MUTEKSA LACZACEGO MSG, w którym podaje m.in. IP chcącego rozmawiać komputera. Każdy komputer, który nie chce rozmawiać, odsyła komunikat GR ZGODA NA MU- TEKSA LACZACEGO MSG zawierający numery zajmowanych przez siebie aktualnie linii. Komputery, które chcą rozmawiać, rozstrzygają konflikt podobnie jak w punkcie 5.2.6: za pomocą liczb losowych dołączanych do komunikatów, a w przypadkach i tutaj spornych, za pomocą porządku leksykograficznego numerów IP. Te, które przegrają, wysyłają wymieniony wyżej komunikat; ten, który wygra, wysyła komunikat GR BRAK ZGODY NA MUTEKSA LACZACEGO MSG. Komputer, jedyny, który uzyska zgodę od wszystkich pozostałych na wzięcie muteksa, wie, które linie telefoniczne są wolne. W tym momencie łączy rozmowę analogicznie jak w sytuacji bez grup, po czym rozsyła do wszystkich poza sobą komunikat GR ODDAJE MUTEKSA LACZACEGO MSG. Komputery po wysłaniu komunikatu GR ZGODA NA MUTEKSA LACZACEGO MSG wstrzymują się z wszelkimi operacjami dotyczącymi zmiany linii (z wyjątkiem rozłączania), choć mogą w tym czasie normalnie prowadzić swoje rozmowy. Wszelkie tego typu operacje mogą zostać podjęte dopiero po otrzymaniu komunikatu GR ODDAJE MUTEKSA LACZA- CEGO MSG lub po timeoucie oznaczającym awarię. Komputer, który chce przeprowadzić rozmowę (wysłał już komunikat GR CHCE MU- TEKSA LACZACEGO MSG), po otrzymaniu komunikatu GR BRAK ZGODY NA MU- TEKSA LACZACEGO MSG sprawdza, czy komunikat dotyczy tego samego potencjalnego rozmówcy. Jeśli tak, rezygnuje z połączenia (nic w tym celu nie robiąc); jeśli innego, czeka, aż przyjdzie komunikat GR ODDAJE MUTEKSA LACZACEGO MSG, po czym znów wysyła komunikat GR CHCE MUTEKSA LACZACEGO MSG. 5.3.2. Zawieszanie rozmowy Jeśli jesteśmy komputerem będącym w grupie i chcemy zawiesić rozmowę, wymieniamy odpowiednie komunikaty z naszym rozmówcą, po czym po zawieszeniu rozmowy rozsyłamy do

wszystkich w grupie (do siebie samych też) komunikat GR ZAWIESILEM MSG, zawierający m.in. IP rozmówcy, jego porty zarezerwowane na tę rozmowę oraz numer linii telefonicznej. Wszystkie komputery, które chcą odwiesić rozmowę, analogicznie jak w poprzednim punkcie wymieniają z pozostałymi komputerami w grupie komunikat GR CHCE MUTEKSA OD- WIESZAJACEGO MSG, w którym załączają m.in. IP rozmówcy oraz nr linii telefonicznej. Ten, który wygra, przed rozesłaniem komunikatu GR ODDAJE MUTEKSA ODWIESZA- JACEGO MSG wysyła do rozmówcy komunikat ZMIEN ROZMOWCE MSG, zawierający m.in. dwa nowe porty (zarezerwowane tak samo jak przy rozpoczynaniu rozmowy) i tworzy kanały. 5.3.3. Kończenie rozmowy Kończenie rozmowy, niezależnie od tego, przez którą stronę zainicjowane, skutkuje zawsze wysłaniem komunikatu GR SKONCZYLEM GADAC MSG zawierającego m.in. IP rozmówcy oraz numer linii, która właśnie się zwolniła. 5.3.4. Z drugiego punktu widzenia Z punktu widzenia komputera, który dzwoni do komputera będącego w grupie, wszystko wygląda mniej więcej tak, jak w normalnej sytuacji. Jedyna różnica jest taka, że na prośby o połączenie oraz przy odwieszaniu rozmowy może nam odpowiedzieć komputer o innym IP niż ten, z którym wcześniej się komunikowaliśmy. 5.3.5. Grupa grupa Ponieważ w każdym komunikacie przed stworzeniem kanału sterującego jest przesyłany numer IP nadawcy, nie ma żadnych problemów przy komunikacji komputer w grupie komputer w grupie. 6. Podsumowanie używanych numerów 6.1. Komunikaty Komunikaty będą charakteryzowane liczbami naturalnymi (typ uint8). Oto konkretne wartości przypisane rodzajom komunikatów: PROSBA O POLACZENIE MSG............................... 0 ODRZUCENIE POLACZENIA MSG............................ 1 PRZYJECIE POLACZENIA MSG.............................. 2 PROSBA O ZAWIESZENIE MSG.............................. 3 ZGODA NA ZAWIESZENIE MSG.............................. 4 PROSBA O ODWIESZENIE MSG............................. 5 ZGODA NA ODWIESZENIE MSG............................. 6 PROSBA O ROZLACZENIE MSG............................. 7 ZGODA NA ROZLACZENIe MSG............................. 8 GR LUDZISKA KTOS DO NAS DZWONI MSG................. 9 GR CHCE MUTEKSA LACZACEGO MSG..................... 10 GR ZGODA NA MUTEKSA LACZACEGO MSG................ 11 GR BRAK ZGODY NA MUTEKSA LACZACEGO MSG......... 12

GR ODDAJE MUTEKSA LACZACEGO MSG................... 13 GR ZAWIESILEM MSG....................................... 14 GR CHCE MUTEKSA ODWIESZAJACEGO MSG............... 15 GR ZGODA NA MUTEKSA ODWIESZAJACEGO MSG......... 16 GR BRAK ZGODY NA MUTEKSA ODWIESZAJACEGO MSG... 17 GR ODDAJE MUTEKSA ODWIESZAJACEGO MSG............ 18 ZMIEN ROZMOWCE MSG.................................... 19 GR SKONCZYLEM GADAC MSG............................. 20 6.2. Stany NIC NIE ROBIE STATE............. 0 CHCE ZADZWONIC STATE......... 1 KTOS CHCE ZADZWONIC STATE... 2 ROZMAWIAM STATE............... 3 CHCE ZAWIESIC STATE............ 4 ZAWIESILEM STATE............... 5 ROZMOWCA ZAWIESIL STATE..... 6 CHCE ODWIESIC STATE........... 7 CHCE ROZLACZYC STATE......... 8