Visualizzazione post con etichetta Domanda. Mostra tutti i post
Visualizzazione post con etichetta Domanda. Mostra tutti i post

sabato 5 novembre 2016

"Devo rispondere scrivendo X oppure scrivendo Y?"

- quando si schematizza una richiesta a un name server, questo deve essere indicato con il suo nome o con il nome della zona di cui è name server? 

Se ad esempio il nome del nameserver della zona units.it fosse misterdomain.eu (cioè si ha il RR units.it NS misterdomain.eu), quando invio una richiesta a units.it, accanto al server schematizzato posso scrivere "name server della zona units.it" o "misterdomain.eu" indifferentemente?

Forse è una precisazione superflua, in quanto l'ho detto più volte, ma preferisco ribadirla: non esiste "lo" svolgimento corretto; un esercizio può essere svolto in N modi diversi, tutti per me perfetti o corretti.

Da un altro punto di vista, non dovete passare notti insonni chiedendovi se quello che voi intendete scrivere coincide con quello che io voglio leggere.

Il principio è molto semplice: chi legge deve essere certo che chi scrive ha capito. Si può dimostrare che si è capito in N modi diversi.

Ad esempio, se come destinatario di una richiesta DNS uno scrive "DNS" oppure "name server", allora chi legge non può essere certo che chi scrive ha capito. Mi pare evidente.

Nel caso specifico, entrambi gli svolgimenti sarebbero corretti: sia scrivendo "name server della zona Z", sia scrivendo il nome di quel name server (nome che ovviamente deve essere specificato in altre parti dell'esercizio), chi legge è certo che chi scrive ha capito.

Detto questo, in questo caso è preferibile scrivere il nome del name server. Perché è preferibile? Perché se uno scrive "name server della zona units.it" allora in chi legge permane il dubbio "ma questo lo saprà che il name server della zona units.it è misterdomain.eu? ha chiaro il significato del record NS che ha scritto due righe prima?". In altre parole, chi scrive ha capito a chi va inviata la richiesta DNS, ma forse non ha capito il significato dei record NS. Può sembrarvi una pignoleria eccessiva, ma vi garantisco che non è così. La creatività degli studenti nell'escogitare giri di parole finalizzati a nascondere i propri dubbi non ha limiti. Ho visto quasi di tutto.

Il dubbio sopra citato può avere impatto nullo, trascurabile o non trascurabile sulla valutazione, in dipendenza del resto dello svolgimento.

Pertanto, il vostro scopo deve essere dimostrare di avere capito; di fronte a due o tre opzioni, conviene scegliere quella meno ambigua (più specifica); quella cioè che contiene maggiore informazione.

Nota bene: "opzione che contiene maggiore informazione" non significa "aggiungere informazioni superflue". Nell'esempio precedente, scrivere "name server della zona units.it" (quindi opzione che contiene minore informazione) con l'aggiunta "può appartenere a qualsiasi organizzazione; un registrar può infatti avere accordi tecnici ed operativi per permettere la creazione automatizzata di RR in molti top-level domain tra i quali anche .it" non rende l'opzione scelta più informativa. L'aggiunta è superflua. In chi legge permane il dubbio "ma questo lo sa come si chiama il name server della zona units.it? lo sa sono i record NS che ha scritto poco sopra?

In generale, fornire informazioni superflue è inutile (non risponde alla domanda) ed è dannoso (si perde tempo e si fornisce una prova negativa delle proprie capacità). Perché informazioni superflue forniscono una impressione negativa? Per tre motivi:
  1. fornire informazioni superflue perché le si ritengono utili significa non avere capito l'argomento;
  2. fornire informazioni superflue per dimostrare che "questo non lo so tanto bene ma ho studiato tanto e le altre cose le so" significa non avere capito cosa sia un ingegnere. Se uno deve dimensionare un ascensore ma sa dimensionare solo i frigoriferi non è che può dire "l'ascensore è caduto ma io sono bravissimo nel dimensionare i frigoriferi".
  3. Ho l'umana debolezza di essere particolarmente sensibile, in senso negativo, nei confronti di questo fenomeno.

martedì 27 settembre 2016

Domande e risposte sulle primissime lezioni

1) E' corretto dire che un servizio di comunicazione utilizza un protocollo di comunicazione? O sono sinonimi?

E' corretto e non sono sinonimi.

Si può dire che un servizio di comunicazione TCP/UDP è il layer superiore del software di rete (=sistema operativo)? (slide 40 General)

