vuoi
o PayPal
tutte le volte che vuoi
TCP:
• quando i pacchetti arrivano a destinazione, il protocollo TCP ne controlla l'integrità; poi
li riordina
• se alcuni dati risultano persi o danneggiati, ne richiede la ritrasmissione.
DNS= servizio, all'interno di TCP/IP, che associa ad ogni indirizzo IP un nome mnemonico.
Esempio: pcserver.mat.unisi.it
pcserver -> host
mat.unisi.it -> dominio
mat -> sottodominio
unisi -> sottodominio
it -> sottodominio
• per consentire la traduzione degli indirizzi DNS in indirizzi IP, ogni dominio è associato ad un
calcolatore (SERVER DNS) che è responsabile del dominio.
• se il Server DNS non riesce a tradurre un particolare indirizzo, allora si invia la richiesta di
traduzione ad un 2° / 3° / 4° / ... server DNS (finchè il compito non viene portato a termine).
Altri servizi di rete (sempre basati sui protocolli TCP/IP) :
1. WWW, World Wide Web
• protocollo HTTP; ultimamente HTTPS
• HTTP= protocollo di trasferimenti ipertesti;
in altre parole: il servizio WWW mi da la possibilità di trasferire IPER-TESTI=
pagine Web.
• WWW è fatto in modo che i vari nodi della rete ipertestuale siano distribuiti sui vari host che
formano internet.
Attivando un link si può passare ad un documento che si trova su un qualsiasi computer della
rete. • ogni documento è identificato mediante un indirizzo univoco, detto
corrispondenza 1 a 1: URL; di solito il protocollo usato è HTTP.
1 file per ogni indirizzo Esempio: http://www.mat.unisi.it.
HTML= è un linguaggio di formattazione del testo a tag.
Consente di costruire documenti multimediali ipertestuali; si basa solo sui TAG=
"indicazioni" che visualizzano del testo o delimitano dei campi.
Consentono al computer di visualizzare dei documenti ipertestuali e multimediali.
XML= evoluzione di HTML; più "potente" e più versatile.
• Javascript / Java / Flash -> codice eseguibile, inserito all'interno delle pagine web, per fare in
modo che la pagina interagisca in modo attivo con l'utente.
• vari scopi: animazioni, aggiornamento di parte della pagina, giochi online, ...
• BROWSER= programmi che permettono di scaricare e visualizare pagine web.
Esempi: Chrome, Internet Explorer, Firefox, ...
Come funziona?
• l'utente richiede la pagina al browser web (ad esempio scrivendola nella barra
degli indirizzi)
• il browser chiede al DNS l'indirizzo IP del server
• il server DNS restituisce l'apposito indirizzo
• il browser chiede la pagina al server
• il server risponde con la pagina HTML
• il browser legge l'HTML e crea la grafica della pagina, che verrà visualizzata all'utente
2. LOGIN REMOTO
• servizio che consente di connettere il proprio computer (client) ad un altro (server), in modo da
poter lavorare sul "proprio" computer a distanza.
Il proprio computer diventa un TERMINALE REMOTO del pc al quale è connesso, e può usare
le risorse di quest'ultimo.
• il programma più diffuso in internet per fare il login remoto è Telnet.
• tutti i comandi digitati dal client viaggiano "in chiaro" sulla rete, mettendo a repentaglio la
sicurezza.
SSH: programma per il login remoto, in cui la comunicazione avviene in modo cifrato.
• per fare il login remoto occorre fornire delle credenziali di accesso (ad esempio username e
password data dal server).
3. TRASFERIMENTO DI FILE
• protocollo FTP -> trasferisce files fra utenti connessi in rete
• download= da server a client [scarica; client: io]
upload= da client a server
[per entrambi è necessaria l'autenticazione]
• FTP anonimo= un particolare tipo di server FTP che non richiede autenticazione & prevede solo
il download.
Permette di distribuire (in modo anonimo) archivi di software / documenti / e dati, attraverso
internet.
Esempio: l'antivirus.
4. POSTA ELETTRONICA -> E-MAIL
• per inviare / ricevere messaggi a / da chiunque sia in rete.
Necessari:
• Mailbox & indirizzo di posta elettronica
• Client di posta
• Computer connesso a internet
• MAILBOX= "contenitore" elettronico dove vengono depositate tutte le mail spedite all'indirizzo
dell'utente.
Risiede sul MAILSERVER -> si può avere un Mailserver a propria disposizione (aziende /
università ..;)
oppure si fa affidamento a un ISP (Internet Service Provider), che fornisce all'utente l'accesso a
un Mail server da casa.
• protocolli per la gestione delle mail ->
A. SMTP (Simple Mail Transfer Protocol)
• protocollo per l'invio di messaggi
• quando riceve un messaggio, il server SMTP lo deposita nella casella del destinatario
B. POP3
• il client si connette al server (= io accedo alla mia Mailbox) e scarico tutti i messaggi
sul computer, lasciando la Mailbox vuota.
Possibilità di lettura offline (= senza collegamento alla rete).
Esempio: outlook.
C. IMAP • i messaggi rimangono sempre nel server (: sul pc); viene scaricata solamente la preview
(l'intestazione) del messaggio.
Se faccio doppio click -> scarico il messaggio; altrimenti no.
• possibilità di rileggere gli stessi messaggi da dispositivi diversi (perchè, non
scaricandoli, rimangono lì).
III MODULO
problema • un insieme di dati di partenza (su cui lavorare)
• un risultato cercato
• una soluzione = procedura (: insieme di azioni) che prendono dei dati in
ingresso, li elaborano e danno il risultato in uscita
[la risoluzione del problema]
• sapere come risolvere un problema è diverso dalla capacità
di risolverlo
• soluzione attuata da noi, oppure da un altro "soggetto" ->
può non sapere come risolvere un problema, ma essere
disponibile ad attuare la soluzione (se gli viene insegnata)
• fasi della procedura di soluzione:
• ANALISI del problema & identificazione di una
soluzione da parte del 1° soggetto
• DESCRIZIONE della soluzione, da parte del 1°
soggetto, in termini comprensibili al 2° soggetto
• INTERPRETAZIONE della soluzione da parte del 2°
soggetto
• ATTUAZIONE della soluzione da parte del 2° soggetto
la procedura di soluzione deve essere descritta in modo che
l'esecutore sia in grado di interpretarla in modo corretto
Esecutore calcolatore
• Caratteristiche:
• devo scrivere le soluzioni che voglio che svolga in un LINGUAGGIO che lui sa interpretare
(stringhe di 0 e 1)
• l'insieme delle AZIONI che è in grado di compiere
• l'insieme delle ISTRUZIONI (: le regole) che correlano ogni costrutto linguistico con le
rispettive azioni da compiere.
• Svantaggi: è l'esecutore più "stupido"; svolge solo pochissime operazioni (somma e confronto)
Vantaggi: molto veloci. Possono ripetere la stessa operazione all'infinito senza sbagliare.
• se il calcolatore non sa fare l'operazione che gli chiedo, devo insegnargliela scompongo
un problema in sottoproblemi, fino ad arrivare a problemi ELEMENTARI o PRIMITIVI=
problema la cui soluzione corrisponde ad un'azione elementare che l'esecutore sa compiere
direttamente. PROCEDURA EFFETTIVA = risolve l'insieme dei sotto-problemi
quando ->
• tutti i problemi sono elementari
• è fissato l'ordine di soluzione dei problemi
• è specificato il modo in cui un problema utilizza i risultati dei problemi
che lo precedono
AMBIGUITA' -> si ha quando 2 soggetti giudicano come effettiva la stessa soluzione di un
problema, ma poi compiono azioni che producono risultati diversi.
• si può presentare finchè la soluzione del problema viene descritta in termini
informali
• per rimuoverla devo "scrivere", passo passo, tutti gli step che portano alla
soluzione del problema
Soluzioni effettive formalmente sono chiamate ALGORITMI= una successione ordinata
di istruzioni che definiscono le operazioni da eseguire su dei dati, per
risolvere una classe di problemi.
• in caso di calcolatori:
• le soluzioni effettive vengono tradotte in procedure effettive o PROGRAMMI
• il linguaggio formale per la loro descrizione è detto LINGUAGGIO
DI PROGRAMMAZIONE • fasi di sviluppo di un programma ->
• ANALISI del problema & identificazione di
una soluzione
• FORMALIZZAZIONE della soluzione &
definizione dell'algoritmo risolutivo
• PROGRAMMAZIONE= scrittura dell'
algoritmo in un linguaggio di
programmazione "ad alto livello"
• TRADUZIONE del programma in
"linguaggio macchina" (direttamente
interpretabile dalla macchina)
• le operazioni sono scritte sotto forma di
programma
• il programma e i dati su cui operare sono
registrati in memoria & letti dall'unità di
controllo
• ogni specifico programma risolve una classe
di problemi
NB! computer: universale perchè ha in sè un linguaggio di programmazione che mi
permette di risolvere tutti i problemi che voglio.
[in più, è programmabile]
PROBLEMA TERMINALE= sottoproblemi non elementari, ma dei quali è nota la scomposizione
in problemi elementari.
L'algoritmo può essere pensato come: soluzione per un insieme di
problemi terminali.
Proprietà degli algoritmi:
1. FINITEZZA • numero di istruzioni finito
• ogni istruzione eseguita in un intervallo finito di tempo (non può
andare avanti all'infinito)
• ogni istruzione eseguita un numero finito di volte
2. GENERALITA'= un algoritmo deve fornire la soluzione a una classe di problemi.
L'algoritmo opera su tutti i dati appartenenti al DOMINIO o ISTANZA, per fornire una soluzione
all'interno del CODOMINIO.
l'insieme di arrivo -> l'insieme di dati in ingresso
la soluzione
3. NON AMBIGUITA' • istruzioni definite in modo univoco
• non ci sono paradossi, contraddizioni, ambiguità
• il risultato dell'algoritmo è identico, indipendentemente
chi lo sta eseguendo / quando / come / ...
CICLO o LOOP= consentono di ripetere (reiterare) una stessa azione, fin tanto che non accade
qualcosa.
finchè <condizione> ripeti <azione>
istruzione iterativa => soluzione iterativa
linguaggio formale OPERAZIONI da eseguire
DATI su cui eseguirle
ogni programma ha 2 serie di dati ->
• COSTANTI= dati che rimangono invariati durante l'esecuzione
dell'algoritmo (da quando inizia a quando finisce)
• VARIABILI= "scatoline" (: celle di m