MMT261 Publisering av digitale medier Uke 18: Klient- /tjenerinteraksjon
2 Agenda Klient/tjener-konseptet Hvordan klienter kommuniserer med tjenere Hvordan tjenere holder styr på klienter Koblingsorientert og koblingsfri kommunikasjon Socket-grensesnittet
3 Lokalnettverk vs. internettverk Lokalnettverk –LAN (Local Area Network) –Hub/svitsj –nettverksrammer Internettkommunikasjon –TCP/IP-stakken –IP-datagram –IP-ruting –TCP/UDP
4 Lokal datakommunikasjon: Point- to-point vs. delt medium Point-to-point-kommunikasjon –to datamaskiner koblet sammen via en datalinje –noen fordeler: stor fleksibilitet i forhold til overføringsprotokoll/hastighet, høy sikkerhet,... –noen ulemper: lite egnet ved behov for kommunikasjon mellom flere enn to datamaskiner Delt kommunikasjonskanal: –flere datamaskiner kobler seg til en felles datalinje (alle tilkoblede datamaskiner mottar samme data) –datamaskinene bruker den felles datalinjen etter tur for å sende fra seg datarammer (en sekvens med digitale bits)
5 Alle til alle? Direkte forbindelse mellom n punkter krever (n-1)n/2 koblinger
6 Problemstilling: Hvordan få to datamaskiner knyttet til et større felles nettverk til å kommunisere, uten å tvinge alle datamaskinene knyttet til nettverket til å motta og behandle hver eneste melding som passerer via det felles mediet? Løsning: Maskinvare adressering
7 Spesifisere en mottaker De fleste LAN-teknologier bruker et adresseringsskjema til å realisere direkte kommunikasjon –Hardware adressering (fysisk adresse, også kalt MAC adresse) –Fast i header på ramme (fields = felt): MAC adresse for mottaker og sender Destination address field Source address field –Grensesnittet mot lokalnettet (i praksis nettverkskortet) er i stand til å avgjøre om en ramme er ment for ens egen datamaskin
8 Pakkefiltrering med LAN-hardware (1) Nettverksgrensesnittet –Håndterer alle detaljer omkring sending/mottak av rammer på felles medium. Størrelse på innkommende rammer. CRC – feilsjekk Detektering av hvorvidt en ramme er ment til ens egen datamaskin. Sending av rammer til andre datamaskiner i nettverket. –Jobber uavhengig av CPU, slik at datamaskinen kan fortsette uavhengig av ”ventetid” mot nettverket.
9 Pakkefiltrering med LAN-hardware (2)
10 Repetisjon: Internettkommunikasjon Datakommunikasjon vha. IP-teknologi: R R R R R FRATILDATA IP-datagram:
11 TCP/IP-stakken
12 UDP-pakker (Layer 4) Port: heltall som identifiserer hvilket av tjenerprogrammene på tjenermaskinen som skal ha datapakken Eksempel på data: DNS-spørring, videostream Koblingsfri
13 TCP-segmenter (Layer 4) SEQ/ACK-number: holder styr på at alle segmenter kommer fram og settes sammen i riktig rekkefølge Eksempel på data: HTTP-spørring, FTP, SMTP, POP, … ”progressive download” Koblingsorientert
14 IP-datagram (Layer 3) ”Address”: IP-adresser Eksempel på data: TCP-segment eller UDP-pakke
15 Nettverksrammer på felles medium (Layer 2) Eksempel på rammeformat: Ethernet ”Address”: MAC-adresser på nettverkskort Eksempel på ”Payload”: IP-datagram
16 TCP/IP-ruting IP-datagram Nettverksrammer Rutere
17 IP-adresser Klasse A-nettverk –128 nett, adresser pr. nett –IP-adresser: – Klasse B-nettverk – nett, adresser pr. nett –IP-adresser: – Klasse C-nettverk – nett, 256 adresser pr. nett –IP-adresser: – Klasse D-nettverk –Multicast-adresser –IP-adresser: – Klasse E-nettverk –Ikke i bruk –IP-adresser: –
18 Spesielle IP-adresser Loopback-adresser: – – Broadcast-adressen: –Siste adresse i nettverket –For eksempel IANA har dessuten reservert enkelte adresser for private nett (er ikke i bruk som offisielle Internettadresser): – (1 A-klasse) – (15 B-klasser) – (255 C-klasser)
19 Multicast-adresser Unicast: en-til-en Broadcast: en-til-alle Multicast: en-til-mange Multicast-adresser: – – Reservert for ”well-known” multicast-adresser – – Globale (”normale”) multicast-adresser (Internett) – – Lokale multicast-adresser
20 Layer 5, application Her finner vi kjente protokoller som HTTP, FTP, SMTP, POP, RTSP og RTMP Kan også lage oss egne klienter og tjenere, med egne protokoller klient transport internett nettverk tjener transport internett nettverk internett HTTP
21 Hva forbinder du med … Tjener Klient Klient/tjener-interaksjon Grensesnittet mellom klienten og tjeneren
22 Klienter Klienter – initierer kommunikasjon aktivt Karakteristika: Programmer blir klienter når de trenger informasjon som ligger på en annen datamaskin Startes direkte av brukerer og kjører én sesjon Kjøres lokalt på brukerens maskin Initierer kontakt med tjeneren aktivt Kan kontakte flere ulike tjenester om dette trengs, men en om gangen Trenger ingen spesiell maskinvare eller et avansert OS
23 Tjenere Tjenere – venter passivt på kontakt Karakteristika: Spesialisert og privilegert program som tilbyr én tjeneste, gjerne til flere klienter samtidig Startes automatisk ved systemstart (boot) og jobber med mange ulike sesjoner Kjører på en delt datamaskin (ikke en arbeidsstasjon) Venter passivt på å kontaktes av klienter Kan kontaktes av ulike klienter, men tilbyr én tjeneste Trenger kraftig maskinvare og spesialisert OS
24 Tjenere og tjenermaskiner Begrepsforvirring? Tjener – programvare som tilbyr tjenester i et nettverk Tjenermaskin – datamaskin som kjører en eller flere tjenere ”Server-class computer” – kraftig datamaskin; spesielt designet for å kjøre tjenere
25 Klienter, tjenere og tjenermaskiner KlientprogramvareTjenermaskin og tjenerprogramvare
26 Dataflyten: klient - tjener 2-veis kommunikasjon vanlig –Forespørsel fra klient medfører svar fra tjener Kontinuerlig strøm av data fra tjener –Børsinfo, værdata, Webcasts
27 Transport av data - Protokoller Klient og tjener kommuniserer via transportprotokoller (TCP/IP) klient transport internett nettverk tjener transport internett nettverk internett
28 Tjenere med flere tjenester Egne tjenerprogrammer for hver tjeneste på en enkelt tjenermaskin klient transport internett nettverk klient transport internett nettverk internett tjener transport internett nettverk tjener …
29 Hvem kommuniserer med hvem? Hvordan kjenner tjeneren og klienten hverandre? Transportprotokollen tilordner et unikt nummer til hver tjeneste (port nr.) Både klient og tjener angir identifikatoren: –Protokollprogramvaren bruker identifikatoren for å dirigere hver forespørsel til riktig tjener –Eksempler: :1250 (IP , port 1250) (IP , port 80)
30 ”Well-known ports” For å forenkle bruken av tjenerprogram benyttes ofte faste portnr. på de mest brukte tjenestene: – –Port 80: http/www –Port 443: https –Port 8080: http-alt –Port 21: ftp –Port 25: smtp –Port 110: pop3 –Port 23: telnet –Port 22: ssh –Port 553: rtsp –…
31 Samtidig utførelse Flere forespørsler til samme tjener fra flere klienter: –Hva om det etterspørres store datamengder? –Hva om det kommer veldig mange forespørsler? Løsning: –Hver enkelt forespørsel genererer en kopi av tjeneren (threads – tråder) –Kopiene kjører samtidig – concurrency
32 Koblingsorientert vs. koblingsfri Koblingsorientert transport betinger at klient og tjener blir enige om å kommunisere –TCP Koblingsfri transport gir en applikasjon anledning til å sende meldinger direkte til en hvilken som helst destinasjon på et hvilket som helst tidspunkt –UDP – User Datagram Protocol
33 Socket-grensesnittet (1) Hvordan gjøres en kobling egentlig? Hvordan er grensesnittet mellom applikasjon og protokollprogramvare? Socket API (Application Program Interface)
34 Socket-grensesnittet (2) internett klient transport internett nettverk Socket API tjener transport internett nettverk Socket API
35 Sockets ”Sockets” ble opprinnelig utviklet som en del av I/O-systemet til operativsystemet BSD Unix Socket-API regnes for å være en ”de facto standard” som grensesnitt mellom applikasjon og kommunikasjons- protokollen De fleste operativsystemer (Windows, Mac, Linux, …) har derfor implementert sitt eget Socket(lignende) API
36 Hva Innebærer dette? Programmer ser Socket-API’et som et I/O system Åpne – Lese – Skrive – Lukke (Lage – Bruke – Ødelegge) En socket kan være koblet eller koblingsfri Socket - Stikkontakt
37 En socket-tjener og socket-klient Klient-/tjener- sekvens- diagram Tjener må kalle opp listen før klient kaller opp connect…
38 Java-Sockets (1) Programmeringsspråket Java tilbyr Socket- funksjonalitet gjennom klassene ServerSocket og Socket Leser og skriver til en socket på samme vis som man leser og skriver til en datafil! ServerSocket : accept() getInputStream() getOutputStream() close() : Socket : getInputStream() getOutputStream() close() : println() readLn() println() readLn() ServerSocket tjener = new ServerSocket(1250); Socket forbindelse = tjener.accept(); Socket forbindelse = new Socket(" ", 1250);
39 Java-Sockets (2) internett klient transport internett nettverk Socket API tjener transport internett nettverk Socket API Java (VM)