Si

2) Possono esistere servizi affidabili senza connessione o servizi orientati alla connessione che generano duplicati?

In linea di principio si.

3) Se si inviano 3 messaggi con TCP ma la connessione viene interrotta, potrebbero arrivare 2 messaggi e solo alcuni byte del terzo messaggio? (visti dal ricevente come un unico flusso di byte)

Si.

4) Le procedure dell'interfaccia socket sono in tutto 8? (socket, bind, listen, accept, connect, send, receive, close)

Si, con l'osservazione che noi abbiamo visto procedure idealizzate (un sottoinsieme semplificato della realtà).

5) I processi server che non hanno privilegi di amministratore (non root) possono avere solo numero di porta >1024 come i client dato che il sistema operativo rifiuta di assegnare port number <1024? E perchè si parla di sistema operativo che assegna port number lato server, non dovrebbe essere l'applicativo a sceglierlo? (slide 68 General)

Quanto dice è impreciso perché il discorso dei privilegi di amministratore è molto più ampio e complicato di ciò che abbiamo visto noi.

L'unica cosa che è importante sapere è che se un processo ha un socket s ed esegue bind(s,num) con num<1024 allora il sistema operativo esegue la bind() solo se il processo ha i privilegi di amministratore (e, ovviamente, il numero di porta num è libero). Notare che se il processo esegue bind allora è un server.

6) Oulook per gestire la posta elettronica è un client che si può collegare a più server? (se ad esempio gestisce più caselle di posta elettronica)

Si

7) L'indirizzo IP del client viene scelto dal sistema operativo come il suo port number? O è quello del nodo su cui si trova il client?

Gli indirizzi IP non sono scelti dagli applicativi. Un applicativo ha l'indirizzo IP del proprio nodo. Vedremo nella seconda parte del corso come sono assegnati gli indirizzi IP ai nodi.

8) L'indirizzo IP di un calcolatore è legato alla sua posizione fisica? (per la slide 43 General no, ma per la slide 27 DNS l'indirizzo IP viene modificato quando si sposta fisicamente un calcolatore)

Si, con l'osservazione che il legame è indiretto e difficile da spiegare in modo sintetico in questo momento. Due calcolatori potrebbero essere l'uno accanto all'altro ed avere indirizzi IP completamente diversi tra loro. Un calcolatore potrebbe muoversi di pochi metri e mantenere il proprio indirizzo IP oppure essere obbligato a cambiarlo.

Per il momento conviene avere questo schema mentale: se un calcolatore si sposta di decine di metri allora deve cambiare il proprio indirizzo IP. Ripeto, non è proprio così ma per il momento è utile pensare che sia così.


(slide che aggiungerò il prossimo anno)


giovedì 12 maggio 2016

IP: routing

è presentato un esercizio, il quale, tra gli altri punti, chiede di fare la tabella di routing per R2.
Ora, la mia domanda è questa: se voglio instradare il pacchetto IP verso N3, è indifferente (ai fini dell’esame) farlo passare per R3 o per R1?

Si.

Non a fini d’esame invece, in questo caso come si comporta il router? Instrada il pacchetto in modo tale da fargli fare meno strada?

Il router si comporta come descritto dalla sua tabella di routing.

L'amministratore può avere deciso di realizzare le tabelle di routing in modo da minimizzare il numero di "hop", cioè il numero di router dal quale occorre passare (cioè "fare meno strada").

Sono però possibili altri criteri. Ad esempio, se l'amministratore desidera minimizzare la quantità di traffico che passa da una certa network, oppure desidera minimizzare il carico imposto su un certo router, allora potrebbe decidere di impostare route più lunghe.


Displaying Untitled.png

giovedì 28 aprile 2016

IP: Firewall con mail server

Permettere alla organizzazione di "inviare e ricevere mail".
  • ricevere mail significa traffico smtp entrante ((ip-dst=IP-ms and port-dst=25) + (ip-src=IP-ms and port-src=25)) e traffico dns entrante ((ip-dst=IP-ns and port-dst=53) + (ip-src=IP-ns and port-src=53)).
  • il traffico dns entrante è necessario perché altrimenti dall'esterno non si riesce a trovare IP-ms.
  • NON significa traffico pop (se significasse traffico pop allora come si dovrebbe indicare il procedimento con cui dall'esterno si inviano email all'organizzazione?).
  • NON si deve permettere traffico a tutta l'organizzazione, ma solo agli indirizzi IP di mail server e name server (i vincoli richiesti nell'esercizio sono molto più ristretti).
  • inviare email significa traffico smtp uscente  ((ip-dst=IP-ms and port-src=25) + (ip-src=IP-ms and port-dst=25)) e traffico dns uscente  ((ip-dst=IP-ns and port-src=53) + (ip-src=IP-ns and port-dst=53)).
  • il traffico dns uscente è necessario perché altrimenti dall'interno non si riesce a trovare i mail server delle altre organizzazioni. 
  • più chiaro di così non lo so spiegare

