130 likes | 225 Views
Kapittel 24 (Big Java 2.utg). Kommunikasjon i nettverk. Internet og World Wide Web. Dette er to forskjellige ting Internet er eit globalt nettverk som knyter saman fleire millioner datamaskiner www er ei av fleire tenester vi kan benytte Andre tenester er til dømes epost
E N D
Kapittel 24 (Big Java 2.utg) Kommunikasjon i nettverk
Internet og World Wide Web • Dette er to forskjellige ting • Internet er eit globalt nettverk som knyter saman fleire millioner datamaskiner • www er ei av fleire tenester vi kan benytte • Andre tenester er til dømes epost • I dette kapitlet ser vi på litt av det som skjer i bakgrunnen når vi sender epost eller hentar fram ei web-side • Kommunikasjonsprotokoller • IP, TCP, HTTP • Sockets
IP (Internet Protocol) • Datamaskiner kan vere samankopla med mange ulike media • Nettverkskabel, telefonlinje, radiosignal • Signala som blir overført kan delast i to typer • Applikasjonsdata, representerer det vi faktisk vil overføre • Protokolldata, informasjon om avsendar og mottakar, feilsjekking m v • Ein protokoll er eit sett reglar for korleis kommunikasjon skal foregå • IP er utvikla for å støtte kommunikasjon mellom datamaskiner og lokalnett via Internett
IP (Internet Protocol) • IP-adresser er talsekvensar på 4 bytes med punktum mellom • 130.65.86.66 • Mangel på adresser gjer at dette skal utvidast til 16 bytes • DNS (Domain Naming Service) for å oversette mellom navn og adresser, sidan navn er enklare i bruk for oss • Data blir delt opp i pakker, kvar pakke blir sendt for seg sjølv • I ei sending som består av fleire pakker kan pakkane bli sendt via ulike ruter og komme fram i ei anna rekkefølge • Mottakaren må ordne pakkane i rett rekkefølgje for å få innholdet korrekt
IP (Internet Protocol) • IP har berre denne eine funksjonen – å prøve å levere data frå ei datamaskin til ei anna over Internett • I tilfelle data blir tapt eller øydelagt under sending, vil IP sikre at mottakar blir gjort oppmerksom på dette • På denne måten unngår ein at mottakar stolar på ufullstendige eller feil data • IP har ingen mekanismer for å sende data på nytt i tilfelle feil • Til dette bruker vi TCP (Transmission Control Protocol)
TCP (Transmission Control Protocol) • TCP arbeider på eit høgare nivå enn IP, og sørger for påliteleg levering av data • IP blir brukt for å sende pakker, TCP har tilleggstenester • Sender på nytt i tilfelle feil • Pakker kan bli borte eller innholdet kan bli endra • Sendar får beskjed om forsøket på å sende data var vellykka eller ikkje • Dei fleste Internett-program bruker TCP/IP • Unntak: “Streaming media” der overføringsfart er viktigare • Videokonferanse, live-overføring • Feil er av mindre betydning, resulterer ofte berre i ei mindre forstyrring i bildet
TCP (Transmission Control Protocol) • TCP treng portnummer på sendar- og mottakarmaskin i tillegg til IP-adresse • På denne måten kan TCP danne ein direkte kanal mellom to program på ulike maskiner, uavhengig av eventuelle andre TCP-forbindelsar på dei same maskinene samtidig • OSI-modellen for datakommunikasjon • 7 lags modell, kvart lag bygger vidare på tenestene frå laget under • IP opererer på lag 3 (nettverkslaget), TCP på lag 4 (transportlaget)
HTTP (Hypertext Transfer Protocol) • HTTP er protokollen som definerer kommunikasjon mellom weblesar og webserver • Lag 7 (applikasjonslaget i OSI-modellen) • Kva skjer om vi skriv inn http://java.sun.com/index.html i weblesaren? • Dette er ein såkalla URL (Uniform Resource Locator), ein peikar eller adresse til ein informasjonsressurs på Internett
HTTP • Weblesaren undersøker den delen av URL’en som er mellom // og / (java.sun.com), som identifiserer datamaskina vi vil ha kontakt med. Sidan det er bokstavar her forstår weblesaren at det er eit domenenavn, og tar kontakt med ein DNS-server for å få tak i Internettadressa til maskina • Av http: i URL’en forstår weblesaren at det er HTTP-protokollen som skal brukast, og standard portnummer er 80 • Weblesaren etablere ein TCP-forbindelse med port 80 på den aktuelle Internettadressa
HTTP • Frå /index.html forstår weblesaren at det er denne fila vi vil ha tak i, og sender difor ein forespørsel, formattert som ein HTTP kommando, gjennom forbindelsen som er etablert. Kommandoen ser slik ut: GET /index.html HTTP/1.0 • Webserveren i den andre enden dekodar kommandoen og sender fila /index.html tilbake til vår maskin • Weblesaren viser innholdet i fila. Html-koden blir tolka, om nødvendig blir fleire GET-forespørslar sendt for å få tak i bilder som høyrer til fila
HTTP • HTTP er ein enkel protokoll med få kommandoar: • GET – send det elementet vi ber om • HEAD – be om kun header-info • OPTIONS – be om kommunikasjonsalternativ for eit element • POST – gi input til ein kommando på serveren og returner resultatet • PUT – lagre eit element på serveren • DELETE – slette eit element på serveren • TRACE – spore kommunikasjon på serveren
Klient- og serverprogram • I TCP/IP terminologien har vi ein sokkel på kvar side av forbindelsen • Java-kode for å sette opp ein forbindelse med ein webserver: final int HTTP_PORT = 80; Socket s = new Socket(“java.sun.com”, HTTP_PORT); InputStream instream = s.getInputStream(); OutputStream outstream = s.getOutputStream(); ... s.close(); • Dette er eit enkelt eksempel på eit klientprogram
Klient- og serverprogram • På server-sida kan vi bruke klassen ServerSocket • Må gi portnummer til konstruktør • accept() – metoden ventar på at klientar skal ta kontakt • Ein ny sokkel blir oppretta for kvar forbindelse og sendt til programmet som skal utføre service • Vanlegvis vil serviceprogrammet implementere Runnable-interfacet og kjøre sin run()-metode i kvar tråd som betjener ein klientforbindelse • For fleire detaljer: sjå på BankServer-eksemplet • Ved hjelp av klassene URL og URLConnection kan vi operere på eit litt høgare nivå, og la desse klassene ordne soklar og forbindelsar for oss • I mange samanhengar arbeider vi på eit endå høgare nivå og ser ikkje der som skjer under overflata • Det kan likevel vere nyttig å vite litt om kva som skjer ...