Differences
This shows you the differences between two versions of the page.
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í] kubr | vyuka: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 ====== | ||
+ | * {{: | ||
===== Situace ===== | ===== Situace ===== | ||
Line 24: | Line 25: | ||
^identifikátor ' | ^identifikátor ' | ||
- | |4B|2B|2B|1B|0-256B| | + | |4B|2B|2B|1B|0-255B| |
* identifikátor ' | * identifikátor ' | ||
Line 42: | Line 43: | ||
=== Příznaky === | === Příznaky === | ||
^číslo bitu^7^6^5^4^3^ | ^číslo bitu^7^6^5^4^3^ | ||
- | |příznak| | + | |příznak| |
^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ě | + | Délka dat je určena velikostí paketu mínus velikost hlavičky. Poslat lze najednou maximálně |
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 |
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:// | + | * každý student má **povinnost průběžně uploadovat aktuální stav svého zdrojového kódu** přes WWW rozhraní serveru [[http:// |
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:// | + | 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:// |
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:// | + | |firmware v1.6.0|[[http:// |
- | |kareludp v1.6.2 - server a klient|[[http:// | + | |kareludp v1.7.0 - server a klient|[[http:// |
^starší verze^^^ | ^starší verze^^^ | ||
- | |kareludp v1.6.1 - server a klient|[[http:// | + | |kareludp v1.6.4 - server a klient|[[http:// |
- | |kareludp v1.6.0 - server a klient|[[http:// | + | |kareludp v1.6.2 |
+ | |kareludp v1.6.1 - server a klient|[[http:// | ||
+ | |kareludp v1.6.0 - server a klient|[[http:// | ||
+ | * [[vyuka: | ||
+ | {{: | ||
- | ===== 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:// | + | - otestujte svoje řešení na serveru [[http:// |
- 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:// | + | - připravte si internetový prohlížeč na server [[http:// |
- spusťte terminál, nastavte adresář s Vaší úlohou jako aktuální a zadejte příkaz '' | - spusťte terminál, nastavte adresář s Vaší úlohou jako aktuální a zadejte příkaz '' | ||
- zavolejte cvičícího | - zavolejte cvičícího | ||
Line 229: | Line 235: | ||
===== Bodování ===== | ===== Bodování ===== | ||
- | Za úlohu můžete dostat max. 8 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:// | * [[http:// | ||
* **[[http:// | * **[[http:// | ||
- | |||