Úloha č.1 - TCP Server



Podobné dokumenty
Automatický odevzdávací server

Instalace a první spuštění Programu Job Abacus Pro

Průvodce instalací modulu Offline VetShop verze 3.4

SPINEL. Komunikační protokol. Obecný popis. Verze 1.0

Popis programu EnicomD

TFTP Trivial File Transfer Protocol

Ares 10/12 První spuštění

Základy programování (IZP)

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky UPS. FTP Klient. A05463 fboranek@atlas.

Počítačové sítě Systém pro přenos souborů protokol FTP

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava

Quido - Telnet. Popis konfigurace modulů Quido protokolem Telnet. 3. srpna 2007 w w w. p a p o u c h. c o m

Elektronická pošta. elementární služba, výchozí pro některé další jedna z prvních síťových služeb vůbec. základní principy popisují

1 Uživatelská dokumentace

VYÚČTOVÁNÍ DANĚ ZE ZÁVISLÉ ČINNOSTI, SRÁŽKOVÉ DAŃE

ČSOB Business Connector Instalační příručka

PŘÍKAZ K ZADÁNÍ SEPA PLATBY V APLIKACI MULTICASH KB

Manuál pro nastavení a instalaci vzdáleného tisku SŠ Kostka s.r.o.

Návod pro použití Plug-in SMS Operátor

Informační manuál PŘIHLÁŠENÍ DO SÍTĚ NOVELL (ZAMĚSTNANEC, DOKTORAND)

Dispatcher PDA Dokumentace

ČSOB Business Connector instalační příručka

Úvod do počítačových sítí

TMU. USB teploměr. teploměr s rozhraním USB. měření teplot od -55 C do +125 C. 26. května 2006 w w w. p a p o u c h. c o m

Software pro vzdálenou laboratoř

Monitorovací systém ALA

XL-IPM-301W(I/T) Bezdrátové ovládání zásuvek 230V

První kroky po instalaci programu. Nastavení údajů k provozovně

Panel IPP. Ovladač řídící jednotka

Postup instalace síťové verze Mount Blue

Analýza aplikačních protokolů

People Counter v2. Ver. 2.0

Web SubmissionCan21. Návod k obsluze. ImagePress Helix Web Submission WEB PRINT

Nestandardní režimy tisku

Uživatelská příručka pro respondenty

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Operační systémy. Cvičení 1: Seznámení s prostředím

PRT3 tiskový modulu manuál pro EVO ústředny

Příručka rychlého nastavení snímání do u

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

DŮLEŽITÉ INFORMACE, PROSÍM ČTĚTE!

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Přímý kanál. První kroky se službou Přímý kanál

Artlingua Translation API

Postup nastavení: 1. Spusťte Mozilla Thunderbird Z horního menu vyberte Nástroje a v nabídce následně Nastavení účtu

Úvod, jednoduché příkazy

1. Připojení k Internetu

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

1. Připojení k Internetu

UF300 třístupňová napěťová a frekvenční ochrana

Elektronická evidence tržeb v programu TRIFID

Komunikační protokol LED tabule

Praktikum WIFI. Cíl cvičení:

VZDÁLENÉ PŘIPOJENÍ - OpenVPN. Popis a vlastnosti služby

ČSOB Business Connector

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Uživatelská příručka. Internet Map Server verze 1.5.4

NSA GB HDD. Příručka k rychlé instalaci. Multimediální server s jedním diskem. Výchozí přihlašovací údaje. Webová adresa: nsa310 Heslo: 1234

CERTIFIKOVANÉ TESTOVÁNÍ (CT) Výběrové šetření výsledků žáků 2014

CON-LAN. Komunikační převodník tf hit <-> Ethernet. Kompletní příručka

Analýza síťového provozu. Ing. Dominik Breitenbacher Mgr. Radim Janča

1. DATOVÉ SCHRÁNKY OBECNÝ PŘÍSTUP K DATOVÉ SCHRÁNCE DATOVÉ ZPRÁVY... 3

Uživatelský manuál Citfin, spořitelní družstvo Potřebujete poradit? Volejte infolinku nebo pište na

Uživatelský manuál Citfin Finanční trhy, a.s. Potřebujete poradit? Volejte infolinku nebo pište na

