Servicii și clienți de rețea

Dispozitivele pe care le folosim noi devin din ce în ce mai mici, mai eficiente și ieftine. Asta se întâmplă deoarece multe dintre aplicațiile care până nu de curând rulau pe calculatorul propriu s-au mutat în spațiu online. De exemplu, în loc să descărcăm filme și să le urmărim de pe calculator, folosim o aplicație cum ar fi Netflix pentru a transmite prin Internet filmul pe care vrem să îl urmărim. Un alt exemplu relevant este Google Drive, care ne permite să stocăm, să replicăm și să edităm documente într-o interfață web, în loc să le păstrăm local pe calculatorul pe care îl folosim. Toată puterea de procesare și tot spațiul de stocare s-a mutat de pe calculatorul propriu pe servere aflate în Internet.

Vom numi aceste aplicații care rulează în Internet servicii.

Un serviciu este o aplicație care oferă o funcționalitate utilizatorilor care apelează la ele. Serviciile în domeniul calculatoarelor lucrează folosind paradigma server-client. Un avantaj major al acestei abordări este că reduce puterea de calcul necesară pentru rularea aplicațiilor de către utilizatori. Aceștia au nevoie doar de o aplicație client care știe să comunice cu serverul. Astfel, aplicația client trimite o cerere către aplicația server, serverul primește cererea, procesează cererea și servește răspunsul aplicației client care a făcut cererea.

Această paradigmă poate fi observată în schema următoare:

Arhitectura client-server

Atunci când noi vrem să urmărim un film pe Netflix aplicația client Netflix de pe calculator sau smart TV va trimite o cerere de descărcare a filmului de pe serverul Netflix aflat la distanță.

Clienţi web în linia de comandă

În viață de zi cu zi aplicația pe care o folosim cel mai mult este browserul web, deoarece majoritatea aplicațiilor pe care le folosim au fost transformate în pagini web cu care noi interacționăm. Browserul web este o aplicație care execută o cerere HTTP către un server web, identificat printr-o adresă, un link, prin care face o acțiune și primește un răspuns. De exemplu, când accesăm pagina www.facebook.com se trimite o cerere către serverul HTTP, iar acesta trimite un răspuns către browser sub forma unei pagini web, în formatul HTML, pe care browserul o afișează.

Pentru interacțiunea cu serverele web putem folosi și clienți web în linie de comandă. Clienții web folosiți în linie de comandă sunt folositori atunci când nu avem acces la o interfață GUI, sau când încercăm să automatizăm un proces. De exemplu, pentru a verifica automat starea unui site avem nevoie să descărcăm pagina site-ului.

Există mai multe implementări de clienți web în linie de comandă. Vom folosi comanda wget pentru descărcarea unei pagini web.

student@uso:~$ wget elf.cs.pub.ro
--2020-10-20 23:01:02--  http://elf.cs.pub.ro/
Resolving elf.cs.pub.ro (elf.cs.pub.ro)... 141.85.227.116
Connecting to elf.cs.pub.ro (elf.cs.pub.ro)|141.85.227.116|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 168 [text/html]
Saving to: ‘index.html’

index.html                        100%[===========================================================>]     168  --.-KB/s    in 0s

2020-10-20 23:01:02 (7,61 MB/s) - ‘index.html’ saved [168/168]

student@uso:~$ cat index.html
<html>
    <head>
        <meta name="google-site-verification" content="gTsIxyV43HSJraRPl6X1A5jzGFgQ3N__hKAcuL2QsO8" />
    </head>

    <body>
        <h1>It works!</h1>
    </body>
</html>

Comanda wget primește ca parametru link-ul către pagina pe care vrem să o descărcăm.

Am folosit comanda cat pentru afișarea conținutului fișierului index.html. Fișierul index.html este fișierul descărcat în mod implicit, dacă nu descărcăm o pagină specifică.

Exercițiu - Descărcarea paginilor web

  • Deschideți într-un editor de text pagina web descărcată pentru a vedea conținutul HTML.
  • Descărcați pagina web de la adresa www.facebook.com. Afișați conținutul fișierului descărcat.

Clienții web nu sunt folosiți doar pentru accesarea paginilor web. Putem folosi clienți web pentru a descărca fișiere indiferent de tipul acestora.

  • Descărcați pagina web de la adresa http://wttr.in/. Afișați conținutul fișierului descărcat.
  • Descărcați fișierul http://elf.cs.pub.ro/uso/res/final/07-feb/heroes.csv. Ce tip de fișier este acesta?

Accesul la distanţă în linie de comandă

Pentru rularea acestui demo rulați în directorul ~/uso-lab/labs/03-user/lab-container comanda ./lab_prepare.sh install ssh. Pentru a ne conecta la infrastructura pentru această secțiune vom folosi comanda ./lab_prepare.sh connect ssh

În multe situații atunci când lucrăm cu sisteme, este necesar să rulăm aplicații pe alte stații în afara calculatorului nostru fără să avem acces fizic la stații.

Protocolul cel mai folosit pentru accesul la stații la distanță este protocolul SSH. SSH permite autentificarea la o stație pe care rulează un server SSH. Când ne conecta la o stație, trebuie să precizăm utilizatorul cu care vrem să ne logăm. Pentru autentificare introducem parola utilizatorului, sau folosim o cheie de acces la stație.

