Virtlab:Protokoly/Aktivační server
Z VirtlabWiki
(Rozdíly mezi verzemi)
												
			
			| Verze z 22:28, 1. 8. 2007 Bam015 (Diskuse | příspěvky) ← Předchozí porovnání  | 
				Verze z 14:33, 3. 8. 2007 Dol72 (Diskuse | příspěvky) (→Poznámky - V kódu bylo upraveno tak, že jiné signály jsou pokládány za neplatné.) Následující porovnání →  | 
			||
| Řádka 38: | Řádka 38: | ||
| - | === Poznámky === | + | === Poznámka === | 
| - | # Volba příkazu <code>kill</code> a číselných kódů přímo vyplývá ze způsobu realizace oddělení serverů původně komunikujících skrze funkci OS [http://en.wikipedia.org/wiki/Kill_(Unix) kill]. | + | Volba příkazu <code>kill</code> a číselných kódů přímo vyplývá ze způsobu realizace oddělení serverů původně komunikujících skrze funkci OS [http://en.wikipedia.org/wiki/Kill_(Unix) kill]. | 
| - | # Kód aktivačního serveru '''zatím''' není ošetřen proti [http://en.wikipedia.org/wiki/Denial-of-service_attack DoS] útoku, který lze úspěšně realizovat odesláním signálu pro ukončení programu (9, 15)! V původní implementaci byl SIGTERM skutečně využíván pro ukončení aktivačního serveru (child process) rezervačním (parent). Situaci lze ošetřit buď pomocí iptables nebo kontrolou argumentů předávaných příkazem <code>kill</code> a navržením jiného mechanismu pro ukončení aktivačního serveru (je-li nějaký mechanismus pro ukončování vůbec nutný - postačilo by například, aby jej obsluha prostě killnula ručně). | + | |
Verze z 14:33, 3. 8. 2007
Tento článek popisuje komunikační prokokol mezi rezervačním a aktivačním serverem distribuovaného Virtlabu.
Obsah | 
Vlastnosti
- Textově orientovaný protokol.
 - Textové příkazy, oddělené <LF> (0x0A), (symbol <CR> (0x0D) je ignorován)
 - Komunikace přes TCP spojení, standardně na portu 50002.
 - Pro názvy příkazů a jména argumentů nerozlišuje velká a malá písmena (case insensitive).
 - První řádek a každý další první po prázdném řádku určuje příkaz, následující řádky jeho argumenty.
 - Na pořadí argumentů nezáleží a jsou case-insensitive.
 - Za názvem argumentu je dvojtečka, za kterou ihned nasledují jeho parametry, za dvojtečkou nesmí být mezera.
 - Bílé znaky (whitespace), jako tabelátory (0x09), mezery (0x20) nejsou povoleny, slouží jako oddělovače. parametrů pro argumenty. Výjimku tvoří mezery a tabelátory před názvem příkazu a argumentu. Tyto jsou odfiltrovány.
 - Odeslání prázdného řádku (jen <LF> (0x0A)), potvrdí, že všechny argumenty byly odeslány a je možno zpracovat příkaz.
 - Po odeslání prázdného řádku je možno psát další příkaz.
 - Spojení ukončeno vždy na žádost klienta, mimo speciální případy, kdy rezervační server přijímaným datům nerozumí, nebo je klient připojen příliš dlouho.
 - Při odpovědi serveru na příkaz je na prvním řádku návratový kód, mezera a za ní popis odpovědi.
 
Popis protokolu
Pokyn rezervačního serveru aktivačnímu serveru ke znovunačtení databáze
- Příkaz: "kill\n"
 - Argument (povinný): "kill:10\n"
 - Odpověď: Návratový kód.
 
Příklad:
kill\n kill:10\n \n
Pokyn rezervačního serveru aktivačnímu serveru k ukočení činnosti
- Příkaz: "kill\n"
 - Argument (povinný): kill:15\n"
 - Odpověď: Návratový kód.
 
Příklad:
kill\n kill:15\n \n
Poznámka
Volba příkazu kill a číselných kódů přímo vyplývá ze způsobu realizace oddělení serverů původně komunikujících skrze funkci OS kill.
