Laboration 3: <tt>arp</tt>, <tt>IP</tt> och <tt>ping</tt>

Laboration 3: arp, IP och ping


Introduktion

Laboration 3 beskrivs här.

Mål

Du har klarat laborationen när du kan pinga CD-servern med alla möjliga storlekar från 4 till 1450 och den svarar fastän du pingar många gånger med olika storlekar. ARP, IP samt ICMP skall vara implementerade korrekt. Servern skall givetvis inte krascha. Dessutom får inga minnesläckor förekomma. Använd följande kodrad för att ta reda på tillgängligt minne: (för att använda ax_coreleft_total() måste sp_alloc.h inkluderas med #include "sp_alloc.h").

cout << "Core " << ax_coreleft_total() << endl;

Vidare skall CD-servern svara på rimlig tid. En normal ping tid från en CD-server är ca 2 ms och din tid skall inte vara mycket högre. Bovarna i dramat här är minnesallokeringar, minneskopieringar och debugutskrifter. Tag bort alla debugutskrifter och minimera antalet allokeringar och kopieringar. Tänk på att objekt instancieringar ger en minnesallokering var. Stackallokeringar är mycket snabbare än vanliga dynamiska allokeringar!

Slutligen skall givetvis the ethernetpaket som skickas ut på nätet vara korrekta med rätt längd, käll- och destinationsadress i ethernetheadern, korrekta IP- och ICMP-headrar samt korrekta ARP-svar!

Tips

Gör labben i följande ordning:

Börja med ARP. Tänk på att hela tiden implementera i den ordning paket hanteras, dvs.

Obs! Testa ofta. Testa varje metod du lägger till i kedjan!