HTTP: notazione da usare per URL rewriting

http://bartoli-alberto.blogspot.it/search?q=url+rewriting

IP: indirizzi Ethernet e frame Ethernet

non mi è chiaro come fa il router a ricavare l'indirizzo fisico dei nodi della sua rete o del router successivo a cui instradare i pacchetti. Per i vari host, la traduzione tra ip e mac address è eseguita dal modulo ARP, per il router? è un modulo analogo, è lo stesso o non l'abbiamo visto?
Il router traduce da IP a mac address tramite ARP. Esattamente come un nodo non router.

>Volendo banalizzare di molto i concetti della seconda parte del corso, si può dire che (per noi, per ora):
>gli host sono connessi alle varie network via RJ45. Su questo cavo, si usa il protocollo ethernet.
>Sopra il protocollo ethernet, posso implementare vari protocolli (a seconda di quello che metto nel payload).
>Se voglio comunicare dentro la mia network, uso ethernet.
>Altrimenti, tramite ethernt invio i pacchetti ad un router, che in base all'ip che trova nel payload invia quel pacchetto ad un altro host via ethernet (se anche l'altra network alla quale è connesso il router è una network ethernet)?
quello che dice è giusto se cerco di interpretare ciò che credo abbia voluto dire. preso alla lettera non è completamente giusto. cerco di riformularlo qui sotto.

abbiamo visto in dettaglio solo la network ethernet (che può usare vari mezzi di comunicazione fisici); sulla network ethernet si usa il protocollo ethernet;

un frame ethernet può trasportare informazioni di molti protocolli diversi; noi abbiamo visto solo ARP, DHCP e IP.

per comunicare tra nodi che possono essere collegati a network diverse devo creare una network virtuale (internetwork) e noi abbiamo visto solo un modo per crearla: IP;

se i nodi della network virtuale appartengono alla stessa network ethernet, allora si usa un pacchetto IP incapsulato in un frame ethernet, e il frame va direttamente da mittente a destinatario;

se i nodi della network virtuale appartengono a network diverse, allora si usa un pacchetto IP incapsulato in un frame ethernet, e il frame va ad un router; il router estrae il pacchetto e lo fa proseguire incapsulandolo in un altro frame.

HTTP: Uso proxy

E' una scelta delle grandi organizzazioni quella di usare il Proxy HTTP? E' giusto che io da casa mia guardando nelle mie impostazioni di rete non sia collegato a nessun Proxy?

non tutte le organizzazioni usano proxy, pertanto può accadere che da casa uno non sia collegato tramite proxy.

HTTP: sessioni con più server

quando mi collego ad una pagine web faccio richieste a tanti server diversi, con ognuno di loro ho una sessione?

"mi collego ad una pagina web" non significa nulla.

l'elaborazione di una richiesta da parte di un server web viene effettuato in modo del tutto autonomo, senza contattare altri server web; questo dovrebbe essere chiaro;

quindi, un server S1 decide se creare o non creare una sessione in modo del tutto autonomo;

quindi, quando un browser contatta N server diversi, sarà creato un numero di sessioni variabile tra 0 ed N a seconda di cosa decide di fare ogni server.

nelle provette/esami, lo studente deve fare svolgimenti coerenti con quanto richiesto nell'esercizio; ovviamente, se si può evitare di creare una sessione allora conviene fare uno svolgimento che non la crea (in quanto si minimizza la probabilità di errori e si risparmia tempo); altrettanto ovviamente, se è richiesto esplicitamente di creare una sessione oppure sono citate funzionalità per le quali la creazione di una sessione è necessaria, allora la sessione deve essere creata.

IP - Ethernet: chi vede un frame

Se supponiamo che un certo Mittente avente indirizzo IP-M e Eth-M voglia inviare un messaggio MSG ad un Destinatario IP-D non appartenente alla sua network, M genera il pacchetto ip con IP-M, IP-D e payload, il tutto in un frame ethernet avente Eth-M e Eth-Router come mittente e destinatario.