Systém elektronické evidence návštěvnosti TDL500

BRICSCAD V15. Licencování

Modul účetnictví: Kontrolní výkaz DPH (SK) Podklady ke školení

1. Instalace MySQL Serveru Konfigurace MySql Serveru Vytvoření struktury databáze...3

Průvodce studenta WebCT

Uživatelská dokumentace

plussystem Příručka k instalaci systému

Manuál Multitag čtečka

MIDAM Verze 1.1. Hlavní okno :

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Faxový server společnosti PODA s.r.o.

AUTOMATICKÉ ZÁLOHOVÁNÍ DATABÁZE PRO SQL Express 2005

UŽIVATELSKÁ PŘÍRUČKA PRO HOMEBANKING PPF banky a.s.

SEMESTRÁLNÍ PROJEKT Y38PRO

Uživatelská příručka k portálu Společnost pro kvalitu školy, o. s. část třetí. testování žáků

PREMIER E Agent. Jak to funguje?

Administrace služby IP komplet premium

Instrukce pro vzdálené připojení do učebny 39d

Uživatelská příručka pro respondenty

Přenos souborů pomocí AceFTP (pdf verze pro tisk KB)

Administrace služby IP komplet premium

Uživatelský modul. Modem Bonding

UŽIVATELSKÁ PŘÍRUČKA PRO HOMEBANKING PPF banky a.s.

Dokumentace. k modulu. podnikový informační systém (ERP) Datové schránky

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

Internet. Jak funguje internet. Internetový prohlížeč

Pˇ ríruˇ cka uživatele Kerio Technologies

Webové hlášení pracovišť vyšetřujících HIV o počtu provedených vyšetření

Citrix klient a OneTimePass moje.cpas.cz. Uživatelský návod pro interní uživatele České pojišťovny a.s.

XTB VPS. XTB Virtual Private Server manuál

PŘÍRUČKA SÍŤOVÝCH APLIKACÍ

Komunikační protokol

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

Transkript:

Úloha č.1 - TCP Server Situace Na planetě Mars bylo vypuštěno několik průzkumných robotů. Roboti posílají informace ze senzorů a fotografie okolí na stacionární družici na oběžné dráze. Nastřádané informace jsou později družicí odeslány k Zemi. Bohužel však nejsou roboti na povrchu planety sami. Na komunikační server na družici se neustále kdosi pokouší připojovat, prolámat ochrany a server kompromitovat. Nevíme, zda se jedná o konkurenci nebo o cizí formu života, v každém případě je třeba server chránit a striktně dodržovat komunikační protokol. Implementujte server běžící na družici, který bude od robotů přijímat a ukládat informace. Obecné schema komunikace Komunikační protokol je postaven nad transportním protokolem TCP. Server naslouchá na portu, který je zvolen v intervalu 3000 až 3999 (včetně). Protokol je textově orientovaný a lze jej vyzkoušet např. pomocí příkazu telnet adresa_serveru 3999 (v případě portu 3999). Server očekává, že se k němu budou připojovat jednotliví klienti (roboti). Server si po navázání spojení klientem vyžádá autorizaci a autentizaci robota pomocí hesla. Poté může server přijmout informace ze senzorů a načíst fotografie okolí (pokud ji robot pošle). Po odpojení klienta nebo při porušení pravidel protokolu (detekováno na straně serveru) je spojení ukončeno. Na server se může připojovat více robotů najednou a je třeba je obsloužit tak, aby komunikace s jedním robotem neblokovala komunikaci s jiným robotem. Klient robot pošle svoje uživatelské jméno robot pošle svoje heslo ---------- connect -----------> <--------- zpráva 200 --------- ---------- zpráva U ----------> <--------- zpráva 201 --------- ---------- zpráva P ----------> Server server si vyžádá zadání uživatelského jména server si zapamatuje zaslané uživatel. jméno (v této fázi neprovádí žádnou kontrolu povolených znaků a délky uživatelského jména) server si zkontroluje poslané uživatelské jméno a heslo. <--------- zpráva 500 --------- NEBO Pokud kontrola selhala, bude odeslána zpráva 500 a spojení bude ze strany serveru ukončeno. close() Pokud prošla kontrola bez chyby, bude odeslána zpráva 202.

