giovedì 27 ottobre 2016

Invio dati a web server

ho un dubbio per quanto riguarda l’invio di dati al Web Server. Abbiamo detto che a seconda del valore di METHOD il browser fa una richiesta di tipo GET oppure POST. 

Se la richiesta è di tipo GET sarà del tipo: 

GET / script?QueryString 

….

linea vuota 


Non mi è ben chiaro perché, se usiamo GET per richiedere dei dati al server, aggiungiamo in coda allo script la QueryString. 


Perché il mondo reale è fatto di cose brutte e fatte male. Ormai dovrebbe essere chiaro. GET in inglese ha centomila significati, moltissimi legati al concetto di "prendere". Le richieste GET si usano per prendere documenti da un server. Purtroppo si usano anche per inviare dati ad un server, usando quel meccanismo ignobile (query string appesa in coda all'URL; il programma eseguito dal server estrae i dati dalla query string).

Non c'è quindi un motivo logico. E' così.

Anche in questo caso stiamo trasmettendo dei dati al server? 

Si, vedi sopra.

E' il caso di quando inseriamo dei dati nel motore di ricerca? 

Quando si inseriscono dati in un motore di ricerca, questi possono essere trasmessi con GET oppure con POST. Dipende da come è fatto il documento che ha inviato il motore di ricerca e da come è strutturato il programma del motore di ricerca.

Google invia dati tramite GET. Lo si può capire con i developer tools di chrome, o con un qualsiasi software in grado di mostrare il traffico HTTP. Lo si può capire anche analizzando la home page di google:




Lo si può capire indirettamente anche in questo modo: https://www.google.it/search?q=trieste

Clickando su quel link il browser esegue le stesse operazioni che esegue per ogni altro link, cioè invia una richiesta GET verso l'URL visualizzato (ho costruito il link in modo che il testo visualizzato coincida con l'URL). Il documento che si ottiene come risposta è la risposta standard di Google. Pertanto, Google è predisposto per ricevere dati via GET.