Un eventuale attaccante A avente IP-A e Eht-A collegato nella stessa network di M come fà ad entrare in possesso del frame (e quindi osservarne il traffico) se esso parte da Eth-M ed arriva a Eth-Router? C'è qualche differenza se la network a cui son collegati M ed A è cablata, wireless o mista?

Se il destinatario del frame è Eth-router allora A può vedere il frame (programmando opportunamente la propria scheda di rete) solo se si trova nella stessa cella di M (o del router, ma il router non è mai collegato in wireless).

Nel caso di network Ethernet cablata con dispositivi "hub" (dispositivi che oggi quasi non esistono più) allora A potrebbe vedere il frame anche se collegato allo stesso hub di M o del R. Ma oggi esistono solo gli switch, e con questi M non vedrebbe il traffico.

Da notare che un attaccante potrebbe (tentare di) alterare la cache ARP di M, nel qual caso M invierebbe i frame ad A invece che al router. Da notare anche che l'attaccante potrebbe (tentare di) osservare il traffico direttamente sul nodo M, installandovi del sw malware.

IP: assegnazione network number

ulla scelta del range
giustamente lei ha detto che prima si maggiora il numero con la potenza di 2 successiva poi li si somma e poi si cerca la potenza di 2 successiva.
Quindi nel secondo esempio 520 host da una parte 270 dall'altra ci servivano 2048


Ok chiaro, ma fare una divisione maggiore di 2 e poi associare più indirizzi alla network?
esempio prendo 1024 indirizzi, li divido in 8 blocchi 
i primi 5 blocchi li uso per la network da 520 e gli altri 3 li uso per la network da 270
è una pratica sbagliata?

E' una pratica sbagliata.

Il motivo è questo: quando un nodo si chiede se un indirizzo IP di destinazione appartiene alla propria network o a un'altra network, usa un certo algoritmo (calcolo dell'espressione booleana my-IP AND my-SM == IP-dst AND my-SM). Questo algoritmo assume che ogni network usi un range di indirizzi la cui lunghezza è una potenza di 2.

Quindi, se ad una network assegno un range la cui lunghezza non è una potenza di 2, allora l'algoritmo non funziona: il risultato dell'espressione booleana a volte è una risposta corretta per la domanda "IP-dst appartiene alla mia network?" e a volte non è una risposta corretta.

Esempio.

Supponiamo di avere assegnato i range come dice lei: i "primi 5 blocchi" ad una network N1 e "gli altri 3 blocchi" ad un'altra network N2.

Consideriamo un nodo X1 che appartiene a N1 e che deve inviare un pacchetto verso un indirizzo IP2 appartenente al "sesto blocco" (o al settimo o all'ottavo).

Il nodo N1 si chiede se IP2 appartiene alla propria network o a una network diversa. Per rispondere a questa domanda calcola l'espressione booleana (IP2 AND SM-N1) == (IP1 AND SM-N1)..

Il procedimento di AND logico tra subnet mask ed indirizzi IP identifica sempre range la cui lunghezza è una potenza di 2. Cioè, il range di indirizzi che messi in AND con una subnet mask generano un risultato identico ha sempre una lunghezza potenza di 2 (per definizione di subnet mask). 

Questo significa che (IP2 AND SM-N1) è certamente uguale a (IP1 AND SM-N1), quindi X1 ritiene che IP2 appartenga alla propria network. Quindi X1 invia una ARP request per trovare l'indirizzo Ethernet del nodo con indirizzo IP IP2 e non risponderà nessuno (perché IP2 NON appartiene a N1).

Assegnando gli indirizzi come dice lei, avremmo bisogno di un algoritmo che identifica range la cui lunghezza è un multiplo di una potenza di 2 (in questo caso 5 * 2^10). Un algoritmo del genere potrebbe anche esistere, ma il protocollo IP non funziona in questo modo.

IP: assegnazione indirizzi e network number

1) Lei ha detto che l'ip statico non si usa mai. Può essere che si usi in caso di proxy ? Ad esempio proxy aziendale, così da avere sempre la lista dei pc che fanno parte e riconoscerlo subito

Se ho detto che l'assegnazione statica degli indirizzi IP non si usa mai allora devo essere forzatamente messo in pensione.

L'assegnazione statica è molto meno comune dell'assegnazione dinamica. Ma "non si usa mai" è sbagliatissimo.