Robot může nyní poslat informace ze senzorů a odeslat fotografie okolí. Lze podeslat libovolný počet zpráv I a F. ---------- zpráva I ----------> Pokud nesedí syntaxe zprávy I, bude odeslána zpráva 501 a spojení bude ukončeno. další zpráva a také fotografie ---------- zpráva I ----------> ---------- zpráva F ----------> Zpráva je uložena do logu, zpátky bude odeslána zpráva 202. Pokud nesedí syntaxe zprávy I, bude odeslána zpráva 501 a spojení bude ukončeno. Zpráva je uložena do logu, zpátky bude odeslána zpráva 202. Pokud nesedí syntaxe zprávy F, bude odeslána zpráva 501 a spojení bude ukončeno. Zpráva F obsahuje kontrolní součet, ten je třeba zkontrolovat. Pokud součet nesedí, bude odeslána zpráva 300, spojení nebude ukončeno, zpráva však nebude uložena na disk. Robot pokračuje v odesílání zpráv I a F, nakonec spojení uzavře. close() Jinak bude fotografie uložena na disk a server odešle zprávu 202. Server reaguje uzavřením spojení close() Spojení musí být ukončeno do 45 sekund, jinak bude ze strany serveru násilně ukončeno (zpráva 502). Struktura posílaných zpráv Zprávy poslané klientem zpráva význam syntaxe U uživatelské jméno robota řetězec znaků zakončený \r\n (tj. hexadecimálně 13h a 10h). Není kladeno žádné omezení na délku nebo obsah tohoto řetězce (nesmí pouze obsahovat \r\n, protože touto sekvencí je zpráva zakončena).

P heslo robota řetězec znaků zakončený \r\n (tj. hexadecimálně 13h a 10h). Není kladeno žádné omezení na délku nebo obsah tohoto řetězce (nesmí pouze obsahovat \r\n, protože touto sekvencí je zpráva zakončena). Povolená uživatelská jména a hesla jsou uvedena níže. I informace ze senzorů INFO <mezera> <libovolný řetězec znaků> \r\n F fotografie okolí FOTO <mezera> <délka fotografie> <mezera> <data> <kontrolní součet> Poznámky ke zprávě I Za klíčovým slovem INFO následuje mezera a poté libovolný řetězec znaků neobsahující \r\n. Tento řetězec nemá omezenou velikost. Zpráva je ukončena sekvencí \r\n. Příklad zprávy I: INFO Teplotní senzor č.3 se porouchal.\r\n Poznámky ke zprávě F Délka fotografie se udává dekadickým zápisem v počtu bytů posílaného obrázku (bez kontrolního součtu). Tolik bytů dat je třeba přijmout a uložit do souboru. Délka musí být kladná nenulová. Délka není shora omezena. Data jsou binární povahy a obsahují fotografii okolí. Toto fotografii je třeba uložit do souboru. Kontrolní součet následuje bezprostředně za koncem posílané fotografie. Jedná se o 4 byty ve formátu Big Endian (nejdříve se posílá nejvýznamnější byte slova). Kontrolní součet spočítáte jako součet všech jednotlivých bytů fotografie. Příklad zprávy F: FOTO 2775 @xfv8aw**<%#cd^aa...(celkem 2775 bytů binárních dat) (4 byty kontrolního součtu) Příklad krátké zprávy F pro demonstraci výpočtu kontrolního součtu: FOTO 8 ABCDEFGH\x00\x00\x02\x24 Kontrolní součet je 65+66+67+68+69+70+71+72=548 (hex 224), tj. v binárním zápise v kódování Big Endian: <00h> <00h> <02h> <24h>. V tomto příkladu je zápisem \xhh označen 1 byte s hexadecimální hodnotou HH. Zprávy poslané serverem zpráva význam syntaxe 200 požadavek na zadání uživatelského jména 200 <mezera> LOGIN \r\n 201 požadavek na zadání hesla 201 <mezera> PASSWORD \r\n 202 server je připraven přijmout zprávu 202 <mezera> OK \r\n 300 chybný kontrolní součet 300 <mezera> BAD CHECKSUM \r\n 500 neplatné uživatelské jméno nebo heslo 500 <mezera> LOGIN FAILED \r\n 501 chyba syntaxe zprávy I nebo F 501 <mezera> SYNTAX ERROR \r\n 502 timeout (45 sekund od zahájení spojení) 502 <mezera> TIMEOUT \r\n Po odeslání zprávy 500,501 a 502 je vždy ze strany serveru uzavřeno spojení. Po odeslání zprávy 300 se spojení neukončí, avšak fotografie není uložena do souboru. Zpráva 501 se posílá ihned po detekování chybné syntaxe (např. místo I (INFO) nebo F (FOTO) přijde

