DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning:

Slides:



Advertisements
Lignende præsentationer
Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
Advertisements

Access Point Y + router/gateway
Informationer om trådløs netværk På trådløs netværk bruges CSMA/CA sammen med ”Request to Send (RTS)” og “Clear to Send (CTS)” for at undgå kollisioner.
Firewalls & netsikkerhed Henrik Størner,
Beskyt din computer og dine data!
TCP/IP netværk Henrik Størner SSLUG.
Aalborg Universitet Esbjerg
07 – Kort om OO Introduktion.
Public Key kryptering INTRODUKTION TIL KRYPTERING.
Hvordan bruger jeg First Class konferencerne ?
FC HUSET - et konferencesystem som First Class er li’som et hus, der arbejdes og samarbejdes i. Denne lille Power Point forsøger at beskrive First Class.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Fil kendskab KLIK for start. De vigtigste filer er dem i Office-pakken. Word dokument.doc Word skabelon.dot Word dokument.RTF Excel projektmappe.xls Excel.
Computer netværk og TCP/IP protokoller Kort resume – uge 6
Microsoft® Lync™ 2010 Kursus i svargruppeprogrammet
To modsatrettede Opfattelser Organisation, Trojka, 4. udgave, 2007
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Digital Post til foreninger Kommunikation mellem det offentlige og din forening.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 4 IPC generelt IPC eksempel: beskedkøer IPC tidsforbrug: kontekstskift, skedulering C: abstraktion, funktionsbiblioteker.
Konceptet. KirPACS Maj 2012 Konceptet.
Grundforløbsprojekt Strøm, Styring & IT.
Fra Internet til semantisk web via taksonomier AF:Hosein Askari ITST.
Fysiske netværk.
Sockets Logiske endepunkter mellem server og klient På applikationsniveauet betragtes Sockets som pålidelige Sockets optræder parvis Til en Socket er der.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Portalanalyse Udfordringer ved iFrame integrationsformen i forbindelse med FOBS løsningen.
QoS Introduktion til Quality of Service. IP standard service IP er designet til best-effort services –Best-effort: Transport af data efter bedste-evne.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
1 Webdesign - De første trin Grundliggende begreber Internettet (1969-): En fællesbetegnelse for netværk eller tjenester der benytter samme.
Effektiv adgang til data Niels Mørck, Carl Bro GIS & IT  Carl Bro GIS og IT  Problemstillingen  Nordjyllands Amts Blanketsystem  Centralisering / decentralisering.
Netværk og interprocess- kommunikation. Disposition Softwarelag Protokollag ◦UDP ◦TCP.
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
BlueDoc 2.0 (C) 2003 TMA Components Web-integreret Intranet søgemaskine.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Birgit Mikkelsen FC FIRST CLASS. Birgit Mikkelsen FC Hvad? Hvordan?
Fysiske netværk LAN og WAN - net.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Fundamentale datastrukturer
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
Netværk og interprocess- kommunikation - Et eksamensoplæg!
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Netværk og datakommunikation.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Per P Madsen AAU1 Del 4 : Sessions-, presentations- og applikationslaget - Applikationsprotokoller. - RPC og RMI. - Digital audio og Voice over IP. - RTP.
 Kommunikation mellem computere  NAT – Network Adress Translation  IP Routing af pakker  Transport af beskeder ◦ TCP ◦ UDP.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Datalink laget Datalink Datalink Fysisk lag Fysisk lag Fysisk net
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Læsning og skrivning af pakker på IP niveau. Hvorfor er det svært? Fra et normalt programmeringssprog er netværksadgangen begrænset Vælg protokol, port,
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
NAT Implementation. Setup Grafik fra teori-afsnit, med ip’er og andet info på.
Forbedringer af implementationen. Få TCP til at virke Blokere pakke med RST bit sat Blokere indkommende pakker inden de når Windows protokolstakken Begge.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Access Control List CCNA 2 v3.1 Modul 11 Claes Larsen, CCAI.
Præsentationens transcript:

DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning: Forskellen på sockets og beskedkøer.

