Eksamensprojekt, 3. semester
Eksamensprojektet på 3. semester er fælles for semestrets to fag: Datamatiske Systemer og Systemprogrammering.
Opgaven
En internetserviceudbyder eller webhotel-ejer har brug for en statistik, udfra hvilken han kan se, hvilke sider der er mest populære at benytte. Normalt ville han skanne sine logfiler og udtrække oplysningerne deraf.
Her skal du implementere denne statistikfunktion på en separat maskine, i form af en gateway, som vi her kalder URL-statistikserver. Se tegning!
URL-statistik-server
Webserver
Browseren er en standard-browser. Webserveren er en bestemt server ude på internettet, f.ex. www.jubii.dk eller www.eb.dk eller www.cnn.com eller…. en eller flere servere efter eget valg.
Din URL-statistikserver har f.ex. IP adressen og portnummer 129.117.232.13:51100.
Når browserne skal forbinde sig til den valgte webserver (f.eks. www.jubii.dk) så skal brugeren skrive http://129.117.232.13:51100/www.jubii.dk i browseren.
Din URL-statistik-server fjerner sin egen adresse fra ovennævnte adresse, og laver en ny forbindelse til http://www.jubii.dk .
Når svaret kommer fra www.jubii.dk i form af en HTML-side til URL-statistik-serveren, skal HTML-siden gennemgås og alle indeholdte links skal opdateres, idet URL-statistik-serveren egen adresse tilføjes foran hver link. Denne modificerede HTML-side skal så sendes fra URL-statistik-serveren tilbage til brugerens browser.
Dette for at sikre at brugeren forbinder sig til URL-statistik-serveren, når der i browseren klikkes på en link.
URL-statistik-serveren opretter derpå en ny forbindelse til den ønskede link. Igen vil svaret blive sendt tilbage til browseren efter at alle links i svar-dokumentet er blevet tilføjet URL-statistik-serveren adresse, af URL-statistikserveren.
Hver gang URL-statistik-serveren modtager en URL fra browseren eller skal sende et svar-dokument til browseren, skal dokumentets oprindelige URL føjes til en database, eller hvis den allerede findes i databasen, skal tælleren for dokumentes URL inkrementeres. På denne måde kan man føre statistik for hvor mange gange forskellige html-sider har været anvendt.
Se tegning >>her<< over applikationen du skal udvikle.
- Opgaven omfatter således implementering af TCP/IP forbindelser, relevante dele af HTTP-protokollen parsing af HTML-dokumenter, samt opbygning af en database over HTTP-servere, URL for brugte HTML-dokumenter og antal referencer til disse dokumenter.
- Programmet skal på anfordring kunne udskrive en statistik over URL-anvendelse.
- Endvidere skal det kunne cache f.eks. de 10 mest anvendte html-dokumenter, således at de ikke er nødvendige først at hente fra webserverne.
- Parallel servicering af flere browsere, parallel behandling af flere svardokumenter, samt parallel opdatering af databasen skal implementeres.
Systemet implementeres med C++ og skal køre under Linux operativsystemet. Det er absolut acceptabelt at anvende specialiserede programpakker som f.eks. databasesystemer eller særlige programbiblioteker, men det skal i hvert enkelt tilfælde aftales nøje med klassens lærer(e). og nøje beskrives i projektrapporten
Ovenstående er et almindeligt værktøj til at analysere trafikken på en web-server. Samtidig kan denne konfiguration også bruges til andre formål. Se efterfølgende:
For grupper med større ambitioner kan man vælge at programmere nogle ekstra funktioner,
f.ex.:
Implementering af et ”filter” i URL-statistik-serveren, der vil afbryde forbindelsen mellem brugeren og webserveren, såfremt brugeren vil surfe på blacklistede forbudte hjemmesider eller URL’s.
Scanning af svardokumenter og søgning efter specifikke ord, for eksempel ”sensitive” ord . Hvis dette ord forekommer skal browserens IP adresse logges sammen med ordet. En tæller skal inkrementeres hver gang den samme IP adresse refererer et sådant ”sensitivt” dokument. (Dette kan bruges for at se hvilke emner en bruger surfer efter, f.eks. en medarbejder.)
Projektforløbet
Opgaven udarbejdes i grupper, og arbejdet med projektet er opdelt i faser. Hver fase består af introducerende teori, projektarbejde og rapportering.
Rapporteringen skal ikke opfattes som en ekstra arbejdsopgave. Formen aftales specifikt med den enkelte klasse eller gruppe og kan f.eks. blot bestå af en mundtlig redegørelse med efterfølgende hjælp fra medstuderende og lærere til evaluering af delresultater.
Aflevering
Rapporten med bilag og disketter, alt i 4 kopier, skal afleveres senest onsdag den 22. maj 2002 kl. 12 til eksamenskontoret (Kultorvet) eller (Nyropsgade) eller til din lærer efter nærmere aftale.
Det implementerede system skal kunne demonstreres efter aflevering. Demonstrationen skal kunne foretages alene på grundlag af de data, som disketterne indeholder og ved hjælp af en metode, der er dokumenteret i et bilag til rapporten.
Besvarelsen
Der skal afleveres et kørende system. Dette dokumenteres i form af
- en rapport på maksimalt 25 normalsider
- bilag med kommenteret kildetekst
- bilag med kortfattet installations- og testkørselsvejledning til brug ved demonstration af systemet
- diskette i FAT format med kildetekst, testmateriale mv. som muliggør at en udenforstående kan gennemføre installation og test som beskrevet
Rapporten skal som minimum indeholde
- beskrivelser af syntaks og semantik for understøttede protokoller og dokumentformater
- en beskrivelse i passende form af systemets programkomponenter
- redegørelser for væsentlige valg, fravalg samt evt. fejl og mangler
- en klar sondring mellem overvejelser og realiseringer
- litteraturliste for evt. supplerende litteratur, som er anvendt i projektforløbet
Vejledende projektfaser
Fase / periode
|
Noter
|
1
|
Her anskaffer man sig de første vidensmæssige forudsætninger for overhovedet at kunne forstå, hvad opgaven handler om. Det gælder bl.a. HTTP-protokollen, HTML-standarden, parsing af protokol- og dokumentdata, algoritmer og datastrukturer for søgning og lagring af data samt netværksprogrammering (sockets).
Forstudiet omfatter både en teoretisk tilegnelse af viden og en uddybning af denne ved gennemførelse af programmeringseksperimenter.
Detaljer omkring HTTP-protokollen, HTML kan findes på http://www.rfc-editor.org (samtlige RFC'er) samt på http://www.w3.org.
Direkte link HTTP 1.0, HTTP 1.1, HTTP 1.0 simple explained
|
2
|
Analyse
Der vælges delsystem, og funktionaliteten afgrænses. Herunder fastlægges
- hvilken delmængde af HTTP-protokollen, der understøttes
- hvilke dele af et dokument, der er relevant
- data(base)struktur for emneliste(r), liste(r) over sites samt for søgeresultaterne
Syntaks og semantik for relevante dele af HTTP-protokollen og HTML-dokumenter beskrives i BNF, evt. med en supplerende verbal beskrivelse.
|
3
|
Design og implementering
Systemet designes og implementeres og rapporten skrives.
|