znak X). Pozor na telnet, zapsaná řádka je odeslána až po stisku klávesy ENTER. Příklad komunikace kurzíva = text zobrazený v terminálu při spuštění a po ukončení spojení tučně = server (družice) normálně = klient (robot) Sekvence \r\n jsou zobrazeny jako konce řádků. xsmitka@fray1:/home/zam/xsmitka>telnet baryk.fit.cvut.cz 3999 Trying 147.32.232.173 Connected to baryk.fit.cvut.cz. Escape character is '^]'. 200 LOGIN Robot Emil cislo 33 201 PASSWORD 1645 INFO 2014-02-19 03:34 nefunkční čidlo tlaku INFO 2014-02-19 03:35 blíží se jiný robot INFO 2014-02-19 03:38 jiný robot atakován, získáno čidlo tlaku FOTO 3068..3068 bytu dat + 4 byty kontrolního součtu.. ^]q telnet> q Connection closed. xsmitka@fray1:/home/zam/xsmitka> Komentář: Spojení se v telnetu ukončí Ctrl+] a potom q a ENTER. Jiný příklad: xsmitka@fray1:/home/zam/xsmitka>telnet baryk.fit.cvut.cz 3999 Trying 147.32.232.173 Connected to baryk.fit.cvut.cz. Escape character is '^]'. 200 LOGIN Robot Karel 201 PASSWORD 1045 INFO 2014-02-19 03:34 nefunkční čidlo tlaku INFOblablabla 501 SYNTAX ERROR Connection closed by foreign host. xsmitka@fray1:/home/zam/xsmitka> Uživatelská jména a hesla Jednotliví roboti se musí přihlásit svým jménem a heslem. Protože sonda nemůže znát všechny roboty (někteří mohou být vyrobeni později než sonda), bylo rozhodnuto, že přihlašovací jména a