Se non si usasse mai, allora tutto quello che abbiamo visto sul DNS sarebbe pressoché inutile. Ogni record A dovrebbe infatti essere modificato ogni volta che un server viene acceso (o per qualche motivo scade il suo indirizzo IP e gli viene assegnato un altro). Ogni nodo dovrebbe cambiare la propria configurazione ogni volta che un router della sua network (un default gateway) viene acceso o cambia di indirizzo IP.

Forse, anzi molto probabilmente, non sono stato sufficientemente chiaro:

*) i nodi server (cioè i nodi utilizzati prevalentemente per eseguire processi server) e i router hanno configurazione statica; praticamente sempre; non l'ho evidenziato abbastanza perché mi pareva già evidente;

*) i nodi client (cioè i nodi utilizzati prevalentemente per eseguire processi client, come pc, smartphone, tablet etc etc etc) hanno quasi sempre configurazione dinamica; talvolta hanno configurazione statica ma è molto meno frequente della configurazione dinamica; quando la configurazione è statica, quasi certamente è un PC di una organizzazione (ma non è vero il contrario: un PC di una organizzazione ha molto spesso configurazione dinamica);

2)Lei ha detto che il network number viene scelto da una singola organizzazione mentre l'host number viene scelto dall'amministratore di rete. Poi ci ha detto che in linea di massima (oltre a certi casi) il NN viene scelto in modo che i range non siano sovrapposti. Però ci ha fatto l'esempio di range completamente sovrapposti e non solo in parte. È possibile che l'ente che gestisce il NN metta delle limitazioni anche sull' HN?

Non ho capito la domanda.

Si possono costruire range parzialmente o completamente sovrapposti. Si possono assegnare a network diverse range parzialmente o completamente sovrapposti.

Condizione necessaria (ma non sufficiente) affinché assegnazioni di questo genere funzionino è che
1) ci siano dispositivi aggiuntivi che non vediamo;
2) ci siano configurazioni aggiuntive che non vediamo;
3) gli host number appartenenti all'intervallo di sovrapposizione siano utilizzati in solo una delle due network (questo punto in realtà è un pò più intricato da spiegare, perché se i due NN hanno lunghezza diversa allora è difficile confrontare gli HN di una network con gli HN dell'altra network; ma l'idea dovrebbe essere chiara).

Forse lei si riferisce al punto 3 qui sopra.

Si, pensavo al caso 3

Per farla breve quando si assegna un NN, mi sembra difficile che dopo si coprano tutti gli indirizzi disponibili e che quindi rimanga qualcuno vacante. Allora pensavo che l'ente avesse la possibilità di dire io ti assegno il NN 134.156.0.0 /16 però tu hai il range che va da 
134.156.0.0 fino a 134.156.1100.000 (e anche il 134.156.1111.1111) e quindi si tenesse gli altri indirizzi disponibili per altre evenienze.  

In questa frase ci sono due punti importanti.

Primo, quando si assegna un range (NN) ad una network, è necessario che il range sia commisurato al massimo numero di host che si prevede di collegare a quella network. Non al numero di host che devo collegare a quella network adesso.

Se oggi devo collegarci 11 host, allora mi basta un NN di lunghezza 28 (in modo da avere 4 bit per l'host number). Ma se un giorno avessi la necessità di collegare a quella network 60 host, allora quel NN non potrei più usarlo. Modificare il NN assegnato ad una network è molto complicato, non concettualmente ma praticamente (occorre modificare le tabelle di routing di tutti i router dell'organizzazione; occorre cambiare la configurazione di tutti i nodi della network---più semplice se sono configurati dinamicamente; se nella network ci sono host aventi un nome DNS è necessario modificare i record A; etc). Quindi, appunto, quando si assegna un NN per la prima volta è opportuno cercare di fare la scelta corretta in modo da minimizzare il rischio di dovere fare in futuro operazioni di questo genere. Ovviamente uno pensa "io non ho la sfera di cristallo, quindi scelgo sempre NN con molti bit per l'host number in modo da non correre mai il rischio di rimanere senza indirizzi IP disponibili in quella network". Questo approccio non è applicabile perché gli indirizzi IP costano. Quindi occorre fare una stima adeguata. Stima che ovviamente non ha alcuna garanzia di essere corretta e che sarà sempre un compromesso.

