Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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:

Lignende præsentationer


Præsentationer af emnet: "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:"— Præsentationens transcript:

1 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.

2 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)

3 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.57+129: validitet + integritet

4 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)

5 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

6 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

7 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 0-1023: reserveret ca. 63.000 ledige 128.171.93.15 Subnet- adresse Lokal- adresse

8 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

9 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

10 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

11 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

12 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.

13 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.

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

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

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

17 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

18 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

19 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

20 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

21 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.

22 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).

23 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

24 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

25 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?

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

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

28 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.

29 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

30 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

31 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 ?

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

33 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 ?

34 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)

35 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

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

37 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

38 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

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

40 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.

41 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


Download ppt "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:"

Lignende præsentationer


Annoncer fra Google