cerca
Temi d'esame di Sistemi - 11/11/2005
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.TemiEsameSED08 History

Hide minor edits - Show changes to output

Changed line 230 from:
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
to:
[[Torna alla pagina di Sistemi per l'elaborazione delle informazioni->Sistemi]]
Changed line 2 from:
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
to:
[[Torna alla pagina di Sistemi per l'elaborazione delle informazioni->Sistemi]]
Changed lines 133-134 from:
to:
[[Versione alternativa in PDF ->Attach:Es1SED08.pdf]]
Changed lines 217-226 from:
to:
Una query diretta si ha quando passo un NOME al DNS, e questi mi risponde con un indirizzo IP: è la '''risoluzione''' del nome.
Una query inversa invece la ottengo passando un indirizzo IP al DNS, e ricevendo il nome associato a quell'indirizzo: è la '''risoluzione inversa'''.

Il comando '''nslookup''' è abbastanza furbo da interpretare ciò che gli viene passato come argomento. Se gli passo un nome di sito, mi restituisce l'IP. Se gli passo un IP, mi restituisce il nome di quel sito.

Esempio:

nslookup 159.149.70.1
Changed lines 20-21 from:
Schema riassuntivo dello pseudocodice:\\
to:
''Schema riassuntivo dello pseudocodice:''\\\
Added line 35:
''Pseudocodice:''\\\
Changed lines 21-33 from:
* creare le variabili per leggere da linea di comando
* creo un socket
* controllo errore sul socket
* creo struttura sockaddr_in (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
* faccio la connect
* faccio un controllo sullo status
* creo stringa da inviare con la send
* chiamo la recv (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
* controllo il contenuto della prima riga della risposta (HTTP/1.1 200 OK )
* analizzo tutti i dati che sono arrivati dal server e li salvo in un file temporaneo, poi estraggo il contenuto di content-type in una stringa
* controllo il contenuto della stringa content-type e lancio il comando appropriato
* chiudo la socket\\\
to:
# creare le variabili per leggere da linea di comando
# creo un socket
# controllo errore sul socket
# creo struttura sockaddr_in (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
# faccio la connect
# faccio un controllo sullo status
# creo stringa da inviare con la send
# chiamo la recv (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
# controllo il contenuto della prima riga della risposta (HTTP/1.1 200 OK )
# analizzo tutti i dati che sono arrivati dal server e li salvo in un file temporaneo, poi estraggo il contenuto di content-type in una stringa
# controllo il contenuto della stringa content-type e lancio il comando appropriato
# chiudo la socket\\\
Added lines 20-33:
Schema riassuntivo dello pseudocodice:\\
* creare le variabili per leggere da linea di comando
* creo un socket
* controllo errore sul socket
* creo struttura sockaddr_in (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
* faccio la connect
* faccio un controllo sullo status
* creo stringa da inviare con la send
* chiamo la recv (per i campi vedi [[socket library -> http://www.doppioclic.altervista.org/wiki/index.php?n=Uni.SocketLibrary]] )
* controllo il contenuto della prima riga della risposta (HTTP/1.1 200 OK )
* analizzo tutti i dati che sono arrivati dal server e li salvo in un file temporaneo, poi estraggo il contenuto di content-type in una stringa
* controllo il contenuto della stringa content-type e lancio il comando appropriato
* chiudo la socket\\\
Changed lines 192-193 from:
Il protocollo Challenge Handshake Authentication Protocol (CHAP)) è un metodo di autenticazione ampiamente supportato che prevede l'invio di una rappresentazione della password dell'utente, anziché della password stessa, durante il processo di autenticazione. Tramite questo protocollo, il server di accesso remoto invia una richiesta di verifica al client di accesso remoto. Il client di accesso remoto utilizza un algoritmo hash, detto anche funzione hash, per calcolare un risultato hash MD5 (Message Digest-5) basato sulla richiesta di verifica e un risultato hash calcolato dalla password dell'utente. Il client di accesso remoto invia il risultato hash MD5 al server di accesso remoto, il quale, potendo accedere anche al risultato hash della password dell'utente, esegue lo stesso calcolo utilizzando l'algoritmo hash e confronta il risultato con quello inviato dal client. Se i risultati coincidono, le credenziali del client di accesso remoto vengono considerate autentiche. Un algoritmo hash fornisce una crittografia unidirezionale. In tal modo, il calcolo del risultato hash per un blocco di dati risulta semplice, mentre è matematicamente impossibile determinare il blocco di dati originale a partire dal risultato hash.\\
to:
Il protocollo Challenge Handshake Authentication Protocol (CHAP)) è un metodo di autenticazione ampiamente supportato che prevede l'invio di una rappresentazione della password dell'utente, anziché della password stessa, durante il processo di autenticazione. Tramite questo protocollo, il server di accesso remoto invia una richiesta di verifica al client di accesso remoto. Il client di accesso remoto utilizza un algoritmo hash, detto anche funzione hash, per calcolare un risultato hash MD5 (Message Digest-5) basato sulla richiesta di verifica e un risultato hash calcolato dalla password dell'utente. Il client di accesso remoto invia il risultato hash MD5 al server di accesso remoto, il quale, potendo accedere anche al risultato hash della password dell'utente, esegue lo stesso calcolo utilizzando l'algoritmo hash e confronta il risultato con quello inviato dal client. Se i risultati coincidono, le credenziali del client di accesso remoto vengono considerate autentiche. Un algoritmo hash fornisce una crittografia unidirezionale. In tal modo, il calcolo del risultato hash per un blocco di dati risulta semplice, mentre è matematicamente impossibile determinare il blocco di dati originale a partire dal risultato hash.\\\
Attach:md5.jpg\\
Attach:md51.jpg\\
(from Microsoft and Roberto Sassi)\
\\
Changed lines 191-193 from:
to:
''Challenge Handshake Authentication Protocol (CHAP)''
Il protocollo Challenge Handshake Authentication Protocol (CHAP)) è un metodo di autenticazione ampiamente supportato che prevede l'invio di una rappresentazione della password dell'utente, anziché della password stessa, durante il processo di autenticazione. Tramite questo protocollo, il server di accesso remoto invia una richiesta di verifica al client di accesso remoto. Il client di accesso remoto utilizza un algoritmo hash, detto anche funzione hash, per calcolare un risultato hash MD5 (Message Digest-5) basato sulla richiesta di verifica e un risultato hash calcolato dalla password dell'utente. Il client di accesso remoto invia il risultato hash MD5 al server di accesso remoto, il quale, potendo accedere anche al risultato hash della password dell'utente, esegue lo stesso calcolo utilizzando l'algoritmo hash e confronta il risultato con quello inviato dal client. Se i risultati coincidono, le credenziali del client di accesso remoto vengono considerate autentiche. Un algoritmo hash fornisce una crittografia unidirezionale. In tal modo, il calcolo del risultato hash per un blocco di dati risulta semplice, mentre è matematicamente impossibile determinare il blocco di dati originale a partire dal risultato hash.\\
Changed line 33 from:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none%\\
to:
struct destinazione{ //per brevità usiamo l'assegnamento\\
Changed lines 39-42 from:
%green%'''Domanda:''' ''è giusto fare in questo modo? Cioè assegnare alla destinazione dei sin i parametri dei vari elementi?''\\
'''Risposta di Damiani''': ''beh, andrebbero usate funzioni per la copia di stringhe e non l'assegnamento. cmq va bene se mettete un commento dove dite che per brevita' usate l'assegnamento''
to:
Changed lines 84-90 from:
%green%'''Domanda:''' ''Devo spiegare come si implementa la creazione del file? Se sì, come?''\\
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere nomi di funzioni come una create e una write, se no basta un commento''\\
//quindi io farei\\

%green%
create newFileTemp= FileTemporaneo\\\
to:
//creo il file temporaneo (basta un commento)\\

create
newFileTemp= FileTemporaneo\\\
Changed lines 98-101 from:


select case type{
\\
to:
//utilizzo uno switch per scrivere un una stringa "comando" il nome del viewer da aprire a seconda del contenuto del "cont"\\

switch (cont)
{\\
Added lines 115-116:
//aggiungo a comando il percorso e il nome del file\\
Changed lines 92-93 from:
%green%create newFileTemporaneo ()\\\
to:
%green%create newFileTemp= FileTemporaneo\\\
Changed lines 90-92 from:
//quindi io farei
create newFileTemporaneo ()
to:
//quindi io farei\\

%green%
create newFileTemporaneo ()\\\
Changed lines 89-90 from:
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere nomi di funzioni come una create e una write, se no basta un commento''\\\
to:
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere nomi di funzioni come una create e una write, se no basta un commento''\\
//quindi io farei
create newFileTemporaneo ()
Changed lines 95-99 from:
string cont =copiaCaratteri (fileTemporaneo);\\\
to:
string cont =copiaCaratteri (FileTemporaneo);\\\
Changed lines 86-87 from:
//quindi copio o caratteri in una variabile stringa "cont" fino ai caratteri "/n"\\
to:
Added lines 91-92:
//quindi copio o caratteri in una variabile stringa "cont" fino ai caratteri "/n"\\
Changed lines 89-91 from:
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere
nomi di funzioni come una create e una write, se no basta un commento''\\\
to:
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere nomi di funzioni come una create e una write, se no basta un commento''\\\
Changed lines 90-91 from:
nomi di funzioni come una create e una write, se no basta un commento''\\\%none%
to:
nomi di funzioni come una create e una write, se no basta un commento''\\\
Changed lines 90-91 from:
nomi di funzioni come una create e una write, se no basta un commento''%none%\\\
to:
nomi di funzioni come una create e una write, se no basta un commento''\\\%none%
Changed lines 86-88 from:
string comando;\\\
to:
//quindi copio o caratteri in una variabile stringa "cont" fino ai caratteri "/n"\\

%green%'''Domanda:''' ''Devo spiegare come si implementa la creazione del file? Se sì, come?''
\\
'''Risposta di Damiani:''' ''No; ovviamente ci sono apposite funzioni. se volete dare realismo potete mettere
nomi di funzioni come una create e una write, se no basta un commento''%none%\\\

string cont =copiaCaratteri (fileTemporaneo);\\\

Deleted lines 128-130:
%warning%'''WARNING'''\\
La parte opzionale dell'esercizio l'ha mai fatta o accennata?
Changed line 33 from:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none% \\
to:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none%\\
Changed line 33 from:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none%\\
to:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none% \\
Changed line 33 from:
struct destinazione{\\
to:
struct destinazione{ %green%//per brevità usiamo l'assegnamento%none%\\
Changed line 39 from:
%green%'''Domanda:''' ''è giusto fare in questo modo? Cioè assegnare alla destinazione di sin_addr il parametro che mi passa la gethostbyname?''\\
to:
%green%'''Domanda:''' ''è giusto fare in questo modo? Cioè assegnare alla destinazione dei sin i parametri dei vari elementi?''\\
Changed lines 39-42 from:
%green%Qui la domanda era: è giusto fare in questo modo? Cioè assegnare alla destinazione di sin_addr il parametro che mi passa la gethostbyname?\\
Risposta: ''beh, andrebbero usate funzioni per la copia di stringhe e non l'assegnamento. cmq va bene se mettete un commento dove dite che per brevita' usate l'assegnamento''
to:
%green%'''Domanda:''' ''è giusto fare in questo modo? Cioè assegnare alla destinazione di sin_addr il parametro che mi passa la gethostbyname?''\\
'''Risposta di Damiani''': ''beh, andrebbero usate funzioni per la copia di stringhe e non l'assegnamento. cmq va bene se mettete un commento dove dite che per brevita' usate l'assegnamento''
Added lines 39-42:
%green%Qui la domanda era: è giusto fare in questo modo? Cioè assegnare alla destinazione di sin_addr il parametro che mi passa la gethostbyname?\\
Risposta: ''beh, andrebbero usate funzioni per la copia di stringhe e non l'assegnamento. cmq va bene se mettete un commento dove dite che per brevita' usate l'assegnamento''
Changed lines 107-108 from:
to:
'''CHE BELLO QUESTO PSEUDO COSI' PSYCO!'''\\
[--Quake--]
Added lines 20-108:
LATO CLIENT

//suppongo che il nome del mio host sia nella posizione 1 dell’array e che il numero di porta sia nella posizione 2

nome=parametro[1]\\
porta=parametro[2]\\\

//creo il socket sockid\\\

int sockid = socket (PF_INET, SOCK_STEAM, IPPORTO_TCP)\\\

//costruisco la struct sockaddr_in , sockaddr pecifica per IP che qui chiamo destinazione\\\

struct destinazione{\\
destinazione.sin_famyly = AF_INET;\\
destinazione.sin_port = porta ; // numero di porta\\
destinazione.sin_addr = gethostbyname(nome); //nome dell’host\\
}\\\

//CONNECT\\\

status = connect (sockid, destinazione, NULL)\\\
//controllo lo stato : se lo stato è =0 va tutto bene altrimenti mando un msg di errore ed esco\\\

If (status = = -1){\\
print(“Errore”);\\
exit(-1);}\\\

//definisco una string richiesta che contiene la prima linea di una richiesta http e la string risposta \\\

string richiesta =”GET” + nome + “HTTP/1.1 \n” + “connection: close”\\\

//per poter ricevere il file devo avere un buffer (risposta)che lo contenga\\\

string risposta;\\\

//RECEIVE\\\

recv (sockid, risposta, strlenght, 0)\\
if (risposta != “http/1.1 200 OK”)
->{print(“errore”);
->exit(-1);}\\\

recv (sockid, risposta, strlenght, 0)\\\

//creo la stringa type che dovrà contenere il valore di content-type e la variabile lunghezza che dovrà contenere il valore di content-lenght\\\

string type= parse(risposta, “content-type”);\\
int lunghezza = parse (risposta, “content-lenght”);\\\

//creo il buffer buffer lungo quanto il mess di risposta (lunghezza)\\\

Char buffer = new char[lunghezza]\\\

recv (sockid, buffer, lunghezza, 0)\\\

Status =close(sockid);\\
if (status = = -1”)
->{print(“errore”);
->exit(-1);}\\\

//suppongo che il file da inviare si chiami temporaneo.temp e che si trovi nella cartella temp (/temp/temporaneo.temp)\\\

string comando;\\\

select case type{\\
-->case=”text.html”
-->then comando=modzilla 6.0;
-->break;\\\

-->case=”image/*”
-->then comando=gimp;
-->break;\\\

-->case=”audio/*”
-->then comando=windows media player;
-->break;\\\

else comando=notepad;}\\\

comando = comando + “/temp/temporaneo.temp”;\\\

execute(comando);\\\

return(0);


Added lines 92-98:
'''1.'''\\

'''2.'''\\
Il portmapper RPC è un demone che agisce sulla porta 111 e che converte i numeri del programma RPC in numeri di porta del protocollo TCP/IP (o UDP/IP). Deve essere in funzione al fine di eseguire chiamate RPC ai server RPC su quella macchina. Quando un server RPC è in esecuzione, comunica a portmap su quale numero di porta è in ascolto e quali numeri di programmi RPC è pronto a servire. Quando un client desidera fare una chiamata RPC ad un dato numero di programma, prima contatta portmap sulla macchina server al fine di determinare il numero della porta dove i pacchetti RPC potranno essere inviati.\\\

'''3.'''\\
Changed line 76 from:
{+''Connection:'' +} indica una connessione non persistente\\
to:
{+''Connection:'' +} close indica una connessione non persistente\\
Deleted line 76:
NOTA: questo campo può essere solo ''open''(persistente) o ''close''(non persistente)\\
Changed line 74 from:
{+''Accept-Ranges:'' +} specifica quale tipo di contenuto questo server supporta\\
to:
{+''Accept-Ranges:'' +} specifica quale tipo di contenuto questo server supporta, che tipo di range può accettare. I valori previsti sono: ''bytes'' e ''none''\\
Changed lines 67-68 from:
''http/1.1:'' indica il protocollo e la sua versione.\\
''200 OK:'' significa che la richiesta è andata a buon fine e l’oggetto richiesto è incluso nella risposta.\\
to:
{+ ''http/1.1:'' +} indica il protocollo e la sua versione.\\
{+ ''200 OK:'' +} significa che la richiesta è andata a buon fine e l’oggetto richiesto è incluso nella risposta.\\
Changed lines 70-78 from:
''Date:''data di creazione della risposta\\
''Server:'' tipo di Web Server\\
''Last-Modified:'' data dell’ultima modifica dell’oggetto richiesto\\
''ETag:'' identificativo della pagina, se la pagina cambia\\
''Accept-Ranges:'' specifica quale tipo di contenuto questo server supporta\\
''Content-Length:'' dimensioni in bytes della risposta\\
''Connection:'' indica una connessione non persistente\\
NOTA: questo campo può essere solo ''open''(persistente) o ''close''(non persistente)
''Content-Type'': tipo dell’oggetto contenuto nell’Entity Body, nel corpo della risposta.\\
to:
{+ ''Date:'' +} data di creazione della risposta\\
{+ ''Server:'' +} tipo di Web Server\\
{+ ''Last-Modified:'' +} data dell’ultima modifica dell’oggetto richiesto\\
{+ ''ETag:'' +} identificativo della pagina, se la pagina cambia, cambia anche questo valore\\
{+''Accept-Ranges:'' +} specifica quale tipo di contenuto questo server supporta\\
{+''Content-Length:'' +} dimensioni in bytes della risposta\\
{+''Connection:'' +} indica una connessione non persistente\\
NOTA: questo campo può essere solo ''open''(persistente) o ''close''(non persistente)\\
{+
''Content-Type:'' +} tipo dell’oggetto contenuto nell’Entity Body, nel corpo della risposta.\\
Changed line 61 from:
Richiesta http:
to:
Richiesta http:\\
Changed line 66 from:
Campi della risposta:
to:
Campi della risposta:\\
Added line 81:
Changed lines 61-62 from:
...
to:
Richiesta http:
Esegue una connessione telnet al sito www
.crema.unimi.it sulla porta 80.\\
Una volta connesso il carattere di terminazione è ‘^]’ che corrisponde all’…..\\
Il metodo HEAD è uguale al GET (richiede qualunque oggetto che sia stato identificato dalla URL di richiesta), ma il server non deve includere un messaggio nel body della risposta quindi restituisce solo i campi dell'header.\\\

Campi della risposta:
''http/1.1:'' indica il protocollo e la sua versione.\\
''200 OK:'' significa che la richiesta è andata a buon fine e l’oggetto richiesto è incluso nella risposta.\\
NOTA: il ''numero'' è lo status code, mentre ''ok'' è lo status message, rappresentano la stessa informazione, ma una sotto forma di numero, l’altra sotto forma di messaggio.\\
''Date:''data di creazione della risposta\\
''Server:'' tipo di Web Server\\
''Last-Modified:'' data dell’ultima modifica dell’oggetto richiesto\\
''ETag:'' identificativo della pagina, se la pagina cambia\\
''Accept-Ranges:'' specifica quale tipo di contenuto questo server supporta\\
''Content-Length:'' dimensioni in bytes della risposta\\
''Connection:'' indica una connessione non persistente\\
NOTA: questo campo può essere solo ''open''(persistente) o ''close''(non persistente)
''Content-Type'': tipo dell’oggetto contenuto nell’Entity Body, nel corpo della risposta.\\
In questo caso testo di tipo html e codifica iso-8859-1\\
Changed lines 27-28 from:
...
to:
I dati possono essere big-endian e little-endian, questi due standard consistono in un differente ordinamento dei byte. Little-endian ordina prima i byte '''meno''' significativi (''ex'': 12.40.119.128) mentre big-endian ordina prima i byte '''più''' significativi (''ex'': 128.119.40.12).\\
Un host può utilizzare entrambi gli ordinamenti, mentre la rete utilizza solo l’ordinamento big-endian quindi è necessario fare una conversione nell’ordine dei byte della rete prima di trasmettere ('''Marshalling''') e un'altra conversione nel momento della ricezione('''Unmarshalling'''). Questo processo si può schematizzare in questo modo: marshalling --> trasmissione --> ricezione --> unmarshalling

Attach:esempio1SED08.jpg

NOTA: se una macchina è già big-endian queste conversioni non fanno nulla.\\\
Vedi slide '''DAM_U4_U1_L5'''

%warning%'''WARNING'''\\
La parte opzionale dell'esercizio l'ha mai fatta o accennata?
Changed lines 34-49 from:
''% telnet www.crema.unimi.it 80 \\
Trying 157.99.64.12... \\
Connected to www.crema.unimi.it. \\
Escape character is '^]'. \\
HEAD /formation/infobio/web/course/data/page1.html HTTP/1.0 \\\

HTTP/1.1 200 OK \\
Date: Tue, 24 Feb 2004 18:01:05 GMT \\
Server: Apache/1.3.26 (Unix) mod_perl/1.24_01 mod_ss1/2.8.10 OpenSSL/0.9.5a \\
Last-Modified: Tue, 18 Feb 2005 14:38:31 GMT \\
ETag: "101e6a1-cd-3e5237be" \\
Accept-Ranges: bytes \\
Content-Lenght: 205 \\
Connection: close \\
Content-Type: text/html; charset=iso-8859-1'' \\\
to:
''% telnet www.crema.unimi.it 80'' \\
''Trying 157.99.64.12...'' \\
''Connected to www.crema.unimi.it.'' \\
''Escape character is '^]'.'' \\
''HEAD /formation/infobio/web/course/data/page1.html HTTP/1.0'' \\\

''HTTP/1.1 200 OK'' \\
''Date: Tue, 24 Feb 2004 18:01:05 GMT'' \\
''Server: Apache/1.3.26 (Unix) mod_perl/1.24_01 mod_ss1/2.8.10 OpenSSL/0.9.5a'' \\
''Last-Modified: Tue, 18 Feb 2005 14:38:31 GMT'' \\
''ETag: "101e6a1-cd-3e5237be"'' \\
''Accept-Ranges: bytes'' \\
''Content-Lenght: 205'' \\
''Connection: close'' \\
''Content-Type: text/html; charset=iso-8859-1'' \\\
Changed line 34 from:
% telnet www.crema.unimi.it 80 \\
to:
''% telnet www.crema.unimi.it 80 \\
Changed lines 48-49 from:
Content-Type: text/html; charset=iso-8859-1 \\\
to:
Content-Type: text/html; charset=iso-8859-1'' \\\
Changed lines 58-59 from:
# '''Spiegate CON UN ESEMPIO cos'é il challenge nel protocollo CHAP di controllo sicuro delle password'''
# '''Cos'é il portmapper, su quale porta opera e in quale protocollo applicativo è utilizzato?'''
to:
# '''Spiegate CON UN ESEMPIO cos'é il ''challenge'' nel protocollo CHAP di controllo sicuro delle password'''
# '''Cos'é il ''portmapper'', su quale porta opera e in quale protocollo applicativo è utilizzato?'''
Changed lines 32-34 from:
'''
Con riferimento allo scambio http che segue, spiegate (1) la richiesta http (2) tutti i campi della risposta e il loro significato.'''
to:
'''Con riferimento allo scambio http che segue, spiegate (1) la richiesta http (2) tutti i campi della risposta e il loro significato.'''
Changed lines 8-9 from:
'''Scrivete lo pseudocodice e le chiamate alla socket library necessarie per realizzare un semplice WWW client con i seguenti requisiti:
to:
'''Scrivete lo pseudocodice e le chiamate alla socket library necessarie per realizzare un semplice WWW client con i seguenti requisiti:'''
Changed lines 8-17 from:
'''Scrivete lo pseudocodice e le chiamate alla socket library necessarie per realizzare un semplice WWW client con i seguenti requisiti:'''

#
Dalla linea di comando, leggete (1) la URL che si vuol leggere sul server e (2) il server port number. Create il socket e collegatelo alla porta specificata (e.g., HTTP porta 80) [suggerimento: usate le chiamate getservbyname, gethostbyname, socket, connect].

# Inviate la richiesta al WWW server usando il messaggio GET del protocollo http. Specificate esplicitamente la richiesta.

# Leggete i dati dalla connessione HTTP e salvateli su un file temporaneo creato nella vostra WWW cache (e.g., /tmp/yourloginname)sul computer locale

# Lanciate il processo di un viewer per mostrare a video il ile (suggerimento: usate [fork/exec]. Spiegate almeno due tecniche che potreste usare per decidere il viewer da lanciare a seconda del contenuto del file (suggerimento:usate il campo ContentType di http)'''
to:
'''Scrivete lo pseudocodice e le chiamate alla socket library necessarie per realizzare un semplice WWW client con i seguenti requisiti:

#
'''Dalla linea di comando, leggete (1) la URL che si vuol leggere sul server e (2) il server port number. Create il socket e collegatelo alla porta specificata (e.g., HTTP porta 80) [suggerimento: usate le chiamate getservbyname, gethostbyname, socket, connect].'''

# '''Inviate la richiesta al WWW server usando il messaggio GET del protocollo http. Specificate esplicitamente la richiesta.'''

# '''Leggete i dati dalla connessione HTTP e salvateli su un file temporaneo creato nella vostra WWW cache (e.g., /tmp/yourloginname)sul computer locale'''

# '''Lanciate il processo di un viewer per mostrare a video il ile (suggerimento: usate [fork/exec]. Spiegate almeno due tecniche che potreste usare per decidere il viewer da lanciare a seconda del contenuto del file (suggerimento:usate il campo ContentType di http)'''
Changed lines 57-63 from:
!!Domande:'''

#
Spiegate CON UN ESEMPIO cos'é il challenge nel protocollo CHAP di controllo sicuro delle password
# Cos'é il portmapper, su quale porta opera e in quale protocollo applicativo è utilizzato?
# Fate un esempio di query inversa al DNS usando il comando nslookup'''
to:
!!Domande:

#
'''Spiegate CON UN ESEMPIO cos'é il challenge nel protocollo CHAP di controllo sicuro delle password'''
# '''Cos'é
il portmapper, su quale porta opera e in quale protocollo applicativo è utilizzato?'''
# '''Fate un esempio di query inversa al DNS usando il comando nslookup'''
Changed lines 35-50 from:
% telnet www.crema.unimi.it 80
Trying 157.99.64.12...
Connected to www.crema.unimi.it.
Escape character is '^]'.
HEAD /formation/infobio/web/course/data/page1.html HTTP/1.0

HTTP/1.1
200 OK
Date: Tue, 24 Feb 2004 18:01:05 GMT
Server: Apache/1.3.26 (Unix) mod_perl/1.24_01 mod_ss1/2.8.10 OpenSSL/0.9.5a
Last-Modified: Tue, 18 Feb 2005 14:38:31 GMT
ETag: "101e6a1-cd-3e5237be"
Accept-Ranges: bytes
Content
-Lenght: 205
Connection: close

Content-Type: text/html; charset=iso-8859-1
to:
% telnet www.crema.unimi.it 80 \\
Trying
157.99.64.12... \\
Connected
to www.crema.unimi.it. \\
Escape
character is '^]'. \\
HEAD
/formation/infobio/web/course/data/page1.html HTTP/1.0 \\\

HTTP/1.1
200 OK \\
Date:
Tue, 24 Feb 2004 18:01:05 GMT \\
Server:
Apache/1.3.26 (Unix) mod_perl/1.24_01 mod_ss1/2.8.10 OpenSSL/0.9.5a \\
Last-Modified:
Tue, 18 Feb 2005 14:38:31 GMT \\
ETag:
"101e6a1-cd-3e5237be" \\
Accept
-Ranges: bytes \\
Content-Lenght: 205 \\
Connection: close \\
Content
-Type: text/html; charset=iso-8859-1 \\\
Changed lines 57-58 from:
!!Domande
'''
to:
!!Domande:'''
Changed lines 61-63 from:
# Fate un esempio di query inversa al DNS usando il comando nslookup
'''
to:
# Fate un esempio di query inversa al DNS usando il comando nslookup'''
Changed lines 41-42 from:
to:
HTTP/1.1 200 OK
Date: Tue, 24 Feb 2004 18:01:05 GMT
Server: Apache/1.3.26 (Unix) mod_perl/1.24_01 mod_ss1/2.8.10 OpenSSL/0.9.5a
Last-Modified: Tue, 18 Feb 2005 14:38:31 GMT
ETag: "101e6a1-cd-3e5237be"
Accept-Ranges: bytes
Content-Lenght: 205
Connection: close
Content-Type: text/html; charset=iso-8859-1
Changed lines 32-33 from:
''''''
to:
'''
Con riferimento allo scambio http che segue, spiegate (1) la richiesta http (2) tutti i campi della risposta e il loro significato.'''

% telnet www.crema.unimi.it 80
Trying 157.99.64.12...
Connected to www.crema.unimi.it.
Escape character is '^]'.
HEAD /formation/infobio/web/course/data/page1.html HTTP/1.0
Added lines 48-59:

!!Domande
'''
# Spiegate CON UN ESEMPIO cos'é il challenge nel protocollo CHAP di controllo sicuro delle password
# Cos'é il portmapper, su quale porta opera e in quale protocollo applicativo è utilizzato?
# Fate un esempio di query inversa al DNS usando il comando nslookup
'''

%red%[-'''SOLUZIONE'''-]

----
Added lines 1-39:
(:title Temi d'esame di Sistemi - 11/11/2005:)
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
----

%titolo%''':: Temi d'esame di Sistemi - 11/11/2005 ::'''

!!Esercizio 1
'''Scrivete lo pseudocodice e le chiamate alla socket library necessarie per realizzare un semplice WWW client con i seguenti requisiti:'''

# Dalla linea di comando, leggete (1) la URL che si vuol leggere sul server e (2) il server port number. Create il socket e collegatelo alla porta specificata (e.g., HTTP porta 80) [suggerimento: usate le chiamate getservbyname, gethostbyname, socket, connect].

# Inviate la richiesta al WWW server usando il messaggio GET del protocollo http. Specificate esplicitamente la richiesta.

# Leggete i dati dalla connessione HTTP e salvateli su un file temporaneo creato nella vostra WWW cache (e.g., /tmp/yourloginname)sul computer locale

# Lanciate il processo di un viewer per mostrare a video il ile (suggerimento: usate [fork/exec]. Spiegate almeno due tecniche che potreste usare per decidere il viewer da lanciare a seconda del contenuto del file (suggerimento:usate il campo ContentType di http)'''

%red%[-'''SOLUZIONE'''-]

----

!!Esercizio 2
'''Sun XDR converte i dati nello standard big-endian prima di trasmetterli. Spiegate in cosa consiste questa conversione attraverso un esempio. (opzionale) Discutete vantaggi e svantaggi di questa tecnica rispetto a Receiver Makes it Right e CORBA CDR'''

%red%[-'''SOLUZIONE'''-]

...

----

!!Esercizio 3
''''''

%red%[-'''SOLUZIONE'''-]

...

----
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]