Protokół wymiany sentencji, wersja 1



Podobne dokumenty
Remote Quotation Protocol - opis

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

1 Moduł Diagnostyki Sieci

Moduł Ethernetowy. instrukcja obsługi. Spis treści

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

DOKUMENTACJA TECHNICZNA SMS API MT

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.

Programowanie współbieżne i rozproszone

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

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

Laboratorium 6.7.2: Śledzenie pakietów ICMP

System DiLO. Opis interfejsu dostępowego v. 2.0

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Moduł Ethernetowy EL-ETH. Instrukcja obsługi

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

Dokumentacja SMPP API

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

Spis treści. 1 Moduł Modbus TCP 4

Laboratorium Sieci Komputerowych - 2

MODEL OSI A INTERNET

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

IIIIIIIIIIIIIIIMMIMMIII

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

Przesyłania danych przez protokół TCP/IP

Aplikacja Sieciowa wątki po stronie klienta

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

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

Model OSI. mgr inż. Krzysztof Szałajko

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Dokumentacja SMS przez FTP

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

UNIWERSYTET EKONOMICZNY WE WROCŁAWIU. Sprawozdanie. Analizator sieciowy WIRESHARK. Paweł Jarosz Grupa 20 IiE

Wybrane działy Informatyki Stosowanej

Protokoły warstwy aplikacji

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

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

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

SSL (Secure Socket Layer)

Programowanie Sieciowe 1

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

Wymagania dla systemu HIS w zakresie komunikacji HL7. Serwer odbierający transakcje HL7. Klient wysyłający transakcje HL7

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

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

ARP Address Resolution Protocol (RFC 826)

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

Instrukcja EQU Kantech

Konfiguracja konta pocztowego w Thunderbird

Sieci komputerowe - warstwa transportowa

1 Moduł Konfigurowanie Modułu

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

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Protokół aukcji internetowych

Klient-Serwer Komunikacja przy pomocy gniazd

Protokoły zdalnego logowania Telnet i SSH

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

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

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Sieci Komputerowe Modele warstwowe sieci

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

XML-RPC: Zdalne wykonywanie procedur

Definiowanie filtrów IP

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

MASKI SIECIOWE W IPv4

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

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

Sieci komputerowe - administracja

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

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

Symulacja Packet Tracer - Komunikacja z użyciem protokołów TCP i UDP

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

1 Moduł Modbus ASCII/RTU

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Sieci komputerowe Warstwa transportowa

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Sprawozdanie nr 4. Ewa Wojtanowska

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

MODEL WARSTWOWY PROTOKOŁY TCP/IP

procertum SmartSign 3.2 kwalifikowany znacznik czasu do użycia z procertum CLIDE Client - Instrukcja obsługi wersja UNIZETO TECHNOLOGIES SA

TRX API opis funkcji interfejsu

Mechanizmy pracy równoległej. Jarosław Kuchta

asix4 Podręcznik użytkownika PROTRONICPS - drajwer protokołu regulatorów PROTRONICPS Podręcznik użytkownika

Akademia Górniczo-Hutnicza im. Stanisława Staszica

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

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

Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007)

Sprawozdanie Laboratorium 4

Obowiązuje od r.

Architektura aplikacji sieciowych. Architektura klient-serwer

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

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

procertum SmartSign 3.2 wersja 1.0.2

Sieci komputerowe - adresacja internetowa

Problemy z bezpieczeństwem w sieci lokalnej

Połączenie VPN Host-LAN SSL z wykorzystaniem przeglądarki. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Konto SSL 1.3. Grupa użytkowników

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Transkrypt:

Protokół wymiany sentencji, wersja 1 Sieci komputerowe 2011@ MIM UW Osowski Marcin 28 kwietnia 2011 1

Streszczenie Dokument ten opisuje protokół przesyłania sentencji w modelu klientserwer. W założeniu dostarczanie sentencji ma się odbywać szybko i z minimalnym obciążeniem serwera stąd zastosowanie UDP jako protokołu transportowego. Komunikacja odbywa się bezstanowo: klient zgłasza zapotrzebowanie na cytat i otrzymuje jedno- lub wielo-pakietową odpowiedź z cytatem. 2