Inviando i dati a Google nel modo "canonico" (cioè nel form di google.it) si ottiene un documento di risposta il cui URL ha una query string con più coppie nome=valore (sopra ce n'era solo una). Ad esempio:

https://www.google.it/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=grande%20kaka

Clickando su questo link si ottiene ancora lo stesso documento di risposta (o lo si dovrebbe ottenere). Soprattutto, si osservano cose buone e giuste.

mercoledì 26 ottobre 2016

Prezzi variabili e sessioni di lunga durata

Un sito web con offerte commerciali può presentare ad uno stesso utente non autenticato informazioni diverse in momenti diversi.

Ad esempio, l'utente vede un prezzo P1 per il bene B in un certo giorno e vede un prezzo P2 per lo stesso bene B qualche giorno dopo. Oppure, l'utente vede che sono disponibili K1 copie del bene B un certo giorno e K2 copie dopo qualche giorno.

Il sito può mostrare informazioni "vere" (cioè le stesse informazioni per tutti gli utenti) ma può anche mostrare informazioni scelte appositamente per tentare di massimizzare un qualche obbiettivo commerciale (spingere l'utente ad acquistare il prima possibile). In questo secondo caso il sito può decidere di mostrare informazioni diverse ad utenti diversi, scelte tenendo conto di visite precedenti da parte dello stesso utente (ad esempio per mettergli fretta).

Il problema è questo: come fa il sito a capire se una richiesta fatta in un giorno ed una richiesta identica fatta qualche giorno dopo sono state fatte dallo stesso utente? (si considera il caso di utenti non autenticati; se l'utente è autenticato allora il problema non si pone).

La soluzione banale è basata sui cookie. Il sito invia nelle risposte un cookie con durata di molte settimane.

L'utente ha a disposizione un modo banale per neutralizzare questa tecnica: cancellare i cookie; oppure utilizzare la cosiddetta "navigazione in incognito", disponibile in ogni browser. Nel secondo caso il browser cancella tutti i cookie creati nella finestra "in incognito" indipendentemente dalla loro durata (quindi ogni visita successiva allo stesso sito con lo stesso browser non utilizzerà i cookie ricevuti in passato da quel sito).

Il sito ha la possibilità di neutralizzare queste difese da parte degli utenti. Il sito può ottenere molte informazioni sull'utente che ha inviato una data request combinando queste informazioni:
  1. cookie (se presente);
  2. zona geografica dell'indirizzo IP lato client;
  3. browser fingerprint (informazioni di configurazione del browser e del sistema su cui si trova);
Combinando queste informazioni opportunamente, il sito è in grado di identificare ogni singolo utente con ottima approssimazione (ad eccezione dei siti che hanno centinaia di milioni di utenti; descrizione intuitiva, approssimata e semplificata).

Non è detto che un sito applichi questi metodi, ma tecnicamente può farlo.

L'utente può neutralizzare il punto 1; ha difficoltà a neutralizzare il punto 2 (dovrebbe viaggiare a molte centinaia di km di distanza ogni volta); ha forti difficoltà a neutralizzare il punto 3 (dovrebbe usare coppie browser-dispositivo diverse ogni volta).


giovedì 6 ottobre 2016

Un calcolatore può eseguire più processi server?

ho un dubbio riguardo il significato di server quando si parla di name server, mail server e web server. Se intesi come processi server, uno stesso host può eseguire processi name server, mail server e web server?

1) Un calcolatore può eseguire moltissimi processi. Di fatto, l'utente di un calcolatore non ha la minima idea di quanti processi siano in esecuzione sul proprio calcolatore.
2) Ogni processo può essere un server, in base alla definizione che ne abbiamo dato a lezione.

Da 1 e 2 discende logicamente che ogni calcolatore può eseguire moltissimi processi server. L'unico vincolo è che processi server diversi devono stare in attesa di richieste di connessione su numeri di porta diversi.

Poi quanti e quali processi server siano in esecuzione su un dato calcolatore è un altro problema.

A titolo di cronaca, la figura qui sotto mostra l'elenco dei processi server che in questo momento sono in attesa di richieste di connessione sul mio PC, un normalissimo Windows 10. Ogni riga corrisponde alla disponibilità ad aprire connessioni su un numero di porta (nascosti dal rettangolo verticale, ovviamente sono tutti diversi tra loro). Ci sono una trentina di processi server:


Poi ci sono, in aggiunta, i processi server UDP. Sugli smartphone o sui tablet la situazione è analoga.

Spero che adesso il discorso sia chiaro.

Spero anche che sia evidente che ognuno di noi si fida implicitamente di dispositivi all'interno dei quali succedono una miriade di cose del tutto misteriose ed ampiamente incontrollabili.


Domanda (importante) su Whois (legata al web hosting)

anni fa ho "registrato" un sito gratuitamente presso altervista:  nomesito.altervista.org (NB, è proprio "nomesito").

mi è venuta la curiosità di fare whois utilizzando un servizio whois gratis.

L'url della risposta è questo: https://www.whois.com/whois/altervista.org (NB: indica una organizzazione di nome Banzai media come Registrant)

Perché non sono indicata io come Registrant?

Questo, significa che in realtà il nome del mio sito puo' essere preso da chiunque poichè' il dominio non è registrato?

Domanda interessante che purtroppo coinvolge tutta una serie di complicazioni. Altro esempio delle complicazioni relative al corso di reti di calcolatori che descrivo qui:

Rispondo con la speranza di non confondere le idee.

Altervista.org è un sito web; 
altervista.org. 18096 IN A 144.76.174.167

Questo sito offre un servizio di web hosting: permette (via web) di creare altri siti web. Un sito web è un insieme di file che si trovano fisicamente su di un web server (in questo caso gestito dalla stessa organizzazione che gestisce il sito altervista.org, cioè Banzai media); vedremo il web hosting quando faremo il web.

Se creo un sito attraverso un sito di web hosting, quale sarà il nome DNS del mio sito? Dipende dal servizio di web hosting. Nel caso di altervista io posso scegliere un nome X e loro daranno al mio sito il nome DNS X.altervista.org. Nel suo caso:
nomesito.altervista.org. 6793 IN A 144.76.106.229

Quindi creare un sito web su altervista implica creare anche un dominio DNS.

Per quello che vi ho detto io quando abbiamo visto whois, il Registrant del dominio dovrebbe essere la persona che ha creato il sito web. In questo caso particolare, invece, il Registrant è lo stesso Registrant di altervista.org (cioè Banzai media). 

Perché? Se si crea un nome "grazie" ad un Registrar allora si diventa Registrant (come ho fatto io creando il nome metigheltravo.it: https://www.whois.com/whois/metigheltravo.it); se invece lo si crea "grazie" ad un Registrant non si può diventare Registrant^2. La gerarchia whois ha infatti solo 3 livelli di database: ICANN, Registry e Registrar. I  Registrant non hanno l'obbligo di mantenere un database whois.

Ovviamente i servizi di web hosting come altervista devono sapere internamente a chi hanno assegnato ogni dominio. Solo che questa informazione non sono obbligati non sono obbligati ad agganciarla agli altri database della gerarchia whois. Potrebbero scegliere di renderla visibile parlando con il protocollo whois con un loro server, sganciato dagli altri database whois, ma pare che altervista non lo faccia (ho provato ad indovinare il nome di quel server scrivendo http://whois.altervista.org, ma è andata male...qualcuno ha deciso di creare un sito web "particolare" su altervista dal nome whois...).

In sintesi:
  1. L'affermazione che ogni dominio ha un Registrant accessibile con whois è vera solo in prima approssimazione.
  2. Nella realtà ci sono vari casi particolari nei quali 1 è falsa (come quello appena discusso).
  3. Per capire come funziona whois (e per superare gli esami) si può ritenere che 1 sia vera. 

lunedì 3 ottobre 2016

Domande e risposte sulle primissime lezioni (ANCORA)

1) Si possono esprimere come segue i seguenti termini?
mail server = host che esegue il processo server responsabile per uno o più domini mail;
web server = host che esegue il processo server responsabile per uno o più nomi di host a cui sono associati il/gli indirizzo/i IP 
name server = host che esegue il processo server responsabile per una zona

c'è la solita ambiguità sul significato di "server", che può significare host o processo;

comunque non ho capito niente sulla domanda web;

Inline image 1

2) Un name server è sia mail server che web server? Un name server viene chiamato mail server se ci riferiamo solo ai domini mail o sono due entità separate?

Un name server non c'entra assolutamente nulla con un mail server, il quale non c'entra assolutamente nulla con un web server. Quale slide o frase che ho detto ha fatto sorgere questa interpretazione?

3) In riferimento all'albero della slide 43 (2A_DNS): se un client invia la richiesta fluit.cs.vu.nl, A?, il server che darà le response finale (cioè quello che ha il RR richiesto) è il name server della zona cs.vu.nl? 

