Client/server architectuur en sockets info



Dovnload 197.06 Kb.
Pagina1/3
Datum20.08.2016
Grootte197.06 Kb.
  1   2   3
Client/server architectuur en sockets
INFO:

Client = start communicatie actief

Server= wacht passief op contact

Client/Server: bestaat uit 2 progs die info uitwisselen

Client  Request  Server  Response  client

Client software: 1 dienst, meerdere clients tegelijk (krachtige hardware en OS)

Dienst: krijgt naam = protocolnummer = tcp  server biedt aan, client vraagt aan

Protocol: De regels voor vormen van vraag en voor de manier waarop resultaten teruggegeven worden, moeten met een zeer grote precisie opgeschreven worden. Het beschrijft in veel detail de manier waarop clients en servers met elkaar communiceren. Ze zijn openbaar en worden beschreven in documenten die toegankeleijk zijn


1) Geef een voorbeeld van een verbindingsgericht en van een verbindingsloos transportprotocol. Bespreek

beide protocollen kort.
VERBINDINGSGERICHT:

Vb: TCP (Transmission Control Protocol)

- App. verzoekt TCP verbinding te openen met andere app.

- Client brengt verbinding tot stand met server

- Client vraagt, server antwoordt

- Client sluit verbinding

Vb: je belt, je spreekt en je legt af => Zeer betrouwbaar
VERBINDINGSLOOS


  • Vb: UDP (User Datagram Protocol, deel van TCP/IP)

- Toep. stuurt op willekeurig moment bericht naar willekeurige bestemming

- Toep kan serie berichten sturen naar afzonderlijke bestemmingen

- Client en server wisselen afzonderlijk berichten uit

- Aanvraag=1bericht, antwoord=1bericht



  • Vb: 2 brieven op de post, ze kunnen apart toekomen of op andere tijdstippen => onbetrouwbaar



2) Welke procedures uit de socket API worden achtereenvolgens gebruikt in een eenvoudige

implementatie van een verbindingsgerichte server en client? Bespreek kort.

  • API = Application Program interface => de interface tussen een toepassingsprogramma en de communicatieprotocollen in een besturingssysteem worden aangeduid met een API. De Socket API is een standaard => Interface voor communicatieprotocollen




  • Men heeft verschillende soorten sockets: bv. Darpa => internet socket

    • Sock_stream => zorgt voor betrouwbare 2 weg communicatiestromen, vrij van fouten, volgen volgorde. Gebruikt TCP zorgt voor foutloze en sequentiële dataoverdracht (Verbindingsgericht)

    • Sock_Dgram => er wordt geen verbinding open gehouden, pakket wordt gewoon verzonden, maar wel gebruik van ACK(Acknowledgment procedure) => laat weten of het is toegekomen. Gebruikt UDP (verbindingsloos)




  • De procedure SOCKET creëert socket en geeft een int-descriptor terug:

 descriptor = socket(protofamily, type, protocol)

  • Protofamily: protocolfamilie PF_INET=TCP/IP

  • Type: communicatietype

SOCK_STREAM = verbindingsgericht

SOCK_DGRAM = verbindingsloos



  • Protocol: transportprotocol TCP/IP => TCP



  • De procedure CLOSE geeft het systeem opdracht het gebruik van een socket te beëindigen: close(socket)




  • Een server gebruikt de procedure BIND om een protocolpoortnummer te verstrekken waarop server moet wachten alvorens contact te maken:  bind(socket, localaddr, addrlen)

  • Socket: integer, toe te kennen descriptor

  • Localaddr: structurele, lokale adressering van de socket

  • Addrlen: integer,lengte v/h adres (protocolafhanklijk)

  • bind(socket, Localaddr, addrlen)

struct sockaddr {

u_char sa_len ;

u_char sa_family ;

char sa_data[14] ;

} ;


  • sa_len: totale adreslengte

  • sa_family: familie van het adres, AF_INET =TCP/IP

  • sa_data: het adres zelf, TCP/IP: struct sockaddr_in



  • De server roept de procedure LISTEN aan om een socket te laten wachten op een client: listen(socket, queuesize)