Spis treści 1 Opis celów protokołu 4 2 Opis założeń protokołu 4 3 Opis podstawowego nagłówka komunikatów 4 4 Opis wymienianych komunikatów 5 4.1 Klientdoserwera,STATUSSUCCESS... 6 4.2 Klientdoserwera,STATUSERR... 6 4.3 Serwerdoklienta,STATUSSUCCESS... 6 4.4 Serwerdoklienta,STATUSERR... 7 5 Podsumowanie używanych numerów 8 3

1 Opis celów protokołu Protokół umożliwia przesyłanie cytatów w modelu klient-serwer. Cytatem jest dowolny napis zakodowany w UTF-8(z pewnym górnym ograniczeniem na długość, szczegóły poniżej). Serwer nasłuchuje na porcie UDP 19019 na zapytania klientów. Każdy z klientów może zapytać serwer(czyli wysłać komunikat UDP) i na zasadach równych praw otrzymać losowo wybrany cytat. Ze względu na zapewnienie możliwości przesyłania cytatów o długości przekraczającej długość pakietu odpowiedź serwera może być jedno- lub wielo-pakietowa. Niezależnie od typu odpowiedzi klient oczekuje na kompletną odpowiedź(co w przypadku wielo-pakietowej odpowiedzi oznacza odbiór wszystkich pakietów) przez CLIENT_TIMEOUT milisekund, po czym w przypadku nie odebrania kompletu informacji uznaje zapytanie za nieudane. 2 Opis założeń protokołu 1. Protokół pracuje w warstwie aplikacji. 2. Wszystkie liczby są zapisywane jako liczby bez znaku, w sieciowym porządku oktetów. 3. Protokół jest szybki, powoduje małe obciążenie. Realizowane jest to poprzez zastosowanie UDP jako protokołu transportowego, bezstanowość oraz binarny format przesyłanych pakietów z bardzo niewielkim nagłówkiem(typowo nie przekracza on 6 bajtów długości). 4. Protokół jest do pewnego stopnia skalowalny, umożliwiając przesyłanie cytatów o rozmiarach do kilkudziesięciu MiB(zależnie od MTU sieci). Jednocześnie nie powoduje to zwiększania objętości metadanych dla cytatów krótkich(o długości rzędu 1 KiB). 5. Protokół jest przystosowany do ewentualnego rozszerzenia funkcjonalności. 6. Protokół nie definiuje żadnych metod autoryzacji lub szyfrowania. 3 Opis podstawowego nagłówka komunikatów Każdy z komunikatów wymienianych w ramach protokołu składa się z podstawowego nagłówka rozszerzonego w miarę potrzeby dodatkowymi polami. Opis pierwszych czterech bajtów wymienianych komunikatów: basic_header{ uint8_t proto_version; /********************** uint8_t packet_type; * Podstawowy nagłówek uint16_t connection_id; **********************/ 4

}; proto_version Jest liczbą bez znaku opisującą numer wersji protokołu. W założeniu serwer zgłasza błąd, jeżeli dostaje pakiet z nieznaną sobie wersją protokołu. packet_type Jest polem złożonym z czterech części: najstarszy bit najmłodszy bit 7 6 5 4 3 2 1 0 +---------------+-----------+------------+----------------+ direction_bit error_bit reserved type_details +---------------+-----------+------------+----------------+ packet_type[7] direction_bit Klient wysyłający dane do serwera ustawia ten bit na DIRECTION_REQUEST(0). Serwer wysyłający dane do klienta ustawia ten bit na DIRECTION_RESPONSE(1). packet_type[6] error_bit W przypadku sukcesu bit ten jest ustawiany na STATUS_SUCCESS(0). W przypadku błędu bit ten jest ustawiany na STATUS_ERR(1). packet_type[5..3] reserved Zarezerwowane do przyszłego wykorzystania, powinny być ustawionena0. packet_type[2..0] type_details connection_id Znaczenie zależy od ustawienia bitów direction_bit i error_bit. Szczegóły w poniższych sekcjach. Dowolny ciąg 16 bitów ułatwiający rozróżnianie sesji klienta. Znacznik ten ustanawia klient. Serwer rozróżnia zapytania na podstawie klucza(numer ip klienta, port klienta, connection id klienta). Ma to ułatwić klientowi odfiltrowanie zagubionych pakietów z poprzednich zapytań. 4 Opis wymienianych komunikatów Komunikaty występują w czterech grupach określanych przez możliwe kombinacje ustawień bitów direction_bit i error_bit. Każdy typ komunikatu ma specyficzne wartości type_details. 5