Sockets = en grænseflade til TCP og UDP TCP-baserede (eller strøm-orienterede) sockets ● grænseflade til TCP ● forbindelsesorienteret + pålidelig UDP-baserede (eller besked-orienterede) sockets ● grænseflade til UDP ● forbindelsesløs + upålidelig En TCP (eller UDP) implementation kunne have en anden grænseflade end sockets ● men findes i praksis ikke ● dog har WinSockets mindre forskelle ift. Unix-sockets Sockets kan bruges uden TCP/UDP (lokal kommunikation) Sockets stammer fra BSD Unix (Berkeley Software Distribu tion)

TCP: egenskaber TCP-baserede sockets tilbyder: ● kommunikation abstraheret i form af strøm(me), begge p. kan læse/skrive ● skjuler besked/pakke-størrelse, adressering (efter etablering) samt fejlhåndtering og flow-kontrol ● forbindelsesorienteret - åbning af forbindelse; dataoverførsel; lukning af forbindelse - vedligeholdelse af information om forbindelsens tilstand ● pålidelig: sendt = modtaget - intet tab - rækkefølge bevares - ingen duplikering - ingen modifikation - selv om der ikke gives 100% garanti for levering (jf. CDK s.135) ● læsning forbruger data ● udover pålidelighed, ingen sikkerhed CDK s : validitet + integritet

Sockets: synkronisering Afsendelse og modtagelse er (normalt) synkroniserede: Afsendelse: ● blokerer hvis modtagers buffer er overfyldt Modtagelse: ● blokerer hvis modtagers buffer er tom Modtage-buffer: - giver fleksibilitet - afsender kan sende mere, uden at vente på bekræftelse (Windowing)

Reminder: TCP-pakker sendt ved HTTP forespørgsel+svar Browser TCP Server TCP Værtsmaskine med Webbrowser Værtsmaskine med Webserver HTTP-FHTTP-SHTTP-FHTTP-S Oprettelse Forespørgsel Svar Lukning

Socket terminologi Socket = "stik" (til Internettet) 1 socketforbindelse = 2 sockets = 2 endepunkter ("stik") (tvetydighed: "socket" kan også referere til hele forbindelsen) "Lokal socket" vs. "netværks socket": Socketgrænsefladen kan også bruges til kommunikation mellem processer på samme maskine ● I så fald er der faktisk ikke tale om at bruge TCP/UDP TCP-baserede sockets har asymmetri ml. klient/server: server oprettes, sættes til at lytte klient foretager "opkald" server skal "lytte" når opkaldet kommer derefter ligestillet UPD-baserede sockets har asymmetri ml. afsender/modtager

Netværts-sockets: adresser på endepunkter Endepunkt = IP-nummer + Port-nummer IP-nummer (4 byte) - identificerer værtsmaskine Port-nummer (2 byte) - identificerer service/process på værtsmaskinen 80: web-service 21: ftp-service : reserveret ca ledige Subnet- adresse Lokal- adresse

Hvad er en port ? Jf. betydningen af metaforen port (byport): ● En indgang til en værtsmaskine. ● Men båndbredden i maskinens netværksforbindelse er ligeligt fordelt mellem alle porte. Portnummerets rolle: ● filter: bruges ved modtagelse til at identificere den relevante proces ● processer selv er ikke velegnede som destinationer (f.eks. via proces-id) ● ved afsendelse er betydningen reelt kun at fortælle hvorfra data kommer P1 P2

Socket-forbindelse = to stik/sockets Værtsmaskine med IP nr. Proces med fildeskriptor knyttet til socket- forbindelsen Proces med fildeskriptor knyttet til socket- forbindelsen Proces Porte

TCP-baserede sockets: asymmetry klient/server ? SYN klient server På serverside: ● 1 lytter-socket lytter til TCP-oprettelses-requests (SYN) ● Hver request (hvis accepteret) giver anledning til ny, separat socket, hvorigennem hele den øvrige kommunikation foregår

TCP-baserede sockets: flertrådning på serverside ? SYN klient boss Behandling af hver ny request om forbindelse bør foregå i separat tråd/proces (f.eks. som boss/worker-arkitektur) worker