Secondo, quando una organizzazione ha acquistato un range, l'organizzazione divide quel range in range più piccoli che assegnerà alle proprie network (procedimento che vedremo da domani). In ogni caso, ad una network deve essere sempre assegnato un range della forma già vista: il primo indirizzo del range ha host number composto da tutti zero, l'ultimo ha host number composto da tutti uno, il range contiene TUTTI gli indirizzi tra il primo e l'ultimo.

NON è possibile fare un assegnamento come quello ipotizzato nella domanda, in cui alla network non sono assegnati tutti gli indirizzi tra il primo e l'ultimo.

Questo vincolo non ha necessità di essere compreso. E' così. Il motivo per cui esiste questo vincolo invece può essere compreso. Lo sarà nelle prossime lezioni.

HTTP: redirection dopo autenticazione

Negli esercizi in cui viene richiesta Form authentication, una volta che mi sono autenticata (dopo aver inviato la richiesta POST) devo scrivere la risposta:
               HTTP 1.1 301 Found
               Location: ….
               <LV>

       E quindi fare una redirection e richiedere nuovamente il file con GET,
       oppure posso scrivere direttamente la risposta che contiene il file richiesto?
E' lo stesso.
Nella realtà avviene quasi sempre la redirection, ma ai fini degli esami è lo stesso.

HTTP: scambio messaggi con autenticazione

Autenticazione basic: 

- Dopo la richiesta del documento protetto, la response( che apre la finestra delle credenziali) deve contenere gli header Content-type: text/html e Content-lenght: L ? 

Dipende. 

In linea di principio una response con status 401 Unauthorized potrebbe non trasportare alcun documento (lo header WWW-Authenticate è sufficiente a istruire il browser su cosa fare). In pratica response di questo genere spessissimo trasportano un documento HTML che dice "non sei autorizzato e ti devi autenticare" o qualcosa del genere. In questo caso, ovviamente, gli header della response devono descrivere tipo e lunghezza del documento trasportato, con gli header che lei ha indicato.

- se ci fosse url rewriting, bisogna modificare gli url contenuti nella finestra delle credenziali? Se così fosse, vuol dire che nel tasto "Accedi" c'è l'url modificato del documento che sto chiedendo? Cioè, visto che il browser dovrebbe mandare una richiesta identica alla precedente, come fa a sapere di aggiungere all'url l'identificazione di sessione?

O non ho capito la domanda o sta facendo grossa confusione.

Con autenticazione BASIC il browser NON segue nessun URL. La "finestra delle credenziali" non è un documento inviato dal server, è una finestra aperta dal browser in reazione ad uno header contenuto nella response (lo header WWW-Authenticate). Quindi non c'è nessun URL da riscrivere in quella response.
------------------------
Per quanto riguarda la FORM Authentication, se devo prelevare un documento, ad esempio offerte.html per cui necessita un’autenticazione, una possibile sequenza di request/response può essere la seguente?
GET /offerte.html http 1.1Request HeaderLV
HTTP 1.1 200 OKResponse HeaderLVDocumento html che contiene la Login Page (cioè il form)
PRIMA di inviare la response qui sopra il server ha aperto una sessione. Se usa i cookie allora la response mantiene i cookie. Se usa URL rewriting allora il form deve avere gli URL modificati.
NB: nei compiti e negli esami i FORM devono essere descritti esplicitamente; almeno i valori degli attributi DEVONO essere scritti.
POST credenziali   (In questo punto più precisamente come funziona?) VEDI SLIDE; le credenziali sono dei dati inseriti in un form; form identico a qualsiasi altro form
Request headerLV
Se le credenziali sono errate il server risponde con      
http 1.1  301 UnauthorizedResponse headerLvDocumento in cui dico che non è autorizzato
Se le credenziali sono corrette 
http 1.1 200 ok
response headerlv/offerte.html (o comunque il documento richiesto)

Aggiungo che in una provetta o negli esami è necessario inserire gli header che nelle slide ho definito essere irrinunciabili (Host, Referer, etc)
-------------------------
Supponiamo di avere un realm “Foto” a cui si puo’ accedere solo tramite Basic Authentication, e contenente solo immagini.
Quando io invio la richiesta:
GET /a/img.gif HTTP 1.1Request HeadersLV
Il server mi risponde:
HTTP 1.1 410 Unauthorizedwww-Authenticate:
......
LV
Ora il dubbio che mi sono posto è:
all’interno della request successiva, l’URL relativo /a/img.gif sarà già modificato (del tipo GET /a/img.gif?ID=id1) o siccome la risposta (scritta sopra) del server non fornisce alcun documento, il server stesso non ha ancora modificato gli URL relativi?
La sessione viene creata alla ricezione della prima request (perché questa non trasporta nessun identificatore di sessione).
Ma la prima response non contiene nessun URL. Se la sessione viene mantenuta con URL rewriting, quindi, la seconda request non conterrà alcun identificatore di sessione; quindi il server non sarà in grado di capire che la seconda request appartiene ad d una sessione; quindi creerà un'altra sessione.