*Socket: descriptor, gecreëerd en gebonden

*Queuesize: lengte van de wachtrij voor deze socket, aanvragen worden in FIFO

behandeld.



  • Een server die een verbindingsgericht transport gebruikt, roept de procedure ACCEPT aan om de volgende verbindingsaanvraag te accepteren: newsock = accept(socket, caddress, caddresslen)

  • socket: descriptor

  • caddress: type sockaddr

  • cadresslen: integer

  • accept() vult velden in en creëert nieuwe socket (“newsock”) om met client te communiceren (oorsprnkelk socket dient -> nieuwe verbindingen te a/vaarden)




  • Clients gebruiken de procedure CONNECT om een verbinding met een specifieke server tot stand te brengen

connect(socket, saddress, saddresslen)

  • socket: descriptor

  • caddress: type sockaddr

  • cadresslen: integer


Verbindingsgericht: verbinding op transportniveau leggen, server voerde eerder accept() uit.

Verbindingsloos: serveradres opslaan in socket, ipv telkens herhalen.


  • Server&client knn procedure SEND gebruiken om data te transportrn: send(socket, data, length, flags)

Zonder aangesloten socket data transporteren:

sendto(socket, data, length, flags, destaddress, addresslen)

sendmsg(socket, msgstruct, flags) (verkorte versie met struct msgstruct)




  • Server&client kunnen procedure RECV gebruiken om data te ontvangen:  recv(socket, buffer, length, flags)

  • buffer: gegeugenadres waar bericht moet w geplaatst

  • flags: speciale optie-bits

Data ontvangen v/willekeurige client via niet aangesloten socket

recvfrom(socket, buffer, length, flags, sndraddr, saddrlen)

recvmsg(socket,msgstruct,flags)(vrkorte vrsie->struct msgstruct)

i.p.v. send en recv, kunnen ook write en read gebruikt worden


write (socket, buffer, length)

read (socket, buffer, length)




  • App schrijven zonder erop te letten of descriptor socket of file is.



SOCKET API PROCEDURES
- Server:

1. socket(): socket creëren | 2. bind(): protocolpoortnummer specifiëren |

3. listen(): passief wachten op aanvraag(*) | 4. accept(): verbinding accepteren(*) |

5. send()/rev()/read()/write() | 6. close()

(*)enkel bij verbindingsgericht protocol
- Client: 1. socket() | 2. connect() | 3. send()/rev()/read()/write() | 4. close() 
OVERIGE SOCKET PROCEDURES

getpeername(): de server krijgt het volledige adres van de client op afstand die de verbinding heeft opgezet.

gethostname(): client of server krijgt informatie over computer waarop hij draait.

gethostbyname(): computernaam vertalen naar IP-adres

gethostbyaddr(): IP-adres vertalen naar de naam van de computer.

User gebruikt namen, computer gebruikt IP-adressen



3) Wat is een concurrent server? Hoe garandeert men ondubbelzinnige communicatie tussen

een client en zo’n server (bespreek bijvoorbeeld aan de hand van TCP)? Geef een

implementatie in pseudo-code voor een concurrent server. Licht deze implementatie

schematisch toe.
Wat is een concurrent server?

  • Meerdere clients tegelijk afhandelen door multithreading

  • 1 luisterende hoofdthread

  • Aparte copie van server voor elke aanvraag

  • C: functie fork creëert child proces

  • Procesidentificatie via pid

  • 1 client kan meerdere servers bereiken


Hoe garandeert men ondubbelzinnige communicatie tussen een client en zo’n server (bespreek bijvoorbeeld aan de hand van TCP)?

    • Client doet verzoek aan server

    • Client krijgt unieke naam

    • Procesidentificatie adhv server- en clientnaam => juiste servercopie verzekerd

  • Vb: TCP

    • Client kiest lokaal protocolpoortnummer

    • TCP-segment bevat:

      • Client protocolpoortnummer in SOURCE PORT-veld

      • Server protocolpoornummer in DESTINATION PORT-veld

    • Gelijktijdige clients voor zelfde dienst mogelijk

    • App. verzoekt TCP verbinding te openen met andere app.

    • Client brengt verbinding tot stand met server

    • Client vraagt, server antwoordt

    • Client sluit verbinding