Processer / sockets / porte (TCP-baserede sockets) Proces 1 Proces 2 En proces kan have flere samtidige socket-forbindelser - via 1 eller flere porte. Alle sockets, der skabes ved accept af klient-henvendelser, går via samme port som server-socketens. CDK s. 129: a process cannot share ports with other processes.. (???) En given port kan maksimalt bruges til 1 lytter-socket. To socket-forbindelser kan dele port på den ene værtsmaskine, men ikke på begge.

DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning: Forskellen på sockets og beskedkøer.

class ServerSocket / class Socket Server SYN klient Lytter til nye requests: ServerSocket Kommunikation med klient: Socket

Socket/ServerSocket: konstruktorer Klient: serverConn = new Socket(..) Server: clientConn = new Serversocket(..) Parametre? OBS pseudokode - mangler bl.a. undtagelseshåndtering

Konstruktorernes parametre Klient: serverConn = new Socket(..) Server: clientConn = new Serversocket(..) Hvem skal jeg ringe til ? Hvordan kan folk få fat på mig?

java.net.ServerSocket / java.net.Socket ServerSocket(int port); // constructor Socket accept(); void close(); class ServerSocket Socket(String host,int port); // constructor void close(); InputStream getInputStream(); OutputStream getOutputStream(); class Socket

Sockets i Java Klient: serverConn = new Socket(..).. = serverConn.getOutputStream().. = serverConn.getInputStream().....write(..)...read() Server: clientConn = new Serversocket(..) clientReq = clientConn.accept().. = clientReq.getOutputStream().. = clientReq.getInputStream().....read()...write(..) OBS pseudokode - mangler bl.a. undtagelseshåndtering

Sockets i Java Klient: Socket serverConn = new Socket(..); OutputStream os = serverConn.getOutputStream(); InputStream is = serverConn.getInputStream(); DataInputStream dis = new DataInputStream(is); DataOutputStream dos = new DataOutputStream(os);.. = dis.readByte(); // OBS ! Byte, ikke char !! dos.writeByte(..); // ditto // + try / catch idet samtlige metoder kaster diverse exceptions

Lidt Java streng-manipulation (jf. opgave 2) // konvertering fra bytes til strenge byte b[1]; b[0] = dis.readByte(); String s = new String(b); // skaber ny string baseret på b (ASCII-værdier) s = s.concat(b); // konkatenerer s og en ny delstreng baseret på b

DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning: Forskellen på sockets og beskedkøer.

Sockets i C Direkte adgang til sockets via systemkald Ialt 6 systemkald (eksklusive læs/skriv) Mange muligheder for fin-indstilling af opførsel: - kø-størrelse hos server-socket - synkronisering - lokal socket med rettighedsstyring Hvis de mange muligheder ikke bruges, er det bedre at skjule dem bag Java-lignende funktioner (jf. opgave 3).

Socket systemkald i C Klient: fd = socket(..) connect(fd,..) write(fd,..) read(fd,..) close(fd,..) Server: srv_fd = socket(..) bind(srv_fd,..) listen(srv_fd,..) clt_fd = accept(srv_fd,..) read(clt_fd,..) write(clt_fd,..) close(clt_fd,..) close(srv_fd,..) Kun på server Kun på klient

Server socket: modtagelse af SYN fra flere værter Klient: connect(fd,..) Server: listen(srv_fd,..) clt_fd = accept(srv_fd,..) SYN ACK SYN connect: afsender SYN listen: modtager SYN, anbringer i kø accept: SYN bekræftes og forbruges; returnerer ny socket

Server socket: valg af lokal port-nr Klient: fd = socket(..) connect(fd, ) Server: srv_fd = socket(..) bind(srv_fd, ) server-adresse Hvem skal jeg ringe til ? Hvordan kan folk få fat på mig?

Multiple forbindelser vhja. fork() Server: listen(srv_fd,..) clt_fd = accept(srv_fd,..) if (fork() == 0) { exit(0) }