hesla budou mít následující tvar: Uživatelské jméno: Robot <libovolný řetězec neobsahující sekvenci \r\n> Heslo: <součet ascii hodnot jednotlivých bytů uživatelského jména zapsaných v dekadické formě> Příklad: Robot345 / 674 Požadavky programuje se pouze serverová část (nikoliv klienti, tedy roboti), server musí 100% fungovat s klientem na serveru baryk.fit.cvut.cz (viz níže), klient má možnost navázat se stejným serverem více spojení paralelně i postupně za sebou (bez restartu serveru), server musí být stabilní a odolný proti neočekávaným vstupům, program by měl vypisovat alespoň základní informace o svém stavu (např. posílané a přijímané příkazy či odpovědi), použitý port se zadává jako parametr v příkazové řádce při spuštění klienta (tzn. že hodnota portu není konstantou ve zdrojového kódu), syntaxe viz níže, server musí vypisovat informace o aktuálně obslouženém klientovi (aby bylo možno říct, komu byla odpověď odeslána), zdrojový text musí být komentovaný, v hlavičce všech zdrojových textů musí být uveden autor, povolené programovací jazyky jsou následující: Java, C, C++. při implementaci pište vše do jednoho zdrojového souboru. Tento soubor můžete pojmenovat jakkoliv, avšak s příponou.c,.cpp nebo.java. Tyto soubory musí být přeložitelné řádkovým překladačem (gcc/g++/javac). Odevzdává se pouze tento jeden zdrojový kód, neimplementujte tedy nic do dalších souborů mimo něj. pokud použijete jazyk Java, napište na začátek zdrojového textu package robot a třídu s metodou main pojmenujte Robot. Můžete použít připravenou šablonu, která je k dispozici ke stažení mezi příklady programů. po spuštění si program musí načíst z příkazové řádky číslo portu:./robot <port> kde <port> je číslo portu, na kterém server naslouchá. každý student má povinnost průběžně uploadovat aktuální stav svého zdrojového kódu přes WWW rozhraní serveru baryk.fit.cvut.cz. Předpokládá se, že vždy po ukončení práce na programu nahrajete svůj kód na server Baryk. Také se předpokládá, že pokud k danému dni není záznam o uploadu Vašeho programu, tak jste na programu tento den nepracoval(a). Jinak řečeno, uploadováním svého programu vykazujete činnost (stejně jako v komerčním prostředí) a zároveň se chráníte před obviněním z nepoctivého jednání (přečtěte si obecné požadavky na úlohy na hlavní stránce předmětu). Implementační poznámky nepoužívejte pro komunikaci metodu PrintStream.println(příkaz). Zjednodušeně udělá ekvivalent následujícího: print(příkaz + System.getProperty( line.separator ), kde line.separator je na různých platformách různý.

Používejte metody, které znáte a víte přesně, co dělají. BufferedReader.readLine() se pro server opravdu nehodí, viz Javadoc - BufferedReader.readLine() [http://java.sun.com/javase/6/docs /api/java/io/bufferedreader.html#readline()] Testování Testování klienta Referenční server pro první úlohu běží na adrese baryk.fit.cvut.cz na portu 3999. Funkčnost serveru lze ověřit zadáním příkazu: telnet baryk.fit.cvut.cz 3999 Testování serveru Testování Vašeho serveru testovacím klientem není možné provádět přímo z učebny (neprojde NATem). Proto bylo na serveru Baryk vyrobeno rozhraní, přes které můžete uploadovat svůj zdrojový kód a Baryk jej: 1. 2. 3. 4. zaarchivuje přeloží spustí v roli serveru na požádání otestuje Překlad bude proveden podle použitého jazyka takto: C gcc -o robot source.c -lpthread C++ g++ -o robot source.c -lpthread Java javac source.java Pokud není Váš počítač schován za NATem, lze v rámci sítě ČVUT využít i testování přes síť. Na webové stránce http://baryk.fit.cvut.cz/cgi-bin/robottcp [http://baryk.fit.cvut.cz/cgi-bin/robottcp] zadáte IP adresu a port, na kterém běží Vaše implementace serveru. Po odeslání této informace bude Váš server otestován naším klientem. Výsledek bude zobrazen. K dispozici máte seznam nejčastějších chyb, které mohou při testování nastat, a jejich popis. Termín a způsob odevzdání Za každý týden prodlení je penalizace -0,5 bodu (jako přelom týdne se počítá konec cvičení). Odevzdat lze pouze takovou úlohu, která splňuje minimální požadavky (za 0 bodů): je přeložitelná na serveru baryk.fit.cvut.cz dokáže přijmout spojení od klienta a přijmout jeho uživatelské jméno) Postup odevzdání: 1. 2. 3. 4. otestujte svoje řešení proti klientovi na serveru Baryk připravte si zdrojové texty k nahlédnutí připravte si internetový prohlížeč na server Baryk a připravte se na překlad zdrojového kódu spusťte terminál, nastavte adresář s Vaší úlohou jako aktuální a zadejte příkaz ls -l

5. zavolejte cvičícího Bodování Za úlohu můžete dostat max. 8 bodů. Penalizace: server nezpracovává požadavky klienta paralelně: -3 chybně implementovaný protokol: -4 nestabilita: -3 malá odolnost vůči nestandardním vstupům: -3 klient nevyzvedává tajemství plně automaticky: -4 chyby v programu, které se neprojevily přímo: dle povahy -1 až -5 nečistý zdrojový kód: -1 zdrojový kód nebyl průběžně uploadován na server Baryk: -5 Literatura Průzkumní roboti na Marsu [http://marsrovers.jpl.nasa.gov/home/index.html] Motivační vystřihovánka [http://www.abicko.cz/clanek/vystrihovanky/5447/kosmicky-pruzkumny-robotspirit.html] /mnt/www/courses/bi-psi/data/pages/uloha1.txt Poslední úprava: 2014/02/17 11:28 autor: xsmitka