6107 Operativsystem og nettverk Leksjon 3a Web og http-protokollen Applikasjonslaget (litt repetisjon fra 6105) Webtjenesten HTTP-protokollen, HTTP/2, HTTPS og TLS/SSL Internet Media Types (MIME) Filoverføring med FTP og SSH File Transfer Protocol Pensum [Hallsteinsen] Kap. 3.2 Web [Grigorik] Kap 12 HTTP/S Relevante lenker: http://en.wikipedia.org/wiki/http https://en.wikipedia.org/wiki/http/2 http://en.wikipedia.org/wiki/mime https://en.wikipedia.org/wiki/ssh_file_transfer_protocol 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 1 Applikasjonslaget i Internett OSI modell TCP/IP modellen Lag 5-7 Applikasjonslag HTTP web DNS IMAP, SMTP e-post FTP og mange flere Lag 4 Transportlag TCP / UDP Lag 3 Nettverkslag (Internetlag) IP Lag 1 og 2 Link/linjelag Fysisk lag Nettverk 1 f.eks. Ethernet Nettverk 2 f.eks. WLAN 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 2 Page 1
Applikasjonslaget i Internett Applikasjonsprotokoll Tjenerapplikasjon Klientapplikasjon Melding / forspørsel Svar fra tjener Socket med kjent portnr http = 80 Transportlag Nettlag Lenkelag Fysisk lag Transportlag Nettlag Lenkelag Fysisk lag IP-adresse, f.eks. 128.39.198.44 Klientmaskin Tjenermaskin Eksempel URL en: http:\\www.hit.no = socketadresse: 128.39.198.44:80 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 3 Applikasjonslaget i Internett Applikasjonslaget benytter klient / tjener prinsippet Tjenerapplikasjoner - kjører hele tiden» Lytter etter henvendelser på en socket med kjent (fast) portnummer» Socket = kontaktpunkt mellom applikasjon og transportlaget» Hver tjenerapplikasjon har sitt eget (unike) portnummer» Socketadresse = IP-adresse:portnr, eks. 128.39.198.50:80 Klientapplikasjoner - startes av brukeren ved behov» kontakter tjenerapplikasjon ved hjelp av IP adresse og kjent portnummer (dvs. socketadressen)» Bruker oppgir vanligvis lesbart maskinnavn oversettes av DNS. Standardiserte applikasjonsprotokoller Protokollene definerer format og innhold i meldingene Meldingene består av høynivå "kommandoer og svar, ofte i lesbar tekst! På applikasjonslaget kan meldingene være lange bytestrømmer (flere kb/mb) 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 4 Page 2
HTTP protokollen ressursnavn kan være mappe- og / eller filnavn HTML = HyperText Markup Language - et sidebeskrivelsesspråk HTTP = HyperText Transfer Protocol - regler for å overføre websider URL-format: protokoll://maskinnavn.domenenavn:portnummer/ressursnavn Eksempel: http://home.hit.no:80/~kvisli/index.htm (http og port 80 er standard i nettleseren og kan derfor droppes) HTTP forespørsel (HTTP-request) HTTP svar (HTTP-response) NETTLESER (KLIENT) WEBTJENER home.hit.no:80 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 5 URL-formatet HTTP protokollen Protokoll vil alltid være http:// når vi snakker om websider.» Weblesere kan bruke andre protokoller for andre oppgaver f.eks. ftp:// Portnummer angir hvilken TCP-port webtjeneren er koblet til og lytter på. Default er 80. Ressursnavn er navnet til en ressurs på den aktuelle webtjeneren. F.eks. en html-fil, en bildefil, et php-program osv. 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 6 Page 3
HTTP protokollen HTTP - applikasjonsprotokoll Webklient (webleser) HTTP-forspørsel (request) Webtjener TCP HTTP-svar (response) TCP TCP-porter med kjente portnr http = 80 https = 443 IP IP IP-adresse, f.eks. 128.39.198.44 Lenkelag Lenkelag Fysisk lag Fysisk lag Klientmaskin Tjenermaskin Eksempel URL en: http:\\www.hit.no = socketadresse: 128.39.198.44:80 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 7 HTTP-forespørsel (request) 1 Forespørselslinje 2 Hodelinjer 3 Kropp med eventuelle data (ingen data fra klienten i dette eksemplet) Olav Skundberg Innføring i datakommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 8 Page 4
HTTP-forespørsel (request) Flere type forespørsler: De to vanligste :» GET ber om å få hentet en webside på en URL Andre filer som skal vises i nettleseren, hentes også med GET, f.eks. bildefiler, pdf ol.l.» POST Sender data, f.eks. fra et html-skjema, fra nettleser til en URL på webtjener Mer uvanlige : HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT Forespørselen består av: 1. Forespørselslinje på formen: HTTP-metode ressursnavn HTTP/versjonsnr f.eks.:» GET ~\kvisli\jon.htm HTTP/1.1 ber tjener om å returnere filen ~\kvisli\jon.htm» POST /demo/skjema.php sender data fra klient til tjener og ber om resultat i retur 2. Hodelinjer (headerlines) = forespørselhode med tilleggsinformasjon» Hver hodelinje består av et variabelnavn og en eller flere verdier 3. Evt. en meldingskropp.» GET metoden har tom meldingskropp» POST metoden vil sende variabelverdier (data) fra et html-skjema i meldingskroppen. 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 9 HTTP-svar (response) 1 Statuslinje 2 Hodelinjer 3 Kropp med (Ingen data fra webtjeneren i dette eksemplet) eventuelle data (f.eks. html-koden) Olav Skundberg Innføring i datakommunikasjon Les mer her: http://en.wikipedia.org/wiki/list_of_http_header_fields#responses 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 10 Page 5
Svaret består av: HTTP-svar (response) 1. En statuslinje på formen: HTTP/versjon statuskode statustekst f.eks:» HTTP/1.1 200 OK» HTTP/1.1 204 No Content» HTTP/1.1 401 Unauthorized» HTTP/1.1 404 File or directory not found» + mange flere (Se: http://en.wikipedia.org/wiki/list_of_http_status_codes ) 2. Hodelinjer (responshode)» med informasjon om bl.a. filen som sendes 3. Meldingskropp med eventuelle data» inneholder data som skal sendes tilbake fra tjeneren til klienten» F.eks. en html-fil, bildefil, pdf-fil e.l.» eller resultatet etter kjøring av et PHP / ASP / JSP program på tjeneren som også kan være html kode... 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 11 HTTP-svar (response) Eksempel på http-svar med statuskode 200 OK og html-kode i kropp 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 12 Page 6
HTTP-protokollen Hver fil som skal hentes fra server medfører: Èn http-forespørsel fra nettleser Ett http-svar fra webtjener Obs! Èn webside kan bestå av mange filer! og dermed mange http-forespørsler og -svar for å laste hele websiden! 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 13 HTTP protokollen HTTP er en tilstandsløs protokoll To forespørsler fra samme klient er uavhengige av hverandre Klienten og tjeneren "glemmer" forrige forespørsel umiddelbart "Problematisk" i webapplikasjoner (kan avhjelpes med cookies/sessions) Men: forenkler implementasjon av tjenerprogrammene HTTP 1.0 (1996) Etablerer og kobler ned en ny forbindelse til tjener for hver forespørsel/svar! Vanligvis er det tjeneren som kobler ned etter at responsen er sendt Medfører mye ekstra tidsbruk for oppkobling / nedkobling.» Som vi skal se i detalj under gjennomgang av TCP på transportlaget HTTP versjon 1.1 (1997) Mest vanlige versjon i dag. Protokollen er forbedret med effektiviseringsmekanismer Kan sende flere forespørsler på samme TCP forbindelser HTTP versjon 2.0 (2015) Mer effektiv overføring av data (komprimering, multipleksing og server push-teknologi) Støttes av de fleste webtjenere og -lesere fra slutten av 2015 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 14 Page 7
Forbindelse Forbindelse Effektivisering i HTTP 1.1 vedvarende forbindelse vedvarende forbindelse med pipelining 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 15 Effektivisering i HTTP 1.1 To metoder for å effektivisere - gir vesentlig bedre ytelse! Vedvarende (persisente) forbindelser Forbindelsen til webtjener holdes åpen, og brukes av flere HTTP forespørsler (requests) etter hverandre» Ofte inneholder en webside flere filer som skal lastes fra samme tjener» Sparer tid til opp- og nedkobling Klient hodelinje: Connection: Keep-alive Tjener hodelinje: Keep-alive: Timeout=15, max=96» Tjener kobler ned forbindelsen hvis ingen ny forspørsel innen 15 sek.» Max 96 forespørsler på én forbindelse deretter kobler tjener ned. Med HTTP pipelining Klienten kan sende flere forespørseler (vanligvis GET) til samme tjener, uten å vente på respons mellom hver forespørsel. Reduserer ventetid på klienten 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 16 Page 8
Effektivisering i nettleser Moderne nettlesere benytter flere teknikker for å effektivisere Lokal mellomlagring (caching) Sider som er vist tidligere kan hentes fra mellomlager på lokal disk Klienten sender tidspunkt filen ble opprettet med GET forespørselen If-Modified-Since: Wed, 11 Mar 2009 10:01:12 GMT+1 Hvis filen på tjener ikke er endret etter dette, sendes kun en statusmelding HTTP/1.1 304 Not Modified NB! Filer fra webapplikasjoner (eks. PHP) blir alltid sendt på nytt! Parallelle forbindelser Nettleser kan etablere to eller flere parallelle forbindelser til samme tjener Hver forbindelse er en separat HTTP sesjon Benyttes hvis mange filer skal lastes ned Dette styres helt av webleseren og er ikke en del av HTTP protokollen 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 17 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 18 Page 9
HTTP/2 Ny større revisjon av HTTP (første siden versjon 1.1) Utvikles av IETF (Internet Engineering Task Force) Godkjent som standard i februar 2015» De fleste store nettlesere støtter HTTP/2 fra slutten av 2015» Apache 2.4.17 støtter HTTP/2 med modulen mod_http2» Microsoft IIS støtter HTTP/2 i Windows 10 og Windows Server 2016. Pr. juni 2016 støtter ca 9% av verdens 10 mill. største websiter HTTP/2 [W3Techs] "Bakoverkompatibel" med http/1.1 fordi: Klient- og tjenerside "blir enige" om versjon (på forhånd eller underveis) HTTP-APIet er uendret sett fra applikasjonene Metodene GET, POST osv. er beholdt Navn og betydning på hodelinjer er uendret Likevel - èn stor endring: HTTP/2 sender data på binær form! Hode og data i meldingene kodes binært Hode og data sendes i separate "rammer" Både klient og tjener må bruke HTTP/2 Krever verktøy (som Wireshark) for å lese meldingene 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 19 Datautveksling i HTTP/2 strømid 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 20 Page 10
Datautveksling i HTTP/2 Stream (strøm) En toveis strøm av bytes over en transportforbindelse (TCP-forbindelse) Èn TCP-forbindelse kan transportere èn eller flere strømmer Hver strøm er identifisert med et unikt nummer (strømid) En strøm kan inneholde èn eller flere http-meldinger Strømmer kan gis ulik prioritet Message (melding) En sekvens av frames (rammer) som til sammen utgjøre en logisk http-melding (forespørsel eller svar) Kan betå en èn eller flere rammer Frame (ramme) Den minste kommunikasjonsenheten i HTTP/2 Kan inneholde HTTP-hode, HTTP-data (nyttelast) eller annet Rammer fra ulike strømmer kan "blandes" på samme TCP-forbindelse Mottaker vil sette sammen rammene korrekt basert på strømid'en i hver ramme 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 21 Effektiviseringsmekanismer i HTTP/2 Datakomprimering Komprimerer request- og responsehodet Reduserer datamengden som sendes Server Push Tjener kan sende mer data enn det klienten har bedt om, f.eks. CSS, JS og bilder Obs! Må sendes før "hovedresponsen" slik at ikke klienten også ber om disse. Multipleksing Erstatter vedvarende forbindelser, pipelining og parallelle forbindelser fra HTTP 1.1 Oppnås ved å blande rammer fra ulike strømmer over samme TCP-forbindelse 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 22 Page 11
Sikker HTTP - HTTPS 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 23 Sikker HTTP - HTTPS HTTPS = HTTP Secure = HTTP over TLS/SSL Alle HTTP-meldinger krypteres med TLS før de sendes» Både HTTP-hode og nyttelast krypteres! HTTPS bruker port 443 på tjenersiden TLS = Transport Layer Security Erstatter den eldre SSL (Secure Socket Layers) Krypterer data med symmetriske nøkler» Nøkler genereres for hver forbindelse» Utveksles mellom klient og tjener ved oppkobling (TLS-handshake)» Beskytter mot "avlytting" og forsøk på endring av data som sendes Kan autentisere kommunikasjonspartene med asymmetriske nøkler» Ved hjelp av private/offentlige nøkler og digitale sertifikater HTTPS krever at webtjeneren har et digitalt sertifikat som er signert av en "trusted authority"» Kan f.eks. unngå "man-in-the-middle-angrep" ved at webtjeneren sender nettstedets digitalte sertifikat med sin offentlige nøkkel til klienten. HTTP/2 bruker også TLS for sikker kommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 24 Page 12
Internet Media Types (MIME) Forteller webklienten hvordan en fil kan vises webtjeneren kan overføre ulike type filer med ulikt innhold webklienten må vite "hva" fila inneholder for å kunne vise den korrekt Tilsvarer filtyper i Windows, f.eks..docx,*.jpg,.pdf MIME = Multipurpose Internet Mail Extention Defineres og vedlikeholdes av IANA Se: http://www.iana.org/assignments/media-types MIME-typen består av to deler: Type, f.eks: text sier noe overordnet om innholdet Subtype, f.eks: html mer detaljert beskrivelse av kodingsformat Eksempler: text/html text/css image/jpg tekstfiler kodet med html (websider) tekstfiler kodet etter css standaren (stilark) bildefil i jpg format 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 25 Internet Media Types (MIME) Webtjenere må sende korrekt MIME-type med alle filer Dette sendes som en hodelinje i http-responsen, f.eks: 'Content-Type: image/gif' MIME-typen bestemmes fra filtypen i webtjenerens OS Webtjeneransvarlig må konfigurere / vedlikeholde MIMEtyper på webtjeneren 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 26 Page 13
Filoverføring med FTP FTP File Transfer Protocol «Gammel» klient/tjener-basert applikasjonsprotokoll for filoverføring FTP bruker TCP som transportprotokoll FTP-tjener lytter på TCP-port 21 (oppkobling/kommandoer)» Lager ny forbindelse på serverport 20 for dataoverføring Noen bruksområder Opplasting (publisering) av websider til webtjenere. Nedlasting av filer fra ftp-arkiver på Internett Verktøy Finnes både kommandobaserte og GUI-baserte klienter Weblesere kan også bruke FTP-protokollen» URL-format: ftp://user:password@host:port/path TCP port 20/21 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 27 Filoverføring med FTP Autentisering Anonym FTP» Bruk av FTP uten gyldig brukernavn» Brukernavn: anonymous (eller ftp)» Passord: e-postadressen din (eller hva som helst) Autentisert FTP» Bruker må oppgi gyldig brukernavn og passord ved tilkobling» Tilgangsettigheter styres av oppgitt brukerkonto og filsystem Ulemper med FPT Ingen kryptering av overførte data eller passord! Hvis man bruker autentisert FTP, kan passordet "tappes" i nettet. Trøblete i brannmurer og NAT fordi den bruker to tjenerporter Bedre alternativer til FTP SCP Secure Copy Protocol enkel filoverføring med SSH SFTP - Secure FTP bruker SSH, default TCP port: 22 Begge tilbyr:» Autentisering (brukernavn / passord)» Kryptert overføring av data og autentiseringsinformasjon FTPS FTP over SSL/TLS: oppkobling er ukryptert, men resten kryptert 6107 Operativsystem og nettverk Jon Kvisli, HSN Web og http - 28 Page 14