MMT 261 Publisering av digitale medier Uke 18
MMT 261 Publisering av digitale medier Uke 18: Klient/tjenerinteraksjon
Agenda • Klient/tjener-konseptet • Hvordan klienter kommuniserer med tjenere • Hvordan tjenere holder styr på klienter • Koblingsorientert og koblingsfri kommunikasjon • Socket-grensesnittet 2
Lokalnettverk vs. internettverk • Lokalnettverk – LAN (Local Area Network) – Hub/svitsj – nettverksrammer • Internettkommunikasjon – – TCP/IP-stakken IP-datagram IP-ruting TCP/UDP 3
Lokal datakommunikasjon: Pointto-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) 4
Alle til alle? Direkte forbindelse mellom n punkter krever (n-1)n/2 koblinger 5
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 6
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 7
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. 8
Pakkefiltrering med LAN-hardware (2) 9
Repetisjon: Internettkommunikasjon • Datakommunikasjon vha. IP-teknologi: R R 158. 38. 25. 125 R R R 209. 132. 177. 50 IP-datagram: DATA FRA TIL 10
TCP/IP-stakken • TCP/IP-stakken 11
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 12
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 13
IP-datagram (Layer 3) • ”Address”: IP-adresser • Eksempel på data: TCP-segment eller UDP-pakke 14
Nettverksrammer på felles medium (Layer 2) • Eksempel på rammeformat: Ethernet • ”Address”: MAC-adresser på nettverkskort • Eksempel på ”Payload”: IP-datagram 15
TCP/IP-ruting • IP-datagram • Nettverksrammer • Rutere 16
IP-adresser • Klasse A-nettverk – 128 nett, 16. 777. 216 adresser pr. nett – IP-adresser: 0. 0 – 127. 255 • Klasse B-nettverk – 16. 384 nett, 65. 536 adresser pr. nett – IP-adresser: 128. 0. 0. 0 – 191. 255 • Klasse C-nettverk – 2. 097. 152 nett, 256 adresser pr. nett – IP-adresser: 192. 0. 0. 0 – 223. 255 • Klasse D-nettverk – Multicast-adresser – IP-adresser: 224. 0. 0. 0 – 239. 255 • Klasse E-nettverk – Ikke i bruk – IP-adresser: 240. 0 – 247. 255 17
Spesielle IP-adresser • Loopback-adresser: – 127. 0. 0. 0 – 127. 255 • Broadcast-adressen: – Siste adresse i nettverket – For eksempel 192. 168. 1. 255 • IANA har dessuten reservert enkelte adresser for private nett (er ikke i bruk som offisielle Internettadresser): – 10. 0 - 10. 255 (1 A-klasse) – 172. 16. 0. 0 - 172. 31. 255 (15 B-klasser) – 192. 168. 0. 0 - 192. 168. 255 (255 C-klasser) 18
Multicast-adresser • Unicast: en-til-en • Broadcast: en-til-alle • Multicast: en-til-mange • Multicast-adresser: – 224. 0. 0. 0 – 244. 0. 0. 255 • Reservert for ”well-known” multicast-adresser • http: //www. iana. org/assignments/multicast-addresses – 224. 0. 1. 0 – 238. 255 • Globale (”normale”) multicast-adresser (Internett) – 239. 0. 0. 0 – 239. 255 • Lokale multicast-adresser 19
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 HTTP tjener transport internettverk internett 20
Hva forbinder du med … • • Tjener Klient/tjener-interaksjon Grensesnittet mellom klienten og tjeneren 21
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 22
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 23
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 24
Klienter, tjenere og tjenermaskiner Klientprogramvare Tjenermaskin og tjenerprogramvare 25
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 26
Transport av data - Protokoller • Klient og tjener kommuniserer via transportprotokoller (TCP/IP) klient tjener transport internettverk internett 27
Tjenere med flere tjenester • Egne tjenerprogrammer for hver tjeneste på en enkelt tjenermaskin klient tjener … tjener klient transport internett nettverk internett 28
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: • 192. 168. 1. 100: 1250 (IP 192. 168. 1. 100, port 1250) • www. hint. no: 80 (IP 158. 38. 25. 13, port 80) 29
”Well-known ports” • For å forenkle bruken av tjenerprogram benyttes ofte faste portnr. på de mest brukte tjenestene: – – – http: //www. iana. org/assignments/port-numbers Port 80: http/www Port 443: https Port 8080: http-alt Port 21: ftp Port 25: smtp Port 110: pop 3 Port 23: telnet Port 22: ssh Port 553: rtsp … 30
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 31
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 32
Socket-grensesnittet (1) • Hvordan gjøres en kobling egentlig? • Hvordan er grensesnittet mellom applikasjon og protokollprogramvare? Socket API (Application Program Interface) 33
Socket-grensesnittet (2) klient tjener Socket API transport internettverk internett 34
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 kommunikasjonsprotokollen • De fleste operativsystemer (Windows, Mac, Linux, …) har derfor implementert sitt eget Socket(lignende) API 35
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 36
En socket-tjener og socket-klient • Klient-/tjenersekvensdiagram • Tjener må kalle opp listen før klient kaller opp connect… 37
Java-Sockets (1) • Programmeringsspråket Java tilbyr Socketfunksjonalitet gjennom klassene Server. Socket og Socket • Leser og skriver til en socket på samme vis som man leser og skriver til en datafil! 192. 168. 1. 100 192. 168. 1. 200 println() Server. Socket : accept() get. Input. Stream() get. Output. Stream() close() : read. Ln() println() read. Ln() Server. Socket tjener = new Server. Socket(1250); Socket forbindelse = tjener. accept(); Socket : get. Input. Stream() get. Output. Stream() close() : Socket forbindelse = new Socket("192. 168. 1. 100", 1250); 38
Java-Sockets (2) tjener klient Java (VM) Socket API transport internettverk internett 39
- Slides: 39