HTTP: sessioni con web hosting

Supponiamo di avere un server che contenga più di un sito web 
per esempio contiene    www.units.it   e   www.abbassojuve.com    
questo vuol dire che il server ha due nomi , e per quei due nomi l'indirizzo IP è lo stesso; 

se il mio browser richiede  il documento www.units.it  ( la home page)  e viene creata una sessione tramite tecnica url rewriting  il server mi riconosce se richiedo URL presenti  nel documento ma  se accedo a www.abbassojuve.com  la sessione non c'è più? 

Non è che "la sessione non c'è più". Non è mai esistita. 

Una sessione identifica una sequenza di richieste tra un browser ed un server web. Le nozioni di "browser" e "server web" sono semplici se si definiscono intuitivamente. Sono più complicate se uno vuole (giustamente) definirli in modo completo e preciso.

Per definire cosa sia un browser, infatti, occorre tenere conto del fatto che tutti i tab in una stessa window condividono le sessioni; window diverse non in incognito condividono le sessioni.

In questo contesto, un server web è un server web "virtuale": occorre cioè immaginare che tutti gli URL con lo stesso nome di server (seconda parte dell'URL) sono associati ad un server (appunto, virtuale) che gestisce solo quegli URL; URL con nome di server diverso è come se fossero associati ad un server diverso.

SMTP: forwarding

Nelle slide abbiamo detto che se RCTP TO: @not-local allora il server,una volta che capisce che il client del mittente è locale, risponde 251 e fa forwarding. Perchè negli esempi di dialogo Client-Server , quando mi presento come abc.com , inserendo abc.com come mittente ecarolyn@xyz.com come destinatario ricevo 250 come risposta e non 251?

Vero, c'è una apparente incongruenza nell'esempio.

L'incongruenza è solo apparente in quanto la specifica del protocollo SMTP dice che in quella situazione vanno bene entrambi i codici:

Servers MAY forward messages...  When they do so, they MAY either provide ... a 251 code, or may forward "silently" and return a 250 code.

I protocolli hanno spesso molti più dettagli di quanto sarebbe didatticamente desiderabile.

Se adesso mi facesse la domanda "ma perché hanno scelto di potere usare entrambi i codici?" la risposta, in base a quanto scritto sull'RFC, è che ciò può essere utile a nascondere la locazione effettiva di una mailbox e che i sistemisti possono volere nascondere tale locazione.

Se adesso mi facesse la domanda "ma perché può essere utile nascondere la locazione effettiva di una mailbox?" la risposta sarebbe "perchè meno informazioni si rendono pubbliche e meglio è".

HTTP: Header host

 si puó concludere che l'Header Host contiene sempre il nome del Server verso cui è inviata la Request?

Si, con l'osservazione che un server può ospitare più siti (lasciando perdere cosa sia esattamente un sito"). Quindi "il nome" è in realtà "uno dei nomi".

Da quanto ho capito io lo header HOST va messo all’interno di una request HTML solo nel caso in cui un web server “ospita” tanti siti web...se ad un web server corrisponde un unico sito web non ha alcun senso. E’ corretto? Inoltre, per quanto gli esercizi, come faccio a capire se effettivamente un server ha uno o più siti web al suo interno, e quindi se devo o no mettere lo header HOST?

a parte il fatto che la request è HTTP, lo header Host va inserito sempre. Il browser non può infatti sapere se il server ospita più siti web

HTTP: inserimento delle pubblicità

Quando è andato sul sito americano per vedere il suo user agent la pubblicità era in italiano. Come mai?
anche qua mi son fatto le mie idee
o il sito ha varie pubblicità principali e in base all'accept language e altri header mostra quella più giusta
oppure la pubblicità è gestita da terzi 

Entrambe le ipotesi sono corrette, ma la seconda nella realtà è più complicata di quello che possa apparire in base a quanto visto sinora.

Nella stragrande maggioranza dei casi le pubblicità sono effettivamente gestite da terzi: cioè se prelevo una pagina da un sito S1, la pagina ha sempre delle componenti che prelevo da altri siti diversi da S1 e specializzati nella somministrazione di pubblicità; il sito che sceglie la pubblicità vede lo header Accept-Language inviatogli dal browser e sceglie di conseguenza.

In pratica, però, nella scelta ci mette anche moltissimi altri ingredienti, ad esempio relativi alla "storia di navigazione" del browser. Al momento non siamo però in grado di capire come sia raccolta quella storia e come sia associata ad ogni browser. Lo capiremo già nelle prossime lezioni (cookie).

HTTP: Significato di content-length

In una slide la content-Length specificata è 2870 ma il data è solo 1176
Ho pensato a 2 possibilità
Nel content-Length vengono calcolati anche gli header e altre informazioni inviate, oppure il data è compresso. È per caso giusta la mia idea?


Giusta osservazione.

Il fatto che il valore di content-length non coincida con la lunghezza dei dati che seguono la linea vuota può avere due spiegazioni:

1) il documento trasportato dalla HTTP response è compresso; non è però il caso della slide, in quanto una HTTP response che trasporta un documento compresso deve avere uno header Content-Encoding il cui valore descrive la trasformazione applicata al documento (compressione); ciò permette al browser di applicare la trasformazione opposta prima di usare il documento; in assenza di tale header, il browser non può che assumere che il documento non sia stato trasformato;