Implementatie concurrent server

pid_t pid;

int listenfd, connfd; //socketdescriptors

listenfd=socket(…);

bind(listenfd,…);

listen(listenfd,…);


for(;;){

connfd=accept(listenfd,…); //server wacht op connection request van een client

if(connfd<0){

perror(“accept”); //connectie mislukt

exit(1):

}

pid=fork();



if(pid==0){ //als i/h kindproces van de fork zitten

close(listenfd);

verwerk_klant(connfd);

close(connfd); //connectie-socket afsluiten

exit(0); //thread afsluiten

}

close(connfd); //parent sluit connie, w. dr child afgehandeld }










DNS
Informatie

DNS= Domain Name Server

DNS= client/server protocol, client zal server contacteren

DNS => omzetting van symbolische computernamen naar IP adressen

DNS => Computers: nrs mensen: namen

Organisatie kiest zelf aantal segmenten vb. users.pandora.be

Users = segment van pandora => FQDN= Fully Qualified Domain Name

Werkt met gedistribueerde database, verspreid over verschillende primaire servers

IDNS= Internet Domain Name System beheerd door onafhankelijke organisatie (itermic)

=> verantwoordelijk voor top level domain name => .com, .edu ,…


Het DNS proces

Als je surft over het internet maak je extensief gebruik van het DNS systeem. Of je nu inbelt met een 56K modem of gebruik maakt van een flitsende ADSL verbinding, er komt altijd een DNS aan te pas om de domeinnamen die je opvraagt om te zetten in ip adressen. Bij het surfen over het web communiceert de webbrowser met de DNS bij de internet provider. (Je kunt de adressen van de DNSen die jouw computer gebruikt vinden in Windows XP en 2000 door het commando 'ipconfig /all' in te typen in de command prompt).

Onderstaande opsomming geeft een globaal beeld van hoe het omzetten van een domeinnaam in een ip adres normaal gesproken gaat.


  1. De gebruiker typt de domeinnaam webhostingweb.nl in in de adresbalk van de browser of klikt op een link met daarin deze domeinnaam.

  2. Het TCP/IP protocol van de computer stuurt een aanvraag naar de DNS bij de internet provider.

  3. De DNS kijkt in zijn cache (tijdelijke opslagruimte) of-ie de domeinnaam kent.

  4. Als-ie dat kent stuurt-ie het bijbehorende ip adres terug naar de browser van de aanvrager. De browser kan nu contact leggen met het gegeven ip adres en aan de webserver aldaar vragen om een webpagina.

Het komt natuurlijk voor dat de DNS bij de internet provider een bepaalde domeinnaam niet kent. In dit geval wordt een root DNS geraadpleegt. Een root DNS staat aan de top van de DNS hiërarchie en bevat informatie over alle top-level domeinen. Top-level domein wil zeggen 'het laatste onderdeel van de domeinnaam'. Voorbeelden zijn .com, .net, .org, .edu, .gov, .nl, .de, .jp, etc. Een root server weet voor alle top-level domeinen welke DNSen deze top-level domeinen beheren.

  1. De gebruiker typt de domeinnaam webhostingweb.nl in in de adresbalk van de browser of klikt op een link met daarin deze domeinnaam.

  2. Het TCP/IP protocol van de computer stuurt een aanvraag naar de DNS bij de internet provider.

  3. De DNS kijkt in zijn cache (tijdelijke opslagruimte) of-ie de domeinnaam kent.

  4. Als-ie dat niet kent stuurt-ie de aanvraag door naar een root DNS server. De root DNS server kijkt welke DNS de gegevens voor het .nl top-level domein beheert en stuurt hiervan het ip terug naar de DNS bij jouw provider.

  5. De DNS bij de internet provider stuurt het ip adres van de juiste DNS terug naar de browser van de gebruiker.

  6. De browser legt contact met de DNS op het gegeven ip adres.

  7. Deze DNS weet wél het ip adres van webhostingweb.nl en geeft dit door aan de browser.

  8. De browser legt contact met de webserver op het gegeven ip.



1) Bespreek de DNS server-hiërarchie. Licht onder andere de verantwoordelijkheden van een DNS server en de koppeling tussen verschillende DNS servers toe.

