vyuka:psi:cviceni:uloha2-zadani

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vyuka:psi:cviceni:uloha2-zadani [2012/02/13 10:02] – [Termín a způsob odevzdání] kubrvyuka:psi:cviceni:uloha2-zadani [2019/12/19 15:08] (current) – [Bodování] kubr
Line 1: Line 1:
 ====== Úloha č.2 - UDP Klient ====== ====== Úloha č.2 - UDP Klient ======
 +  * {{:vyuka:psi:cviceni:uloha2-udp.pdf|Zadání pro rok 2013/2014}}
  
 ===== Situace ===== ===== Situace =====
Line 24: Line 25:
  
 ^identifikátor 'spojení'^sekvenční číslo^číslo potvrzení^příznak^data^ ^identifikátor 'spojení'^sekvenční číslo^číslo potvrzení^příznak^data^
-|4B|2B|2B|1B|0-256B|+|4B|2B|2B|1B|0-255B|
  
   * identifikátor 'spojení' - vygenerovaný serverem (pro umožnění transportu dat více souborů najednou),   * identifikátor 'spojení' - vygenerovaný serverem (pro umožnění transportu dat více souborů najednou),
Line 42: Line 43:
 === Příznaky === === Příznaky ===
 ^číslo bitu^7^6^5^4^3^  2  ^  1  ^  0  ^ ^číslo bitu^7^6^5^4^3^  2  ^  1  ^  0  ^
-|příznak|  -  |  -  |  -  |  -  |  -  |  RST   FIN  |  SYN  |+|příznak|  -  |  -  |  -  |  -  |  -  |  SYN   FIN  |  RST  |
  
 ^příznak^význam^ ^příznak^význam^
Line 61: Line 62:
 ==== Data ==== ==== Data ====
  
-Délka dat je určena velikostí paketu mínus velikost hlavičky. Poslat lze najednou maximálně 256 bytů dat, takže nejmenší velikost datagramu je 9 B (pouze hlavička) a největší 9 + 256 265 B. Data lze poslat pouze v paketu bez nastaveného příznaku FIN a RST. Pokud má paket nastaven příznak SYN, musí být v datové část 1 byte s kódem příkazu.+Délka dat je určena velikostí paketu mínus velikost hlavičky. Poslat lze najednou maximálně 255 bytů dat, takže nejmenší velikost datagramu je 9 B (pouze hlavička) a největší 9 + 255 264 B. Data lze poslat pouze v paketu bez nastaveného příznaku FIN a RST. Pokud má paket nastaven příznak SYN, musí být v datové část 1 byte s kódem příkazu.
  
 Data poslaná klientem i serverem se v číslují pomocí sekvenčního čísla, avšak pouze tehdy, pokud není nastaven žádný příznak (zejména SYN). Data poslaná klientem i serverem se v číslují pomocí sekvenčního čísla, avšak pouze tehdy, pokud není nastaven žádný příznak (zejména SYN).
Line 92: Line 93:
 Data lze posílat až po navázání spojení. Posílání dat je neslučitelné s nastavováním libovolných příznaků (SYN, RST, FIN) (v této terminologii nechápeme příkaz v prvním paketu poslaným klientem jako data). V dalším textu nazveme vysílačem tu stranu, která data odesílá a přijímačem protistranu. Data lze posílat až po navázání spojení. Posílání dat je neslučitelné s nastavováním libovolných příznaků (SYN, RST, FIN) (v této terminologii nechápeme příkaz v prvním paketu poslaným klientem jako data). V dalším textu nazveme vysílačem tu stranu, která data odesílá a přijímačem protistranu.
  