Si

4) Se voglio sapere se www.corriere.it è una zona (oppure se corriere.it è una zona), devo fare una richiesta di tipo NS a quale nameserver?

Ad un name server qualunque; se quel name server supporta risoluzione ricorsiva allora troverà lo RR richiesto; se non la supporta allora mi risponderà con degli RR tali da permettermi di proseguire la ricerca.

La domanda in linea generale è: come fa un client a conoscere l'indirizzo IP del nameserver a cui fa la request (sa che il numero di porta è 53 ma l'indirizzo IP?



"configurato" = ne conosce a priori l'indirizzo TCP (cos'altro potrebbe significare?)

Supponendo faccia la richiesta di tipo A, si creerebbe la nuova domanda: come fa a conoscere l'indirizzo IP del server a cui fa questa richiesta?)

??? L'indirizzo IP del server a cui si invia la richiesta deve essere noto a priori. Per telefonare ad una persona devo conoscerne già il numero telefonico.

5) I top level domain sono tutti zone a sè stanti?

Si

6) Il router funge da server per il client dell'organizzazione e da client con modulo resolver verso il nameserver dell'organizzazione? Il nameserver di un'organizzazione coincide con quello della zona gestita dall'organizzazione?  Una stessa organizzazione può gestire più zone? 

Domanda #6 contiene tre domande.

Un router, come dice il nome, è un router. Non è un server e non è un client. E' una entità che è completamente invisibile alle applicazioni. Opera ad un livello di astrazione inferiore, quello che realizza il trasporto effettivo dei messaggi e che studieremo nella seconda parte del corso. Io ho accennato alla sua esistenza solo per fare capire come mai alcune configurazioni DNS sono possibili in teoria ma non lo sono nella pratica.

Il nameserver di una organizzazione può essere primario o secondario di una o più zone. Ovviamente se una organizzazione gestisce una zona allora quel nameserver sarà primario o secondario di quella zona.

7) L'indirizzo IP di un nome di dominio può coincidere con l'indirizzo IP del nome della zona a cui appartiene quel dominio? Se sì, succede in casi specifici?
Ad esempio, dati i RR:    it       NS  dns.it
                                    dns.it  A    IP1                                
Alla richiesta: it, A? La response sarà it  A  IP2.
Se il nameserver della zona it appartiene alla zona it, si avrà IP1=IP2?

La frase L'indirizzo IP di un nome di dominio può coincidere con l'indirizzo IP del nome della zona è ambigua: un nome di zona non ha indirizzo IP; ciò che può avere indirizzo IP è il name server di quella zona.

Una zona è una pera ed un name server è una scarpa; entità di tipo radicalmente diverso. Sia la pera sia la scarpa, possono avere un nome.

Detto questo, con quei RR, se la request è "it A ?" allora la risposta sarà "dominio inesistente"; non esiste nessun RR di nome it e valore A. E' impossibile, con quei RR, che una risposta sia "it A IP2": proprio perché quel RR non esiste.

8) In riferimento all'esercizio 3 di preparazione alla prima provetta (riporto il testo)
La posta elettronica per il dominio topolinia.it viene memorizzata nel server
basettoni.topolinia.it . Cioè, il name server primario per la zona topolinia.it contiene
nel proprio zone file la riga:
All’istante t0, l’amministratore toglie dallo zone file del name server primario per topolinia.it la
riga precedente, aggiunge la riga seguente e non effettua nessun altro cambiamento allo zone file:
E’ possibile che, a istanti t1>t0, la posta elettronica per l’utente a@topolinia.it venga recapitata su
basettoni.topolinia.it invece che su pluto.topolinia.it ? Se la risposta è no,
spiegare il motivo. Se la risposta è si, fornire almeno due esempi in cui, a istanti t1> t0, la posta arriva su basettoni.topolinia.it .

E' possibile se il server secondario non è ancora aggiornato, cioè nel tempo tra t0 e t1 il secondario non ha contattato il primario perciò non gli sono state comunicate le modifiche. In questa situazione se alla request del client risponde questo server secondario non aggiornato, la posta elettronica potrebbe essere recapitata sul server basettoni.topolinia.it.

Quali altre situazioni sono possibili come esempio?

Risposta corretta. Altre situazioni possibili si possono avere a causa del caching, argomento che vedremo nella prossima lezione.