(


  • Server hiërarchie komt (losjes) overeen met naamgevingshiërarchie

  • Zone = groep domeinen die door dezelfde nameserver beheerd worden

1 zone kan meerdere domeinen bevatten

Elk domein deel van juist 1 zone



  • Nameserver kan een subtree van zijn domein delegeren

  • Nameserver autoriteit voor één of meerdere zones

  • root-server: autoriteit voor root en top-level domeinen

  • Rootserver kent niet alle mogelijke domeinnamen, maar weet wel hoe de verantwoordelijke server te bereiken )




  • Een name-server is VERANTWOORDELIJK VOOR:

- DNS informatie voor alle computers van alle domein-nodes die tot zijn zone behoren

- Gegevens name-servers ‘root’-domein

- Gegevens name-servers van alle sub-domeinen die niet tot de zone behoren


  • KOPPELING TUSSEN SERVERS

    • Elke server weet hoe hij een root-server kan bereiken

    • Elke server weet hoe hij de servers kan bereiken die autoriteiten zijn voor namen die lager in de hiërarchie liggen.



2) Wat is een resolver? Welke stappen worden achtereenvolgens ondernomen wanneer zo’n

resolver in werking treedt?


  • (name) resolver verzorgt naamresolutie

    • client Domain Name System

    • Onderdeel OS

  • Elke resolver kent het adres van (minstens) een lokale domeinnaamserver

  • Resolver stuurt DNS-request naar server (UDP)

  • Resolver wacht op DNS-reply van server

  • Als server antwoord niet kent, wordt hij zelf client bij andere naamserver (rootserver)

3) Noem en bespreek twee technieken die gebruikt worden om DNS te optimaliseren.

  • Replicatie (duplicatie)

    • Over de hele wereld staan copiën van de root-servers

    • Load balancing tussen gerepliceerde nameservers op zelfde locatie (secundaire nameservers)

  • Caching


4) Welke verschillende soorten DNS ingangen kan een DNS server bevatten? Bespreek elke

soort ingang kort.


  • Een name-server bevat DNS-entries

  • Er komen verschillende types van entries voor, afhankelijk van waarvoor deze moet dienen

  • Laat toe om verschillende servers te gebruiken voor verschillende diensten bij dezelfde domeinnaam

  • Types: A, MX, CNAME, SOA, NS, PTR

-> DNS records ‘type A’ (Address)

      • DNS computer-naam => IP-adres

-> DNS records ‘type MX’ (Mail eXchanger)



      • DNS domein-naam => DNS computer-naam ‘incoming mail-server’

      • Laat mail-adressen van het type mailbox@domeinnaam toe

      • Aanduiding mailserver is totaal onafhankelijk van de aanduiding name-server per zone

-> DNS records ‘type CNAME’ (canonical name, alias)

      • DNS computer-naam => DNS naam andere computer

        • Veel gebruikt voor servers met als alias ‘www’

          • www.hogent.be => libtech.hogent.be

      • DNS domeinnaam => ander domein

          • ietf.cnri.reston.va.us => ietf.org

      • Aliassen verbergen interne keuken en veranderingen

-> DNS records ‘type SOA’ (start of authority)

      • Definieert name server van een zone

      • Parametriseert synchronisatie primaire en secundaire name servers

-> DNS records ‘type NS’ (name servers)

      • Definieert name servers

        • van ‘root’-domein

        • van alle gedelegeerde sub-domeinen


5) Bespreek de werking van reverse DNS resolving.

Vb: 15.16.192.152 => 152.192.16.15.in-addr.arpa







Voorbeeld:193.190.88.179 ??