-Pokud posílá některá ze stran soubor dat delší než 256 bajtů //(což je v této uloze vždy)//, používá se okénkové potvrzovací schéma s fixní velikostí okénka W = 2048 bytů a timeoutem Tout = 100 ms.+Pokud posílá některá ze stran soubor dat delší než 255 bajtů //(což je v této úloze vždy)//, používá se okénkové potvrzovací schéma s fixní velikostí okénka W = 2040 bytů a timeoutem Tout = 100 ms.
  
 Vysílač se snaží mít v komunikačním kanále právě tolik nepotvrzených bytů odesílaného proudu dat, jako je velikost okénka. Při zahájení komunikace zapíše do kanálu W bytů a čeká na potvrzení. Přijímač reaguje na všechny příchozí pakety odesláním potvrzovacího paketu (paketu s nastaveným potvrzovacím číslem). Potvrzovací číslo popisuje pořadové číslo očekávaného bytu v proudu přijímaných dat, takže každé potvrzovací číslo potvrzuje příjem všech dat až do tohoto pořadového čísla (bez něj). Pokud přijme přijímač data mimo pořadí, zapamatuje si je a odešle potvrzovací číslo nastavené za poslední přijatý byte v proudu dat bez mezer. Jakmile jsou mezery zaplněny nově přijatými daty, posune přijímač potvrzovací číslo tak, aby opět ukazovalo za poslední přijatý byte v celistvém proudu přijímaných dat. Data mimo pořadí jsou tedy nakonec využita, přijímač je však zprvu nepotvrzuje. Potvrzuje vždy pouze přijatý datový proud bez mezer. Vysílač se snaží mít v komunikačním kanále právě tolik nepotvrzených bytů odesílaného proudu dat, jako je velikost okénka. Při zahájení komunikace zapíše do kanálu W bytů a čeká na potvrzení. Přijímač reaguje na všechny příchozí pakety odesláním potvrzovacího paketu (paketu s nastaveným potvrzovacím číslem). Potvrzovací číslo popisuje pořadové číslo očekávaného bytu v proudu přijímaných dat, takže každé potvrzovací číslo potvrzuje příjem všech dat až do tohoto pořadového čísla (bez něj). Pokud přijme přijímač data mimo pořadí, zapamatuje si je a odešle potvrzovací číslo nastavené za poslední přijatý byte v proudu dat bez mezer. Jakmile jsou mezery zaplněny nově přijatými daty, posune přijímač potvrzovací číslo tak, aby opět ukazovalo za poslední přijatý byte v celistvém proudu přijímaných dat. Data mimo pořadí jsou tedy nakonec využita, přijímač je však zprvu nepotvrzuje. Potvrzuje vždy pouze přijatý datový proud bez mezer.
Line 100: Line 101:
 Vysílač si pamatuje čas odeslání posledního paketu (označme T). Pokud server nepřijme do času T + Tout žádné nové potvrzení, které snižuje počet nepotvrzených dat, odešle vysílač W bytů od nevyššího přijatého potvrzovacího čísla (říkáme, že odešle celé okénko). Nastaví také T na novou hodnotu. Vysílač si pamatuje čas odeslání posledního paketu (označme T). Pokud server nepřijme do času T + Tout žádné nové potvrzení, které snižuje počet nepotvrzených dat, odešle vysílač W bytů od nevyššího přijatého potvrzovacího čísla (říkáme, že odešle celé okénko). Nastaví také T na novou hodnotu.
  
-Vysílač posílá vždy maximální možné množství dat v jednom paketu (256 bytů). Vyjímkou je poslední datový paket, který může obsahovat méně dat. +Vysílač posílá vždy maximální možné množství dat v jednom paketu (255 bytů). Vyjímkou je poslední datový paket, který může obsahovat méně dat. 
  
 Pokud vysílač přijme 3x po sobě stejné potvrzovací číslo, odešle ihned do kanálu 1 paket s maximálním možným množstvím dat od pořadového čísla shodného s přijatým potvrzovacím číslem a nastaví T na novou hodnotu. Pokud vysílač přijme 3x po sobě stejné potvrzovací číslo, odešle ihned do kanálu 1 paket s maximálním možným množstvím dat od pořadového čísla shodného s přijatým potvrzovacím číslem a nastaví T na novou hodnotu.
Line 155: Line 156:
  
 ===== Požadavky ===== ===== Požadavky =====
-    * program musí 100% fungovat s protistranou na serveru baryk.fit.cvut.cz (viz níže),+    * program musí 100% fungovat s protistranou na serveru baryk-ng.felk.cvut.cz (viz níže),
     * program musí být stabilní a odolný proti neočekávaným vstupům,     * program musí být stabilní a odolný proti neočekávaným vstupům,
     * přenesený soubor (download i upload) nesmí být poškozen,     * přenesený soubor (download i upload) nesmí být poškozen,
