Transcript Kapittel 2
Kapittel 2 Application Layer Computer Networking: A Top Down Approach Featuring the Internet, Slides adapted from the slides accompanying the book of Kurose & Ross. © 1996-2004 J.F Kurose and K.W. Ross, All Rights Reserved Norsk versjon: © Christian F Heide, 2004. Versjon 2.0 / 14.09.04 3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Kap 2: Applikasjonslaget 1 Kapittel 2: Application layer 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 2 Noen nettverksapplikasjoner E-post Internettelefoni Web Sanntids video- Instant messaging (f. eks. MSN) Remote login P2P fildeling Multi-user nettverksspill Streaming av lagret video konferanse Massive parallel computing Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 4 Kapittel 2 – Hvor er vi? 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 5 Lage nettverksapplikasjoner Skriv programmer som kjører på ulike endesystemer og kommuniserer over et nettverk f.eks. Web: Web server programvare kommuniserer med nettleserprogramvare applikasjon transport nettverk link fysisk Ingen applikasjonsprogramvare skrives for noder i kjernen Noder i nettets kjerne opererer ikke på applikasjonslaget Dette designet muliggjør hurtig applikasjonsutvikling Versjon 2.0 / 14.09.04 applikasjon transport nettverk link fysisk applikasjon transport nettverk link fysisk Kap 2: Applikasjonslaget 7 Applikasjoner og applikasjonslagsprotokoller Applikasjon: kommuniserende, distribuerte prosesser f.eks. e-post, Web, P2P fildeling, meldingsformidling kjører i endesystemer (vertsmaskiner, hosts) utveksler meldinger appl transport nettverk link fysisk Applikasjonslagsprotkoller en del av en applikasjon definerer meldinger som utveksles og handlinger som skal utføres bruker kommunikasjonstjenester som tilbys av protokoller på laget under (transportlaget), TCP og UDP Versjon 2.0 / 14.09.04 appl transport nettverk link fysisk appl transport nettverk link fysisk Kap 2: Applikasjonslaget 8 Applikasjonsarkitekturer Klient-tjener (client-server) Peer-to-peer (P2P) Hybrid av klient-tjener og P2P Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 9 Klient-tjener arkitektur tjener (server): “always-on” maskin permanent IP-adresse “server farmer” for skalering klienter: Versjon 2.0 / 14.09.04 kommuniserer med tjener kan være sporadisk tilkoblet kan ha dynamisk IPadresse kommuniserer ikke direkte med hverandre Kap 2: Applikasjonslaget 10 Ren P2P arkitektur ingen “always on” server nødvendig endesystemer kommuniserer direkte med hverandre maskiner er sporadisk tilkoblet og kan endre IPadresser eksempel: Gnutella Skalerer godt Noe vanskelig å drifte Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 11 Hybrid av klient-tjener og P2P Napster Filoverføring er P2P Filsøk er sentralisert: • Peers registrerer objekter de vil dele i sentral server • Peers benytter samme server for å finne ønskede objekter Instant messaging Chatting mellom to brukere er P2P Deteksjon av tilstedeværelse og adresse er sentralisert: • Brukere registrerer sin IP-adresse i en sentral server når de logger på • Brukere kontakter sentral server for å finne venners IPadresser Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 12 Klient-tjener paradigmet klient appl transport nettverk link fysisk request reply appl transport nettverk link fysisk tjener Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 13 Kommuniserende prosesser Prosess: program som kjører på en maskin innen samme maskin kommuniserer to prosesser ved interprosesskommunikasjon (definert av OS). prosesser på ulike maskiner kommuniserer ved en applikasjonslagsprotokoll Klientprosess: prosessen som initierer kommunikasjonen Tjenerprosess: prosessen som venter på å bli kontaktet Merk: applikasjoner Versjon 2.0 / 14.09.04 med P2P-arkitektur har både klientprosesser og tjenerprosesser Kap 2: Applikasjonslaget 14 Prosesskommunikasjon over et nettverk prosess kontrollert av applikasjonsutvikleren socket socket TCP med buffere og variable prosess Internett TCP med buffere og variable kontrollert av OS Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 15 Krav til transporttjenester fra noen applikasjoner Applikasjon Følsom for forsinkelse Tap Båndbredde filoverføring e-post Web sanntidsaudio/-video ingen tap ingen tap ingen tap tapstolerant lagret audio/video interaktive spill tapstolerant tapstolerant elastisk elastisk elastisk audio: 5kb/s-1Mb/s video:10kb/s-5Mb/s som over noen kb/s og høyere Versjon 2.0 / 14.09.04 nei nei nei ja, noen 100 ms ja, noen s ja, noen 100 ms Kap 2: Applikasjonslaget 19 Internett apps: applikasjon- og transportprotokoll Applikasjon e-post remote terminalaksess Web filoverføring streaming av multimedia Internetttelefoni Applikasjonslagsprotokoll Underliggende transportprotokoll SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] proprietær (f.eks. RealNetworks) proprietær (f.eks. Dialpad) TCP TCP TCP TCP TCP eller UDP Versjon 2.0 / 14.09.04 oftest UDP Kap 2: Applikasjonslaget 21 Kapittel 2 – Hvor er vi? 2.1 Principles of network applications app architectures app requirements 2.2 Web and HTTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 22 HTTP oversikt HTTP: hypertext transfer protocol Webs applikasjonslags- protokoll klient/tjener modell klient: browser som forespør, mottar og viser web-objekter tjener: web-tjeneren sender objekter som repsons på forespørsler HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2616 Versjon 2.0 / 14.09.04 PC med Explorer Tjener som kjører Apache Web server Mac med Navigator Kap 2: Applikasjonslaget 24 HTTP oversikt (fortsatt) HTTP er tilstandsløs Benytter TCP: klient initierer TCP- forbindelse (åpner socket) til tjener, port 80 tjener aksepterer TCPforbindelsen fra klienten HTTP meldinger (applikasjonslagets protokollmeldinger) utveksles mellom browser (HTTP klient) og web-server (HTTP tjener) TCP-forbindelsen lukkes Versjon 2.0 / 14.09.04 tjener tar ikke vare på informasjon om tidligere forespørsler fra klienten på siden Protokoller som har tilstandsinformasjon er komplekse! må huske hva som har skjedd hvis tjener eller klient krasjer, kan deres syn på tilstanden bli inkonsistent Kap 2: Applikasjonslaget 25 Ikkepersistent HTTP Bruker skriver inn URL www.ia.hiof.no/cfh/tullogtoys/index.html (inneholder tekst og referanser til 10 jpeg bilder) 1a. HTTP klienten initierer en TCP- forbindelse til HTTP serveren (eller prosessen) på www.ia.hiof.no på port 80 2. HTTP klienten sender en HTTP request melding (som URL) over TCP-forbindelsen. Meldingen indikerer at klienten ønsker objektet /cfh/tullogtoys/index.html 1b. HTTP server på maskinen www.ia.hiof.no venter på en TCP-forbindelse på port 80. Aksepterer forbindelsen og gir beskjed til klienten 3. HTTP serveren mottar fore- spørselen, lager en response melding som inneholder det forespurte objektet og sender meldingen inn på socket tid Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 27 Ikkepersistent HTTP (forts.) 4. HTTP server lukker TCP5. HTTP klienten mottar respons- tid forbindelsen meldingen som inneholder html-filen og viser denne. Ved “parsing” av html-fil finner den ti refererte jpegobjekter 6. Trinn 1-5 repeteres for hvert av de ti jpeg-objektene Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 28 Estimering av responsetid Definisjon av RTT: tiden det tar for en liten pakke å vandre fra klienten til tjeneren og initiere TCPtilbake. forbindelse RTT Responstid: én RTT for å initiere en request TCP-forbindelse RTT én RTT for en HTTP fil request med ankomst av mottatt den første byte av HTTP responsen tid sendetiden for fila totalt: 2RTT + sendetid Versjon 2.0 / 14.09.04 sendetiden for fil tid Kap 2: Applikasjonslaget 29 Persistent HTTP Persistent uten pipelining: Ulemper med ikkepersistent HTTP: klient sender ny forespørsel først når trenger 2 RTT pr objekt respons er mottatt OS må allokere ressurser en RTT for hvert referert for hver TCP-forbindelse objekt men nettlesere åpner ofte parallelle TCP-forbindelser Persistent med pipelining: for å hente refererte default i HTTP/1.1 objekter klient sender forespørsel Persistent HTTP med en gang den kommer tjener lar forbindelsen over et referert objekt være åpen etter å ha sendt bare en RTT for alle de sin respons refererte objekter etterfølgende HTTPmeldinger mellom samme klient og tjener sendes over samme forbindelse Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 30 HTTP request-meldinger HTTP request-melding: Tekst (lesbart for mennesker) request linje (GET, POST, HEAD kommandoer) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 header Connection: close linjer Accept-language:fr “Carriage return, line feed” indikerer slutten på meldingen Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 31 HTTP request-melding: generelt format Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 32 HTTP respons-melding statuslinje (protokoll, statuskode, statusfrase) headerlinjer data, f eks etterspurt HTML-fil HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 34 HTTP respons-melding: generelt format Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 35 Noen HTTP responsstatuskoder 200 OK forespørsel lyktes, etterspurt objekt følger senere i meldingen 301 Moved Permanently etterspurt objekt er flyttet, ny lokasjon spesifisert senere i meldingen (Location:) 400 Bad Request forespørsel ikke forstått av serveren 404 Not Found etterspurt dokument ikke funnet på serveren 505 HTTP Version Not Supported Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 36 Cookies klient Cookie-fil ebay: 8734 Cookie-fil amazon: 1678 ebay: 8734 server vanlig http request server vanlig http respons + genererer ID Set-cookie: 1678 1678 for bruker vanlig http request cookie: 1678 vanlig http respons en uke senere: Cookie-fil vanlig http request amazon: 1678 ebay: 8734 vanlig http respons cookie: 1678 Versjon 2.0 / 14.09.04 cookiespesifikk aksjon cookiespesifikk aksjon Kap 2: Applikasjonslaget 38 Web caching (proxy server) Mål: oppfylle klientens forespørsel uten å involvere opprinnelsesserver opprinnelsesserver bruker setter nettleser: Web-aksess via cache nettleser sender alle HTTP-forespørsler til cache klient objektet finnes i cache: cache returnerer objektet objektet finnes ikke i cache: cache forespør objektet fra opprinnelses-serveren, og returnerer objektet til klienten klient Versjon 2.0 / 14.09.04 Proxy server opprinnelsesserver Kap 2: Applikasjonslaget 40 Mer om web-caching Cache opptrer som både klient og tjener Cache installeres ofte av ISP (høgskole, bedrift, privat ISP) Hvorfor web-caching? redusere responstid for klientforespørsler. redusere trafikken på institusjonens aksesslink. cacher gjør at “fattige” innholdsleverandører kan gi gode leveranser Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 41 Caching eksempel Antagelser gjennomsnittlig objektstørrelse = 100,000 bit gjennomsn. foresp. rate fra nettlesere = 15 pr sekund forsinkelse fra institusjonens ruter til opprinnelsesservere og tilbake = 2 sekunder Konsekvenser utnyttelse av LAN = 15% opprinnelses servere Internett 1.5 Mb/s aksesslink institusjonens nettverk 10 Mb/s LAN utnyttelse av aksesslink = 100% total forsinkelse = Internett- forsinkelse + aksessforsinkelse + LAN forsinkelse = 2 s + minutter + ms Versjon 2.0 / 14.09.04 institusjonell cache Kap 2: Applikasjonslaget 42 Caching eksempel (forts.) opprinnelses servere Mulig løsning øke aksesslinkens båndbredde til f eks 10 Mb/s Konsekvenser Internett utnyttelse av LAN = 15% utnyttelse av aksesslink = 15% 10 Mb/s aksesslink Total forsinkelse = Internett- forsinkelse + aksessforsinkelse + LAN forsinkelse = 2 s + ms + ms ofte en kostbar oppgradering institusjonens nettverk 10 Mb/s LAN institusjonell cache Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 43 Caching eksempel (forts.) opprinnelses servere Installere cache anta at treffraten er 0.4 Konsekvenser Internet 40% av forespørslene vil besvares umiddelbart av cache 60% av forespørslene besvares av opprinnelsesserver utnyttelse av aksesslink reduseres til 60%, noe som resulterer i neglisjerbare forsinkelser (størrelse 10 ms) gjennomsnittlig forsinkelse = Internettforsinkelse + aksessforsinkelse + LAN forsinkelse = 0.6 * 2.01 s + noen ms < 1.4 s 1.5 Mb/s aksesslink institusjonens nettverk Versjon 2.0 / 14.09.04 10 Mb/s LAN institusjonell cache Kap 2: Applikasjonslaget 44 Kapittel 2 – hvor er vi? 2.1 Principles of app layer protocols 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Socket programming with TCP 2.7 Socket programming with UDP 2.8 Building a Web server 2.9 Content distribution Versjon 2.0 / 14.09.04 Network Web caching Content distribution networks P2P file sharing Kap 2: Applikasjonslaget 46 FTP: the file transfer protocol bruker FTP brukergrensesnitt FTP klient filoverføring lokalt filsystem Versjon 2.0 / 14.09.04 FTP server fjerntliggende filsystem Kap 2: Applikasjonslaget 47 FTP: the file transfer protocol TCP kontrollforbindelse port 21 FTP klient TCP dataforbindelse port 20 Versjon 2.0 / 14.09.04 FTP server Kap 2: Applikasjonslaget 48 FTP kommandoer og responser Noen kommandoer: Noen responser USER username 331 Username OK, PASS password password required 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file LIST returnerer liste av filer i katalogen RETR filename henter fil til lokal maskin STOR filename lagrer (laster opp) fil på fjernliggende maskin Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 50 Kapittel 2 – hvor er vi? 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 51 Elektronisk post utgående meldingekø brukerens postkasse bruker agent Tre hovedkomponenter: brukeragenter mail server mail-servere simple mail transfer SMTP protocol: SMTP Brukeragent SMTP samme som “epost-leser” SMTP skrive og lese epostmail meldinger server Eksempler: Eudora, Outlook, pine, Netscape Messenger bruker agent utgående og innkommende bruker meldinger lagres på server bruker agent mail server bruker agent bruker agent agent Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 52 Elektronisk post: SMTP [RFC 2821] benytter TCP for pålitelig overføring av epost fra klient til tjener, port 25 direkte overføring: fra avsenders mailserver til mottakers mailserver overføringens tre faser hilsing (“handshaking”) overføring av melding nedkobling (closure) kommando/respons interaksjon kommandoer: ASCII tekst respons: statuskode og -frase meldinger må være 7-bits ASCII Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 54 Scenario: Alice sender melding til Bob 1) Alice benytter UA for å skrive melding og legger adressen [email protected] og trykker “send” 2) Alices UA sender meldingen til hennes mailserver; melding legges i meldingskø 3) Klientsiden av SMTP åpner en TCP-forbindelse til Bobs mailserver 1 user agent 2 mail server 3 4) SMTP-klienten “hilser på” SMTP-serveren og sender deretter Alices melding over TCP-forbindelsen 5) Bobs mailserver legger meldingen i Bobs postkasse (mailbox) 6) Bob bruker sin UA (epostprogram) for å lese meldingen mail server 4 Versjon 2.0 / 14.09.04 5 6 user agent Kap 2: Applikasjonslaget 55 Meldingsformat: multimedia-utvidelser MIME versjon kodingsmetode multimedia-data type, subtype, parameterdeklarering kodede data From: [email protected] To: [email protected] Subject: Fint bilde MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64-kodede data ..... ......................... ......base64-kodede data Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 60 Multipart Type From: [email protected] To: [email protected] Subject: Fint bilde MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=StartOfNextPart --StartOfNextPart Hei Christian! Sjekk disse blomstene! --StartOfNextPart Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64-kodede data ..... ......................... ......base64-kodede data --StartOfNextPart Fine å ha på kontoret? Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 62 Epost aksessprotokoller bruker agent SMTP SMTP senders mailserver aksess protokoll: bruker • POP3 agent • IMAP mottakers mailserver Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 63 POP3 protokoll autorisasjonsfase klient-kommandoer: user: brukernavn pass: passord server-responser +OK -ERR transaksjonsfase, klient: list: liste meldinger retr: hente meldinger dele: slette quit: avslutte Versjon 2.0 / 14.09.04 S: C: S: C: S: +OK POP3 server ready user bob +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off Kap 2: Applikasjonslaget on 64 POP3 og IMAP Mer om POP3 Forrige eksempel benyttet “download and delete” modus. Kan da ikke lese epost på ny dersom man bytter lokasjon/klient “Download-and-keep”: kopier av meldinger på ulike klienter POP3 er tilstandsløs mellom sesjoner IMAP Beholder meldinger på mail-serveren Tillater brukeren å organisere meldinger i mapper IMAP tar vare på tilstand mellom sesjoner: Versjon 2.0 / 14.09.04 navn på mapper og kobling mellom meldings-ID og mappenavn Kap 2: Applikasjonslaget 65 Kapittel 2 – hvor er vi? 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 66 DNS DNS tjenester Maskinnavn til IPadresse oversetting Host aliasing Kanoniske og alias navn Mail server aliasing Lastdeling Replikerte webservere: sett av IP-adresser tilhørende ett kanonisk navn Hvorfor ikke sentralisere DNS? “single point of failure” trafikkvolum stor avstand til sentralisert database for mange vedlikehold skalerer ikke! Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 68 TLD og autoritative servere Top-level domain (TLD) servere: ansvarlige for com, org, net, edu osv., samt alle top-nivå landdomener som uk, fr, ca og no Norid er ansvarlig for no-domenet (www.norid.no) Autoritative DNS-servere: en organisasjons DNS-servere, gir autoritative maskinnavn til IP mappinger for organisasjonens servere (f.eks. web- og mail-server). Kan vedlikeholdes av organisasjonen eller en tjenestetilbyder (“service provider”) Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 70 Lokal navnetjener Ikke noe strengt hierarki Hver ISP (ISP-firma, bedrift, universitet) har en kalles også “default navnetjener” Når en maskin sender en DNS query, sendes den til dens lokale navnetjener (DNS server) Fungerer som en proxy, videresender forespørsel inn i hierarkiet Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 71 Distribuert, hierarkisk database Rot DNS-Servere com DNS-servere yahoo.com amazon.com DNS-servere DNS-servere org DNS-servere ietf.org DNS-servere edu DNS-servere poly.edu umass.edu DNS-servereDNS-servere Klient ønsker IP for www.amazon.com: Klient spør en rot-tjener om DNS-server for “com” Klient spør “com” DNS-server om amazon.com sin DNS-server Klient spør amazon.com sin DNS-server om IPadressen til www.amazon.com Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 72 DNS: Rot-navnetjener a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD k RIPE London i NORDUnet Stockholm j NSI (TBD) Herndon, VA m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA 13 rot-navnetjenere i verden b USC-ISI Marina del Rey, CA l ICANN Marina del Rey, CA Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 73 DNS - Domain Name System RFC1034, RFC1035 Navnløs rot Top Level Domains (TLD) Second Level Domains ARPA COM INADDR YAHOO HIOF 36 PEOPLE IT 136 NO 69 196 EDU GOV MIL NET ORG Generiske domener ARPA - spesielt domene for adresse-til-navn mapping Versjon 2.0 / 14.09.04 AE NO ZW Landdomener Kap 2: Applikasjonslaget 74 Eksempel rot DNS-server Maskin på 2 cis.poly.edu ønsker IP-adressen til gaia.cs.umass.edu rekursiv forespørsel (query): 3 7 6 TLD DNS-server lokal DNS-server dns.poly.edu 1 legger byrden med 5 4 8 navneoppslag på kontaktet navnetjener spørrende maskin kan gi stor belastning cis.poly.edu autoritativ DNS-server dns.cs.umass.edu gaia.cs.umass.edu Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 75 Iterativ forespørsel rot DNS-server 2 iterativ forespørsel: 3 kontaktet navnetjener svarer med adressen til navnetjener som kan kontaktes TLD DNS-server 4 5 lokal DNS-server dns.poly.edu 1 8 spørrende maskin 7 6 autoritativ DNS-server dns.cs.umass.edu cis.poly.edu gaia.cs.umass.edu Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 76 DNS: caching og recordoppdatering når en navnetjener får kjennskap til en “mapping”, vil den cache den mappinger i cache vil fjernes etter en tid TLD servere vil typisk caches i lokale navnetjenere • Trenger derfor sjelden å kontakte rotnavnetjenere “update/notify” mekanismer designes nå av IETF RFC 2136, RFC 3007 Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 77 DNS records RR format: (navn, Type=A navn er maskinnavn verdi er IP-adresse verdi, type, ttl) Type=CNAME navn er alias-navn for et “kanonisk” (et virkelig) navn www.ibm.com is really Type=NS servereast.backup2.ibm.com navn er domene (f eks verdi er kanonisk navn foo.com) verdi er IP-adressen til Type=MX autoritativ navnetjener verdi er navn på mailfor dette domenet serveren assosiert med navn Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 78 DNS-meldinger DNS protokollen : query (forespørsel) og reply (svar) meldinger har samme meldingsformat meldingsheader identification: 16 bits id- nummer for forespørsel, svar på spørsmål benytter samme nummer flagg: query (0) eller reply (1) rekursjon ønsket rekursjon tilgjengelig svar er autoritativt Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 79 DNS-meldinger (forts) Navn- og type-felt for en query RR som svar på query records for andre autoritative tjenere tilleggsinfo som kan benyttes Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 80 Innlegging av records i DNS Eksempel: har laget “Network Utopia” Registrerer navnet networkuptopia.com hos en registrar (liste hos Internic (.com) eller Norid (.no)) Gir registraren navn og IP-adresser til dine autoritative navnetjenere (primær og sekundær) Registrar legger inn to RRs i com TLD-server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) Legger inn autoritativ server Type A record for www.networkuptopia.com og Type MX record for networkutopia.com Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 81 Kapittel 2 – Hvor er vi? 2.1 Principles of network applications app architectures app requirements 2.2 Web and HTTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 82 P2P fildeling Alice velger en av dem, Eksempel Alice kjører en P2P klient applikasjon på sin PC Av og til knytter hun seg til Internett; får ny IP-adresse hver gang Spør etter “Beautiful” Applikasjonen viser andre peers som har en kopi av Beautiful Bob Filen kopieres fra Bobs PC til Alices PC v.hj.a HTTP Men Alice laster ned sangen kan andre brukere hente filer fra Alice Alices peer er både en web-klient og en midlertidig webserver Alle peers er servere = skalerer bra! Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 83 P2P: sentralisert katalog det originale “Napster”designet 1) når peer knytter seg opp, informerer den en sentral server om: Bob sentralisert katalogserver IP-adresse innhold den vil dele 2) Alice spør serveren om “Beautiful” 3) Alice ber Bob om å overføre filen Versjon 2.0 / 14.09.04 1 peers 1 3 1 2 1 Alice Kap 2: Applikasjonslaget 84 P2P: problemer med sentralisert katalog “Single point of failure” Flaskehals for ytelsen Problemer med opphavsrett (copyright) Filoverføringen er desentralisert, men å finne innhold er sentralisert Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 85 Query flooding: Gnutella helt distribuert ingen sentral server offentlige (public domain) protokoller many Gnutella clients implementing protocol “overlay network”: graf kant mellom peer X og Y hvis det eksisterer en TCP-forbindelse alle aktive peers og kanter utgjør “overlay nettet” Kant er ikke en fysisk link Hver peer vil typisk være knyttet til færre enn 10 naboer Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 86 Gnutella: protokoll Forespørsel sendes over eksisterende TCP-forbindelser peers videresender forespørsler QueryHit sendes over tilbake Query samme vei Filoverføring: HTTP Query QueryHit QueryHit Skalerbarhet: begrense rekkevidde på flooding Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 87 Gnutella: Tilknytning av ny peer 1. 2. 3. 4. 5. Når peer X ønsker å knytte seg til, må den finne en annen peer i Gnutella nettet: bruker liste av mulige peers X forsøker å etablere TCP-forbindelse etter tur med nodene på listen inntil den får kontakt med en node, Y X sender ”ping”-melding til Y; Y videresender den Alle peers som mottar ”ping”-melding svarer med en ”pong”-melding X mottar mange ”pong”-meldinger og kan da sette opp flere TCP-forbindelser Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 88 Utnyttelse av heterogenitet: KaZaA Hver peer er enten en gruppeleder eller tilordnet et en gruppeleder TCP-forbindelse mellom peer og dens gruppeleder TCP-forbindelse mellom noen gruppeledere Gruppeleder har info om innhold hos alle sine “barn” vanlig deltager (peer) gruppeleder naborelasjon i ”overlay”-nett Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 89 KaZaA: Forespørsel Hver fil har en “hash” og en deskriptor Klient sender nøkkelord-forespørsel til sin gruppeleder Gruppeleder svarer med de treff den har funnet: For hvert treff: metadata, hash og IP-adresse Hvis gruppeleder videresender forespørsel til andre gruppeledere, vil de svare med sine treff Klient velger de filer den ønsker å laste ned HTTP-forespørsel med hash som identifikator sendes til de som har den ønskede filen Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 90 KaZaA-teknikker Begrensninger i samtidige opplastinger Forespørselskø Incentiv-prioriteringer Parallell nedlasting Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 91 Kapittel 2 – hvor er vi? 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 92 Socketprogrammering Mål: lære hvordan man lager klient/tjenerapplikasjoner som kommuniserer via sockets Socket API introdusert i BSD4.1 UNIX, 1981 genereres, brukes og fjernes av applikasjoner klient/tjener paradigme to typer transporttjenester via socket API: upålitelig datagram pålitelig, byte-strømorientert Versjon 2.0 / 14.09.04 socket et maskin-lokalt, applikasjonsgenerert, OS-kontrollert grensesnitt (en “dør”) som applikasjonsprosesser kan sende og motta meldinger gjennom, meldinger til eller fra andre applikasjonsprosesser Kap 2: Applikasjonslaget 93 Socketprogrammering med TCP Socket: en dør mellom applikasjonsprosess og endetil-ende protokoll (UCP eller TCP) TCP tjeneste: pålitelig overføring av byte fra en prosess til en annen styrt av applikasjonsutvikler styrt av operativsystemet prosess prosess socket TCP med buffere, variable internett socket TCP med buffere, variable styrt av applikasjonsutvikler styrt av operativsystemet maskin eller tjener maskin eller tjener Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 94 Oppretting av forbindelse Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 96 Klient/tjener socket-interaksjon: TCP Tjener (kjører på maskinen hostid) Klient generér socket, port = x, for innkommende forespørsel: welcomeSocket = ServerSocket() TCP oppsetting forbindelse vent på innkommde foresp. om forbindelse av connectionSocket = welcomeSocket.accept() generér socket, etablér forbindelse til hostid, port x clientSocket = Socket() send foresp. clientSocket les foresp. fra connectionSocket skriv svar til connectionSocket les svar fra clientSocket lukk connectionSocket Versjon 2.0 / 14.09.04 lukk clientSocket Kap 2: Applikasjonslaget 99 Eksempel: Java-klient (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; Lag input-strøm Generér klient-socket, kontakt tjener Lag output-strøm forbundet med socket BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 100 Eksempel: Java-klient (TCP), forts. Lag inputstrøm forbundet med socket BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Send linje til tjener outToServer.writeBytes(sentence + '\n'); Les linje fra tjener modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 101 Eksempel: Java-server (TCP) import java.io.*; import java.net.*; class TCPServer { Generér velkomst-socket på port 6789 Vent ved velkomstsocket på å bli kontaktet av klient Lag inputstrøm knyttet til socket public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 103 Eksempel: Java-server (TCP), forts. Lag outputstrøm knyttet til socket DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); Les inn linje fra socket clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; Skriv ut linje til socket outToClient.writeBytes(capitalizedSentence); } } } enden av while-løkke, vent på neste kontakt (fra annen klient) Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 104 Kapittel 2 – hvor er vi? 2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 105 Klient/tjener socket-interaksjon: UDP Tjener (kjører på hostid) generér socket, port = x, for innkommende forespørsel: serverSocket = DatagramSocket() Klient generér socket clientSocket = DatagramSocket() Lag datagram med data og adresse (hostid, port=x) og send datagram ved hjelp av clientSocket les foresp. fra serverSocket skriv svar til serverSocket med angivelse av klientens adresse og portnummer les svar fra clientSocket lukk clientSocket Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 107 Eksempel: Java-klient (UDP) import java.io.*; import java.net.*; Lag input-strøm Generér klient-socket Oversett maskinnavn til IP-adresse v.hj.a. DNS class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[ ] sendData = new byte[1024]; byte[ ] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 108 Eksempel: Java-klient (UDP), forts. Lag datagram med data som skal sendes, lengde, IP-adr, port Send datagram til tjener DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Les datagram fra tjener clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 109 Eksempel: Java-klient (UDP) Klient prosess input strøm skjerm inFromUser tastatur Input: mottar pakke (TCP mottok “byte stream”) UDP pakke receivePacket pakke (TCP sendte “byte stream”) sendPacket Output: sender UDP pakke klient UDPsocket til nettet UDP socket fra nettet Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 110 Eksempel: Java-tjener (UDP) import java.io.*; import java.net.*; Generér datagram socket på port 9876 class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[ ] receiveData = new byte[1024]; byte[ ] sendData = new byte[1024]; while(true) { Lag plass for mottatt datagram Motta datagram DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 111 Eksempel: Java-tjener (UDP), forts String sentence = new String(receivePacket.getData()); Få IP-adr og portnr fra avsender InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); Lag datagram for sending til klient DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); Skriv ut datagram til socket serverSocket.send(sendPacket); } } } Enden av while-løkke, vent på neste datagram Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 112 Kapittel 2 – Hvor er vi? 2.1 Principles of network applications app architectures app requirements 2.2 Web and HTTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P file sharing 2.7 Socket programming with TCP 2.8 Socket programming with UDP 2.9 Building a Web server Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 113 Kapittel 2: Oppsummering Vårt studium av nettverksapplikasjoner er nå ferdig Applikasjonsarkitekturer klient-tjener P2P hybrid tjenestekrav fra på: applikasjonene: protokoller vi har sett pålitelighet, båndbredde, forsinkelse HTTP FTP SMTP, POP, IMAP DNS socket programmering Internetts transport- tjenester forbindelsesorientert, pålitelig: TCP upålitelig, datagram: UDP Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 115 Kapittel 2: Oppsummering Viktigste: lært om protokoller typisk request/reply meldingsutveksling: klient ber om info eller tjeneste tjener (server) svarer med data og/eller statuskode meldingsformater: headere: felter med info om data data: info som skal oversendes kontroll- vs. datameldinger in-band, out-of-band sentralisert vs. desentralisert tilstandsløs vs. tilstandsorientert pålitelig vs. upålitelig meldingsoverføring “kompleksitet i kanten av nettet” Versjon 2.0 / 14.09.04 Kap 2: Applikasjonslaget 116