Conectarea folosind autentificare cu parolă

Pentru a rula comenzi pe o altă stație putem folosi programul SSH (Secure Shell) pentru a ne conecta la acesta în felul următor:

student@uso:~$ hostname
uso
student@uso:~$ ssh root@10.10.10.3
The authenticity of host '10.10.10.3 (10.10.10.3)' can't be established.
ECDSA key fingerprint is SHA256:I3Ybkkk7nF2FjwVHMzjkyujDnhlRlnSwPRVwUKm6OCM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.3' (ECDSA) to the list of known hosts.
root@10.10.10.3's password:
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-51-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/\*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
root@ssh:~# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@ssh:~# hostname
ssh

Unde root este numele utilizatorului și 10.10.10.3 este adresa IP, sau hostname-ul stației la care vrem să ne conectăm.

Atunci când ne conectăm la o stație, clientul SSH va încerca să autentifice stația la care ne-am conectat. Dacă ne conectăm pentru prima oară la un sistem trebuie să spunem clientului că am verificat datele clientului la care ne-am conectat.

În mod implicit protocolul SSH va folosi autentificarea cu parolă. Parola introdusă în exemplul de mai sus este parola root.

Odată ce ne-am conectat la calculator, avem acces la un shell în care rulăm comenzi ca mai sus. Putem observa că ne-am autentificat pe un calculator diferit deoarece s-a schimbat promptul terminalului de la student@uso:~$ la root@ssh:~# și s-a afișat un mesaj numit Message of the Day.

În exemplul de mai sus am rulat comanda hostname care afișează numele stației la care ne-am conectat pentru a ne asigura că ne-am conectat pe un nou calculator. Putem observa numele stației și din prompt.

Exercițiu - Conectarea la distanță

  • Autentificați-vă la stația cu adresa IP 11.11.11.3 folosind utilizatorul root și parola root.
  • Autentificați-vă la stația cu adresa IP 12.12.12.3 folosind utilizatorul student și parola student.

Observație:

Atunci când ne conectăm la o stație folosind protocolul SSH este necesar să precizăm un nume de utilizator valid. Dacă utilizatorul nu există, serverul nu va preciza faptul că utilizatorul nu există pe sistem, ci va cere parola utilizatorului, dar nu va permite autentificarea la stație. De ce serverul SSH nu specifică dacă utilizatorul exista sau nu?

Transferul fișierelor la distanţă

Pentru a transfera fișiere la distanță folosim scp (secure copy). Comanda scp se folosește de protocolul SSH pentru transferul de date între stații, astfel ne putem folosi de modelul de autentificare de la SSH, ca în comanda de mai jos:

student@uso:~$ scp /bin/bash student@10.10.10.3:~/
student@10.10.10.3's password:
bash                                          100% 1156KB  30.5MB/s   00:00
student@uso:~$ ssh student@10.10.10.3 ls ~
student@10.10.10.3's password:
bash

Fișierul /bin/bash a fost copiat de pe stația uso pe stația de la adresa IP 10.10.10.3 în directorul home al utilizatorului student. Am rulat comanda ls ~ prin SSH pentru a verifica că s-a efectuat copierea cu succes.

Trimiterea fișierelor poate fi realizată în orice direcție:

  • încărcarea fișierelor de la client la server
  • descărcarea fișierelor de la server la client

Pentru descărcarea fișierelor de pe un server folosim comanda scp:

student@uso:~$ scp root@10.10.10.3:/etc/resolv.conf .
root@10.10.10.3's password:
resolv.conf                                   100%   38    19.3KB/s   00:00
student@uso:~$ cat resolv.conf
nameserver 127.0.0.11
options ndots:0
student@uso:~$ ssh root@10.10.10.3 cat /etc/resolv.conf
root@10.10.10.3's password:
nameserver 127.0.0.11
options ndots:0

Comanda rulată anterior a descărcat fișierul resolv.conf din directorul /etc/ de pe stația 10.10.10.3 în directorul curent (.).

Exercițiu - Copierea fișierelor la distanță

Descărcați fișierul /etc/passwd de la adresa 10.10.10.3 folosind utilizatorul student și parola student în directorul /home/student/Downloads.

Copierea directoarelor la distanță

Pentru copierea unui director folosim opțiunea -r:

student@uso:~$ scp -r ./Downloads/ root@10.10.10.3:~/
root@10.10.10.3's password:
macos.txt                                     100%   18     4.2KB/s   00:00
index.html                                    100%  168   168.4KB/s   00:00
teamviewer_15.10.5_amd64.deb                  100%   14MB  48.1MB/s   00:00

Comanda anterioară a copiat directorul Downloads și conținutul său din directorul curent în directorul home al utilizatorului root de la adresa 10.10.10.3.

Exercițiu - Copierea directoarelor la distanță

Copiați directorul /usr de pe stația de la adresa 10.10.10.3 în directorul home al utilizatorului curent. Vă veți autentifica pe stația de la distanță folosind utilizatorul root și parola root.

uso/laboratoare/ac/laborator-05/services.txt · Last modified: 2021/11/02 21:41 by andrei.tivga
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0