Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| vyuka:cviceni:x36los:uloha2-zadani [2007/03/07 13:47] – misko | vyuka:cviceni:x36los:uloha2-zadani [2012/04/07 10:52] (current) – kubr | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== X36LOS: Úloha 2 ====== | ====== X36LOS: Úloha 2 ====== | ||
| - | Navrhněte a implementujte program pracující nad rozhraním ovladačů síťové karty (Win), RAW socket (Linux), který si zjistí ip-adresu počítače pomocí BOOTP protokolu (RFC951) a dále nabídne jednu z následujících služeb nad UDP (RFC768) nebo ICMP (RFC792). Implementujte zjednodušenou verzi IP (RFC791, RFC1071) bez fragmentace a IP-options. | + | Navrhněte a implementujte program pracující nad rozhraním ovladačů síťové karty (Win), RAW socket (Linux), který si zjistí ip-adresu počítače pomocí BOOTP/DHCP protokolu (RFC951/RFC2131) a dále nabídne jednu z následujících služeb |
| - | - DNS dotaz (RFC1035) (převod doménového jména na ip adresu, zjednodušený nslookup) | + | |
| - | - TFTP server (RFC1350) | + | - TFTP server (RFC1350) |
| - | - TFTP klient (RFC1350) | + | - TFTP klient (RFC1350) |
| - | - Zjistí směrovací tabulku pomocí RIP protokolu (RFC1058) | + | - Zjistí směrovací tabulku pomocí RIP protokolu (RFC1058) |
| - | - Balíček serverů pro služby chargen/ | + | - Balíček serverů pro služby chargen/ |
| - | - ICMP - ping klient a server (RFC792) | + | - ICMP - ping klient a server (RFC792) |
| - | - SNMP klient, který vrací a nastavuje SysOID, Location a SysContact | + | - SNMP klient, který vrací a nastavuje SysOID, Location a SysContact |
| - | - Další UDP protokoly ... | + | - Další UDP protokoly ... |
| Příklad programu pro linux posílající ARP dotaz {{vyuka: | Příklad programu pro linux posílající ARP dotaz {{vyuka: | ||
| Line 21: | Line 21: | ||
| Tedy místo: | Tedy místo: | ||
| <code bash> | <code bash> | ||
| - | arp eth0 147.32.81.110 147.32.81.111 | + | arp eth0 147.32.81.174 147.32.81.175 |
| </ | </ | ||
| spustíte: | spustíte: | ||
| <code bash> | <code bash> | ||
| - | capnet arp eth0 147.32.81.110 147.32.81.111 | + | capnet arp eth0 147.32.81.174 147.32.81.175 |
| </ | </ | ||
| + | |||
| + | |||
| + | Ukázka jak řešit například DNS dotaz: | ||
| + | |||
| + | - Pomocí nástrojů operačního systému zjistím svoji MAC adresu na ethernetovém adapteru (S_MAC). | ||
| + | - Vyšlu broadcastem DHCP/BOOTP požadavek. | ||
| + | - Vrátí se mi nabídka IP adresy mé stanice, DNS serveru a výchozí brány (příjmu nabídku a zapamatuji si všechny údaje (S_IP, DNS_IP, GW_IP). | ||
| + | - Zjistím, zda adresa DNS je ve stejném IP rozsahu jako moje IP, pokud ano pošlu ARP dotaz na DNS_IP, pokud ne pošlu dotaz na GW_IP. | ||
| + | - ARP dotazem jsem zjistil MAC adresu, na kterou chci posilat dat (D_MAC, buď je to MAC výchozí brány nebo přímo DNS serveru). | ||
| + | - Vytvořím správný DNS dotaz jako textový řetězec odpovídající RFC. | ||
| + | - Kolem DNS dotazu přidám UDP hlavičku (důležitý je hlavně cílový port). | ||
| + | - Kolem výsledného UDP paketu přidám IP hlavičku (zdrojová IP je ta moje S_IP, cílová IP je vždy zjištěná DNS_IP). | ||
| + | - Kolem vytvořeného IP packetu přidám ethernetovou hlavičku, kde vyplňuji hlavně zdrojovou MAC adresu (S_MAC) z kroku 1 a cílovou MAC adresu (D_MAC zjištěná v kroku 5). | ||
| + | - Tento packet odešlu přes RAW socket. | ||
| ===== Podmínky odevzdání ===== | ===== Podmínky odevzdání ===== | ||
| Line 37: | Line 51: | ||
| Odevzdávané úloze rozumí autor i spoluautor. | Odevzdávané úloze rozumí autor i spoluautor. | ||
| + | |||
| + | ===== Materiály ===== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||