Line 179: Line 180:
  
 ===== ===== ===== =====
-    * každý student má **povinnost průběžně uploadovat aktuální stav svého zdrojového kódu** přes WWW rozhraní serveru [[http://baryk.fit.cvut.cz/cgi-bin/robotudp|Baryk]]. Předpokládá se, že vždy po ukončení práce na programu nahrajete svůj kód na server [[http://baryk.fit.cvut.cz/cgi-bin/robotudp|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).+    * každý student má **povinnost průběžně uploadovat aktuální stav svého zdrojového kódu** přes WWW rozhraní serveru [[http://baryk-ng.felk.cvut.cz/cgi-bin/robotudp|Baryk]]. Předpokládá se, že vždy po ukončení práce na programu nahrajete svůj kód na server [[http://baryk-ng.felk.cvut.cz/cgi-bin/robotudp|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).
  
  
Line 190: Line 191:
 ===== Testování ===== ===== Testování =====
  
-Testovací server běží na baryk.fit.cvut.cz na portu 4000. Proti tomuto serveru můžete zkoušet funkčnost Vašeho řešení klienta. Výsledek testování bude zobrazen na webu serveru [[http://baryk.fit.cvut.cz/cgi-bin/robotudp|Baryk]].+Testovací server běží na baryk-ng.felk.cvut.cz na portu 4000. Proti tomuto serveru můžete zkoušet funkčnost Vašeho řešení klienta. Výsledek testování bude zobrazen na webu serveru [[http://baryk-ng.felk.cvut.cz/cgi-bin/robotudp|Baryk]].
  
 Pro testování uploadu firmwaru do robota využijte poslední verzi firmwaru, která je k dispozici o pár řádek níže. Pro testování uploadu firmwaru do robota využijte poslední verzi firmwaru, která je k dispozici o pár řádek níže.
Line 202: Line 203:
 ===== Ke stažení ===== ===== Ke stažení =====
 ^soubor^odkaz^sha1^ ^soubor^odkaz^sha1^
-|firmware v1.6.0|[[http://baryk.fit.cvut.cz/firmware-karel-1.6.0.bin|firmware-karel-1.6.0.bin]]  |ea0fc5e48008b827f845b427f3ce8ff574db2da8| +|firmware v1.6.0|[[http://baryk-ng.felk.cvut.cz/firmware-karel-1.6.0.bin|firmware-karel-1.6.0.bin]]  |ea0fc5e48008b827f845b427f3ce8ff574db2da8| 
-|kareludp v1.6.- server a klient|[[http://baryk.fit.cvut.cz/kareludp-1.6.2.tar.bz2|kareludp-1.6.2.tar.bz2]]|913197b594a6caa551752085807f2d7c738f35d1|+|kareludp v1.7.- server a klient|[[http://baryk-ng.felk.cvut.cz/kareludp-1.7.0.tar.bz2|kareludp-1.7.0.tar.bz2]]|f3fc2e4e115e976f04005c9a9dfe576aeb15d641|
 ^starší verze^^^ ^starší verze^^^
-|kareludp v1.6.1 - server a klient|[[http://baryk.fit.cvut.cz/kareludp-1.6.1.tar.bz2|kareludp-1.6.1.tar.bz2]]|a238274eb544a7c911ece18d627938be5041e92c| +|kareludp v1.6.4 - server a klient|[[http://baryk-ng.felk.cvut.cz/kareludp-1.6.4.tar.bz2|kareludp-1.6.4.tar.bz2]]|eb1969f518e9590f7662393865ba3c61190ef289| 
-|kareludp v1.6.0 - server a klient|[[http://baryk.fit.cvut.cz/kareludp-1.6.0.tar.bz2|kareludp-1.6.0.tar.bz2]]|176cc437eb0d9546bed79511cca8046089a6f3e7|+|kareludp v1.6.2 - server a klient|[[http://baryk-ng.felk.cvut.cz/kareludp-1.6.2.tar.bz2|kareludp-1.6.2.tar.bz2]]|913197b594a6caa551752085807f2d7c738f35d1| 
 +|kareludp v1.6.1 - server a klient|[[http://baryk-ng.felk.cvut.cz/kareludp-1.6.1.tar.bz2|kareludp-1.6.1.tar.bz2]]|a238274eb544a7c911ece18d627938be5041e92c| 
 +|kareludp v1.6.0 - server a klient|[[http://baryk-ng.felk.cvut.cz/kareludp-1.6.0.tar.bz2|kareludp-1.6.0.tar.bz2]]|176cc437eb0d9546bed79511cca8046089a6f3e7|
  
 +  * [[vyuka:psi:cviceni:virtual-image|Obraz virtuálního stroje pro lokální testování]]
  
 +{{:vyuka:psi:cviceni:03440004.png?direct&300|}}
  
-===== Termín a způsob odevzdání ===== 
-Úlohu je třeba odevzdat do 12. týdne (podle termínu Vašeho cvičení, tj. cvičení, kam jste zapsáni podle rozvrhu). 
  
 +===== Způsob odevzdání =====
 +
 +**Odevzdání je možné pouze do uvedeného deadline.**
  
 Odevzdat lze pouze takový program, který: Odevzdat lze pouze takový program, který:
Line 220: Line 226:
  
 Postup odevzdání: Postup odevzdání:
-  - otestujte svoje řešení na serveru [[http://baryk.fit.cvut.cz/cgi-bin/robotudp|Baryk]]+  - otestujte svoje řešení na serveru [[http://baryk-ng.felk.cvut.cz/cgi-bin/robotudp|Baryk]]
   - připravte si zdrojové texty k nahlédnutí   - připravte si zdrojové texty k nahlédnutí
-  - připravte si internetový prohlížeč na server [[http://baryk.fit.cvut.cz/cgi-bin/robotudp|Baryk]] a připravte se na překlad zdrojového kódu+  - připravte si internetový prohlížeč na server [[http://baryk-ng.felk.cvut.cz/cgi-bin/robotudp|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''   - spusťte terminál, nastavte adresář s Vaší úlohou jako aktuální a zadejte příkaz ''ls -l''
   - zavolejte cvičícího   - zavolejte cvičícího
Line 229: Line 235:
  
 ===== Bodování ===== ===== Bodování =====
-Za úlohu můžete dostat max. bodů. Penalizace:+Za úlohu můžete dostat max. 16 bodů. Penalizace:
   * program neumí stáhnout fotografii: //nelze odevzdat !//   * program neumí stáhnout fotografii: //nelze odevzdat !//
-  * program neumí provést upload firmwaru: -4+  * program neumí provést upload firmwaru: -8
   * nebylo korektně uzavřeno spojení: -1   * nebylo korektně uzavřeno spojení: -1
   * chybně implementovaný okénkový protokol: dle povahy -1 až -4   * chybně implementovaný okénkový protokol: dle povahy -1 až -4
Line 239: Line 245:
   * nečistý zdrojový kód: -1   * nečistý zdrojový kód: -1
   * zdrojový kód nebyl průběžně uploadován na server Baryk: -5   * zdrojový kód nebyl průběžně uploadován na server Baryk: -5
 +  * za každý týden zpoždění (nelze odevzdat po deadline): -1
 +
  
 ===== Literatura ===== ===== Literatura =====
Line 256: Line 264:
   * [[http://www.earchiv.cz/a93/a315c110.php3|Transportní rozhraní - BSD sockets]]   * [[http://www.earchiv.cz/a93/a315c110.php3|Transportní rozhraní - BSD sockets]]
   * **[[http://www.developerweb.net/forum/forumdisplay.php?f=70|Unix sockets FAQ - vynikající]]**   * **[[http://www.developerweb.net/forum/forumdisplay.php?f=70|Unix sockets FAQ - vynikající]]**
- 
  
  • vyuka/psi/cviceni/uloha2-zadani.1329127365.txt.gz
  • Last modified: 2012/02/13 10:02
  • by kubr