1 Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP. (Læreboka kapittel 2-5) Legg merke til den første blokken, denne brukes for å starte en såkalt sessjon, sessjoner benyttes for å ta vare på informasjon på serveren om enkeltbrukere mellom hver gang de besøker serveren. (læreboka kapittel 24) Viser overføring av data både via URL og via form POST. (Læreboka kapittel 7)
2 NB, Husk å starte Wireshark (ethereal) som root. Dersom programmet ikke startes som root vil du ikke få tilgang til å hente data fra nettverkskommunikasjonen. Dersom du kjører mot localhost, hent data fra lo, dersom du bruker en ekstern server, hent data fra eth0 Gå nå til demosiden i nettleseren, husk å bruke http adressen for å lese siden. Trykk F5 (ctrl+r) et par ganger for å laste siden på nytt. Avslutt så loggingen
3 Her vises all trafikk på TCP nivå. Vi ser at noe av dette er markert med protocol = HTTP, det som har en slik markering er den som er interessant for oss i denne sammenhengen. For å gjøre det hele litt mer ryddig kan vi sette opp et filter. Trykk på Expression knappen og velg http eller skriv inn http i tekstfeltet og velg apply.
4 Vi har nå fått filtrert ut informasjonen slik at det kun er http trafikk som vises i vinduet. Vi ser at det er noen linjer som starter med GET og noen som starter med HTTP. Dersom du benytter en ekstern server vil du også se at de som starter med GET har 127.0.0.1 (localhost) som source mens de som starter med HTTP i info feltet vil ha serverens IP adresse som Source. Dette fordi GET er den delen som sendes fra klienten til serveren og HTTP er svaret fra serveren til klienten.
5 For å se på innholdet i det som er sendt mellom klient og server kan du høyreklikke på den interessante linjen og velge «Follow TCP Stream» «Follow TCP Stream» vil vise dataene som er sendt i forbindelse med denne pakken og alle pakker som regnes som relevante enten sendt eller mottatt i denne forbindelse. Dvs at alle pakker som er sendt og mottatt over samme TCP forbindelse vil bli sortert ut og vist frem på en mest mulig hensiktsmessig måte.
6 Dette er de dataene som blir registrert når nettleseren blir bedt om å hente dokumentet som ble beskrevet først i denne presentasjonen. Informasjonen frem til første blanke linje (dvs, det som står med rødt dersom du ser dette i farger) er forespørselen sendt fra klienten til serveren. Det som følger deretter (i blått) er svaret fra serveren til klienten. Svaret er todelt, først kommer header informasjon, så kommer en blank linje og så kommer selve innholdet i dokumentet. Innholdet starter med linjen «<html>». Fullstendig tekst fra denne dumpen finnes på http://www.hig.no/imt/file.php?id=2655
7 Det kan ofte være behov for å vise all informasjon tilgjengelig for et PHP skript på en enkel måte. Denne informasjonen kan hentes fra metoden phpinfo i PHP. Når en kaller metoden phpinfo returneres all informasjon om miljøet PHP skriptet kjøres i som en tekststreng med HTML formatering, ved å skrive ut denne får du tilgang til all informasjon som PHP skriptet ditt har tilgang til. Her bruker vi metoden i et skript som tar i mot informasjon fra en vanlig link og fra en HTML form som benytter metoden POST.
8 Denne TCP dumpen viser hva som sendes til serveren når data sendes via URL'en. Dette kan gjøres både via en vanlig link (som i dette eksemplet) eller ved å bruke metoden GET i en HTML form. Legg merke til at informasjonen kodes inn i GET linjen i forespørselen til serveren. Legg også merke til at vi nå sender med en Cookie, dette siden serveren sende oss denne cookien tidligere. (Læreboka kapittel 24 for mer om cookies.)
9 Når en HTML form med metoden POST benyttes for å overføre informasjon vil første linje starte med POST i steden for GET Informasjonen som sendes til serveren følger etter den tomme linjen som markerer slutten på http headeren. Når informasjon sendes mellom server og klient brukes altså en tom linje for å indikere slutten på header informasjon, både fra klient og fra server. Informasjonen som sendes er som en ser kodet på sammen måte både for POST og for GET POST er eneste muligheten dersom en ønsker å overføre filer fra klienten til serveren.