4.1 Klient do serwera, STATUS SUCCESS Zdefiniowany jest tylko jeden typ komunikatu: zapytanie o cytat. Odpowiada mu type_details = TYPE_REQUEST_QUOTE(1). Komunikat ten składa się z podstawowego nagłówka rozszerzonego o pole max_payload_length: packet_request{ uint8_t proto_version; /********************** uint8_t packet_type; * Podstawowy nagłówek uint16_t connection_id; **********************/ }; uint16_t max_payload_length; max_payload_length Określa maksymalną akceptowalną przez klienta wartość pola payload_length. Klient uznaje za błędną odpowiedź serwera nie przestrzegającą zadeklarowanego max_payload_length 4.2 Klient do serwera, STATUS ERR Komunikaty tego typu nie powinny pojawiać się w ruchu. Wysyłanie błędnych zapytań nie ma sensowej interpretacji. 4.3 Serwer do klienta, STATUS SUCCESS Dla udanej odpowiedzi serwera zdefiniowane są dwa typy komunikatów. 1. Odpowiedź jedno-pakietowa. type_details = TYPE_FOUND_QUOTE(1) Pakiet tego typu oprócz podstawowego nagłówka zawiera pole payload_length, oraztreśćcytatuwpoludata: packet_resp_single_packet{ uint8_t proto_version; /********************** uint8_t packet_type; * Podstawowy nagłówek uint16_t connection_id; **********************/ }; uint16_t payload_length; octet[payload_length] data; 2. Odpowiedź wielo-pakietowa. type_details = TYPE_FOUND_QUOTE_MULTI_PACKET(2) Pakiet tego typu zawiera zarówno podstawowy nagłówek, pola quote_position, quote_length, payload_length jak i część treści cytatu w polu data. 6

packet_resp_multi_packet{ uint8_t proto_version; /********************** uint8_t packet_type; * Podstawowy nagłówek uint16_t connection_id; **********************/ }; uint16_t quote_position; uint16_t quote_length; uint16_t payload_length; octet[payload_length] data; Opisy pól: quote_position Określa numer pakietu w obrębie jednej odpowiedzi. quote_length Określa ilość pakietów w wielo-pakietowej odpowiedzi(powinno być stałe w obrębie jednej odpowiedzi; zmianę tej liczby klient powinien uznać za błąd). payload_length data Określa długość pola data. Wypełnia całą przestrzeń pakietu poza nagłówkiem(czyli poza polami proto_version, packet_type, connection_id, payload_length oraz poza polami quote_position, quote_length, o ile występują). Przechowuje cytat(lub część cytatu w przypadku odpowiedzi wielopakietowej). Cytatem jest dowolny napis zakodowany w UTF-8. 4.4 Serwer do klienta, STATUS ERR Komunikaty informujące klienta o wystąpieniu różnego rodzaju błędów. Pakiety te składają się wyłącznie z podstawowego nagłówka. Zdefiniowane są trzy typy błędów. 1. Nieznana wersja protokołu. type_details = TYPE_ERR_PROTO_UNSUPPORTED(1) Odpowiedź serwera po otrzymaniu nieznanej wersji protokołu(proto_version!= PROTO_VERSION). 2. Nie znaleziono cytatu. type_details = TYPE_ERR_NOT_FOUND(2) Odpowiedź serwera po otrzymaniu żądania cytatu przy jednoczesnym braku cytatów w bazie. 7

3. Niezrozumiałe polecenie. type_details = TYPE_ERR_UNKNOWN_COMMAND(3) Odpowiedź serwera po otrzymaniu niezrozumiałego polecenia. 5 Podsumowanie używanych numerów PROTOVERSION=1 UDPPORT=19019 CLIENT TIMEOUT = 2000[ms] DIRECTION REQUEST = 0 DIRECTION RESPONSE = 1 STATUS SUCCESS = 0 STATUSERR=1 TYPEREQUESTQUOTE=1 TYPEFOUNDQUOTE=1 TYPEFOUNDQUOTEMULTIPACKET=2 TYPE ERR PROTO UNSUPPORTED = 1 TYPEERRNOTFOUND=2 TYPEERRUNKNOWNCOMMAND=3 8