Klientens skridt: 1. Installer telefon 2. Foretag opkald 3. Send og modtag 4. Afslut

DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning: Forskellen på sockets og beskedkøer.

Internettets 5-lagsmodel: (med HTTP som eksempel) App Transport Internet Data Fysisk Internet Data Fysisk Router App Transport Internet Data Fysisk Værtsmaskine med Webserver HTTP TCP IP PPP Modem IP ? ? Værtsmaskine med Webbrowser

Hvad er en protokol ? Et regelsæt for kommunikation mellem ligestillede processer på forskellige maskiner. HTTP, TCP, IP, UDP m.fl. er protokoller for udveksling af sekvenser af bytes - HTTP og IP kender længden af teksten - TCP gør ikke Regelsæt = regler for syntaks og betydning (semantik) af beskeder.. De fleste protokoller sender information via en protokol på samme maskine, på et lavere lag. En grænseflade til en protokol (jf. sockets/TCP) kaldes også for et Service Access Point for protokollen

Pålidelig vs. forbindelsesorienteret kommunikation TCP er forbindelsesorienteret + pålidelig UDP er ingen af delene Passer det at: forbindelsesorienteret pålidelig ? Det kunne man formode fordi pålidelighed kan opnås ved at protokollen opbevarer information om forbindelsens tilstand ● hvilke bekræftelser har jeg modtaget ? ● hvad var nummeret på sidst modtagne besked ?

Forbindelsesorienteret uden (fuld) pålidelighed En GSM telefonforbindelse er - forbindelsesorienteret (opkald + samtale + afslutning) - men ikke pålidelig (tabt data forsøges ikke re-transmitteret)

Pålidelighed uden forbindelsesorientering Bemærk, at spørgsmålet går på om pålidelighed og forbindelse skal eksistere på det samme protokolniveau ! En pålidelig kommunikation kan opnås uden forbindelse, hvis en underliggende protokol er pålidelig (denne vil så være forbindelsesorienteret). Eksempler ?

Sekvensnummer (32 bits) Bekræftelsesnummer (32 bits) Flag (6 bits) TCP-PDU (Protocal Data Unit) TCP-hoved (20 B) Valgfri udvidelse af TCP-hoved TCP-data (ca. ½ KB)

TCP: sammenfatning Pålidelig kommunikation mellem værtsmaskiner/endepunkter tjek af levering og integritet positiv bekræftelse (ack) Forbindelsesorienteret 3 vejs håndtryk - begge parter enige om åbning/lukning. To-vejs kommunikation Overfører en strøm af bytes

Værtsmaskine med Webserver Værtsmaskine med Webbrowser # 1 # 2 # 3 # 2 # 3... TCP: Pålidelighed (forenklet)

TCP: 3-faset håndtryk undgår overflødig retransmission Jeg ønsker at åbne SYN ACK SYN + SYN Bekræfter modt. af SYN Jeg ønsker (også) at åbne Bekræfter modt. af SYN ACK SYN Værtsmaskine med Webserver Værtsmaskine med Webbrowser Aha ! Han kan høre mig Aha ! Han kan høre mig

TCP: 4 faser ved lukning af forbindelse Begge værtsmaskiner holder forbindelsen åben indtil de har konstateret enighed om at lukke. FIN ACK FIN FIN ACK FIN Opdelt i to TCP-PDU-er

IP Er ansvarlig for at sende den enkelte pakke igennem 1 subnet 1 TCP-PDU sendes som datadel af 1 IP-PDU

DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning: Forskellen på sockets og beskedkøer.

Sockets vs. besked-køer Ligheder: formål: interproces-kommunikation implementation: kerne-understøttet (hvis andre sprog, f.eks. Java, bruger faciliteterne, er det via C) global navngivning - af kø/socket, ikke proces Forskelle: sockets kan også forbinde processer på forskellige maskiner sockets kan forbinde maskiner med forskellige operativsystemer beskeder er afgrænsede beskeder har prioritet UPD-baserede sockets: har fast længde, ligesom beskeder - kan lette parsing TCP-baserede sockets: punkt-til-punkt, modsat beskeder