Tik-110.350 Tietokoneverkot
Harjoitustyö 2001: HTTP Palvelin ja Selain
Tik-110.350/2001/harjoitustyo (in English)
1. osan palautus: 16.2.2001 klo 16:00
2. osan palautus demon yhteydessä viikolla 12 (viimeinen deadline 23.3.2001 klo 16:30)
Varaa demoaika
Materiaali
Harjoitustyö perustuu RFC2616: Hypertext Transfer Protocol - HTTP 1.1.
Verkossa on paljon hyvää(kin) materiaalia, jota voi käyttää hyväkseen. Erilaisia koosteita socket-ohjelmoinnista on saatavilla paljon. Oikeastaan verkosta löytyy niin hyvin tietoa, että muuta materiaalia ei välttämättä edes tarvitse. Kannattaa kuitenkin säilyttää kriittisyys verkosta löydettyä tietoa kohtaan.
Alla on pari hyvää kirjaa:
Lisäksi:
- Comerin kirja "Internetworking with TCP/IP volume I" luku 20 kertoo socket-ohjelmoinnista.
- Korpelan ja Larmelan kirja "C-ohjelmointikieli" löytyy Otadatan omista varastoista ja koulun kirjakaupasta melko varmasti (OtaDATA ry D 17).
- Perus C:n kanssa auttaa "The C Programming Language", jonka ovat kirjoittaneet Brian W. Kerninghan ja Dennis M. Richie.
- Elliott Rusty Harold, Java Network Programming, O'Reilly & Associates
- Erityisesti Unix-ohjelmointiin (esim. socket) on Richard Stevensin kirja "Unix Network Programming".
- The Java Tutorial ja erityisesti sen luku 'All about Sockets'.
- Jos tekee harjoitustyön Javalla, auttaa APIn dokumentointikin jo aika pitkälle.
- Jos tekee perlillä, Perl 5 by Example
HUOM: Tehtävässä on tarkoituksena opetella Socket-ohjelmointia, joten valmiiden kirjastojen käyttö ei ole sallittua. Esimerkiksi Java-kielellä toteutettuna on sallittua käyttää java.net.Socket, java.net.URL sekä java.net.ServerSocket-luokkia, mutta java.net.HttpURLConnection-luokkaa ei ole. Arvostelussa periaatteena on, että mikäli toteutuksessa on käytetty valmiita luokkia tai kirjastoja, jotka esimerkiksi toteuttavat HTTP-protokollaa, saa kyseinen työ arvosanaksi HYLÄTYN. Jos sinulle on epäselvää onko jokin kirjasto sallittu vai ei, kysy kurssin henkilökunnalta.
Harjoitustyön vaatimukset
Harjoitustyön aiheena on suunnitella ja toteuttaa HTTP-protokollaa käyttävä asiakas- ja/tai palvelinohjelma eli WWW-selain ja/tai WWW-palvelin, jotka pystyvät käsittelemään yksinkertaisia tekstiä ja linkkejä sisältäviä html-sivuja (mallisivuja).
Asiakasohjelma ei saa olla sidottu mihinkään palvelimeen, eikä palvelin luonnollisesti mihinkään asiakasohjelmaan. Jos toteutat molemmat, pelkkä keskinäinen yhteentoiminta ei riitä.
Toiminnassa ei siis tule olla eroja ajetaanko ohjelmaa esim alphasta tai betasta ja käytetäänkö palvelimena esimerkiksi Apachea tai Microsoftin IIS-palvelinta tai asiakasohjelmana Netscape Navigatoria tai Microsoft Internet Exploreria. Käyttöympäristön osalta ohjelma tietenkin saa olla sidottu.
Ohjelman tulee toteuttaa seuraavat toiminteet:
Palvelin
- Ohjelma osaa ottaa vastaan yhteyksiä mistä tahansa koneelta
- Ohjelma osaa ottaa vastaan hakupyyntöjä selaimelta ja käsitellä niitä
- Ohjelmalle voidaan määritellä root-hakemisto (esimerkiksi. public_html, johon mallisivut sijoitetaan) sekä portti, jossa ohjelma toimii
- Käyttöliittymä voi olla tekstipohjainen tai graafinen
Selain
- Ohjelma osaa ottaa yhteyden mihin tahansa palvelimeen ja porttiin
- Ohjelma osaa esittää yksinkertaisen HTML-sivun.
- Ohjelma osaa seurata sivulla määritettyä linkkiä.
- Käyttöliittymä voi olla tekstipohjainen tai graafinen.
Yksin kotitehtävät tekevät opiskelijat toteuttavat joko WWW-selaimen tai WWW-palvelimen päästäkseen kurssista läpi.
Kotitehtävissä parityötä tekevät saavat tehdä myös harjoitustyön parityönä. Parityötä tekevien on tehtävä molemmat osat, eli sekä www-selain että www-palvelin.
Harjoitustyöstä on mahdollista saada +1 korotus kurssiarvosanaan toteuttamalla yksin www-selaimen ja www-palvelimen tai SSL-protokollan www-palvelimen tai -selaimen lisäksi. Parityötä tekevät toteuttavat www-palvelimen ja -selaimen lisäksi SSL-protokollan saadakseen korotuksen. Myös jokin toinen verkkoprotokolla voi tulla kysymykseen, mutta hyväksytä ehdotuksesi kurssin henkilökunnalla.
Ohjelma suositellaan tehtäväksi C:llä, Perlilla tai Javalla. Muitakin kieliä saa käyttää, mutta minkäänlaista tukea ei tällöin kurssihenkilökunnalta saa ja kieli pitää hyväksyttää kurssin henkilökunnalla. Kiellettyjä kieliä ovat mm. Visual-xxx (esim. Visual-Basic), delphi ja fortran. Lisäksi valmiiden HTTP-kirjastojen käyttö harjoitustyössä on kielletty. On myös otettava huomioon, että valmis tekele on kyettävä demoamaan Maarintalon UNIX-työasemilla tai Windows-koneilla (todennäköisesti Maarin luokassa f, Digital unix- tai Windows2000). Huom! Kun olet varannut itsellesi demoajan, käy koeajamassa ohjelmasi SIINÄ LUOKASSA, jossa demosi pidetään.
Harjoitustyö on jaettu kahteen osaan siten, että ensimmäisessä osassa palautetaan suunnitelma ohjelmasta ja toisessa osassa palautetaan ohjelman lähdekoodi sekä raportti työstä. Toisen osan palautuksen yhteydessä myös demotaan ohjelman toimivuus. Erillisellä sivulla on eritelty ensimmäisen ja toisen osan tarkemmat vaatimukset.
Arvostelu
Osa 1: Harjoitustyön ensimmäinen osa arvostellaan asteikolla hyväksytty - bumerangi - hylätty. Bumerangin voi saada, jos opiskelija on selvästikin yrittänyt ottaa selvää, miten harjoitustyö tulisi toteuttaa, mutta hänelle on kuitenkin jäänyt jokin perustavaa laatua oleva seikka ymmärtämättä. Kaikennäköiset puolivillaiset, selvästi kiireessä ja pahemmin ajattelematta kyhätyt (tyypillisesti juuri ennen deadlinea tulleet) palautukset tulevat kuitenkin saamaan arvosanan hylätty. On hyvä huomata, että jos harjoitustyön ensimmäisestä osasta saa arvosanan hylätty, ei opintojaksoa voi saada läpi. Tämän vuoksi ensimmäiseen osaan tulisi kiinnittää tarpeeksi huomiota tarpeeksi varhaisessa vaiheessa.Osa 2: Harjoitustyön toinen osa arvostellaan asteikolla hyväksytty - hylätty. Tästä osasta ei varsinaisesti voi saada bumerangia, mutta epäonnistuneen demon voi EHKÄ uusia, JOS vapaita demoaikoja on silloin vielä jäljellä. Eli jos assistentti hylkää demosi, voit yrittää palautusta uudestaan korjattuasi hylkäyksen aiheuttaneet viat. Assistentti hylkää demon seuraavissa tapauksissa:
Huomaa, että hyväksytty demo ei vielä tarkoita hyväksyttyä harjoitustyötä. Onnistuneen demon jälkeen harjoitustyö merkitään palautetuksi.
- Ohjelma ei toimi demotilanteessa
- Ohjelma ei toteuta sille asetettuja ehtoja
- Dokumentissa on selviä puutteita
Palautus
Osa 1: Palauta tämä osa yleisten tehtävien palautusohjeiden mukaisesti kotitehtäväkierroksena 11. Muista tarkistaa, että saat palautuksestasi onnistumiskuittauksen kurssin sähköpostiautomaatilta.Osa 2:
- Demo
Kun ohjelmasi on valmis, varaa aika kurssin kotisivujen kautta.
Demon yhteydessä sinun tulee kääntää ohjelma (jos tarpeen) ja osoittaa sen toimivuus.
Demossa esittelet paikalla olevalle assistentille lyhyesti ohjelmasi toimintaa. Assistentti saattaa kysyä joitain kysymyksiä ohjelmasi toteutuksesta ja pyytää esittelemään joitakin piirteitä. Jos harjoitustyö täyttää sille asetetut vaatimukset, merkitsee assistentti palautuksen vastaanotetuksi.Tämä ei vielä tarkoita sitä, että harjoitustyö on hyväksytty, vaan palautetut työt tarkistetaan ja arvostellaan myöhemmin.
Jos ohjelma ei demossa täytä sille asetettuja vaatimuksia, assistentti ei ota ohjelmaa vastaan etkä saa merkintää palautuksesta. Jos demoaikoja on tässä vaiheessa vielä jäljellä, voit varata itsellesi uuden ajan ja yrittää korjatun version kanssa palautusta uudestaan.
HUOM! Demoaika on vain kymmenen minuuttia, joten valmistaudu demoon huolella ja ole ajoissa paikalla.
- Palautus
Palautusta varten luo tar-, jar- tai zip paketti, joka sisältää ohjelmakoodin, dokumentaation sekä loppuraportin ja nimeä se opiskelijanumerosi mukaisesti (esim. 12345a.tar tai 12345a_54321b.zip, jos teet parityötä).
- Tapa 1 - palautus demotilaisuudessa
Jos ohjelmasi täytti demolle asetetut vaatimukset ja olet muuten valmis jättämään sen tarkastettavaksi, tarkastava assistentti voi ottaa palautuksen vastaan kopioimalla pakettisi suoraan kurssin kotihakemistoon. Tällöin sinun ei tarvitse palauttaa sähköpostitse mitään, mutta et myöskään saa automaattista kuittausta palautuksen onnistumisesta.
- Tapa 2 - palautus myöhemmin
Jos ohjelmasi pääpiirteissään täytti demolle asetetut vaatimukset, mutta siinä ilmeni joitakin puutteita, jotka eivät kuitenkaan vaadi uudelleen demoamista, tai muuten niin haluttaessa, voidaan harjoitustyö palauttaa normaalina kotitehtäväpalautuksena sarjaan 12. Sijoita tällöin em. tavalla luotu paketti kotisivuillesi ja palauta paketin suora URL omalla rivillään normaalien palautusohjeiden mukaisesti. Pakettisi tullaan noutamaan automaattisesti webcopyä käyttäen, joten ole tarkkana. Tästä palautuksesta saat automaattisen kuittauksen. Deadline 23.3.2001 klo 16:30 kaikille korjausmahdollisuuden saaneille palautuksille.
Tämän sivun sisällöstä vastaavat verkkojen assarit, sähköposti: verkot@tml.hut.fi
Sivun sisältöä on viimeksi päivitetty 24.1.2001.
URL: http://www.tml.hut.fi/Opinnot/Tik-110.350/2001/harjoitustyo.html