2) lo capiremo nella seconda parte del corso;

essenzialmente, ciò che mostra la slide non è una HTTP response intera, ma è un messaggio trasportato dalla network Ethernet; la HTTP response viene spezzata in più messaggi Ethernet, perché è troppo grande per essere contenuta in un unico messaggio Ethernet; questi dettagli, e molti altri, sono (fortunatamente) del tutto invisibili alle applicazioni; chi usa un servizio di comunicazione (nel nostro caso TCP) non ha necessità di sapere come funziona internamente quel servizio; basta sapere cosa offre quel servizio ai propri utenti;

DNS: record CNAME

Nella slide qui sotto la Request che fa il client non dovrebbe essere "www.univ.trieste.it,CNAME" ? Nella slide la domanda è di tipo A e la risposta CNAME



no, purtroppo CNAME è un RR strano. la domanda è proprio A; il server vede che non esiste un RR A, ma poiché esiste un RR CNAME risponde con questo;

uno non farebbe mai una domanda CNAME; chiedere "pippo CNAME ?" sarebbe come chiedere "pippo si chiama davvero pippo o si chiama in altro modo?"; se uno ragionasse in questo modo allora prima di ogni domanda di tipo A si dovrebbe prima fare una domanda di tipo CNAME; non va bene;

ciò che invece accade nella realtà è questo: "mi traduci pippo?" (pippo A ?), la risposta è "pippo non si chiama pippo, si chiama Lewandowski" (pippo CNAME Lewandowski);

DNS: Risoluzione nomi

se io faccio la richiesta   <ns.ciao.it  A>  e so che  ciao.it è una zona  che contiene il dominio  ns.ciao.it ed  inoltre il  nome del name server della zona  realmadrid.es è proprio ns.ciao.it  allora sia il name server della zona ciao.it sia quello di realmadrid.es  conoscono il RR per quel nome?

non ho capito;

intanto ciò che un name server conosce è indipendente dalle richieste che vengono fatte (quindi iniziare la domanda con "se faccio la richiesta..:" e terminarla con "allora...conoscono" non ha senso); 

poi la frase "il  nome del name server della zona  realmadrid.es è proprio ns.ciao.it " fa pensare che la zona realmadrid.es abbia un solo name server; ma ciò è in conflitto con quanto segue nella frase ("sia il name server della zona ciao.it sia quello di realmadrid.es...")

cerco di interpretare la domanda: se un name server è name server (primario o secondario) di più zone, allora deve conoscere gli RR di tutte quelle zone? in questo caso la risposta è si;

altra interpretazione: se un name server X è primario della zona ZP e secondario della zona ZS, allora il name server primario di ZS deve essere secondario di ZP (quindi deve conoscere i RR di ZP)? in questo caso la risposta è no; il primario di ZS può essere secondario di ZP ma può anche non esserlo; dipende da come si mettono d'accordo le organizzazioni corrispondenti; spesso si "scambiano il favore", ma ciò non è tecnicamente necessario.