=>179.88.190.193.in-addr.arpa ??



      • we zoeken de nameserver van het domein waartoe de gezochte machine behoort op via in-addr.arpa

      • Die nameserver bevat het PTR-record dat we zoeken

      • Iteratief proces, stel dat we al in laatste stap zitten:

  • Met elk mogelijk adres in ‘dotted decimal’ notatie B3.B2.B1.B0 komt een domein-node B0.B1.B2.B3.in-addr.arpa overeen

  • Om reverse DNS resolving toe telaten moet elke B0.B1.B2.B3.in-addr.arpa domein node beheerd worden door (de name server van) de eigenaars van de overeenkomstige IP-adressen.

Mail
1. Bespreek schematisch de reeële flow die een e-mail bericht aflegt. Vul je schema aan met

een outgoing en incoming mail server. Bespreek alle onderdelen kort. Welke protocollen

worden gehanteerd?

- Mail User Agent(MUA): mail software = Email client

- SMTP: Simple Mail Transfer Protocol Elke ISP(Internet Service Provider) bezit zo’n server

- Mail Server

- Mail Transfer Agent(MTA) = gateway programma, tegelijkertijd

Zorgt voor de overdracht van mail, in samenwerking met andere MTA



    • SMTP client

    • SMTP server

-> aantal functies mogelijk

  1. ‘outgoing mail server’

  2. Mail-aliassen

  3. Forward adressen

  4. Fall-back functies

  5. ‘anonymous remailers’

  6. ‘exploders’, groepadressen, mailing lists

  7. Mailing list manager

- POP3: Post Office Protocol => voor mensen die hun post steeds uit de postbus

halen en bijhouden op hun pc

- IMAP4: Internet Message Access Protocol

=> voor mensen die post lezen vanaf andere pc

Vb. hotmail
2) Wat is een mail relay? Bespreek de verschillende mogelijke functies.


Eventueel Gecombineerd met mail-server functie

Functies:

‘outgoing mail server’

Mail-aliassen

Forward adressen

Fall-back functies

‘anonymous remailers’

‘exploders’, groepadressen, mailing lists

Mailing list manager

3) Welke twee protocollen ken je die instaan voor het ontvangen van e-mail? Bespreek en licht onderlinge



voor- en nadelen toe.
- POP3: Post Office Protocol

* MUA connecteert zich periodiek met ‘Incoming Mail Server’

* Inhoud mailbox wordt verplaatst naar de werkpost

* Verbinding wordt verbroken

* Mail wordt lokaal verwerkt


      • Enkel raadpleegbaar op deze werkpost

      • Dr iedereen die toegang heeft tot deze werkpost

- IMAP4:Interactive Mail / Internet Message Access Protocol

* Ontworpen voor ‘online’ toegang

* Mailboxen worden vanop afstand bewerkt, zonder naar de lokale werkpost te sturen



NADELEN t.o.v. POP3

  • Complexer

  • Grotere server disk capaciteit nodig (limitering)

  • Connectie MUA/server langer actief

VOORDELEN t.o.v. POP3

  • Ondersteund alle POP3 functionaliteit

  • Mail opvraagbaar vanuit # werkposten (zelfs simultaan)

FTP
INFO

FTP= File Transfer Protocol

FTP = taal voor verplaatsen en bewerken van bestanden op computers maar ook op het internet. (poort 21: blijft open tijdens sessie, poort 20: enkel bij transfer)

3 manieren om te versturen via ftp: ftp client/command prompt / webbrowser


1. In welke twee transfer modes kan FTP fungeren?

1) ASCII-file-transfer-mode:

=> voor alle bestanden die tekst bevatten die liesbaar is voor iemand

die zo’n bestand opent in een tekstverwerker zoals bestanden van eht formaat txt

& html

2) BINARY-file-transfer-mode:



=> dit is voor bestanden die bit na bit gekopieerd moeten worden zoals

gecomprimeerde bestanden, geluiden, videos


Batch Trasfer mode:

    • Transportaanvraag in wachtrij plaatsen van transferprogramma

    • Transferprogramma zorgt voor afhandeling, ev. retry,… en rapporteert

    • Zinvol als:

Interactieve transfer mode:



    • Gebruiker krijgt continu informatie

    • Gebruiker merkt sneller fouten op

    • Gebruiksvriendelijker dan batch transfer (als netwerk beschikbaar blijft)




  1   2   3


De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina