SistemaOperRetiInternet
Transcription
SistemaOperRetiInternet
U tility Windows XP Programmi eseguibili dal prompt dei comandi (sintassi Start/Esegui/cmd): 1) Digitare systeminfo, (da cmd) verranno visualizzate numerose informazioni relative al sistema tra cui: versione di Windows XP, numero di serie, proprietario, versione del bios, hotfix installati etc. 2) Digitare recover [unità:] [percorso]nomefile per recuperare file da un'unità danneggiata o difettosa. E' consentito il recupero di un file alla volta senza l'utilizzo di wildcards (es. *.*), dunque indicando il nome preciso di un file. 3) Digitare driverquery, (da cmd)comparirà una schermata riassuntiva con l'elenco dei driver installati sul nostro sistema operativo ordinati per "nome modulo", "nome visualizzato" e "data di collegamento". 4) Digitare fsutil fsinfo, la schermata presenterà una serie di opzioni che consentiranno di conoscere informazioni approfondite sui volumi e il tipo di filesystem utilizzato: drives - Elenca tutte le unità drivetype - Interroga un'unità in base al tipo volumeinfo - Interroga le informazioni sul volume ntfsinfo - Interroga informazioni sul volume specifiche per NTFS statistics - Interroga le statistiche del file system. 5) Digitare tasklist /svc, (da cmd)verranno visualizzati in tal modo i processi attivi sul sistema affiancati dai relativi servizi da cui dipendono. Utile nel caso si voglia conoscere in maniera approfondita l'origine di un programma in esecuzione. I comandi di WinXP più usati da linea di comando (Esegui) Molti comandi di Windows si possono direttamente richiamare direttamente da linea di comando (Start -> Esegui). Ecco i principali e a cosa servono: *msconfig = permette di accedere ad una finstra da cui modificare i file SYSTEM.INI, WIN.INI, BOOT.INI, gestire i Servizi di Windows e anche gestire i programmi da usare all'Avvio; *services.msc = richiama la finestra di gestione dei Servizi di sistema; 1 *mailto: = serve per scrivere direttamente una mail serza il client di posta predefinito; *bootcfg = Configurare, interrogare o modificare le impostazioni del file Boot.ini; *driverquery = Visualizzazione di un elenco dei drivers di tutte le periferiche installate e delle loro proprietà; *systeminfo = Visualizzazione di informazioni dettagliate sulla configurazione del computer e del sistema operativo installato su di esso; *getmac = Visualizzazione dell'indirizzo MAC (Media Access Control) e di un elenco dei protocolli di rete associati ad ogni indirizzo per tutte le schede di rete in ogni computer; *gpresult = Visualizzazione delle impostazioni del Group Policy e dell'RSOP (Resultant Set of Policy) di un utente o di un computer; *netsh = Questo comando può essere utilizzato all'interno del "Netsh Interface IP" al fine di configurare il protocollo TCP/IP; *schtasks = Schematizzazione dei comandi e dei programmi che girano peridicamente o in un tempo specifico sul computer. Esecuzione programmi e file CALC - calcolatrice CLEANMGR - pulitura disco CMD - prompt dei comandi DVDPLAY.EXE - Windows Media Player EXCEL - Excel EXPLORER - avvia Esplora Risorse MOZILLA - browser Mozilla MPLAYER2.EXE - MediaPlayer 6.4 spartano e leggero MSPAINT - Paint NERO - Ahead Nero NOTEPAD C:\BOOT.INI - visualizzazione boot.ini OSK - tastiera su schermo WINWORD - Word WIN.INI - visualizzazione win.ini Varie disinstallazione di Messeger RunDll32 advpack.dll,LaunchINFSection – maggiore potenza del processore %windir%\INF\msmsgs.inf,BLC.Remove - Rundll32.exe advapi32.dll,ProcessIdleTasks ciò libererà i programmi in idle che lavorano in background, così Windows XP potrà avere più risorse libere. Questo processo può durare anche 15 minuti. 2 Recovery Console in caso di crash o gravi problemi che impediscono il corretto funzionamento di Windows 2000/XP, [Lettera CD Rom]:\i386\winnt32.exe /cmdcons Recovery Console - La si può installare nel menu d'avvio di Win2000/XP in modo che venga copiata sull'hard disk e sia immediatamente accessibile tramite il menu di boot. bloccare il pc da intrusioni Rundll user32.dll,LockWorkStation - nei sistemi 2k e XP. Per riaccedere bisogna reinserire la password. Come si utilizza l'utility SFC di Microsoft Grazie all'utility SFC (System File Checker), è possibile controllare l'integrità dei file di sistema. Richiamare l'utility da Start -> Esegui -> cmd ->sfc.exe sfc [/scannow] [/scanboot] [/scanonce] [/revert] [/purgecache] [/cachesize=x] ecco tutti gli switch dell'utility: /scannow - Esegue una scansione immediata di tutti i file protetti /scanonce - Esegue la scansione dei soli file protetti (una sola volta) /scanboot - Esegue la scansione dei file protetti e di sistema ad ogni avvio del computer /revert - Ripristina il valore di default di SFC /purgecache - Rimuove la cache del Windows File Protection file cache ed esegue una scasione immediata per inserire i nuovi dati /cachesize=x - delimita i parametri , in Mb, della cache del Windows File Protection Shutdown.exe per chiudere/riavviare il sistema Con il Resource Kit di WindowsNT/2000 (ed ora disponibile in modo "nativo" su XP), è stato introdotta un'interessantissima utility (soprattutto se utilizzata negli scripts), che vi consente di chiudere o riavviare il sistema. E' possibile utilizzare l'utility anche su sistemi remoti. Ecco la lista completa degli switch: -i Display GUI interface, must be the first option -l Log off (cannot be used with -m option) -s Shutdown the computer -r Shutdown and restart the computer -a Abort a system shutdown -m \\computername Remote computer to shutdown/restart/abort -t xx Set timeout for shutdown to xx seconds -c "comment" Shutdown comment (maximum of 127 characters) -f Forces running applications to close without warning -d [u][p]:xx:yy The reason code for the shutdown u is the user code p is a planned shutdown code 3 xx is the major reason code (positive integer le ss than 256) yy is the minor reason code (positive integer le ss than 65536) Spegnere il pc in remoto Il comando da usare è il seguente: net use \\nomecomputerdaspegnere\IPC$ /USER:[dominio\]nomeutente <password>dove l'utente deve avere privilegi di amministratore Disabilitare la richiesta password Con WindowsXP è possibile disabilitare la richiesta di username/password per l'accesso al sistema, grazie ad un pratico ed utile tool. Da start -> esegui, digitare control userpasswords2 Si aprirà una finestra denominata User Accounts. Da questa finestra, disabilitando la voce "User must enter a user name and password to use this computer", verrà bypassato il login dal prossimo riavvio del sistema. Terminare le applicazioni bloccate Molte volte capita che, alla chiusura delle applicazioni, quest'ultime rimangano bloccate, con la conseguente apertura di una finestra in cui si viene avvisati che il programma "non risponde...". Per sopperire a questo inconveniente, e far in modo che Windows forzi automaticamente la chiusura dell'applicazione, è sufficiente modificare la seguente chiave di registro: 1 - Aprite il registro di configurazione (regedit.exe)HKEY_USERS\.DEFAULT\Control Panel\Desktop 2. Impostate a "1" il valore di "AutoEndTasks Password caching Se siete un pò smaliziati dovreste sapere che le password che immette nelle caselle che hanno l’opzione “salva password” vanno a finire in un file nome_dell’utente.pwl che può essere decifrato facilmente con Pwl Tool (Pwl Tool). E' possibile evitare l'uso delle cached password modificando una chiave nel Registry. Basta impostare al valore 1 la seguente chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Policies\ Network\DisablePwdCaching Windows: tracciare i problemi di avvio/chiusura Può capitare che Windows manifesti dei problemi in fase di avvio o chiusura. Questa piccola modifica del registro di configurazione vi consentirà di attivare il logging esteso permettendovi di ottenere informazioni dettagliate sull'av- 4 vio/arresto del sistema operativo. Aprite il registro e posizionatevi in corrispondenza della chiave seguente: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\System Qualora non esistesse già, provvedete a creare un nuovo valore DWORD denominato VerboseStatus. Impostatene il valore a 1 per attivare la funzione. Successivamente potrete riportarne a 0 il valore per ripristinare le impostazioni iniziali. Qualora sia presente il valore DisableStatusMessage (impostato a 1) non verrà visualizzato alcun messaggio: modificatene il valore DWORD a 0. Come Cambiare il product-key di XP da registro Aprire il registro di windows con Regedit: * Posizionarsi sul ramo HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT \CurrentVersion\wpaevents * Selezionare a destra la chiave OOBETimer, e cliccare su Modify * Cambiare almeno un valore per disattivare Windows e confermare * Chidere il Regedit * Andare nella directory "%systemroot%\system32\oobe e digitare: msoobe.exe /a" * Selezionare la modalità di attivazione telefonica per attivare Windows cliccando su Yes e poi next * Selezionare Change Product Key * Inserire un Product Key Corporate valido * Selezionare Update e chiudere la finestra * Nella finestra precedente selezioanre Remind me later * Riavviare il pc Verificare i cambiamenti * Dopo il riavvio de pc andare nella directory "%systemroot%\system32\oobe e digitare: msoobe.exe /a" * Nel caso in cui l'aggiornamento sia andato a buon fine nella dialog box ci sarà scritto: "your copy of windows is already activated" Ho perso la product key di windows: come posso ritrovarla La product key di windows, necessaria per poter istallare il sistema operativo, si trova in una chiave del registro di configurazione. Se dovete reistallare windows sul vostro computer e non avete voglia di cercare il cd rom di istallazione, potete leggere la vostra product key nel registro di configurazione. Per farlo, aprite l'editor del registro (regedit.exe), e recatevi in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion Nella parte destra saranno elencate una serie di chiavi, tra cui "ProductKey", il 5 cui valore sarà quello richiesto dall'istallazione di windows. Se il vostro sistema operativo è windows 2000 o xp, il procedimento sarà lo stesso, ma la chiave da aprire si troverà ad un altro indirizzo: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion. Disabilitare la memorizzazione di password Con questa modifica al registro di configurazione, è possibile disabilitare la memorizzazione delle credenziali di autenticazione e password locali. Aprire il registro e portarsi sulla seguente chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa Creare (se non esiste) un nuovo valore DWORD, denominato DisableDomainCreds, e settarla a 1. Windows: disabilitare le condivisioni amministratore I sistemi operativi Windows (XP/2000/2003) in fase di installazione creano automaticamente, per partizione presente sul sistema, delle condivisione amministrative chiamate C$, D$, ecc ecc a secondo del numero di partizioni presenti. Il simbolo $ serve a rendere la condivisione nascosta e quindi non visibile dalle "Risorse di Rete". E' possibile disabilitare questa caratteristica, agendo sul registro si sistema: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanSer ver\Parameters Impostate la chiave DWORD AutoShareServer o AutoShareWks (a seconda della versione di Windows installata) a 0. Sarà possibile ripristinare la situazione originale, reimpostando la chiave a 1. Il file di Paging Il file di paging (o di paginazione) rappresenta per Windows quella zona dell’hard disk dedicata ad accogliere quella parte di programmi caricati nella RAM e che è da un po’ di tempo che non vengono usati. E' possibile eliminarli automaticamente all'uscita di windows (verranno comunque ricreati ad ogni avvio). Procedete in questo modo: aprite il Registro di sistema e trovate la chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management e qui modificate il valore da 0 a 1 di "ClearPageFileAtShutdown" Dal successivo riavvio il file di paging verrà ricreato ad ogni accesso. Questo trucco è stato testato su WindowsXP. Svuotare il file di paging al reboot La memoria virtuale, o paging file, viene utilizzato da Windows per memorizzare dati vitale per il funzionamento del sistema operativo, e della applicazioni che 6 girano sulla macchina, qualora la memoria fisica (RAM) sia insufficiente. Per questioni relative alla sicurezza, potrebbe essere opportuno svuotare questo file, al fine di eliminare file riservati o personali (non criptati). Per fare ciò seguire i seguenti passi: 1. Aprire il registro di configurazione 2. Posizionatevi sulla chiave: HKey_Local_Machine/System/CurrentControlSet/Control/Session Manager/Memory Management 3. Doppio click sull'entry "ClearPageFileAtShutdown" e impostare il valore a 1 Eliminare il file di paging all'uscita di windows Se vogliamo che il sistema ad ogni avvio ricrei il file di paging basta andare nel registro di configurazione (Start -> Esegui -> regedit) e cercare la chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management e modificare il valore da 0 a 1 di "ClearPageFileAtShutdown" Dal successivo riavvio il file di paging verrà ricreato ad ogni accesso. Proteggere la propria privacy cancellando il file di paging all'uscita Se il computer è usato da più persone è più sicuro, quando si spegne il pc, svuotare il file di paging in modo che altre persone non possano entrare in possesso di informazioni personali. Per fare questo basta andare nel Pannello di Controllo -> Strumenti di Amministrazione -> Impostazioni protezione locale e alla voce 'Arresto del sistema: Cancella il file di paging della memoria virtuale' andiamo a selezionare 'Abilitato'. Cambiare la lettera d'unità del disco di boot. Questa procedura permette di cambiare la lettera d'unità assegnata al disco di boot di windows (per default C) con un' altra lettera d'unità libera. Questa operazione è consigliata solo in casi di reale necessita e comunque si consiglia di effettuare sempre prima un backup totale del server compreso il system state.In questo esempio invertiamo il disco C (attuale di boot) con il disco D (nuovo disco di boot) usando per lo swap una lettera di unità libera (Y) di comodo. 1. Aprire il registro di configurazione con l' utility Regedt32.exe e posizionarsi sul ramo : HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 2. Verificare se su MountedDevices gli utenti appartenenti al gruppo Administrators abbiano i permessi di Full-Control (tasto dx > permissions), nel caso impostarli. 3. Chiudere l' utility Regedit32 ed aprire l' utility Regedit.exe 4. Posizionarsi sulla chiave di registry : HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 5. Rinominare la chiave \DosDevices\C: (attuale disco di boot) in \DosDevices\Y: (assicurandosi che la lettera Y sia libera); questa operazione li- 7 bererà la lettera C 6. Rinominare la chiave \DosDevices\D: (nuovo disco di boot) in \DosDevices\C: 7. Rinominare la chiave \DosDevices\Y: in \DosDevices\D: 8. Chiudere l' utility Regedit.exe 9. Nel caso in cui siano state precedentemente settate le permission al punto 2 riportarle allo stato originario sempre con l' utility regedit32.exe P.s. Questa operazione va effettuata con un account che abbia i diritti amministrativi. Forzare Windows a scaricare dalla memoria le DLL Ecco come impedire che WindowsXP metta in cache tutte le librerie DLL in precedentemente caricate e utilizzate. Aprire il registro di configurazione e portarsi sulla seguente chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer Creare (se non esiste) una nuova chiave denominata AlwaysUnloadDLL e settarla a 1. Riavviare Windows per rendere la modifica operativa. Controllo sui crash/blue-screen del sistema Windows2000, XP e l'ultimo nato 2003, sono sistemi operativi indubbiamente più stabili rispetto ai loro predecessori. In casi remoti, però, può capire che si presentino ugualmente crash e blue-screen, e che la macchina si riavvii in modo automatico senza preavviso. Per ovviare a questa situazione, bisogna intervenire sul registro di configurazione. Aprire il registro di configurazione e portarsi sulla seguente chiave: HKEY_LOCAL_MACHINE\parCrashControl Modificare il valore della chiave: AutoReboot e assegnargli il valore 0 per disabilitare il riavvio automatico, e 1 per riabilitarlo. Creare una copia di backup delle connessioni remote Per creare una copia di backup di tutte le connessioni di accesso remoto, è sufficiente fare come segue: copiare il file rasphone.pbk, contenuto nella cartella and SettingUsersapplicazionisu un floppy o su un'altro dispositivo di backup. Nel caso in cui vogliate reinstallare il sistema o ripristinare le connessioni, basta riprendere questo file e riposizionarlo nella cartella sopra indicata. Come disabilitare la segnalazione e l'invio di errori Infatti succede che quando un programma si blocca e siamo costretti a chiuderlo, ci appare una finestra chiedendoci se vogliamo segnalare a Microsoft l'errore. 8 Ebbene, vediamo come rimuovere dal Pannello di Controllo questa segnalazione... Andiamo in Pannello di Controllo e selezioniamo 'Sistema'. Da qui ci portiamo nel tab 'Avanzate' e clicchiamo su 'Segnalazione Errori'. A questo punto si aprirà una finestra che ci permetterà di rimuovere la segnalazione. Non visualizzare l'ultimo login Windows mostra sempre automaticamente l'ultimo utente con il quale si ha avuto accesso al sistema. Per impedire questo, andare dentro a Pannello di Controllo, Strumenti di amministrazione sistema, Selezionare l'icona Criteri di Protezione locale. Ora aprire, nella struttura ad albero che compare a sinistra, la cartella Criteri locali, Opzioni di protezione. Cercare nel pannello di destra della finestra la voce Non visualizzare l'ultimo nome utente nella schermata di accesso e fare doppio clic per aprire la finestra di dialogo. In essa si farà clic sull'opzione Abilitati e poi si conferma con OK. In futuro Windows al login, non mostrerà più il nome dell'ultimo utente. Blocco allo spegnimento di WindowsXP Durante l'arresto del sistema, appare la finestra Salvataggio Impostazioni in corso e il computer si blocca. Accedi a Regedit, quindi cerca la chiave di registro: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Exp lorer trovare la stringa AlwaysUnloadDLL (se non la trovi creala) e assegna valore 1. Successivamente fare scandisk, defrag e comunque eliminare i files *.tmp Come 'bloccare' la home page Per chi utilizza Windows 2000/XP è possibile bloccare, in Opzioni Internet, la propria pagina iniziale scelta (che nel Registro di Sistema corrisponde al valore HomePage) in modo tale da non essere modificata da script maligni, anche se ultimamente si stanno evolvendo parecchio. Per bloccarla, ricorriamo al Registro di Sistema e cerchiamo questa chiave: HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel Ora modificate il valore "Homepage" portandolo a 1. Se volete sbloccarla, non dovete far altro che rimodificare il valore riportandolo a 0. Impedire la modifica della password esistente Per impedire la modifica della propria password, è sufficiente andare alla seguente chiave del registro di configurazione: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici es 9 A questo punto è necessario aggiugere, se non presente, la sottochiave "System" nel cui interno creare la voce Dword "NoPwdPage" con valore "1". Far risultare effettuata la registrazione Eseguire regedit (l'editore del registro di configurazione), andare in HKEY_LOCAL_MACHINE, poi SOFTWARE, poi Microsoft, Windows NT, Current Version e inserire il valore 1 in corrispondenza di RegDone. Potenzialità dei Criteri di Gruppo (Local Group Policy Editor) Pochi utenti conoscono il comando gpedit.msc che permette di aprire l'editor dei Criteri di Gruppo. Andate su Start -> Esegui e digitate gpedit.msc. Si aprirà una finestra dalla quale si possono modificare delle cose incredibili di Windows. Tra le personalizzazioni migliori si possono notare cose molto carine come la modifica del logo di Internet Explorer, il titolo del browser, lo sfondo della barra degli strumenti, operare su molti componenti di Windows, la rete, il sistema, il Desktop, il Pannello di Controllo e moltissime altre cose ancora. Rendere il computer invisibile in rete E' possibile fare in modo che il proprio computer risulti "invisibile" al resto della rete a cui è connesso per motivi di sicurezza/privacy. Andiamo nel registro di configurazione (Start -> Esegui -> regedit) e cerhiamo la chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManSer ver\Parameters e, se non esiste già, creiamo un valore DWORD con nome "Hidden" (senza le virgolette), assegnandogli il valore a '1'. Per rendere il computer nuovamente visibile basta impostare Hidden a 0. • Servizi di Windows disattivabili Start ces.msc Nome Descrizione Consiglio Accesso a periferiche come tastieAccesso Perire, telecoDisattivare ferica / Human mandi e altre Interface periferiche multimediali non std. Aggiornamenti Donwload e Disattivare automatici installazione 10 Esegui... digitare servi- di aggiornamenti critici da Windows Update Avvisi ClipBook Compatibilità di Cambio rapido utente Condivisione Desktop Remoto di NetMeeting Guida in linea e supporto tecnico Abilita il Visualizzatore Disattivare Cartella Appunti Gestione delle applicazioni che richiedono Disattivare su pc fuori assistenza in rete o utente singolo un ambiente con più utenti Consente di accedere al desktop di Disattivare Windows da postazione remota Consente l'esecuzione di Guida in li- Didattivare nea e supporto tecnico Gestione applicazione Gestione sessione di assistenza mediante desktop remoto Supporto per precedenti Helper Smart versioni di Disattivare Card lettori di Smart Card non PnP Host di perife- Fornisce il Disattivare / Rischio di 11 riche PnP uni- supporto per sicurezza versali ospitare periferiche universali Messenger Sincronizza data e ora su Ora di Disattivare su pc fuori tutti i client e Windows rete i server della rete Protezione per i proProvider sup- grammi con porto prote- chiamate a Disattivare zione LM NT procedure remote (RPC) Registro di sistema remoto Rileva modiRilevamento Automatico/Disattivare fiche hardware shell per prova hardware Servizi di Routing e Ac- routing in Disattivare cesso Remoto ambiente Lan e Wan Condivisione in rete di fi- Disattivare su pc fuori Server le, stampa e rete named-pipe Gestisce le firme dei file Servizi di crit- di Windows Disattivare / Avvio tografia e i certificati manuale delle fonti attendibili Consente a più utenti di Server connettersi Disattivare terminal in modo interattivo al computer 12 Servizio COM Gestisce la di masterizzaregistrazione Disattivare zione CD Idi cd-Rom MAPI Indicizza contenuti e Servizio di in- proprietà di Disattivare dicizzazione file su computer locali e remoti Servizio di ri- Rileva le peDisattivare / Rischio di levamento riferiche Usicurezza SSDP niversal PnP Segnalazione di errori per Servizio di se- servizi e apDisattivare gnalazione er- plicazioni eseguiti in rori ambienti non standard Notifica eSistema di eventi di si- Avvio manuale venti COM+ stema Gestisce l'accesso alle Smart Card Smart Card Disattivare lette dal computer Supporto di telefonia TaTelefonia pi per telefo- Disattivare nia basata su IP Consente l'accesso da Telnet Disattivare remoto al computer Gestione dei temi d'inter- Disattivare Temi faccia Abilita i proWebClient Disattivare grammi per 13 creare, accedere e modificare i file basati su internet Servizi che possono essere modificati per ottimizzare le prestazioni Servizi Impostazioni Funzione Aggiornamenti Disabilitato automatici Download e installazione automatici degli aggiornamenti. Potete sempre aggiornarli manualmente Clipbook Serve per la condivisione in rete degli appunti. Inutile su postazione singola Disabilitato Servizio segnalazione er- Disabilitato rori COnsente la segnalazione di errori in ambienti non standard. Inutile Fax Consente di inviare fax utilizzando il fax/modem. Manuale Servizio COM di masterizzaDisabilitato zione CD IMAPI Disabilitate questa opzione solo se non avete un masterizzatore CD. Condivisione Desktop remoDisabilitato to di Netmeeting Inutile in ambiente domestico. DDE di rete Manuale Ancora impostazioni di rete che probabilmente non occorro in ambiente domestico Servizio di supporto Driver nVidia Disabilitato Presente se avete una scheda video di questa marca, ma cmq non necessario Avvisi e registri di prestazioni Disabilitato Riunisce e memorizza dati sulle prestazioni, ma infastidisce la maggior parte 14 degli utenti. Numero di serie del suppor- Disabilitato to portatile Disabilitate se non avete un lettore MP3 Gestione sessione di assistenza median- Disabilitato te Desktop Remoto Consente ad altri utenti di collegarsi al vostro PC in remoto per fornirvi aiuto Smart Card Disabilitato Utilizzato soprattutto nei computer portatili e raramente dai PC desktop Helper smart card Disabilitato Utilizzato soprattutto nei computer portatili e raramente dai PC desktop Gruppo di continuità Disabilitato Utilizzato soltanto da PC con interfacciamento con UPS Ora di Windows Disabilitato Sincronizza gli orologi dei PC in una rete La Management Console di Windows XP Nome file Descrizione Gestione certificati elettronici, di cui vengono muniti per esempio dricertmgr.msc ver o add-in di Internet Explorer come conferma di fonte affidabile del programma. amministrazione del computer, richiamabile dal Pannello di controllo tramite Prestazioni e Compmgmt.msc Manutenzione /Strumenti di Amm.ne In questa console sono integrati numerosi snap-in quali la deframmenta- 15 zione e la gestione periferiche gestione periferiche (integrato in gestione comDevmgmt.msc puter) per la gestion dei singoli componenti hardware del pc. Strumento per la deDfrg.msc frammentazione Gestione disco, per la configurazione (partizionamento, formattaDiskmgmt.msc zione ecc.) degli hard disk e per l'assegnazione delle lettere di drive. Eventvwr.msc Visualizzatore eventi Questa console serve a controllare le cartelle Fsmgmt.msc condivise e i files aperti sul pc da altri utenti. La console Utenti e gruppi locali serve per la gestione dei diritti di tutti gli utenti e gruppi conLusrmgr.msc figurati sul pc; può essere utilizzata solo in Windows XP Professional. La console dei supporti rimovibili gestisce e cataloga supporti di memorizzazione diversi, quali Ntmsmrg.msc unità a nastro. Qui si possono creare pool di supporti e code di attesa per l'uso degli archivi. Visualizzatore di prestaPerfmon.msc zioni Services.msc 16 Questo snap-in gestisce tutti i servizi: è possibile attivare/disattivare le voci di questo elenco e determinare il loro stato all'avvio di Windows. La gestione servizi fa parte della Gestione computer. Eliminare i contenuti di una cartella Nella cartella temporanea di Windows si accumulano alla lunga molti file inutili. Vorrei che ad ogni avvio di WIndows venissero eliminati automaticamente in moda da liberare spazio su disco. Si può usare un semplice file batch, che va inserito nella cartella Esecuzione Automatica. Creiamo un documento con estensione "bat" utilizzando Notepad (editor di testo) ed inseriamo queste righe: @echo off ; [per Windows 98/Me] echo S | del "c:\windows\temp\*.*" ; [per Windows 2000/XP] echo S | del "c:\documents and settings\<nome utente>\impostazioni locali\temp\*.*" e salvare il file come "deltemp.bat" Come faccio per avere configurazioni multiple di rete su Windows XP ? Spesso si ha la necessità di cambiare le impostazioni di rete, specie lavorando con un computer portatile. Se non si vuole cambiare tutti i parametri a mano ogni volta, si può ricorrere a questo piccolo trucchetto: dal prompt di ms-dos, digitate netsh -c interface dump >reteconfig.txt In questo modo avete creato un file di testo contenente tutti i parametri di rete in uso in quel momento. Il file è stato salvato nella directory dove è stato digitato il comando. Dopo aver cambiato le impostazioni di rete, potete tornare alla configurazione salvata digitando questo comando: netsh -f reteconfig.txt Windows caricarà le impostazioni scritte sul file. Questo trucchetto è molto utile anche quando si devono configurare più computer con le stesse impostazioni, senza intervenire a mano in tutti i pc. Come faccio a sapere quali porte sono in uso in questo momento sul mio pc? Aprite un prompt di MS-dos ( start, programmi accessori su Win2000, mentre in win98 è in programmi ) e digitate netstat –an vi verrà mostrata una lista delle porte TCP e UDP aperte, dove puntano queste porte, se sono attive o in ascolto, ecc...se volete che la lista sia inserita in un file di testo, potete digitare: 17 netstat -an >c:activeports.txt e troverete in C: un file di testo con contenute le porte utilizzate. Il comando netstat restituisce come parametri: - Protocollo - Indirizzo locale ( nome host : num. Porta ) - Indirizzo remoto ( nome host : num. Porta ) - Stato della connessione Ad es.: Proto Indirizzo locale Indirizzo remoto Stato TCP xelo:1050 GIUSTI:netbios-ssn ESTABLISHED In questo caso abbiamo una connessione attiva Netbios dal nostro pc ( xelo porta 1050 ) al pc Giusti ( porta netbios ) Ci sono numerosi altri flag da utilizzare con il comando netstat. Per avere una lista digitate netstat –help sempre dal prompt di dos. Accesso ai file personali Recentemente ho dovuto reinstallare il sistema operativo Windows XP senza formattare il disco, per sistemare vari problemi. Adesso non riesco più ad aprire o a spostare da Documents and settings un mio file personale, denominato miosno.privato-j3kizja che contiene documenti. Come mai? Ripendendo l'installazione del sistema operativo, Windows 2000 e XP ricreano i profili degli utenti attribuendo a ciascuno un nuovo Sid (Security ID), cioè un nuovo codice di sicurezza per identificarli univocamente nel computer e sulla rete. Non basta percioò ricreare utente con lo stesso nome di quelli preesistenti. Agli occhi di Windows l'utente Mario che esisteva prima della formattazione è diverso dall'utente Mario creato successivamente, perchè i loro Sid sono diversi. Poichè gli utenti sono diversi, i documenti memorizzati nella cartella personali del vecchio utente non sono più accessivbili dal nuovo utente. Per correggere questa situazione e recuperare l'accesso ai file, è sufficiente verificare che sia impostata la condivisione file in modalità avanzata: aprire il Pannello di controllo e fare doppio clic sull'icona Opzioni cartella; nella scheda Visualizzazione togliere la spunta alla voce Utilizza condivisione semplice. Selezionare ora la cartella e richiamare le sue proprietà. Premere il pulsante e poi Avanzate per aprire la finestra delle impostazioni avanzate di protezione. Scegliere la scheda proprietario, mettere il segno di spunta nella casella Sostituisci proprietario in sottocontenitori e oggetti, fare clic sul proprio nome utente nell'elenco e poi confermare. Ripristino delle funzionalità di Windows Dopo l'installazione di qualche programma può succedere che alcuni file di sistema vengano corrotti o che il Registry non funzioni più correttamente. Se si procede a una reinstallazione di Windows, però, tutte le impostazioni precedenti vanno perse. Un trucco permette invece di reinstallare Windows senza perdere la configurazione precedente: inserire il cd di installazione di XP e selezionare Start 18 > Esegui. Immettere il comando: <lettera del CD>:\i386\winnt32 /unattend e premere invio. Si avvierà così la procedura di installazione che riparerà i file di sistema fondamentali. Svuotare regolarmente la cartella Prefetch Il perfezionamento del boot di WIndows, attraverso l'utilizzo di una cartella con funzioni di cache, rende l'avvio del sistema più veloce. La cartella della cache, il cui percorso è Windows\prefetch, si dovrebbe però svuotare una o due volte al mese affinchè XP possa riempirla nuovamente e organizzarla meglio, garantendo così costantemente un avvio rapido. Migliorare le impostazioni di Prefetch La funzione Prefetch si può modificare o disattivare completamente, cosa che ha senso se si ha difficoltà all'avvio del sistema o se il pc è un po' datato. In questo modo infatti si risparmia spazio sul disco fisso, ma si rallenta la velocità di lavoro. Per modificare le impostazioni di Prefetch entrare nel Registry e cercare la chiave HKEY_Local_Machine\System\CurrentControlSet\Control\SessionManager\Me mory Management\Prefetch Parameters. Lo stato dell'applicazione è riconoscibile dalla voce Enable Prefetcher: i valori possibili sono 0 (funzione disattivata), 1 (Prefetch solo per applicazioni), 2 (solo per il boot), 3 (Prefetch per entrambe) Convertire la FAT32 in NTFS Dl desktop di Windows XP, clic su Start e seleziona Esegui. Nella finestra scrivi "cmd" e premi il tasto Invio. Apparirà la finestra DOS. Nella finestra DOS, scrivere la riga "convert disco:/FS:NTFS", dove per "disco" devi specificare l'unità del tuo hard disk, con la fat32 (ad esempio C). A questo punto, basta premere Invio per avviare il processo. Premi "S" quando compare il messaggio "vuoi utilizzare nuovamente la conversione la prossima volta che riavvii il computer?". Ora non resta riavviare il PC per poi ritrovarsi con l'unità convertita. Ricordiamoci che non sarà più possibile tornare indietro e quindi tornare a FAT32. Bloccare le Proprietà dello schermo Spesso può capitare di dover condividere il proprio pc con altre persone, una delle cose che crea più fastidio è tornare e trovarsi le proprietà dello schermo modificate. Tramite il registro di sistema possiamo impedire che questo accada bloccando la possibilità di visualizzare le proprietà dello schermo. Apriamo il registro di sistema: start->esegui->regedit Andiamo alla chiave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici es\System Nel caso non fosse presente dovremo creare noi, all'interno di "Policies", la 19 Chiave "System". Posizioniamoci dentro la chiave "System" e creiamo una sottochiave di tipo DWORD di nome "NoDispCPL" (escluse le virgolette). Impostiamo il valore a 1. D'ora in poi sarà impossibile accedere alle proprietà dello schermo. Per ripristinare l'accesso è sufficiente portare il valore a 0. Nota: per poter lanciare regedit è necessario avere i privilegi di amministratore. Eliminazione automatica dei file temporanei Questo piccolo trucco aiuta a mantenere sempre pulito il nostro disco fisso, eliminando automaticamente i file temporanei (compatibile solamente con Windows XP Professional) Per prima cosa, portatevi su start->esegui e digitate "gpedit.msc". Portatevi quindi su Computer Configuration->Administrative Templates>Windows Components->Terminal Services->Temporary Folder Aprite quindi ""Do Not Delete Temp Folder Upon Exit"" e selzioante "Disabled". Chiudete il gpedit e riavviate il computer. Potete verificare che la cosa abbia funzionato ponendo un file in una delle cartelle temporanee di windows: se avete eseguito correttamente la procedura, il documento verrà eliminato automaticamente. Ripristinare la schermata di login classica Se avete disabilitato la schermata di benvenuto "Welcome Screen" e volete ripristinare lo stile di login classico, fate così. Aprite innanzitutto l'editor del registro (regedit) e portatevi su HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\The meManager Modificate il valore DllName in %SystemRoot%\Resources\themes\Windows Classic.theme Chiudete regedit e disconnettetevi per verificare che tutto abbia funzionato correttamente. Problemi col Service Pack 2 (Firewall e Centro Sicurezza PC) Dopo l'installazione del Service Pack 2, il sistema è rallentato o le condivisioni risultano essere difficili? Andare a fare tasto destro su Risorse del Computer, Gestisci. Cercare servizi e andare a disabilitare ed arrestare le seguenti voci: Centro sicurezza pc e Windows Firewall/Condivizione Internet (ICS) x:\windows\system32\shutdown.exe -s -t 00 Messaggio all'avvio (Windows XP) Per far apparire un messaggio, in una finestra di pop-up, all'avvio di Windows 20 bisogna accedere, tramite Regedit, alla voce: HKEY_Local_Machine\Software\Microsoft\WindowsNT\CurrentVersion\Winlo gon La chiave LegalNoticeCaption contiene il nome della finestra di pop-up; la chiave LegalNotiveText Contiene invece il testo da visualizzare all'interno. Eliminare la modalità grafica all'avvio (Windows XP) Si vorrebbe disattivare la visualizzazione del Logo di Windows all'avvio, per rendere così l'avvio più veloce e rendere anche meglio visibili eventuali messaggi di errore in modalità testuale. Si può disattivare la modalità grafica durante l'avvio del sistema modificando il file di sistema Boot.ini. Per rendere visibile il file, normalmente nascosto, bisogna che in Esplorare risorse, dopo la selezione di Sturmenti - Ozioni cartelle, nella schede Visualizzazione sia attivata l'opzione Visualizza cartelle e file nascosti. Ora si potrà aprire il file, posto nella cartella rdice del disco C, in un editor di testi. Nella sezione [operating system] si trova una riga per ogni sistema operativo installato, che per default termina con il paramtro /fastdetect. Dopo questo bisogna, al termina della riga aggiungere l'ulteriore parametro /noguiboot, come nell'esempio: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noguiboot Questa modifica si può apportare a tutti i sistemi operativi installati. Dopo il salvataggio del file modificato e il riavvio non si avrà più la comparsa del logo iniziale. Si noti che l'accelerazione dell'avvio ottenibile con questa modifica dipende molto dalle prestazioni del processore e della scheda video; in ogni caso diventa così possibile meglio eventuali segnalazioni di errore, che di solito vengono nascoste dalla grafica, il che può essere importante nel caso di problemi dovuti ai driver. Altre opzioni sono: /basevideo avvia il sistema con i driver video standard VGA /debug - modalità debut /maxmem:n specifica la quanguità massima di Ram da usare. /noguiboot esegue il boot senza visualizzare la schermata grafica di avvio /sos segnala a video i driver dei dispositivi mano a mano che vengono caricati /bootlog abilita la creazione di un file di registro (log) /safeboot:minimal avvia il sistema in modalità provvisoria, utile a fini diagnostici /safeboot:network avvia il sistema in modalità provvisoria con il supporto di rete /onecpu abilita una sola CPU nei sistemi multiprocessore. 21 Ripristino di account utenti bloccati (Windows XP) D: Ho bloccato accidentalmente tutti gli account utente di WIndows XP. QUando si avvia, il sistema operativo si ferma alla schermata di benvenuto e attende la scelta dell'utente: purtroppo però non c'è niente che si possa scegliere. Come si può rimediare R: il sistema operativo va avviato partendo dal Cd di installazione, e quando il sistema chiede di scegliere tra le opzioni Continua, Riparazione e Interrompi installazione, premere il tasto R (riparazione). Fornire la password dell'Amministratore seguita da Invio. Questo tipo di accesso funziona anche se l'account Amministratore è tra quelli bloccati. Ora, dal promp dei comandi, si copierà con il comando: copy c:\windows\repair\sam c:\windows\system32\config il file SAM dalla sottocartella Repair di Windows a system32\config (adattare il comando, se necessario, all'effettivo percorso di origine e di destinazione). Confermare premendo S la richiesta di sovrascrittura del file Sam nella cartella di destinazione. Ora si riavvierà il sistema e si potrà fare il login. Il file Sam contiene tutte le informazioni sugli account di sistema; subito dopo l'installazione, Windows slava questo file nella cartella Repair. Con la procedura descritta si riportano gli account nello stato in cui erano immediatamente dopo l'installazione di Windows. Si perdono però le informazioni sugli account creati successivamente e anche possibili impostazioni personalizzate nel Registry; in questo modo si riesce però ad accedere al sistema, dove si potranno eventualmente ripristinate le configurazioni citate. Modificare la password dimenticata Se capita di dimenticare la password dell'Amministratore di Windows XP sarebbe comodo sostituirla con una nuova anche senza dover immettere la vecchia. Questo è possibile solo se si dispone di un altro account con diritti di Administrator: in tal caso effettuare il login con questo utente e aprire una console di comando tramite Start - Tutti i programmi - Accessori - Prompt dei comandi. Immettere il comando: net user administrator <newpassword> Registro di sistema La linea di comando(regedit) MS ha provveduto a munire Windows di una versione a linea di comando del programma "regedit". Al prompt scrivere "reg /?" e lo schermo si riempirà di utili aiuti sull'utilizzo dell'editor. I comandi sono query, add, delete, copy, save, restore, load, unload, compare, export e import. Per vedere come utilizzare un comando specifico, scrivete "reg comando /?". Se volete provare questo editor del registro, un comando sicuro da sperimentare è export, che memorizza una qual- 22 siasi chiave (e sottochiave) da voi specificata in un file .reg. Non modifica il registro e la scopo di realizzare un backup di una chiave prima di modificarla. Per esempio se volete fare un backup della chiave HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici es\Explorer, dovreste inserire reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici es\Explorer Questo dovrebbe essere inserito come un comando unico. La chiave verrà salvata su c:\mybackup.reg. Come aggiornare il registro senza riavviarlo E' possibile, per chi usa Windows 2000/XP, aggiornare il registro di sistema senza riavviare: di solito quando si applicano alcune modifiche al sistema, come l'installazione di un nuovo software, potrebbe essere necessario riavviare. Tuttavia esiste un metotdo più veloce per eseguire questa operazione. Apriamo il Task manager con la combinazione di tasti Ctrl + Alt + Canc. poi spostiamoci nella sezione Processi e chiudiamo tutte le sessioni di EXPLORER.EXE (tasto desto sul processo e fate clic su termina processo). Successivamente andiamo sul menu File e selezioniamo Nuova Operazione (Esegui): digitiamo Explorer (con la E maiuscola). E a questo punto abbiamo aggiornato il Registro di Sistema senza aver riavviato il PC. Ingegnoso vero? Modifica del registro Editor del file registro, più veloce e mostra una lista di tutti i risultati Scaricabile dal seguente sito: http://www.resplendence.com/download/reglite.exe Guida rapida ai "DWORD" del menu Avvio Valore del registro Funzione NoSimpleStartMenu Rimpiazza il menu Start di Windows XP con la sua versione classica NoStartMenuPinnedList Rimuove la lista dei programmi aggiunti dal menu Start Rimuove la lista dei programmi NoStartMenuMFUprogramsList usati più di frequente dal menu Start NoWindowsUpdate Rimuove il collegamento a WindowsUpdate dalla lista Programmi e blocca l'accesso a 23 "windowsupdate.microsoft.com" NoSMMyDocs Rimuove la cartella Documenti dal menu Start NoRecentDocsMenu Rimuove la cartella Dati Recenti dal menu Start ClearRecentDocsOnExit Cancella il menu Dati Recenti quando un utente si disconnette NoSMHelp Rimuove la guida in linea dal menu Start NoFind Rimuove Cerca dal menu Start NoRun Rimuove Esegui dal menu Start NoChangeStartMenu Impedisce agli utenti di modificare il menu Start trascinando gli oggetti al suo interno NoUserNameInStartMenu Rimuove il nome utente dal menu Start NoSetTaskbar Disabilita le modifiche all'area di notifica e alle impostazioni del menu Start Utility nascoste (Windows XP) Systeminfo.exe è un programma di diagnostica Openfiles.exe è possibile controllare quali sono i file aperti al momento e quale utente e /o programma li ha aperti. es. openfiles /disconnect /id<id> openfiles /disconnect /a <user> Shutdown.exe consente lo spegnimento sicuro e flessibile dei computer in rete, non solo con XP ma anche Win2k. I parametri principali sono: -1 per disconnettersi, -s per arrestare il sistema, -r per riavviare il sistema con -m \\<nomecomputer> è possibile spegnere o riavviare un computer dalla rete locale, a patto di avere i diritti di amministratore, con -c <testo>, per indicare un messaggio durante i trenta secondi di ritardo che intercorrono prima dello spegnimento. per modificare il tempo aggiungere il parametro -t <secondi> con -f chiude tutte le applicazioni aperte pathping.exe permette di seguire il percorso dei pacchetti di rete pathping <host> 24 Come cambiare le informazioni sul sistema in XP E' possibile cambiare le informazioni che vengono visualizzate nella finestra "Proprietà del sistema". Ecco come fare: aprite il Registro di Sistema e cercate la seguente chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\Current Version Ora create (o modificate) i valori Stringa RegisteredOwner e RegisteredOrganization con il testo che volete far apparire. Se questa modifica non dovesse avere effetto, provate a rifare le stesse operazioni nella chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows NT Eliminare le copie di backup dei service pack Vediamo come eliminare le copie di backup create durante l'installazione di patch e Service Pack e recuperare spazio su disco. Premessa: ogni volta che installiamo aggiornamenti e Service Pack per Windows, il sistema operativo memorizza una copia di tutti i file modificati od eliminati all'interno delle cartelle \WINDOWS o \WINNT. Quest'operazione ha il compito di rendere possibile la disinstallazione di una o più patch (o di un intero Service Pack) in un momento successivo. Se, dopo un periodo di prova, non riscontrate problemi - conclusa l'installazione di una o più patch - è possibile eliminare tutti i file di backup recuperando spazio prezioso sull'hard disk. Procedete nel seguente modo: andate nella cartella \WINDOWS o \WINNT e da qui attivate la visualizzazione delle cartelle e dei file nascosti (menù Strumenti/Opzioni cartella/Visualizzazione/ Visualizza cartelle e file nascosti). A questo punto dovreste veder comparire, nella cartella \WINDOWS o \WINNT, una lista più o meno folta di cartelle il cui nome comincia per "NtServicePackUninstall". Se dopo l'installazione delle varie patch, davvero non abbiate riscontrato alcun problema del PC, allora potete procedere con l'eliminazione di tutte le cartelle "NtServicePackUninstall". Per maggior sicurezza potreste masterizzare tutti i file su un CD ROM, e poi eliminarli: in caso di emergenza potrete così agevolmente ripristinarli. Problemi d'avvio del sistema (Windows 2000/XP) Se all'avvio del sistema operativo incontriamo qualche problema, possiamo cercare di risolverlo utilizzando la "console di ripristino d'emergenza". La funzione è accessibile e utilizzabile facendo il boot dal cd di windows, oppure installandola direttamente sull'hard disk in modo da averla sempre disponibile tra le opzioni d'avvio. Per installarla clicchiamo su Start - Esegui e, nella casella apri digitiamo E:\i386\winnt32.exe /cmdcons, dove E indica il cdrom. Scegliamo OK e seguia- 25 mo le istruzioni visualizzate per completare l'installazione . Al termine riavviamo il pc. Ripristino dei driver (Windows XP) Se dopo aver installato un nuovo driver incontriamo dei problemi, con Windows XP è possibile recuperare la versione del driver utilizzata in precedenza. Apriamo il Pannello di Controllo e facciamo click sull'icona Sistema. Nella finestra di dialogo portiamo in primo piano la scheda Hardware e facciamo click sul pulsante gestione periferiche. Nella finestra di dialogo aperta individuiamo la periferica su cui intervenire e diamo un doppio click con il mouse. Infine apriamo la scheda Driver e clicchiamo sul pulsante Ripristina driver. I principali processi di sistema di Windows 2000/XP Terminazione possibile Nome Descrizione Ciclo idel del sistema Serve soltanto a visualizzare il tempo del processore che non viene impegnato da altri thread e proNO cessi. Nel normale funzionamento, nel Task Manager segnala un utilizzo e tempo CPU notevole csrss csrss.exe (client/server runtime subsystem). Gestisce i prompt dei comandi, la creazione e l'eliminazione di thread, nonchè parti dell'ambiente virtuale MS-DOS a NO 16bit. Appartiene alla modalità utente del sottosistema Win32 (mentre win32.sys fa parte della modalità kernel) e deve sempre essere attivo explorer.exe L'interfaccia utente di Windows, comprende componenti quali barra delle applicazioni, explorer SI desktop, icone e simili. Può essere terminata, se necessario, senza effetti negativi e poi riavviata. internat 26 internat.exe Permette di scegliere il layout di tastiera in uso. Nella barra della applicazioni è visibile SI come simbolo della tastiera in uso (per esempio IT o EN) con il quale si cambia layout. Tramite il Pannello di controllo si può disattivare permanentemente, nel caso non serva lsass lsass.exe Server di autenticazione locale, gestisce le direttive di protezione del protocollo ip (internet protocol) e avvia il driver di protezione IP. Genera il processo per la notifica dell'utente al sistema. Se l'autenticazione ha esito positivo NO viene generato un "biglietto" (token) di accesso, una sorta di marca di riconoscimento, per l'utente che si è notificato. Gli altri processi avviati dall'utente ereditano questo token mstask mstask.exe Servizio di pianificazione delle attività, che avvia automaticaNO mente le operazioni programmate dall'utente. smss smss.exe Manager delle sessioni, è il sottosistema per l'avvio delle sessioni utente. Il processo viene avviato dal thread di sistema e gestisce varie operazioni, tra cui l'avvio dei processi NO Winlogo e Win2 (csrss.exe , nonchè l'inizializzazione di alcune variabili di sistema. Quando l'smss riconsce che il winlogon o il csrss è terminato, chiude il sistema spoolsv spoolsv.exe E' la coda di stampa, gestisce tutte le operazioni di stampa e fax NO svchost svchost.exe Questo processo serve da host per altri porcessi avviati da una dll, perciò spesso sono attive contemporaneamente più istanze di svchost. L'utility Tlist, scaricabile dal sito Microsoft, permette di vedere quali processi accedono a svchost NO 27 ==°°== Quando apro il task manager vedo ben quattro processi SVCHOST.EXE in esecuzione, che occupano molta memoria. Di che si tratta? Posso chiuderli? Il file svchost.exe, che si trova generalmente nella cartella c:\windows\system32 serve per verificare, all'avvio del computer, la porzione del Registro di sistema relativa ai servizi, in modo da stabilire l'elenco di quelli da caricare. Gli elenchi e quindi i gruppi di servizi, possono essere diversi. Per visualizzare l'elenco dei servizi in esecuzione, fate clic su Start - Esegui e lanciate il comando cmd per aprire il prompt dei comandi, poi digitate: tasklist /svc seguito da invio per visualizzare la lista. services services.exe Processo di gestione dei servizi di sistema; avvio e chiusura nonchè tutte le altre interazioni con i servizi sono effettuati da questo processo system Processo che esegue i thread in modaNO lità kernel. taskmgr taskmgr.exe Processo di gestione delle operazioni, visualizzato dalla finestra SI aperta NO winlogon.exe Gestisce l'accesso e la disconnessione degli utenti ed è attivo winlogon come finestra di dialogo, Protezione di NO Windows quando un utente preme ctrl+alt+canc winmgmt.exe Un componente della gestioneclient di Windows; il processo si avvia con la connessione del primo client, oppure viene sempre eseguito winmgmt quando applicazione di amministraNO zione richiedere dei servizi. Sotto XP si avvia come client di un processo Svchost 28 Disabilitare la segnalazione e l'invio di errori Quando un programma si blocca e siamo costretti a chiuderlo in malo modo, appare una finestra contente il messaggio che il programma si è chiuso e ci chiede se vogliamo segnalare a Microsoft l'errore. E' possibile da pannello di controllo rimuovere la segnalazione a Microsoft o eventualmente eliminare interamente la segnalazione. Andiamo in Pannello di Controllo e selezioniamo 'Sistema'. Andiamo nel tab 'Avanzate' e clicchiamo su 'Segnalazione Errori'. A questo punto si aprirà una finestra che ci permetterà appunto di rimuovere la segnalazione. Velocizzare la navigazione tramite browser La modifica al registro di configurazione (Start -> Esegui -> regedit) che stiamo per vedere permette di velocizzare la navigazione tramite browser. Di preciso la modifica agisce sul DNS e impedisce la richiesta superflua di informazioni durante la navigazione in uno stesso sito. Ecco il pezzo di registro da aggiungere. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\ Parameters] "CacheHashTableBucketSize"=dword:00000001 "CacheHashTableSize"=dword:00000180 "MaxCacheEntryTtlLimit"=dword:0000fa00 "MaxSOACacheEntryTtlLimit"=dword:0000012d Non riesco ad accedere a Windows XP: un messaggio mi informa che \WINDOWS\SYSTEM32\CONFIG\SYSTEM è corrotto! Un messaggio di questo tipo, visualizzato durante la fase di boot del personal computer, indica che il registro di sistema di Windows risulta danneggiato. Per riuscire ad accedere nuovamente al sistema, l’unica soluzione consiste nel ripristinare l’ultima copia "sana" del registro di sistema stesso. Ciò comporterà la perdita di alcune informazioni necessarie per il corretto funzionamento di alcune applicazioni che dovranno quindi essere successivamente reinstallate. Inserite il CD ROM di Windows XP nel lettore e riavviate il sistema (accertandovi che il BIOS del vostro pc sia regolato per il boot da CD). A questo punto lasciate che abbia inizio la prima parte della procedura di setup quindi premete Invio per avviare l'installazione; F8 per accettare il contratto di licenza d'uso. La procedura di setup provvederà a ricercare la precedente vostra installazione di Windows XP. Premete R per avere accesso alla console di ripristino del sistema. Digitate, quindi, il comando cd \windows\system32\config poi, a seconda che l'errore visualizzato riguardi \WINDOWS\SYSTEM32\CONFIG\SYSTEM o \WINDOWS\SYSTEM32\CONFIG\SOFTWARE, digitate i comandi che seguono. Nel caso di "SYSTEM": ren system system.bad copy \windows\repair\system Nel caso di "SOFTWARE": 29 ren software software.bad copy \windows\repair\software Estraete, anche in questo caso, il CD d'installazione di Windows XP dal lettore e digitate il comando EXIT. Il sistema dovrebbe così avviarsi. Non riesco a cancellare un file memorizzato su disco fisso: Windows XP segnala che è in uso. Questo tipo di problema in genere si verifica quando si tenta di cancellare dal disco fisso file di grosse dimensioni (generalmente filmati in formato MPEG, video e così via). Ciò è dovuto al fatto che Windows XP tenta sempre di effettuare l'anteprima di una qualunque immagine o di un qualsiasi file video: l’anteprima può richiedere diverso tempo per essere elaborata ed il file viene "bloccato" da parte del sistema. Per risolvere il problema portatevi al Prompt di DOS (Start, Tutti i programmi, Accessori, Prompt dei comandi) quindi premete CTRL+ALT+DEL per accedere al Task Manager di Windows, cliccate sulla scheda Processi, selezionate EXPLORER.EXE, infine cliccate sul pulsante Termina processo. Nella finestra del prompt dei comandi portatevi nella cartella contenente i file che sembrano ineliminabili (servitevi dei comandi CD, CD.. e CD\) quindi digitate DEL nomedelfile.ext per eliminare (sostituendo a nomefile.ext, il file di cui de desiderate sbarazzarvi). Tornate ora al Task Manager, cliccate sulla scheda Applicazioni quindi sul pulsante Nuova operazione.... Digitate explorer.exe e premete OK. Migliorare le prestazioni caricando il nucleo di Windows in RAM Questa modifica al registro di configurazione di Windows permette di caricare il core del sistema operativo invece che nel file di paging su disco direttamente in RAM in modo da velocizzare le operazioni. Questo modifica è consigliata solo per i computer con almeno 512MB di RAM. Andiamo nel registro di configurazione (Start -> Esegui -> regedit) e cerchiamo la seguente chiave: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management] A questo punto creiamo (o modifichiamo nel caso sia già presente) "DisablePagingExecutive" e gli assegnamo come valore 1. Per tornare alle impostazioni originali assegnamo il valore 0. Controllare i problemi allo spegnimento Se dopo aver dato il comando di spegnimento (shutdown) il computer non si spegne automaticamente, ma al contrario viene fuori il messaggio "Ora è possibile spegnere il computer", con una semplice modifica al registro si può automatizzare l'operazione. Basta andare nel registro di configurazione (Start -> Esegui -> regedit) e cercare la chiave 30 [HKEY_CURRENT_USER\Control Panel\Desktop] Controllare la stringa "PowerOffActive" e settarla a 1. Visualizzare le periferiche nascoste Per visualizzare le periferiche installate sul sistema, anche se sono state tolte (tipo le pen drive). Creare un file *.bat e inserirci: set devmgr_show_nonpresent_devices=1 start devmgmt.msc Una volta che si lancia il file, andare su Visualizza, Mostra periferiche nascoste. Compariranno tutte le periferiche che sono state installate e tolte e/o rimesse sulla macchina Copiare il sistema operativo su un nuovo Hard Disk Dopo aver installato il nuovo disco, bisogna formattarlo creando una partizione primaria nella quale copiare il sistema operativo. Avviare il pc con il floppy di ripristino e da DOS scrivere: Xcopy32 c:*.* d: /h /i /c /k /e /r /y dove "c:" è la lettera che identifica il vecchio hard disk, e "d:" quella del nuovo. Dopo aver spento il computer, e aver impostato come primario in nuovo disco e come secondario quello vecchio, possiamo accenderlo e andare a formattare il vecchio disco. ATTENZIONE: si consiglia di effettuare copie di backup dei dati prima di eseguire qualsiasi operazione di copia e/o formattazione. Reinstallazione del sistema operativo Certe volte è necessario reinstallare il sistema operativo conservando le impostazioni già presenti. In Windows XP non è disponibile una voce che ci permetta di eseguire immediatamente questa operazione, ma possiamo farlo manualmente dalla riga di comando. Basta inserire il CD di Windows XP e lanciare il file WINNT32.EXE con il parametro /unattend. Ottimizzare la cache del processore Windows XP è stato progettato per sfruttare al massimo i processori dotati di 256KB di cache di secondo livello, ma se il nostro processore disponde di 512KB di cache? Premete Start -> Esegui... e digitate regedit per entrare nell'editor del registro di sistema. Fate sempre molta attenzione mentre apportate modifiche al registro di sistema! Cercate la seguente chiave: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management 31 Adesso create o modificate il valore DWORD chiamato SecondLevelDataCache e impostatelo a 200. E' necessario riavviare il sistema perchè i cambiamenti abbiano effetto Disinstallare i componenti non necessari di Windows XP Ci sono dei componenti (MSN Messenger, MSN Explorer e Giochi vari) che non possono essere disinstallati da Installazione applicazioni, Aggiungi/rimuovi. Per poter far apparire tali voci nel menu di Installazione/Rimozione applicazioni * Fare una copia di backup del file sysoc.inf (c:\windows\inf\sysoc.inf); * Aprire il file sysoc.inf. * Cancellare la sola parola HIDE da tutte le componenti che vorreste poter disinstallare. * Salvare il file sysoc.inf e riavviare il PC. Adesso nel pannello Rimuovi/aggiungi applicazioni non necessarie potranno essere disinstallate comodamente. Ripulire il computer dai files inutili Per ripulire il pc basta creare un file .bat e copiare queste righe: del c:\Documents and Settings\'Nome utente'\Cookies\*.* /s /q del c:\Documents and Settings\'Nome utente'\Impostazioni Locali\temp\*.* /s /q del c:\Documents and Settings\'Nome utente'\Impostazioni locali\Temporary Internet Files\*.* /s /q del c:\Documents and Settings\NetworkService\Cookies\*.* /s /q del c:\Documents and Settings\NetworkService\Impostazioni Locali\temp\*.* /s /q del c:\Documents and Settings\NetworkService\Impostazioni locali\Temporary Internet Files\*.* /s /q del c:\Documents and Settings\LocalService\Cookies\*.* /s /q del c:\Documents and Settings\LocalService\Impostazioni Locali\temp\*.* /s /q del c:\Documents and Settings\LocalService\Impostazioni locali\Temporary Internet Files\*.* /s /q del c:\Documents and Settings\Default User\Cookies\*.* /s /q del c:\Documents and Settings\Default User\Impostazioni Locali\temp\*.* /s /q del c:\Documents and Settings\Default User\Impostazioni locali\Temporary Internet Files\*.* /s /q del c:\Windows\Temp\*.* /s /q Al posto di 'Nome Utente' (apici inclusi) inseriamo il nome dell'utente con cui ci siamo loggati. Salviamo come pulizia_temporanei.bat il file. Se lo lanciamo, automaticamente, tutti file temporanei verranno rimossi. 32 Leggere i DVD con Windows Media Player Con una piccola modifica è possibile leggere i DVD con Windows Media Player. La procedura è semplice: aprite il registro di sistema e cercate la chiave: HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer \Player\Settings Qui creiamo un nuovo valore stringa e la chiamiamo "EnableDVDUI"; diamogli come valore "yes". Riavviate il PC. Nascondere i propri files Volete conservare i vostri files segreti senza che sia possibile scovarli? Andate in una cartella di sistema, la migliore dovrebbe essere c:\windows\system che contiene altre sotto cartelle (ma se trovate delle directory piu' 'addentro' nell'albero e' anche meglio. Per es.: C:\WINDOWS\Application Data\Microsoft e sottocartelle). Eseguite dal menu' 'Start' il comando 'command.com' dopo avere reso attiva quella cartella. Sotto dos, create una cartella dandole un nome piu' tecnico possibile (es.: "NewDll") col seguente comando: md newdll prima di premere Invio, digitate ALT+0254. Dopo di che premete invio. Se andate su windows, vedrete la cartella ma vi risultera' inaccessibile. Avete creato una cartella che in pratica non esiste, non si puo' cancellare, non si puo' rinominare. A meno di non andare sotto dos. In pratica potrete inserire li i vostri documenti, giochi e quant'altro. Se avete dei problemi con le installazioni di windows, vi bastera' rinominare la cartella prima dell'installazione, per renderla accessibile. E successivamente per renderla di nuovo inutilizzabile. Altri codici, oltre ALT+0254, sono: da 176 a 224, da 226 a 229... e ce ne sono tanti altri Togliere le voci inutili dal menu "installazione applicazione" Una delle domanda piu' quotate e' come faccio a togliere le voci dei programmi disinstallati da un pezzo nel menu Installazioni/Applicazioni del Pannello di Controllo? In questo modo: - se ricorrete al Registro di Sistema dovrete trovare la voce: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion \ Uninstall ed a questo punto dovete cliccare sulla cartella corrispondente al file da eliminare e premete CANC. Altro sistema piu' soft, e' quello di ricorrere a TweakUI. 33 Il programma in questione ha un'apposita voce (ADD/REMOVE) che vi permette di ottenere lo stesso risultato senza smanettare con il Registro di Sistema Diritti di accesso alle cartelle (*********) Una delle caratteristiche delle partizioni delle partizioni NTFS era quella di impostare, sulle singole cartelle presenti su di un computer in rete, criteri di protezione che assegnavano a ciascun utente i diritti di accesso e modifica dei dati. Anche Windows XP PROFESSIONAL permette di gestire i diritti di protezione sulle cartelle. Facendo clic su una cartella con il pulsante destro del mouse, appare un menu contestuale nel quale possiamo selezionare la voce Proprietà. Nella finestra di dialogo che si apre, facciamo clic sulla scheda "Condivisione". Qui, nella sezione "Condivisione di rete e protezione" , possiamo condividere la cartella in rete ma non è possibile specificare con quali utente. Apriamo una cartella qualsiasi. Facciamo clic sul menu "Strumenti - Opzioni cartella". Qui facciamo clic sulla scheda "Visualizzazione". Nel riquadro sottostante, spuntiamo l'opzione "Utilizza condivisione file semplice (scelta consigliata)" e DISABILITIAMOLA. Facciamo di nuovo clic con il tasto destro su una cartella e, dal menu contestuale, selezioniamo "Proprietà". Facciamo clic sulla scheda Condivisione. Qui spuntiamo l'opzione "Condividi cartella" specificando un nome. Per impostare le autorizzazioni per gli utenti che accedono alla cartella in rete, facciamo clic sul pulsante "Autorizzazioni". Possiamo specificare quali utenti possono accedere alla cartella e con quali diritti: "Controllo completo", "modifica" o "lettura" Non mostrare il nome di un computer all'interno della finestra Risorse di rete Un semplice tip permette di fare in modo che, all'interno della rete locale alla quale il vostro personal computer è collegato, il nome della vostra macchina non venga visualizzato nella finestra "Risorse di rete". Pur non essendo elencato all'interno di tale finestra, sarà comunque possibile per chi conosce i nomi delle condivisioni attivate sul vostro computer - accedere manualmente a file, cartelle e risorse (in base ai diritti impostati). Per fare in modo che il vostro computer non venga mostrato nell'elenco visualizzato in "Risorse di rete", è sufficiente portarsi al prompt di MS DOS e digitare quanto segue: net config server /hidden:yes Un suggerimento per condividere in rete locale una serie di cartelle Se avete la necessità di configurare la condivisione di più cartelle all'interno della vostra rete locale, è possibile applicare il nostro semplice suggerimento. Cliccate su Start, Esegui... quindi digitate SHRPUBW.EXE e premete Invio (o cliccate sul pulsante OK). Vi verrà proposta una praticissima finestra di dialogo mediante la quale avrete la possibilità di: 34 - selezionare la cartella che desiderate condividere in rete locale (pulsante "Sfoglia..."); - impostare un nome per la condivisione; - inserire una descrizione per la condivisione stessa; Cliccando sul pulsante "Avanti", potrete quindi configurare i diritti di accesso alla condivisione che state creando. Sono disponibili permessi generici (Controllo completo per tutti gli utenti, controllo completo per gli amministratori e accesso in lettura per gli altri utenti, controllo completo per gli amministratori e nessun tipo di accesso per gli altri utenti) oltre alla possibilità di regolare a proprio piacimento le varie autorizzazioni (pulsante "Personalizza..."). Come Accedere a Windows senza dover immettere la password Se siete sicuri che nel vostro PC di casa nessuno acceda, tranne voi, allora potrete tranquillamente disabilitare l'accesso solo ad utenti munuti di User Name e Password. Non dovete fare altro che attivare il cosiddetto Autologon su Windows XP. Cliccate su Start - Esegui e digitate control userpasswords2. Si aprirà una finestra dal titolo "Account Utente". Disabilitando la voce 'Per utilizzare questo computer è necessario che l'utente immetta il nome e la password', succederà che al riavvio del computer non ci verrà più richiesto il login. Trucco testato su WindowsXP. Alla scoperta dell'utility NETSH: tutte le informazioni su hardware e connessioni di rete Windows XP include una nuova utility - denominata NETSH - che permette di effettuare un'analisi del sistema in modo da recuperare informazioni dettagliate su hardware, software e connessioni di rete. Cliccate su Start, Esegui..., quindi digitate quanto segue: netsh diag gui Premete il tasto Invio o cliccate sul pulsante OK. Dopo qualche secondo di attesa vi verrà proposta l'interfaccia grafica per l'effettuazione dell'analisi del vostro sistema. Il link "Imposta opzioni di analisi" vi permetterà di ottenere la lista delle caratteristiche del sistema e della rete che possono essere controllate: spuntate quelle di vostro interesse. Per avviare il test cliccate sul link "Analizza sistema". I risultati del controllo potranno essere salvati, infine, se lo si desidera, su file di testo. Avevamo già incontrato in passato NETSH in un altro nostro tip dedicato al ripristino della configurazione iniziale del protocollo TCP/IP. Potete documentarvi, in proposito, in questa pagina. 35 Risolvere i problemi che impediscono l'avvio del sistema operativo -- Soluzioni pratiche per problemi comuni -In passato abbiamo avuto già modo di presentare gli strumenti che consentono di risolvere i principali problemi di avvio di Windows XP. Per riparare un'installazione danneggiata di Windows XP, inserite il CD ROM di XP nel lettore e riavviate il sistema (accertandovi che il BIOS del vostro pc sia regolato per il boot da CD ROM). A questo punto lasciate che abbia inizio la prima parte della procedura di setup quindi premete Invio per avviare l'installazione; F8 per accettare il contratto di licenza d'uso. La procedura di setup provvederà a ricercare la precedente vostra installazione di Windows XP. Premete R per avviare la procedura di riparazione nell'installazione di Windows XP già presente sul sistema. I dati memorizzati sul disco fisso rimarranno infatti: verranno invece sovrascritti tutti i file di sistema potenzialmente danneggiati. Per questo motivo, dopo la riparazione del sistema si dovrà procedere nuovamente all'applicazione di tutte le patch necessarie ricorrendo all'uso di Windows Update e/o di MBSA (ved. questa pagina e questi articoli). - Risolvere i problemi con NTLDR e NTDETECT.COM Come già illustratovi in passato, anche a noi è più volte accaduto che su sistema ad avvio multiplo (cioè con un boot manager che permetta di scegliere quale sistema operativo eseguire di volta in volta all'avvio del personal computer) dopo aver, per esempio, reinstallato qualche software - o lo stesso boot manager (ad es. "BootMagic" di Powerquest) -, Windows 2000/XP si sia rifiutato di ripartire visualizzando immediatamente un messaggio simile al seguente: NTLDR mancante. Impossibile avviare il sistema. Premere CTRL+ALT+DEL per riavviare. Come fare per risolvere un problema simile e permettere di nuovo l'avvio di Windows XP? Formattate da un sistema su cui è installato Windows XP un floppy disk (non copiatevi i file di avvio, eseguite semplicemente il comando FORMAT A:) quindi copiate dalla cartella /I386 del CD ROM di installazione di Windows XP i file NTLDR e NTDETECT.COM Create, sempre all'interno del disco floppy appena formattato, un file denominato BOOT.INI quindi copiatevi all'interno quanto segue: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(N)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(N)\WINDOWS="Microsoft Windows XP" /fastdetect Sostituite la lettera N con il numero della partizione contenente Windows XP, salvate, quindi riavviate il computer con il dischetto inserito (assicuratevi che Windows XP sia stato installato nella cartella \WINDOWS altrimenti specificate quella corretta). 36 Infine, copiate i tre file BOOT.INI, NTLDR e NTDETECT.COM nella cartella principale della partizione contenente Windows XP. Il sistema operativo dovrebbe così, d'ora in poi, essere avviato correttamente. In alternativa, avviate la Console di ripristino di Windows XP e digitate quanto segue: COPY X:\i386\NTLDR C\: COPY X:\i386\NTDETECT.COM C:\ - Quando NTOSKRNL sembra danneggiato o mancante Se in fase di avvio del sistema operativo viene visualizzato un messaggio che informa su un problema riscontrato sul file NTOSKRNL (file danneggiato o mancante), ecco la soluzione per "far resuscitare" il vostro Windows XP. Inserite il CD ROM d'installazione di Windows XP nel lettore e riavviate il sistema (accertandovi che il BIOS del vostro pc sia regolato per il boot da CD ROM).A questo punto lasciate che abbia inizio la prima parte della procedura di setup quindi premete Invio per avviare l'installazione; F8 per accettare il contratto di licenza d'uso. La procedura di setup provvederà a ricercare la precedente vostra installazione di Windows XP. Premete R per avviare la Console di ripristino del sistema (sarà necessario indicare l'installazione di Windows che si desidera riparare e la password dell'amministratore).Una volta avviata la Console di ripristino (per maggiori informazioni, fate riferimento agli articoli seguenti: art.1; art.2 e art.3), digitate l'identificativo associato al lettore CD ROM ove è inserito il CD di Windows XP (es.: D:) quindi, in sequenza, i seguenti comandi: CD i386 expand ntkrnlmp.ex_ C:\Windows\System32\ntoskrnl.exe Si è supposto che Windows XP sia installato in C:\Windows: se è stato installato in una cartella diversa, effettuate gli opportuni cambiamenti. Estraete il CD ROM di Windows XP dal lettore e digitate EXIT. - HAL.DLL danneggiato o mancante Se, in fase di avvio di Windows, ricevete un errore facente riferimento al file HAL.DLL è possibile che sia il file BOOT.INI ad essere danneggiato (ved. art.1 e art.2). Accedete alla Console di ripristino di Windows XP, così come spiegato in precedenza, quindi al prompt dei comandi digitate: bootcfg /list Otterrete l'attuale configurazione del file BOOT.INI. Il comando bootcfg /rebuild vi consentirà di ricreare il file. - \WINDOWS\SYSTEM32\CONFIG danneggiato o mancante In questo caso, sempre dal prompt della Console di ripristino è necessario digitare: cd \windows\system32\config A seconda che l'errore visualizzato riguardi \WINDOWS\SYSTEM32\CONFIG\SYSTEM o \WINDOWS\SYSTEM32\CONFIG\SOFTWARE, digitate quanto segue: 1. nel caso di "SYSTEM" digitate: 37 ren system system.bad copy \windows\repair\system 2. nel caso di "SOFTWARE": ren software software.bad copy \windows\repair\software Estraete, anche in questo caso, il CD d'installazione di Windows XP dal lettore e digitate il comando EXIT. Batchrun : creare facilmente file batch con l’aiuto di un’interfaccia In informatica, e in particolare nella terminologia di MS-DOS e Windows, un file batch o comando batch è un file di testo che contiene una sequenza di comandi per l’interprete di comandi del sistema (solitamente command.com o cmd.exe). Il file batch viene eseguito dall’interprete dei comandi mandando in esecuzione, secondo la sequenza specificata, i comandi elencati nel file. Il concetto di file batch è analogo a quello di shell script per i sistemi Unix e infatti può essere considerato un rudimentale linguaggio di scripting, anche se i costrutti a disposizione sono veramente pochi: if, for e goto Se volete, quindi, l’utilità è ben presto compresa, ma ci si chiede : come si crea un file batch? Purtroppo pochi hanno conoscenza adeguata dei vari comandi, ma non è il solo modo per crearli.Esiste, infatti, una utility davvero comoda, Batchrun, che permette di creare files batch utilizzando una comoda interfaccia grafica.Con l’utilizzo dei files batch .brs generati ed eseguibili solo con Batchrun, è possibile eseguire qualsiasi programma, comando o connessione dialup desiderata con un semplice click del mouse. Per ogni processo è possibile settare le modalità di esecuzione quali la priorità, l’avvio (normale, minimizzato, massimizzato), il ritardo nell’esecuzioni. I comandi attualmente supportati sono : Copy, Rename, Makedir, Delete, End Process, Kill, Deltree e Text to clipboard. I files batch creati con Batchrun possono essere eseguiti da esplora risorse o inseriti in Esecuzione Automatica piuttosto che iconizzati sul desktop. 38 HijackThis HijackThis è senza dubbio un tool indispensabile per la corretta manutenzione del vostro pc. Con un semplice click vengono infatti rilevate tutte le impostazioni e i settaggi del registro di sistema, dell'esecuzione automatica e dei programmi nascosti, il tutto viene salvato in un file di log. Questo software non si limita solamente alla scansione e al rilevamento di un codice dannoso, ma vi mette a disposizione una pratica interfaccia, dalla quale è possibile rimuovere le voci sospette. COSA FA Controlla le chiavi di esecuzione più frequentemente utilizzate dagli spyware e vi aiuta a rimuoverle creando automaticamente backup di sicurezza (rimuovere per sbaglio qualcosa non è un dramma se si ha una copia! ;) ). Questa procedura NON cancella i file maligni dal vostro PC, ma evita che questi vengano lanciati al successivo riavvio. Se gli effetti nocivi saranno spariti (l'homepage è nuovamente re-impostabile, oppure la pagina di ricerca, o quel dialer fastidioso non appare più) allora avrete la certezza matematica che i file che quelle voci del registro facevano partire erano nocivi e li potete cestinare. COME SI INSTALLA Non è una vera e propria installazione: si apre il file zip, si estrae il file che c'è dentro in una cartella e collocate Hijackthis.exe in una nuova cartella creata appositamente in C:\ o C:\programmi. ***Nota***Se lasciate l'eseguibile nei file temp o sul desktop , il backup delle voci rimosse non verrà effettuato . Se si salveranno delle informazioni nel registro (come annotare le chiavi sicure perché non vengano segnalate insieme a quelle sospette) queste poi si cancelleranno con un click (vedi ultima parte). La sua poca invasività e le sue piccole dimensioni lo rendono trasportabile su altri PC semplicemente mettendolo su CD, floppy, chiavetta USB ecc. COME SI USA Avviato il programma ci apparirà un avviso (solo la prima volta): ci dice che il software in questione ci proporrà TUTTE le chiavi di avvio di Windows, sia le buone, che le sospette, che le cattive, dovremo stare attenti a quello che facciamo e imparare a capire cosa è giusto eliminare. Tolto il messaggio ci troveremo in una finestra con vari pulsanti. Nella maggiornaza dei casi useremo solo i primi due: Do a system scan and save a logfile: fa una scansione e ne salva il risultato in un file chiamato hijackthis.log che verrà posizionato nella stessa cartella dove 39 abbiamo messo il programma. È utile se vogliamo far vedere l'analisi del softeare a qualcuno via mail o incollandone il testo in un forum Do a system scan only: serve se sappiamo già dove mettere le mani o comunque si sono scoperte le voci da rimuovere. In pratica la lista delle chiavi viene direttamente mostrata su schermo, pronta per essere modificata. Come dicevamo prima, in entrami i casi verranno mostrate TUTTE le chiavi che avviano file, sia pericolosi che non. Ora che avete davanti agli occhi la lista vediamo cosa fare. - Come faccio a capire quali voci NON sono pericolose? Semplice, cercando su Google i loro nomi . Un sito che però può facilitare molto la vita è http://www.liutilities.com/products/wintaskspro/processlibrary/ Se nelle sue pagine non trovate il file sospetto al 90% NON è roba di sistema. Ma non è detto che sia uno spyware! Un'altro indizio è la descrizione dopo la sigla BHO. Se vedete scritto BHO (no name) non è un buon segno. - Ma la lista è troppo lunga! Già, sul PC girano più applicazioni di quanto si pensi! Le uniche cose che potete fare sono: Chiudere i programmi in esecuzione e quelli vicino all'icona del volume Windows, in basso a destra, PRIMA di usare HijackThis. Selezionare le voci che sapete sicure (=innocue) e poi premere Add checked to ignorelist. Se ci ripensate andate su Config... > Ignore list. - Forse ho trovato la chiave dello spyware: e ora? Ora la si seleziona premendo nel quadratino a sinistra che ha, e si preme Fix checked. Il backup della chiave è creato in automatico, perché la voce Make backups before fixing items in Config... > Main è selezionata per impostazione predefinita (controllate ;) ). Ora resettate il PC e vedete se il sintomo che vi ha fatto accorgere dello spyware (homepage non personalizzabile per es.) è sparito. - È tutto come prima! E ora? Beh, andate su Config... Backups > Restore, rimettete quanto avevate tolto, aggiungete quelle voci alla Ignore list e proseguite. Il metodo empirico ( a tentativi) è l'unico e il migliore in questi casi. - Il problema è sparito! Quindi? Quindi i file che erano avviati da quelle chiavi (di cui avete una copia in backup 40 ed è bene conservarla) erano quelli nocivi. Andate nella cartelle in cui si trovano e cancellateli, ma anche di quelli fatevene una copia di sicurezza ; - Non ci riesco, è troppo difficile, non ho capito. Che faccio? Aprte il programma e premete Do a system scan and save a logfile. Ora avete 2 alternative: Incollare il contenuto in questa pagina http://hijackthis.de/index.php?langselect=italian e affidarsi all'analisi automatica: non è infallibile ma restringe il numero di voci sospette Incollare il conntenuto sul forum http://www.pc-facile.com/forum/index.php In entrambi i casi cercate di eliminare dall'elenco quante più voci possibili, sia chiudendo i programmi attivi, sia cancellando le chiavi che si ritengono sicure. 41 R ETI Concetti base delle reti : PORTE E PROTOCOLLI Componenti Per comprendere la trattazione delle porte e i protocolli, è necessario familiarizzare con le icone che rappresentano i dispositivi più comuni negli schemi di rete. Essi sono: Topologie Con questi dispositivi possono essere realizzate reti locali o LAN (Local Area Network). In una LAN i computer possono condividere risorse quali dischi, stampanti e connessioni ad Internet, e un amministratore può controllare come 42 vengono condivise tali risorse. In una topologia a bus, tutti i computer sono connessi ad un singolo mezzo trasmissivo e ogni computer può comunicare direttamente con gli altri. Nella configurazione ad anello ogni computer è connesso al successivo e l'ultimo con il primo; ogni computer può comunicare direttamente solo con quelli a lui adiacenti. In una topologia a stella nessuno dei computer è connesso direttamente agli altri. Al contrario essi sono connessi attraverso un punto centrale e il dispositivo centrale è responsabile di inoltrare le informazioni da un computer ad un altro. Se più punti centrali sono connessi tra loro, si ottiene una rete a stella estesa. In una topologia a stella o a stella estesa, tutti i punti centrali sono paritetici, cioè scambiano informazioni su basi uguali. Se, tuttavia, due reti a stella o a stella estesa vengono connesse attraverso un punto centrale che controlla o limita lo scambio di informazioni tra le due reti, si è di fronte ad una singola topologia gerarchica. Modello TCP/IP Introduzione Il TCP/IP è stato sviluppato dal DoD (Department of Defense) degli Stati Uniti dalla DARPA (Defense Advanced Research Project Agency) negli anni 1970. Il TCP/IP è stato progettato come standard aperto utilizzabile da chiunque per connettere i computer tra loro e scambiare informazioni tra loro. E' diventato il protocollo di base di Internet. Strati o Livelli Il modello TCP/IP definisce 4 livelli totalmente indipendenti in cui dividere il processo di comunicazione tra due dispositivi. I livelli attraverso cui transita l'informazione scambiata tra due dispositivi sono: 43 Applicazione Lo strato Applicazione (Application) è il livello più vicino all'utente finale. E' il livello deputato a tradurre i dati dalle applicazioni in informazioni che possono essere inviate attraverso la rete. Le funzioni di questo livello sono: -Rappresentazione -Codifica -Controllo del Dialogo -Gestione Applicazione. Trasporto Il livello di Trasporto (Transport) stabilisce, mantiene e termina circuiti virtuali per il trasferimento delle informazioni. Fornisce meccanismi di controllo di flusso, consente il broadcasting e fornisce meccanismi per la rilevazione e correzione degli errori. L'informazione che arriva a questo livello dal livello applicazione è divisa in segmenti diversi. L'informazione che giunge al livello di trasporto dal livello Internet è inviata al livello applicazione attraverso porte. Le funzioni di base di questo livello sono: -Affidabilità -Controllo di flusso Correzione degli errori -Broadcasting Internet Questo livello divide i segmenti del livello di trasporto in pacchetti e li invia attraverso le reti che formano Internet. Usa indirizzi IP (Internet Protocol) per determinare l'ubicazione del destinatario. Non assicura l'affidabilità della connessione, perchè è già compito del livello di trasporto, ma è responsabile di selezionare il cammino migliore tra il nodo sorgente e quello destinatario. Accesso alla rete Questo livello è deputato ad inviare informazioni sia al livello LAN che al livello fisico. Trasforma tutte le informazioni che giungono dai livelli superiori in informazioni elementari (bit) e le invia alla locazione corretta. A questo livello, la destinazione delle informazioni è determinata dall'indirizzo MAC (Media Access Control) del dispositivo destinatario. 44 Protocolli e porte Per poter inviare informazioni tra due dispositivi, entrambi devono utilizzare lo stesso linguaggio. Questo linguaggio è chiamato protocollo. I protocolli che compaiono nel livello applicazione del TCP/IP sono: -File Transfer Protocol (FTP)-Hypertext Transfer Protocol (HTTP)-Simple Mail Transfer Protocol (SMTP)-Domain Name Service (DNS)-Trivial File Transfer Protocol (TFTP) L'FTP o file transfer protocol è utilizzato per la trasmissione di files tra due dispositivi. Usa TCP per creare una connessione virtuale per il controllo dell'informazione, poi crea un'altra connessione utilizzata per il trasferimento dei dati. Le porte più comunemente usate sono la 20 e la 21. HTTP o hypertext transfer protocol è utilizzato per tradurre le informazioni in pagine web. Questa informazione viene distribuita in maniera analoga a quella utilizzata dalla posta elettronica. La porta più comunemente utilizzata è la 80. SMTP o simple mail transfer protocol è un servizio di posta basato sul modello FTP. Trasferisce posta elettronica tra due sistemi e fornisce una notifica della posta in arrivo. La porta più comunemente utilizzata è la 25. DNS o domain name service fornisce un meccanismo per associare ad un nome di dominio un indirizzo IP. La porta più comunemente utilizzata è la 53. TFTP o trivial file transfer protocol ha la stessa funzione di FTP ma usa UDP invece che TCP. Questo fornisce maggior velocità, ma minore sicurezza e affidabilità. La porta più comunemente utilizzata è la 69. I protocolli del livello di trasporto sono: -Transport Control Protocol (TCP) -User Datagram Protocol (UDP) Ci sono due protocolli che possono essere usati dal livello di trasporto per consegnare segmenti di informazioni. Il TCP o transmission control protocol stabilisce una connessione logica tra i punti finali della rete. Sincronizza e regola il traffico con un meccanismo noto come "Three Way Handshake". Nel “Three Way Handshake” il sistema sorgente invia un pacchetto iniziale noto come SYN al sistema destinatario. Il sistema destinatario invia un pacchetto di conferma detto SYN/ACK (acknowledge). 45 Infine il dispositivo sorgente invia un pacchetto chiamato ACK, che è una conferma della conferma. A questo punto, entrambi i dispositivi sorgente e destinatario hanno stabilito che esiste una connessione tra loro, ed entrambi sono pronti a inviare e ricevere dati. UDP o user datagram protocol è un protocollo di trasporto non basato su una connessione. In questo caso il sistema sorgente invia i pacchetti senza avvisare il destinatario del loro invio. E' quindi delegata al dispositivo destinatario l'accettazione o meno dei pacchetti. I protocolli del livello Internet sono: -Internet Protocol (IP) Un protocollo frequentemente usato dal livello di accesso alla rete Ethernet IP o Internet Protocol è un protocollo universale che consente a due computer di comunicare attraverso qualunque rete in qualunque momento. Come UDP, è senza connessione, poichè non stabilisce una connessione con il computer remoto. Al contrario è ciò che si può definire il miglior servizio possibile, nel senso che fa tutto il possibile per assicurare il corretto funzionamento, ma non garantisce l'affidabilità. Il protocollo Internet determina il formato delle intestazioni dei pacchetti, incluso l'indirizzo IP dei sistemi sorgente e destinazione. Indirizzi IP Gli indirizzi IP sono gli identificatori utilizzati per distinguere i dispositivi che sono connessi ad una rete. Ogni dispositivo deve avere un indirizzo IP differente, così non ci sono problemi di errata identificazione all'interno della rete. Un indirizzo IP consiste in 32 bit divisi in 4 ottetti separati da punti. Parte dell'indirizzo IP identifica la rete e il resto dell'indirizzo IP identifica il singolo computer all'interno della rete. 46 Esistono sia indirizzi IP privati che pubblici. Gli indirizzi IP privati sono usati da reti private che non hanno connessioni con le reti esterne. Gli indirizzi IP all'interno di una rete privata non devono essere duplicati, mentre computer presenti su due reti private diverse – ma non connesse – possono avere IP duplicati. Gli indirizzi IP che sono stati definiti dalla IANA, Internet Assigned Numbers Authority, come disponibili per reti private sono: da 10.0.0.0 fino a 10.255.255.255 da 172.16.0.0 fino a 172.31.255.255 da 192.168.0.0. fino a 192.168.255.255 Gli indirizzi IP sono suddivisi in classi in base alla porzione dell'indirizzo che viene utilizzata per identificare la rete e a quella utilizzata per identificare il singolo computer. 47 A seconda della dimensione assegnata ad ogni parte, possono essere definiti più dispositivi all'interno della rete o possono essere definite più reti. Le classi esistenti sono: -Classe A: il primo bit è sempre zero, di conseguenza la classe comprende gli indirizzi compresi tra 0.0.0.0 e 126.255.255.255. Nota: gli indirizzi del tipo 127.x.x.x sono riservati per i servizi di loopback o localhost. -Classe B: i primi due bit del primo ottetto sono '10', di conseguenza la classe comprende gli indirizzi compresi tra 128.0.0.0 e 191.255.255.255. -Classe C: i primi tre bit del primo ottetto sono '110', di conseguenza la classe comprende gli indirizzi compresi tra 192.0.0.0 e 223.255.255.255 -Classe D: i primi 4 bit del primo ottetto sono '1110', di conseguenza questa classe comprende gli indirizzi compresi tra 224.0.0.0 e 239.255.255.255. Questi indirizzi sono riservati per implementazioni di multicast di gruppo. -Gli indirizzi restanti sono usati per sperimentazioni o per usi futuri. E' necessario un meccanismo per distinguere tra la parte dell'indirizzo usata per identificare la rete e la parte usata per identificare il singolo dispositivo. Per questo viene usata una maschera di bit. Nella maschera la parte costituita da bit '1' rappresenta la parte contenente l'identificativo della rete e quella costituita da '0' la parte che identifica il singolo dispositivo. Quindi per identificare un dispositivo oltre all'indirizzo IP è necessario specificare una maschera di rete (network mask): IP: 172.16.1.20Mask: 255.255.255.0 Gli indirizzi IP 127.x.x.x sono riservati per essere usati come loopback o indirizzi del sistema locale, essi cioè si riferiscono direttamente al computer locale. Ogni computer ha un indirizzo locale 127.0.0.1, quindi quell'indirizzo non può essere usato per identificare dispositivi diversi. Ci sono anche altri indirizzi che non possono essere usati. Questi sono l'indirizzo di rete (network address ) e quello di broadcast. L'indirizzo di rete è un indirizzo in cui la parte che normalmente identifica il dispositivo è tutti zero. Questo indirizzo non può essere usato, perchè identifica una rete e non può mai essere usato per identificare un dispositivo specifico. 48 L'indirizzo di broadcast è un indirizzo in cui la parte dell'indirizzo che normalmente identifica il dispositivo è tutto 1. Questo indirizzo non può essere usato per identificare un dispositivo specifico, perchè è usato per inviare informazioni a tutti i computer che appartengono ad una rete specifica. IP: 172.16.1.255Mask: 255.255.255.0 Porte Sia TCP che UDP utilizzano porte per scambiare informazioni con applicazioni. Una porta è un'estensione di un indirizzo, esattamente come quando si aggiunge il numero di un appartamento ad un indirizzo. Una lettera con un indirizzo arriverà all'edificio corretto, ma senza il numero dell'appartamento non verrà consegnata al destinatario corretto. Le porte lavorano in modo simile. Un pacchetto può essere consegnato all'indirizzo IP corretto, ma senza la porta associata non vi è modo di determinare quale applicazione dovrebbe agire sul pacchetto. Una volta definite le porte i tipi diversi di informazioni inviate ad un indirizzo IP possono essere inviate all'applicazione appropriata. Utilizzando le porte un servizio in esecuzione su un computer remoto può determinare che tipo di informazione sia richiesta dal client locale, può determinare il protocollo richiesto per inviare quell'informazione e mantenere comunicazioni simultaneamente con un numero di client diversi. Ad esempio, se un computer locale cercasse di connettersi al sito web www.osstmm.org, il cui indirizzo IP è 62.80.122.203, con un server web in esecuzione sulla porta 80, il computer locale si connetterebbe a quello remoto utilizzando l'indirizzo (socket address ): 62.80.122.203:80 Per mantenere un livello di standardizzazione tra le porte più comunemente usate, la IANA ha stabilito che le porte numerate da 0 a 1024 sono usate per servizi comuni. Le porte rimanenti -fino a 65535 – sono usate per allocazioni dinamiche 49 o servizi particolari. Le porte più comunemente utilizzate – come assegnate da IANA – sono elencate nella tabella seguente. Port Assignments Keywords Description Decimals Reserved 0 1-4 Unassigned 5 rje Remote Job Entry 7 echo Echo 9 discard Discard 11 systat Active Users 13 daytime Daytime 15 netstat Who is Up or NETSTAT 17 qotd Quote of the Day 19 chargen Character Generator 20 ftp-data File Transfer [Default Data] 21 ftp File Transfer [Control] 22 ssh SSH Remote Login Protocol 23 telnet Telnet 25 smtp Simple Mail Transfer 37 time Time 39 rlp Resource Location Protocol 42 nameserver Host Name Server Port Assignments Decimals Keywords Description 50 43 nicname Who Is 53 domain Domain Name Server 67 bootps Bootstrap Protocol Server 68 bootpc Bootstrap Protocol Client 69 tftp Trivial File Transfer 70 gopher Gopher 75 any private dial out service 77 any private RJE service 79 finger Finger 80 www-http World Wide Web HTTP 95 supdup SUPDUP 101 hostname NIC Host Name Server 102 iso-tsap ISO-TSAP Class 0 110 pop3 Post Office Protocol - Version 3 113 auth Authentication Service 117 uucp-path UUCP Path Service 119 nntp Network News Transfer Protocol 123 ntp Network Time Protocol 137 netbios-ns NETBIOS Name Service 138 netbios-dgm NETBIOS Datagram Service 139 netbios-ssn NETBIOS Session Service 140-159 Unassigned 160-223 Reserved Incapsulamento Quando un'informazione – un messaggio e-mail ad esempio – viene inviato da un computer ad un altro, è soggetto ad una serie di trasformazioni. Il livello applicazione genera i dati che vengono inviati al livello di trasporto. Il livello di trasporto prende queste informazioni e vi aggiunge un'intestazione. L'intestazione consiste in informazioni quali l'indirizzo IP dei computer sorgente e destinatario, che specifica cosa debba essere fatto ai dati per inviarli alla corretta destinazione. Il livello successivo aggiunge un'altra intestazione e così via. Questa procedura ricorsiva è nota come incapsulamento. 51 Ogni livello dopo il primo incapsula i dati del livello precedente fino a che si arriva al livello finale in cui viene effettuata la reale trasmissione dei dati. La figura seguente mostra in forma grafica l'incapsulamento: Quando l'informazione incapsulata giunge alla sua destinazione deve essere deincapsulata. Come ogni livello riceve informazioni da quello precedente, questo rimuove le informazioni non necessarie contenute nell'intestazione costruita dal livello precedente. 52 WIRELESS LAN Una wireless local area network ,WLan, è un sistema di comunicazione flessibile e implementabile nella sua estensione , o alternativo ,ad una rete fissa ( wired Lan).In una Wlan viene utilizzata una tecnologia di radio frequenza RF per la trasmissione e la ricezione dei dati, minimizzando la necessità di connessioni via cavo (wired), favorendo così una discreta mobiltà. Una rete wireless può essere un'estensione di una normale rete cablata, supportando tramite un acces point, la connessione a dispositivi mobili e a dispositivi fissi (pc).In generale le architetture per sistemi wireless sono basate due tipologie di dispositivi : • • Access Point ( Ap) Wireless Terminal (WT) Gli access point sono bridge che collegano la sottorete wireless con quella cablata, come abbiamo detto, mentre i wireless terminal sono dei dispostivi che usufruiscono dei servizi di rete. Gli AP possono essere implementati in hardware 53 (esistono dei dispositivi dedicati) che in software appoggiandosi per esempio ad un pc, o notebook dotato sia dell’interfaccia wireless sia di una scheda ethernet. I WT possono essere qualsiasi tipo di dispositivo come per esempio notebbok, palmari, pda, cellulari, o apparecchiature che interfacciano standard IEEE 802.11, o sistemi consumer su tecnologia Bluetooth. Una WLan consente una velocità massima di trasmissione dati ( bit rate) pari a 11Mbps al di sotto di una rete wired ma superiore alle possibilità consentita dai terminali mobili comuni.Tra i possibili vantaggi offerti da una Wlan, possiamo elencare : • • • • • installazione veloce e semplice , rispetto alla stesura dei cavi,canaline... di una rete cablata installazione flessibile mobilità con un accesso delle informazioni real time ovunque ci si trova all'interno del network wireless scalabilità, consentendo una variegata tipologia/possibilità di configurazione, utilizzando specifiche applicazioni e installazioni possibile riduzione dei costi in certe situazioni, o a lungo termine La trasmissione e ricezione wireless (Tx / RX) opera sui 2.4 GHz, con potenze di trasmissione dai 10-20 mW fino ai 100mW. 54 La copertura di una cella radio varia da 20 metri a oltre 300 metri, in relazione alla tipologia degli ambienti, con una possibilità di collegamento da 10 a 250 utenze per Ap, in funzione del modello e della tecnolgia impiegata. Gli standard di comunicazione usati consentono ad un WT di inviare via radio all’Ap i dati che poi instraderà , verso un'eventuale sottorete cablata o ad un’altro WT. Il protocollo IEEE 802.11 e le sue applicazioni Agli inizi degli anni novanta fu approvato lo standard IEEE 802.11 che dettava le specifiche a livello fisico e datalink per l’implementazione di una rete LAN wireless.Tale standard consentiva un data rate di 1 o 2 Mbps usando la tecnologia basata su onde radio nella banda 2.4 GHz o su raggi infrarossi. La limitata velocità dello standard determinò uno scarso successo e diffusione. L'evoluzione di tale tecnologia diversi anni dopo ,1997, portò alla sua evoluzione IEEE 802.11b ( denominato anche Wi-Fi ) consentendo una trasmissione dai 5.5 ai 11 Mbit/s oltre a mantenere la compatibilità con lo standard precedente. Questo standard ha avuto e sta avendo successo perché molte industrie leader nel settore Nokia, 3Com, Apple, Cisco System, Intersil,Compaq, IBM,... lo hanno riconosciuto e hanno fondato nel 1999 il WECA (Wireless Ethernet Compatibility Alliance) con l' obiettivo della certificazione, dell' interoperabilità e compatibilità tra i prodotti. 55 Il protocollo IEEE 802.11b consente : • • • • • di poter variare la velocità di trasmissione dati per adattarsi al canale un data rate fino a 11 Mbps la possibilità di scelta automatica della banda di trasmissione meno occupata la possibilità di scelta automatica dell'access point in funzione della potenza del segnale e del traffico di rete di creare un numero arbitrario di celle parzialmente sovrapposte permettendo il roaming in modo del tutto trasparente. Glossario Wi-Fi 802.11 802.11 è lo standard IEEE originario del ’97 per le reti wireless, ma identifica anche la famiglia di standard 802.11x che si è andata sviluppando nel corso degli anni I principali standard IEEE per le reti wireless 802.11 Lo standard WLAN originale del '97, per velocità massima di 1 o 2 Mbps nella banda dei 2,4 GHz. Prevede che lo strato fisico trasmetta con i metodi DSSS (spettro distribuito con sequenza diretta) e FHSS (spettro distribuito con salti di frequenza).Nessun prodotto fu realizzato con questo standard. 802.11b Lo standard del '99 per trasmissione DSSS fino a 11 Mbps a 2,4 GHz.Sfrutta un numero massimo di 14 canali (13 in Europa) distanti 5 MHz e larghi 22 MHz. La modulazione CCK ottimizza il rappor to segnale/ rumore. 802.11a Uno standard del '99 diffuso in America; sfrutta la banda dei 5 GHz pertrasmissioni DSSS fino a 54 Mbps con modulazione OFDM.Non è compatibile con l''802.11b. 802.11g Standard del 2002 che sfrutta la banda dei 2,4 GHz per trasmissioni DSSS fino a 54 Mbps con modulazione OFDM, CCK (per compatibilità 802.11b) e PBCC come opzione. 802.11e Introduce la funzione QOS (quality of service) necessaria per le applicazioni multimediali (come voice su WLAN). 802.11f Migliora l'interoperabilità tra access point di produttori diversi. 802.11h Consente l'uso in Europa delle WLAN a 5 GHz tramite le funzioni di controllo della potenza e selezione dinamica della frequenza, per evitare inter ferenze con le trasmissioni satellitari. 802.11i Uno standard di sicurezza che ingloba le funzioni dello standard 802.1x e aggiunge funzioni di sicurezza, cifratura AES e distribuzione dinamica delle chiavi con il protocollo TKIP. Il WPA è un sottoinsieme dell'802.11i. 56 802.11n Standard in preparazione che offrirà velocità effettive di 100-320 Mbps,mentre le velocità degli standard precedenti, misurate allo strato fisico,in pratica vanno più che dimezzate. Si prevede che l'802.11n usi la banda dei 5 GHz. Ad-Hoc Mode La modalità wireless Ad-Hoc(detta anche paritetica o senza gestione) fornisce una connessione diretta tra un piccolo numero di stazioni,senza passare attraverso un access point. AP, Access Point Equivale a un hub che interconnette un gruppo di stazioni wireless e funge da bridge tra la sottorete wireleess e un’eventuale sottorete cablata. BSS Basic Service Set, una rete wireless composta di un access point e di stazioni Bridge Un dispositivo per collegare due o più sottoreti in un’unica rete per dare visibilità reciproca a tutti i nodi relativi CSMA/CA Carrier Sense Multiple Access/Collision Avoidance(accesso multiplo con rilevamento della por tante e prevenzione delle collisioni), il sistema di accesso al mezzo fisico utilizzato nelle reti wireless 802.11 DS Distribution System, un sistema per la connessione tra stazioni appar tenenti a diversi BSS, che prevde il roaming tra diverse reti wireless ESS Extended Service Set, l’insieme di un sistema di distribuzione(DS) e dei diversi BSS interconnessi Gateway Un dispositivo che funge da traduttore tra due sistemi che non usano gli stessi protocolli di comunicazione, formato dei dati, linguaggi e architetture IBSS Independent Basic Service Set, una piccola rete wireless in modalità ad-hoc, senza access point Infrastructure Mode La modalità con infrastruttura, a differenza di quella Ad-Hoc,prevede che le stazioni si connettano tra loro attraverso un access point, che può essere connesso a una rete fissa e ad altri access point IP address Indirizzo IP, un numero di 32 bit(destinato in futuro ad essere di128 bit) che identifica ogni dispositivo collegato a una rete TCP/IP come Internet 57 LAN Local Area Network o rete locale MAC Medium Access Control, il sottostrato dello strato Data Link del modello ISO/OSI collocato sopra lo strato fisico e identificato da un numero unico di 48 bit Mbps Megabit per secondo, la misura della velocità della connessione, solitamente misurata allo strato fisico e quindi teorica (quella reale è circa un terzo di quella massima) Peer to peer Riferito a una rete wireless,indica una piccola rete di stazioni connesse direttamente in modalità ad-hoc Router Un dispositivo per collegare tra loro reti anche eterogenee, come Internet e una rete wireless SSID Service Set Identifier, l’identificatore di una rete wireless, paragonabile al nome del gruppo di lavoro di una reteWindows Stazione Un computer o altro dispositivo comprendente un’interfaccia per la connessione wireless a un access point o ad altre stazioni WEP Wired Equivalent Privacy, la tecnologia di base per garantire un certo livello di sicurezza alla connessione e alla trasmissione su una rete wireless;dimostratosi più vulnerabile del previsto, è stato affiancato da tecnologie più efficaci, come il WPA Wi-Fi Wireless Fidelity (abbreviato anche WiFi), un consorzio che garantisce l’interoperabilità dei prodotti wireless WAN Wide Area Network, o rete geografica WLAN Wireless LAN, rete locale senza fili WPA WiFi Protected Access, una tecnologia di sicurezza (subset dello standard 802.11i) che utilizza il protocollo TKIP(Temporal Key Integrity Protocol)per una cifratura dei dati a prova di intercettazione 58 Nove modi per proteggere la rete wireless Sono sempre più diffuse le reti wireless domestiche. La comodità di girare per casa (o in ufficio) col portatile e la mancanza dei tremendi grovigli di cavi che inevitabilmente si vengono a creare nei luoghi dove sono presenti le classiche reti ethernet sono due argomenti fortissimi a favore del networking wireless. Naturalmente oltre a questi grandi benefici ci sono anche dei problemi: le reti wireless sono più vulnerabili a intrusioni e intercettazioni.Oggi che la pirateria ha smesso di essere un hobby ed è diventato un affare per le grosse organizzazioni criminali, la protezione delle reti di computer è una necessità primaria per gli utenti. E’ dunque necessario prendere delle precauzioni rimanendo consapevoli che non si potrà ottenere la sicurezza assoluta. Infatti nella sicurezza informatica bisogna valutare diversi fattori: cosa difendere e da chi; la motivazione degli eventuali pirati; il bilanciamento tra funzionalità e sicurezza. L’idea di base è quella di creare una serie di barriere che se prese singolarmente possono non spaventare il pirata, ma considerate nel loro insieme possono farlo desistere e indirizzarlo verso obiettivi più “morbidi”. Nella difesa di Lan Wireless oltre alle minacce convenzionali dobbiamo fronteggiare anche altri pericoli e tener conto di altri fattori che possiamo indicare in 9 punti: 1. Cambiare il default login del router Un accorgimento che può apparire banale (ma non lo è): cambiare i parametri di login di default del Router / Access Point. Infatti la prima cosa che un pirata fa è controllare le liste di password di default e verificare se è stata modificata. Lasciare la password standard è un suicidio!Di seguito presento alcuni link dove possono essere trovate le password di default di router e dispositivi vari, probabilmente li troverete piuttosto utile nei prossimi penetration test: • www.cyxla.com/passwords/passwords.html • dopeman.org/default_passwords.html • www.phenoelit-us.org/dpl/dpl.html • www.routerpasswords.com 59 2. Prevenzione Come tutti i software anche il sistema operativo del Router / Access point necessita di aggiornamenti. Infatti quasi quotidianamente vengono scoperti bug che permettono ai pirati che lanciare attacchi e prendere il controllo del dispositivo. Una delle migliori armi difensive è la prevenzione. Quindi consultare periodicamente il sito del produttore del proprio router per verificare la presenza di aggiornamenti di sicurezza critici. 3. Infrastructure o Ad-Hoc? Le Lan Wi-Fi possono funzionare in due modalità: Infrastructure e Ad-Hoc. Nella prima (raccomandata) le comunicazioni tra i vari computer della rete passano tramite l’Access Point. Nella seconda (Ad-Hoc) invece i computer comunicano tra di loro senza un punto di controllo relizzando così una classica rete peer-topeer. 4. Disabilitare il SSID Broadcasting In un a rete wi-fi esiste un codice di identificazione detto SSID (Service Set Identifier). Un computer che vuole comunicare con una rete deve conoscere questo codice; infatti ogni pacchetto di dati scambiato in una rete wi-fi contiene questo codice. Piuttosto che utilizzare un SSID banale (tipo “wlan”) utilizzarne uno composto di numeri e lettere. Inoltre disabilitando il Broadcasting del SSID l’Access Point smetterà di annunciare pubblicamente la presenza della rete (cosa inutile per una rete domestica). Questo accorgimento non è determinante (come nessun accorgimento preso singolarmente) in quanto il SSID puo’ comunque essere “sniffato”, ma aggiunge un ulteriore livello di difficoltà per l’eventuale pirata. 5. Disabilitare i Ping di Broadcast Disabilitando il ping di broadcast si rende invisibile l’Access Point ai tool di analisi per il protocollo wi-fi 802.11b 6. Filtro sul Mac Address Come è noto ogni computer collegato a Internet o a una rete privata ha un indirizzo, il famoso Ip (Internet Protocol). In realtà ogni dispositivo di rete ha un altro indirizzo che lo identifica in modo univoco: il Mac Address. E’ possibile attivare sull’Access Point un filtro che permetta l’accesso solo alle schede di rete autorizzate. Inserendo nel filtro gli indirizzi MAC dei computer della rete domestica permetterà a questi ultimi di accedere alla rete: tutte gli altri rimarranno esclusi.Anche in questo caso il pirata ha le sue contromosse: un MAC può essere modificato e falsificato (spoofing); ma un tipo di attacco così sofisticato richiede motivazione e finalità che difficilmente un cracker trova in 60 una rete domestica. Come trovate il MAC Address dei vodtri dispositivi di rete? Basta lanciare il prompt dei comand (start -> esegui -> cmd.exe) e quindi digitare; ipconfig/all; alla voce “Indirizzo fisico” troverete il MAC (6 numeri esadecimali) 7. Disabilitare l’Amministrazione Remota E’ proprio necessario lasciare attiva un’interfaccia di amministrazione remota? No? Allora è meglio disbilitarla… 8. Criptografia Tutto quanto detto fin’ora non è molto utile se le informazioni che passano in chiaro nell’etere possono essere facilmente intercettate! Esistono tre tipi di criptografia per le reti wireless domestiche: WEP, WPA e WPA2. Se non avete a casa adattatori o schede di rete wireless vecchiotte (per esempio 802.11b) potrete tranquillamente evitare il WEP, protocollo debole altamente sconsigliato (craccabile in poche ore). Quindi se avete dispositivi di ultima generazione (quelli che trovate ora nei negozi) potete utilizzare WPA o WPA2 9. Copertura e posizionamento Non è consigliabile posizionare l’Access Point vicino ai muri perimetrali, meglio metterlo in una posizione centrale dell’appartamento/ufficio: questo riduce sensibilmente il rischio di essere intercettati da un pirata durante una sessione di Wardriving. Applicando queste 9 regole si rafforza la sicurezza della propria rete wireless domestica. Comunque non dimentichiamoci mai di tenere gli occhi aperti, di non sopravvalutare la propria astuzia che potrebbe indurre un falso senso di sicurezza che sarebbe fatale. Come Recuperare e Craccare la Chiave WPA su Xp E’ possibile recuperare facilmente una chiave WEP dal servizio Wireless Zero Configuration di Windows Xp; nel caso di Vista è possibile recuperare facilmente anche la chiave WPA.Per farlo basta scaricare e utilizzare il programma Wirelesskeyview. Questo programma recupera la chiave dal servizio Wireless Zero Configuration di Xp e dal servizio WLAN AutoConfig di Vista. In entrambi i casi la chiave WEP è in chiaro; invece la chiave WPA è memorizzata in formato “leggibile” solo su Vista, non su Xp. Utilizzando Wirelesskeyview su Xp si recupera la chiave WPA codificata tramite l’algoritmo PBKDF2. Si tratta di un algoritmo che calcola un codice (hash) derivato da reiterate operazioni eseguite su di una password e un codice aggiuntivo, il “salt” combinati tra di loro. Nel caso del PBKDF2 applicato al WPA, la password è la chiave vera e propria; 61 il salt è l’ESSID, l’identificativo della rete wireless. Per fare un esempio, se l’ESSID è “mywifi” e la password è “pippo”, il codice calcolato tramite PBKDF2 risulterà essere 9BEA00D070CDC6F6712A6CE941F20EB488C7156A88F43A607B6798EC11 3070F3. Su Xp il programma Wirelesskeyview recupera questo codice e non “pippo” come sperato. Per risalire alla password partendo dal codice hash c’è una sola strada: il cracking. L’attacco Dictionary calcolerà in tempo reale l’hash PBKDF2 combinando l’ESSID con una serie di parole (un dizionario), con la speranza di indovinare quella giusta. Il programma Cain ha in dotazione un dizionario (Wordlist.txt) di oltre 7000 parole. Le Rainbow Tables sono gigantesche tabelle di password pre-calcolate. Possono essere utili se l’ESSID è un nome comune (come il costruttore dell’Access Point, Cisco, Linksys…). In questo caso il tempo di cracking potrebbe essere sorprendentemente breve. Se avete la necessità di recuperare la chiave WPA di una macchina con Windows Xp, il metodo è questo. Armatevi di pazienza e sperate nella fortuna: queste (pazienza e fortuna) sono le uniche due vere alleate dell’hacker in qualsiasi operazione di password cracking. Recuperare la Chiave WEP/WPA con WirelessKeyView Può succedere che ci si dimentichi la password (o meglio la key) per la connessione wifi. Non solo: in un penetration test, in caso di accesso fisico al computer, può essere utile recuperare le key WEP/WPA. WirelessKeyView è un software freeware in grado appunto di recuperare le chiavi WEP/WPA immagazzinate in un computer dal servizio Wireless Zero Configuration di XP o dal servizio WLAN AutoConfig di Vista. Le key vengono mostrate a video in una griglia dati, ma possono anche essere salvate in diversi formati: text,html,xml. Per utilizzare questo programma bisogna essere loggati sul computer in locale, quindi non si tratta di uno strumento per intercettare le password o per craccare la connessione, ma una utility di recupero password. WirelessKeyView oltre ad essere gratuito non necessita di installazione: basta scaricarlo ed eseguirlo. Viste le ridotte dimensioni può anche essere comodamente memorizzato su di una chiave USB. 62 Attacco Criptografico al WPA Quando ci si accorse che il WEP era debolissimo si corse ai ripari creando un “WEP potenziato”, basato sulla cifratura TKIP e denominato WPA. Benché molti considerassero il WPA inviolabile (e questo era vero, almeno dal punto di vista crittografico) in realtà il WPA (ma anche il WPA2) poteva essere violato con un attacco a dizionario. Qual’è la differenza tra WPA e WPA2? WPA2 utilizza un algoritmo di cifratura che deriva dall’AES, attualmente uno dei sistemi crittografici più robusti; il WPA utilizza il TKIP, basato su RC4 e parente stretto del WEP. In questi giorni è circolata la notizia che alcuni ricercatori sono riusciti ad craccare il TKIP tramite un attacco già popolare in ambito WEP: il chopchop attack. Questo attacco non recupera la chiave crittografica e quindi non è in grado di decodificare l’intera connessione, ma è in grado di decifrare singoli pacchetti, senza conoscere la chiave. E’ sicuramente un passo avanti verso il naufragio definitivo del WPA, vedremo altri sviluppi nelle prossime settimane. Gli standard Chiave WEP Il meccanismo per la protezione dei dati originariamente previsto dallo standard IEEE 802.11 è il WEP ("Wired Equivalent Privacy"). Il WEP prevede che ogni pacchetto scambiato tra l'access point e l'apparato dell'utente sia codificato con l'agoritmo di cifratura RC4, utilizzando una chiave segreta di 40 o 104 bit, preceduta da un'ulteriore sequenza casuale di 24 bit (Initialization Vector) diversa per ogni pacchetto trasmesso. La chiave segreta deve essere comunicata a tutti gli utenti che accedono al corrispondente access point. Nel 2001 alcuni ricercatori hanno però dimostrato la debolezza dell'algoritmo RC4, nonché altre debolezze intrinseche del meccanismo WEP. È stato quindi istituito un gruppo di lavoro, chiamato "Task Group i", per correggere i noti problemi del WEP e definire un nuovo standard di sicurezza, l'IEEE 802.11i. Dal WEP all'802.11i: WPA IEEE e Wi-Fi Alliance, l'organizzazione che si occupa di promuovere lo sviluppo e la diffusione delle reti wireless, hanno quindi dato vita ad un progetto per elaborare una soluzione immediata per sostituire il WEP come meccanismo di sicurezza nei prodotti commerciali esistenti. Il nuovo meccanismo, denominato WPA (Wireless Protected Access), è stato concepito sin dall'inizio come soluzione temporanea, in attesa che lo sviluppo di 802.11i giungesse a maturazione. Per WPA è stato progettato un nuovo protocollo, denominato TKIP (Temporal 63 Key Integrity Protocol), sempre basato sull'algoritmo RC4, che aggiunge un meccanismo di cifratura software preliminare a quello utilizzato dal WEP (eseguito invece in hardware) per ogni pacchetto inviato. WPA si basa su TKIP per la codifica dei messaggi, mentre si è aggiunto un meccanismo di autenticazione per utente, in luogo dello scambio della chiave WEP segreta, basato sul protocollo 802.1x (illustrato piu' avanti). WPA2 (802.11i) L'802.11i, rilasciato nel luglio 2004, è ora comunemente indicato con il nome di WPA2. Anche WPA2 utilizza 802.1x per la gestione delle politiche di autenticazione. Per la cifratura dei dati invece, è definito un nuovo protocollo, CCMP (Counter Mode with CBC-MAC Protocol), che utilizza l'algoritmo crittografico AES al posto dell'RC4. La maggiore robustezza di AES (e di CCMP) si paga con una maggior potenza di calcolo richiesta agli apparati rispetto a WEP e TKIP, e richiede quindi una modifica del'hardware. Ad oggi gli apparati che supportano WPA2 sono poco diffusi. Riepilogando: WPA = TKIP + 802.1x WPA2 = CCMP + 802.1x L'autenticazione 802.1x Per evitare gli accessi non autorizzati in rete si è deciso di adottare il protocollo di autenticazione port-based denominato IEEE 802.1x, il quale prevede che l'autenticazione avvenga sia in fase di primo accesso alla rete sia ad intervalli periodici di tempo. Per l'autenticazione l'access point si deve appoggiare ad un server esterno tramite il protocollo RADIUS (Remote Authentication Dial-In User Service). L'architettura 802.1x applicata alla tecnologia wireless prevede quindi la presenza delle seguenti entità: Supplicant = client che intende accedere alla rete Authenticator = punto di accesso alla rete (access-point) 64 Authentication Server = server esterno a cui l'autenticatore invia le richieste di autenticazione provenienti da un supplicant La figura seguente mostra l'architettura di autenticazione prevista dal protocollo 802.1x: Schema applicativo 802.1x EAP Il sistema di autenticazione utilizza il protocollo di trasporto EAP (Extensible Authentication Protocol), il quale non specifica un meccanismo di autenticazione fisso, bensì definisce una piattaforma di autenticazione estensibile, consentendo quindi di poter variare il meccanismo di autenticazione nel caso in cui in quest'ultimo venisse scoperta una qualche vulnerabilità. Metodi di autenticazione Tra i vari metodi di autenticazione impiegati in EAP (oltre 40) è possibile segnalare: • EAP-MD5: (MD5-Challenge), equivalente al PPP, richiede username/password. Non prevede mutua autenticazione o scambio di chiavi quindi è poco adatto in ambiente wireless. 65 • • • • • 66 LEAP: (Lightweight EAP) sviluppato da Cisco, prevede l'invio di username/password ad un server di autenticazione (RADIUS). Considerato poco sicuro è in fase di abbandono. EAP-TLS: crea un sessione TLS (tunnel) tra il Supplicant e l'Authentication Server. Sia il server che il supplicant richiedono l'utilizzo di un certificato (x509). Questo metodo fornisce una mutua autenticazione. EAP-TTLS: crea una sessione TLS cifrata, all'interno della quale è possibile utilizzare qualsiasi metodo di autenticazione. PEAP: (Protected EAP) crea una sessione TLS cifrata. Sia in PEAP che in TTLS il certificato del supplicant è opzionale, mentre è obbligatorio quello dell'Authentication Server. EAP-MSCHAPv2: richiede username/password, ed è fondamentalmente un'incapsulamento dell'MS-CHAP-v2 in EAP. WPA-Cracking tra Cloud Computing e Personal Supercomputers Si scrive “cloud computing”, ma si legge “craccare una password WPA in 40 minuti per soli $17″. Clound computing è il termine magico con il quale si identifica la nuova incarnazione del calcolo distribuito, l’eterno ritorno di un’idea che oggi si realizza tramite le tecnologie web. Nel corso degli anni, da quando si sono diffuse le reti wireless, gli sforzi di chi ha il compito di difendere le comunicazioni senza fili, sono stati duramente contrastati da chi ha la volontà di aggirare i sistemi di sicurezza delle reti wifi. Il sistema WEP è capitolato quasi subito. Il WPA ha resistito un po’ di più, e sebbene sia tutt’oggi più sicuro del WEP e meno facile da attaccare con successo, inizia a presentare delle crepe. Comunque sia WPA (TKIP), sia WPA (AES/CCMP) sono da sempre attaccabili tramite dictionary attack. Il problema è il tempo. Una possibile soluzione sono le rainbow tables, un passo avanti è la potenza di calcolo: GPU o calcolo distribuito. La chiave WPA è formata dalla passphrase e dall’ESSID, e viene calcolata tramite l’algoritmo PBKDF2. Gli approcci per l’attacco possono essere ti due tipi: 1. Rainbow Tables: si tratta di dizionari precalcolati. Church of Wifi rende disponibili le tabelle con dizionari formati da 170000 password dei 1000 ESSID più diffusi 2. Potenza di calcolo: abbastanza intuitivo, occorre una quantità massiccia di cicli di clock per calcolare milioni di password, elaborando in tempo reale l’hash, comprensivo dell’ESSID. Questa potenza di calcolo può essere ottenuta in due modi: con potenti GPU e un apposito software, oppure distribuendo il calcolo, tramite cloud computing, tra centinaia di nodi. Elcomsoft ha prodotto un software (Elcomsoft Wireless Security Auditor) che sfruttando la potenza di personal supercomputer Tesla è in grado di calcolare 52400 password al secondo. Il solo prezzo del software (senza il computerone) è però di €1199 Euro. 67 IL PROVETTO RICERCATORE Internet è un immensa fonte di informazioni e muoversi all'interno di essa è come entrare in un labirinto dove, senza un filo di Arianna che ci guidi, non potremmo mai uscirne fuori. Il nostro filo di Arianna in questo caso sono alcuni strumenti nati con l'intento di guidarci e portare a buon fine il nostro scopo. Gli strumenti di cui abbiamo bisogno sono di due tipi: quelli implementati nel sistema operativo (Tracert, Ping, Nbtstat, ecc..), e quelli forniti dalla rete (finger, Netfind, Whois, ecc..).In questa guida mi occuperò solamente di quei tool che permettono di rintracciare delle persone che utilizzano la rete e reperire più informazioni possibili su di esse. Quasi tutte le tecniche usate per l'hacking si basano principalmente nel reperire il maggior numero di informazioni relative al sito da attaccare; è necessario sapere quali programmi (e versione) girano sul server vittima, per poter conoscere in seguito quale exploit utilizzare. Anche la tecnica stessa del bruteforce si basa sulla ricerca di ogni dettaglio riguardo l'administrator del server per poterne identificare l'eventuale user o pwd. E magari avendo solo a disposizione il suo IP, o il suo nome e dominio, trovare la sua vera mail o meglio ancora dove abita!Avere anche la possibilità di rintracciare la vittima on-line quando vi pare, anche se possiede un IP dinamico, ovviamente tutto questo dipende anche da una certa dose di fortuna, nel senso che più la nostra vittima si è resa "visibile" in rete, più informazioni riusciremo ad avere su di lui. Questo dovrebbe farvi capire intuitivamente che è molto più facile ottenere ottimi risultati su un'amministratore di un server che su un utente qualsiasi della rete. WINDOWS UTILITY Installando il protocollo di rete Microsoft TCP/IP, vengono copiati alcuni file in /Windows, questi file sono delle utility per Internet (e reti LAN), che spesso vengono erroneamente sottovalutate. Invece sono molto utili e si adattano molto bene a diversi scopi . Tenete presente che esistono molti programmini che fanno uso di tali strumenti, ma vi consiglio vivamente di imparare ad utilizzarli da DOS o comunque da una shell. Tracert: Mostra il percorso (HOPS) fatto da un pacchetto per raggiungere un computer remoto. Ping:Verifica la connessione di un sito e ne determina i tempi di risposta. Gli switch dei comandi sono case-sensitive, quindi attenzione a come digitate le maiuscole e le minuscole, ad es. è diverso scrivere: Ping -a da Ping -A !! 68 TRACERT E' un'utility che stabilisce il percorso verso una destinazione inviando pacchetti echo con valori variabili di Time To Live (TTL).Lungo il percorso il compito di ogni "instradatore"(Router) è quello di abbassare di almeno una unità il TTL di un pacchetto prima di consegnarlo, in pratica il TTL è un conteggio di salti (Hops). Quando il TTL di un pacchetto arriva a 0, l'instradatore dovrebbe mandare indietro un messaggio al sistema di origine.In base ai messaggi rinviati dagli instradatori, viene determinato il percorso del pacchetto. (Acuni instradatori però rendono invisibili i pacchetti echo, lasciandoli esaurire senza che tracert ne rilevi la traccia....provate allora col ping). Sintassi del comando: TRACERT [-d] [-h maximum_hops] [-j host-list] [-w timeout] nome_destinazione Opzioni: • -d • -h ne. • -j • -w • nome_dest. Non risolve gli indirizzi in nome host. Numero massimo di hops per ricercare la destinazioLibera route di origine lungo l'elenco host. Intervallo di timeout in millisecondi per ogni risposta. Specifica il nome di ospite del computer di destinazione Facciamo un'esempio; C:\windows> TRACERT mbox.virtualbit.it Rilevazione instradamento verso mbox.virtualbit.it [195.103.10.3] su un massimo di 30 punti di passaggio: 1 115 ms 121 ms 113 ms 202.41.103.65 2 153 ms 151 ms 149 ms 202.41.103.1 3 192 ms 317 ms 189 ms 202.41.92.10 4 214 ms 188 ms 227 ms [202.41.92.1] 5 186 ms 224 ms 185 ms interbusiness.it [212.41.192.2] 6 * * 2684 ms r-mi3-.interbusiness.it [151.9.15.145] 7 290 ms 234 ms 228 ms r-mi1-fddi.interbusiness.it [151.99.5.167] 8 402 ms 486 ms 269 ms 195.31.80.134 9 303 ms 795 ms 286 ms 195.103.10.130 69 10 * 351 ms 941 ms 192.168.0.6 11 756 ms 475 ms 512 ms mbox.virtualbit.it [195.103.10.3] Rilevazione completata.[ è solo un'esempio ] La prima colonna riporta il numero di TTL (hops). Le altre colonne indicano i tempi di andata e ritorno in millisecondi per un tentativo di raggiungere l'host remoto. L'ultimo hops è il server da noi analizzato (tin.it), mentre gli hops intermedi sono vari routers che instradano il pacchetto.L'asterisco indica che il tempo(timeout) per il tentativo è scaduto, mentre l'ultima colonna riporta il nome e l'indirizzo IP dell'host.Avrete notato quindi come sia semplice ottenere l'IP di un server tramite il suo nome e viceversa (NSlookup), ovvero trovare il nome del server avendo solamente il suo IP.Infatti possiamo utilizzare tracert su un'indirizzo numerico (IP)e determinare quale server utilizza il nostro amico.....potremo poi connetterci al nome del server per reperire ulteriori info sulla nostra vittima (dovete sapere che molti provider usano una specie di yellow page dei propri utenti!). Parleremo di come utilizzare le info reperite in questo modo nella parte relativa agli strumenti di Internet. Tracert però non sempre dà i risultati che vogliamo, ed ecco che a questo punto entra in ballo un'altra utility... Ping Il comando Ping è utile per controllare un collegamento con l'host remoto e valutarne la velocità. Viene inviato all'host in questione una serie di pacchetti "echo" di 64 byte aspettando i pacchetti di risposta. Non è certo utile ai nostri scopi usarlo in questo modo, ma se invece lo utilizziamo con dei parametri, il discorso cambia... Sintassi: PING [-t] [-a] [-n numero] [-l lunghezza] [-f] [-i TTL] [-v TOS] Opzioni: •-t Ping è eseguito sull'host specificato finchè non viene interrotto. •-a Risolve gli indirizzi in nomi host. •-n Invia il numero di richieste di echo indicato da numero. Il valore di default è 4. •-l Invia i pacchetti echo contenenti la quantità di dati indicati in lunghezza; il default è 64 byte;il massimo è 8192. 70 •-f Imposta il flag. Non frammenta il pacchetto. •-i TTL Imposta la "vita" del pacchetto col valore indicato da TTL •-v TOS Imposta il tipo di servizio col valore indicato da TOS. •-r Registra il percorso del pacchetto in uscita e del pacchetto di ritorno nel campo Record Route. Numero che deve specificare da 1 a 9 ospiti. •-s Marca orario per il numero dei salti precisati da numero •-j host-list Indirizza i pacchetti per mezzo della lista degli ospiti specificata da host-list.Gli ospiti vicini possono essere separati da gateway intermedi. •-k host-list Restringe route di origine lungo l'elenco host. •-w Intervallo attesa "timeout" (in millisecondi) per ogni risposta. Non abbiamo bisogno di conoscere tutti i parametri del comando, basta conoscere i più importanti.... ping -a IP // risolve l'IP di un server in nome ping -w IP (intervallo) // imposta l'intervallo d'attesa ... per i nostri scopi. Mentre è ben conosciuto l'IP Flooding come DoS: ping -l IP (dim.del pacchetto) // invia un "echo" di dim. determinate ping -f IP (dim.del pacchetto) // ne evita la frammentazione (flag) Ma facciamo un'esempio. L'IP di un utente è facilmente determinabile sia che frequenti Usenet che i servizi Chat, nel 1° caso è presente nelle proprietà del msg, nel 2° se non è visualizzato (es. in ICQ) ci sono molti progmmi che servono a tale scopo e sono reperibili in rete, se poi abbiamo anche il suo nome, o alias o altro , le cose diventano più facili.Una volta ottenuto tale numero, possiamo incominciare le nostre ricerche. Supponiamo che l'IP della vittima sia 194.105.97.16 (casuale).. c:\windows> ping -a 194.105.97.16 (Il parametro -a sappiamo che risolve un IP num. in nome dell'host) 71 Il risultato sarà del tipo... Esecuzione di Ping NOME_HOST [194.105.97.16] con 32 byte di dati: Risposta da 194.105.97.16: byte=32 durata=1ms TTL=128 Risposta da 194.105.97.16: byte=32 durata<10ms TTL=128 Risposta da 194.105.97.16: byte=32 durata<10ms TTL=128 Risposta da 194.105.97.16: byte=32 durata<10ms TTL=128 Statistiche Ping per 194.105.97.16: Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi), Tempo approssimativo percorsi andata/ritorno in millisecondi: Minimo = 0ms, Massimo = 1ms, Medio = 0ms ..possiamo vedere così quale sia il nome del computer della vittima, oppure , se fosse un server, il nome host dello stesso. Tenete presente comunque che se avete l'IP di un utente in tempo reale (in IRC), avete già tutto ciò che vi serve per rendergli la vita difficile !! Come?? E' semplicissimo, basta avere un DNS-scanner, reperibile in internet. Prima di andare avanti però apriamo una piccola parentesi. Come dovreste sapere l'indirizzo IP assegnato dal Provider ad un'host della sua rete è dinamico, cioè cambia ad ogni connessione, ma la radice (i primi 24 bit) rimane invariata. Se per esempio il mio IP è 194.10.190.18 significa che appartengo ad un indirizzo di rete : 194.10.190.X //dove "X" è il n°host che mi può essere assegnato (a meno che si tratta di grosse sottoreti, dove l'assegnazione del n° può variare negli ultimi 16 bit --> .192.X e .191.X per esempio). Facciamo un'esempio e torniamo alla nostra vittima in IRC; supponiamo che il suo IP sia 196.41.197.36 , mano al nostro DNS-scanner e inseriamo il suo IP... ..il risultato sarà *(con un pò di fortuna) il nome del suo PC !!(risultato simile lo avremmo avuto col Ping -a) Proprio così, avete presente quando installate windows (o altri S.O.)che caricando i protocolli di rete NetBios e Client Microsoft, vi chiede di dare un nome al vostro PC ?.. bene, quello è il nome che apparirà in rete e sarà visualizzato dallo scanner!Quindi se sappiamo il nome dell'host ed a quale indirizzo di rete appartiene, in futuro potremo sempre intercettarlo (se sarà online, ovviamente) facendo una scansione degli indirizzi da 196.41.197.1 a 196.41.197.249 controllando 72 se apparirà il suo nome!Normalmente basta una scansione dei primi 50/90 n°, visto che difficilmente gli utenti della stessa rete si collegano nello stesso momento, inoltre una volta trovato e attaccato,se dovesse riconnettersi il server gli assegnerà il primo n° disponibile su quella rete, accellerando così le nostre ricerche. Prima ho detto "con un pò di fortuna" perchè alcuni non danno nessun nome al proprio mezzo (e fanno bene).. lo scanner in questo caso vi descriverà l'host come "undelevaraible host" anche se sarà attivo. In questo caso, ci sono diversi modi per farlo, uno di questi è senz'altro usando un port scanner! facendo una scansione delle porte, possiamo reperire alcune importanti informazioni. Se per esempio scopriamo che è attiva la porta 135 o 137 nel Pc della vittima, significa (quasi certamente) che utilizza WinNT, che non è un dettaglio da poco! Più ampliamo la scansione delle porte e più troviamo dei dettagli propri del computer del malcapitato. Un'altro metodo sarebbe quello di utilizzare nbtstat (di /windows) per controllare se ha il netbios attivo ( e magari condivide pure qualcosa eh..), ed avere altre info utili.. Insomma, con un pò di ingegno si determina l'obiettivo. Se la nostra vittima invece è un utente che frequenta le news, la ricerca sarà un pò più lunga ma con un pò di impegno si raggiungerà ugualmente l'obiettivo. In questo caso il suo IP lo potete vedere semplicemente sotto l'header (intestazione) del server NNTP (I news server comunicano fra loro attraverso il protocollo NNTP in modo che i messaggi inviati ad un server si trovino duplicati su tutti gli altri server) verificando nelle proprietà del msg... trovato ? ..bene , ma i msg che vengono postati sui NG sono ovviamente datati, oramai il suo IP non sarà più quello...però abbiamo comunque il suo indirizzo di rete ; per es. 195.12.97.X Dovreste capire già cosa fare... mano al Ping e via! Si incomincia a pingare l'indirizzo che abbiamo facendo una scansione dal primo n° ; ping -a 195.12.97.1 ping -a 195.12.97.2 ....... ecc.... dopo pochi tentativi di solito si becca subito un host attivo (se proprio volete, usate uno scanner) che come risposta ci darà il nome del server a cui è collegato.Se abbiamo il suo nome o alias possiamo comportarci come ho descritto prima, cioè usando un dns-scanner e verificare se il suo nome host coincide con quello che abbiamo. 73 Esiste anche un modo per cercare degli indirizzi di chi posta sulle news.... ed è anche comodo da usare , ma serve solamente se l'utente che state cercando ha tenuto visibile il suo vero e-mail address nelle proprietà di almeno un msg. In pratica vi è utile quando vi ricordate solo il nome del tizio e dove postava, ma non avete il suo indirizzo. Basta spedire una mail a rtfm.mit.edu (database per Usenet); mail-server@rtmf.mit.edu specificando nel corpo del messaggio ciò che desiderate ottenere; send usenet-addresses/nome o cognome della persona Se il nome della persona che cercate contiene della punteggiatura (oppure volete sapere in quale altro modo è possibile sfruttare questo servizio) vi conviene dare un'occhiata all'help del sito stesso; send usenet-addresses/help in ogni caso,nel giro di pochissimi giorni, otterrete quello che avrete chiesto sempre tramite posta elettronica (comodo no?). Se invece non siamo contenti di quello che abbiamo trovato e vogliamo sapere tutto il possibile sulla nostra vittima, allora si passa ai servizi che ci offre Internet... Netfind, Whois, Finger Si tratta di alcuni dei tanti servizi che la rete ci offre per reperire tutte le informazioni di cui abbiamo bisogno. Per poterne fare uso è necessario (o quasi, come vedremo più avanti) l'uso di TELNET. INTRODUZIONE A TELNET Telnet è un prog che permette ad un utente di comandare (in modo restrittivo) una shell remota, in modo da usufruire dei suoi servizi. Come si utilizza? Attiviamo il comando Telnet su Windows 7 e Windows vista! La prima cosa da fare è quella di aprire il pannello di controllo - programmi e funzionalità del vostro Windows 7. A questo punto, sulla barra di sinistra cliccate su Attivazione e Disattivazione delle funzionalità di Windows. Si aprirà una nuova finestra e spuntate le caselle 74 vicino alle voci: Telnet Client,Telnet Server (opzionale). A questo punto, confermate l’operazione e aspettate alcuni minuti che sia installato il servizio. Una volta completata l’installazione da esegui digitare telnet ok, tramite il prompt dei comandi, potrete utilizzare il Telnet. Se poi vi procurate un prog Telnet un pò più decente (tipo Netterm, ma ce ne sono molti altri) che supporti il comando copia-incolla, è ancora meglio (vedrete poi perchè), ... ma questo è un'altro discorso, per i nostri scopi va bene anche quello di windows.Il comando per avviare una connessione è: telnet host_remoto n°porta dove host_remoto sarà l'indirizzo del server host al quale dovremo collegarci, mentre n°porta è la porta alla quale ci si collega per avere un determinato servizio. Se per esempio vogliamo collegarci ad un servizio mail (SMTP) la porta sarà la n° 25 , per le news è 119, e così via...Facciamo un esempio; se ci vogliamo collegare al servizio FTP della Tin, il nostro comando sarà: telnet ftp.volftp.tin.it 21 //la porta 21 è per il servizio FTP Quando vedremo apparire un messaggio con la descrizione del server significa che la connessione è avvenuta.Qui di seguito riporterò le porte principali tra le WKS (Well Known Services) utilizzabili su un server telnet. Per WKS si intendono quelle porte (le prime 1024) che hanno di regola un valore fisso stabilito per un determinato servizio (tenete conto comunque che in totale sono 65535). Porta Servizi 7 [echo] Qualunque cosa scrivi, l'host te lo ripete 11 13 15 21 23 25 39 43 53 70 79 80 110 [systat] [daytime] [netstat] [ftp] [telnet] [smpt] [rlp] [whois] [domain] [gopher] [finger] [http] [pop] Molte info sugli utenti Ora e data dell'host locale Informazioni sul Networks (!) Servizio trasferimento files Il tuo log in. Servizio mail (spedizione) Risorse dell'ubicazione Info su host e reti Nome del server Servizio gopher Informazioni sugli utenti Sevizio Web Servizio mail (ricevente) 75 119 443 512 513 [nntp] [shttp] [biff] [rlogin] [who] 514 [shell] [syslog] 520 [route] Servizio Usenet Altro servizio Web Notificazione della posta Login remoto Who remoto Comandi in remoto, nessuna pwd Logging del sys remoto Protocollo di instradamento. Bene, chiusa questa piccola parentesi sul funzionamento di Telnet, possiamo incominciare...... Collegandosi a http://www.whatismyip.com/tools/ Si possono usufruire di servizi on line quali: ip address lookup, ip whois lookup, host name lookup, server headers check, user agent. (tool approfonditi nel vol 3°) In alternativa si può utilizzare il software IP-Tools (allegato al CD vol 3°) Whois Questo servizio è presente in diversi server e contiene un database dove all'interno sono memorizzati nomi, cognomi, indirizzi (e-mail) di milioni di persone che frequentano Internet.Tramite questo servizio potremo reperire inofrmazioni su un determinato utente partendo dal suo nome e cognome ( sempre che sia presente nel database), vediamo un'esempio; uno dei server più capienti è senz'altro internic.net, dove per collegarsi digiteremo da DOS: c:\windows> telnet whois.internic.net 43 ..dove "43" è ovviamente il n° della porta per tale servizio. E'possibile anche non specificare la porta, purchè venga utilizzato il nome del server per intero (whois.dominio.net). Basta attendere un'attimo e riceveremo la risposta dal server.... al prompt digiteremo prima il cognome poi il nome... whois: pawell, jhon ... e avremo così di seguito le informazioni relative alla persona che stiamo cercando. Ovviamente per avere maggiori probabilità di riuscita è essenziale utilizzare il server whois più vicino alla vittima (e questo vale anche per gli altri servizi che tratterò di seguito)...Potreste provare addirittura (se siete fortunati) a veri- 76 ficare se il provider della persona che cerchiamo abbia attivo questo tipo di servizio, in questo caso la strada sarà molto più semplice ed efficace. Se siete incerti del nome potrete inserire solo il cognome,in questo caso whois vi elencherà tutti gli utenti con la possibilità di scegliere quello che volete.La possibilità di utilizzare whois si estende anche al Web (oltre ai soliti programmini), ci sono infatti numerosi server che offrono questo servizio via http e che ne consentono quindi l'utilizzo con più semplicità ( volete la pappa pronta eh ??), come per esempio l'ottimo database Europeo "RIPE" .. http://www.ripe.net (nella sez whois) Se desiderate invece un'elenco dei server whois potete trovarlo a: ftp://sipb.mit.edu/pub/whois/whois-servers.list Finger Come per whois, finger è un'altro strumento molto utile per reperire delle info sugli utenti, allo stesso modo si apre una sessione telnet, ma la porta in questo caso è la 79 (è sempre utile leggersi l'help del server prima di utilizzarlo): telnet arpanet.it 79 La quantità di informazioni varia da server a server, così come il metodo di ricerca, un difetto questo che rende il servizio non molto affidabile; potremmo non trovare niente su un determinato server e trovare di tutto su un'altro. I termini di ricerca in questo caso sono di vario tipo ma diciamo che normalmente viene utilizzato l'indirizzo e-mail della vittima... : kevin@netware.net ...dategli tempo di elaborare e (se saranno presenti) vi troverete davanti le informazioni riguardanti l'utente, sarete anche avvisati (sempre che il server lo permetta) se l'utente è collegato in rete!! In alternativa se la chive di ricerca è incerta potrete utilizzare finger in questo modo.. : finger@netware.net ..per avere un elenco degli utenti appartenenti al sito "netware.net" (anche se non è molto consigliabile farlo su grossi siti, visto l'interminabile elenco di utenti). 77 Come già dovreste sapere molti server disattivano questo tipo di servizio perchè particolarmente debole agli attacchi (///* ^s, per es.), qundi sarà vostro impegno trovarne uno adatto al prorio bisogno. Netfind Ora passiamo ad un sistema ormai in disuso che è comunque utile conoscere e sapere come funziona, perchè nel caso in cui avrete la possibilità di usufruirne, diventerebbe uno strumento utilissimo.Il server netfind viene utilizzato nel caso in cui siamo a conoscenza del nome o cognome della persona che cerchiamo, del dominio oppure anche tramite alcune parole chiave che vi saranno spiegate nell'help del server.E' ovvio quindi che netfind è un servizio utile solo per una ricerca più mirata, ovvero se siamo già a conoscenza di alcune info sul nostro bersaglio.Per utilizzare questo servizio sarà sufficiente collegarsi con telnet ad un server netfind, entrare con "netfind" quando chiede il login e dare un'invio quando richiede la password (non tutti i server utilizzano però questo protocollo).Vi troverete davanti la solita descrizione del server ;-) ed un'elenco di altri servizi netfind disponibili in rete.Una volta dentro dovrete inserire i dati per la vostra ricerca; supponiamo di dover cercare un tal Kevin su un dominio "netware.net".. netfind: kevin netware.net bisognerà inserire prima il cognome (o il nome), poi il dominio o qualunque parola chiave che possa identificare la persona...ecco tutto quello che dovrete fare. Netfind si preoccuperà di effettuare una ricerca nel dominio da voi indicato, riferendovi tutte le informazioni disponibili e , come per finger, se l'utente da voi selezionato è attualmente in rete. Interessante no?! (Ricordatevi che le chiavi di ricerca vanno divise da spazi e non da punteggiature). Più la ricerca sarà precisa e più sarà veloce ed efficace il risultato, se invece dovrete effettuare dei tentativi... allora armatevi di pazienza.Fra i più grandi server netfind và considerato dis.internic.net, ma ce ne sono diversi sparsi per molti paesi, eccone alcuni che ho potuto verificare: netfind.fnet.fr netfind.uni-essen.de ds.internic.net netfind.elte.hu netfind.icm.edu.pl nic.uakom.sk bruno.cs.colorado.edu netfind.vslib.cz 78 (Francia) (germania) (USA) (Ungheria) (Polonia) (Slovenia) (USA) (Rep.Ceca) Non ho ancora verificato se esiste un server netfind in Italia, nel caso lo sappiate mandatemi pure una mail! Come whois anche netfind ha la sua presenza sul Web ed esistono vari Url dove è possibile usufruirne; non stò ad elencarli perchè potete facilmente trovarli tramite un motore di ricerca! ricordatevi che un buon hacker ha la capacità di trovare chiunque nella rete, dovunque esso sia, qualsiasi cosa faccia... per questo non vi augurerei mai di incontrarlo!! Telnet per spedire la posta Telnet è il principale protocollo di Internet per realizzare delle connessioni con macchine in remoto. Dà la possibilità di essere fisicamente sul proprio sistema e lavorare su un altro che può essere nella stanza accanto come dall'altra parte del mondo, la propria macchina (locale) diventa così un terminale remoto: tecnicamente l'operazione è definita Remote Login. Ad esempio: se ci si trova lontani dal proprio ambiente di lavoro e si ha bisogno di controllare la posta elettronica, basta trovare un qualsiasi accesso ad Internet con servizio di telnet e collegarsi al proprio server di posta elettronica. Esistono due tipi di server per la posta elettronica: SMTP e POP3 che potrebbero anche essere la stessa macchina. SMTP è la sigla che indica i server di posta in uscita, POP3 i server di posta in entrata. In poche parole, con un server SMTP si mandano le email, con un server POP3, invece, si ricevono le email sul proprio computer client. Il nostro client può inviare la nostra missiva grazie ad una opportuna sessione Telnet, tramite questa si manda il nostro messaggio al server SMTP il quale a sua volta lo manda al server POP3 di destinazione e, tramite una sessione Telnet compiuta dal ricevente, è possibile scaricarla nel computer client dell'amico che riceverà la lettera elettronica. Definiamo anche cos'è un HOST, un HOST non è altro che un codice alfanumerico che identifica un computer in rete, per esempio pp1518.actarus.it è un Host, esso ci serve per distinguere quel computer da tutti gli altri che si trovano in rete. Ad ogni Host corrisponde un indirizzo IP. Vediamo un esempio di spedizione e ricezione di email, puntualizzando i passaggi. Supponiamo che actarus@vega.it mandi una mail a venusia@venus.it, il computer client di actarus apre una sessione Telnet e manda la mail attraverso il server 79 di posta in entrata di tipo SMTP smtp.vega.it. Il server SMTP la recapita al server di posta in uscita di tipo POP3 venus pop.venus.it il quale a sua volta lo fa ricevere a Venusia sul suo client tramite una propria sessione Telnet. Tutti i passaggi che un messaggio ha subito da un server all'altro compaiono negli 'Headers'. Fatta questa breve descrizione generale di come avviene la spedizione di una email, vediamo il comando telnet nella sua essenza. La sintassi per connettersi ad un servizio qualsiasi è la seguente: telnet provider.it porta Un server ha un nome unico (es: pippo.it), ma ad ogni servizio che esso offre è associata una corrispettiva porta (es. 25 SMTP, 21 FTP, 110 POP3, 119 NNTP etc.), quindi se ci colleghiamo alla porta 25 ci risponderà (sempre perché è un numero unico valido per tutti i server) il servizio SMTP, ovviamente il servizio deve essere attivo sul server cioè ci deve essere "qualcuno" in ascolto sulla porta 25. Per collegarci a un server SMTP del provider Libero.it, digiteremo telnet libero.it 25. Comandi SMTP Una volta che ci siamo connessi al server smtp possiamo cominciare a digitare comandi. Eccone una lista: HELO provider.it Questo comando serve per salutare il server SMTP il quali ci riconoscerà dal nostro IP. Il server SMTP non permette l'autenticazione, per questa funzione accorre usare il server POP3 che vedremo più avanti. MAIL FROM: <nick_proprio@provider.it> Questo comando serve per indicare l'indirizzo email del mittente, è nostra cura dare l'email esatta, in caso contrario il destinatario potrà non riconoscerci. Non omettere le parentesi angolari. RCPT TO: <nick_destinatario@provider.it> Questo comando serve per indicare l'indirizzo email del destinatario. Anche qui non omettere le parentesi angolari. DATA A questo comando segue una riga vuota che va riempita con la prima riga del no- 80 stro messaggio, per terminare l'inserimento è sufficiente una riga contenete il solo punto: ".". VRFY: <nick@provider.it> Questo comando serve per accettarsi dell'esistenza di un indirizzo email. HELP oppure HELP <comando> Fornisce la lista dei comandi disponibile oppure da informazioni su un singolo comando. Vediamo una sessione di Telnet per spedire una email, supposto che l'autenticazione sia già stata fatta, in caratteri monospace e in grassetto i comandi da digitare e di seguito la risposta del server. Supposto di avere un programma di posta elettronica normale tipo Mozilla, Thunderbird o OutLook, ci autentichiamo facendo un semplice "get message"/"scarica la posta" sul nostro account di posta, in alternativa ci si può autenticare con telnet tramite una sessione di collegamento al POP3 che vedremo più avanti. SESSIONE SMTP: telnet smtp.vega.it 25 Trying 100.99.198.97... Connected to vega.it. Escape character is '^]'. 220 vega.it ESMTP Sendmail 8.12.9 ready at Sun, 01 Sep 2003 00:00:00 +0200 (CEST) helo vega.it 250 vega.it Hello <Nome del proprio pc> [<IP del proprio pc>], pleased to meet you help 214-2.0.0 214-2.0.0 214-2.0.0 214-2.0.0 214-2.0.0 214-2.0.0 214-2.0.0 214-2.0.0 email to 214-2.0.0 214-2.0.0 This is sendmail version 8.12.9 Topics: HELO EHLO MAIL RCPT DATA RSET NOOP QUIT HELP VRFY EXPN VERB ETRN DSN AUTH STARTTLS For more info use "HELP <topic>". To report bugs in the implementation send sendmail-bugs@sendmail.org. For local information send email to 81 Postmaster at your site. 214 2.0.0 End of HELP info mail from: <actarus@vega.it> 250 2.1.0 <actarus@vega.it>... Sender ok rcpt to: <venusia@venus.it> 250 2.1.5 <venusia@venus.it>... Recipient ok data 354 Enter mail, end with "." on a line by itself subject: Importante! ciao! Ci vediamo stasera? baci. . 250 2.0.0 <codice del messaggio> Message accepted for delivery quit 221 2.0.0 vega.it closing connection Connection closed by foreign host. Se non abbiamo eseguito l'autenticazione il server ci risponderà con: 550 5.7.1 actarus@vega.it... SMTP relay denied, authenticate via POP/IMAP first Avrete sicuramente notato che siete stati voi a inserire il mittente che può essere così facilmente falsificato. Fate attenzione che il server SMTP comunque aggiunge agli header dell'email il vostro indirizzo IP. Notate infatti che come risposta del saluto "helo", il server smtp vi dice il nome del vostro computer e anche l'IP, questi dati verranno aggiunti alla vostra email dal server e quindi la ricevente li potrà vedere. Al massimo potete confondere la mittente aggiungendo dei dati fasulli all'interno del comando "data" ma un occhio esperto capirà che siete stati voi a spedire la missiva. (Per risalire al computer che ha mandato la email è spesso, ma non sempre, necessario ricorrere a dati sensibili e quindi solo la magistratura può in pratica risalire a voi). 82 Comandi POP3 Connettiamoci al nostro ISP con telnet, esattamente al suo server di posta in entrata: telnet pop.venus.it 110 la porta 110 è ovviamente quella del server che ci da il sevizio POP3. Ecco la lista dei comandi: user venusia pass segreto (il nostro nome utente e la nostra password.) LIST oppure STAT per ottenere la lista e la dimensione dei messaggi, List da la lista completa mentre Stat da il valore complessivo. RETR: <nr del messaggio> per leggere il messaggio desiderato. TOP <nr del messaggio> <nr righe da vedere> permette di vedere solo le prime nr righe del messaggio nr. DELE: <nr del messaggio> per cancellare un messaggio. Anche se esso viene effettivamente eliminato solo dopo essere usciti dalla connessione con QUIT. RSET per eliminare la marcatura fatta con "DELE". All'uscita, "QUIT", non verrà cancellata alcuna email. QUIT la connessione termina e vengono cancellati i messaggi selezionati con DELE. Ecco una sessione Telnet per prelevare la posta: SESSIONE POP3: telnet pop.venus.it 110 Trying 193.70.192.70... Connected to pop.venus.it. Escape character is '^]'. +OK POP3 server ready (7.0.019) <xxx@pop.venus.it> 83 user venusia +OK Password required pass segreta +OK 4 messages list +OK 1 871 2 6533 3 3980 4 743 . fornisce la lista delle email in ordine di arrivo al server pop3 e la loro lunghezza in byte retr 4 +OK 743 bytes Return-Path: <actarus@vega.it> Received: .... Date: Sun, 01 Sep 2003 00:00:00 +0200 (CEST) From: actarus@vega.it Message-Id: <<codice del messaggio>@vega.it> subject: Importante! ciao! Ci vediamo stasera? baci. . abbiamo scaricato l'ultimo messaggio che è arrivato al server: il numero 4 da 743 byte. dele 4 +OK message marked for deletion stat +OK 3 11384 3 messaggi rimanenti con la lunghezza complessiva quit +OK POP3 server closing connection Connection closed by foreign host. solo all'uscita i messaggi marcati vengono cancellati 84 Una piccola nota, il server POP3 di Libero.it è popmail.libero.it. Si tenga conto che quasi tutti i server smtp pretendono di inviare solo la posta dei propri utenti e rifiutano gli estranei. Nel caso di libero e altri occorre collegarsi via modem all'ISP Libero (cioè "telefonare" a Libero) per spedire la corrispondenza tramite i suoi server. Come può servire oggigiorno o in futuro un sistema così antiquato? Le risposte sono molteplici ma una può essere avere sotto controllo totale la posta. Praticamente può essere usato per cancellare i messaggi troppo grandi verificando le prime linee in modo da essere certi che sia spam. Senza dimenticare che tutti i mailer usano una sessione telnet per gestire la posta con i comandi che abbiamo visto anzi con molti meno, quindi l'azione diretta sul server da possibilità di ordine superiore. Ultimamente mi capita di essere bersaglio di computer infetti che mandano virus sul mio server di posta elettronica con nomi a caso e come dominio kensan.it, mi sono arrivate decine di megabyte in poche ore intasandomi la mailbox. In questi casi la soluzione migliore è accedere con una sessione telnet alla casella elettronica, cancellare un po' di messaggi con il comando DELE e poi agire a livello di webmail per cancellare la rimanente parte di spam. In questo modo ho evitato di scaricare lo spam per liberare la mia mailbox. N.B. Il comando Telnet sarà trattato in modo approfondito nel Vol 2°, in quanto è utilizzato dagli hacker. 85 La trasmissione dei dati Guida TCP/IP Avanzato: Miliardi di bit viaggiano ogni giorno sulla Rete. Vi siete mai chiesti come fanno ad arrivare al corretto destinatario? In questo articolo vi presentiamo "la suite di protocolli TCP/IP" cioè le regole utilizzate per la trasmissione su Internet. Il nome completo è TCP/IP Internet Protocol Suite, ed è un insieme di protocolli di trasmissione di cui i due principali sono appunto il TCP (Transmission Control Protocol) e l'IP (Internet Protocol). Ma che cosa è esattamente un protocollo? Essenzialmente è una serie di regole per comporre dei messaggi e per far sì che essi possano essere scambiati tra due macchine. Non stiamo parlando solo di computer. Anche una centrale telefonica meccanica può ricadere in questa definizione. Un protocollo può contenere regole estremamente dettagliate, come quelle che identificano il significato di ogni singolo bit nella costruzione di un messaggio, oppure fornire uno scenario di alto livello, come per esempio definire come avviene il trasferimento di un file da un computer a un altro. OSI MODEL Una generica architettura di trasmissione è formata da una torre a più piani, dove ogni piano rappresenta una precisa responsabilità nella trasmissione dei messaggi. Alla base della torre sta la porta di accesso alla rete fisica, che potremmo pensare come una rete di strade. Ogni piano prende il messaggio che arriva dal piano superiore, lo mette in una busta con alcune informazioni aggiuntive, e lo passa come messaggio al piano inferiore. Le regole di comunicazione tra i vari piani sono dette interfacce. Il messaggio risultante, formato da tante buste una dentro l'altra, viene immesso nella rete dalla porta che si trova alla base della torre. Una volta arrivato al piano terreno infatti, esso viene trasportato alla torre di destinazione e da qui risale un piano dopo l'altro fino all'ultimo piano, detto anche livello applicativo. Ogni piano della torre di destinazione apre solo la busta che gli compete e usa le informazioni aggiuntive per recapitare la busta successiva al piano superiore. Le informazioni aggiuntive rappresentano il protocollo di comunicazione. Ogni piano comunica quindi solo con il piano corrispondente. Esempio: il direttore della Pippo e Figli manda una lettera riservata al direttore della Pluto e Consorte. Il modo con cui i due comunicano, per esempio i riferimenti a lettere precedenti, lo stile della lettera, il modo di salutare alla fine della lettera, e così via, rappresenta il protocollo ad alto livello, cioè quello applicati- 86 vo. Per spedire la lettera il direttore lo passa alla sua segretaria. Ciò avviene secondo le regole interne della Pippo e figli, ed è perciò un'interfaccia. La segretaria prende la lettera, la mette in una busta aggiungendo il nome del destinatario e la scritta RISERVATO. Queste informazioni sono per la sua controparte nella Pluto e consorte, ed è quindi anch'esso un protocollo. La busta viene quindi passata all'Ufficio Posta dell'edificio secondo la procedura ordinaria (altra interfaccia), il quale aggiunge l'indirizzo completo, il CAP e altre informazioni necessarie alla spedizione, e la passa quindi al corriere, che rappresenta il meccanismo fisico di trasferimento del messaggio. Terzo protocollo. Quando la lettera arriva, questa viene gestita dall'Ufficio Posta della Pluto e consorte che, dopo aver buttato la busta esterna con l'indirizzo dell'edificio, la passa alla segreteria del direttore. Questa registra l'arrivo della missiva, la toglie dalla busta più interna, e poi consegna la lettera vera e propria al direttore della Pluto e consorte. È evidente che perché il sistema funzioni bisogna che i vari protocolli siano rispettati da entrambe le aziende. Mentre infatti le interfacce possono essere diverse (ogni azienda ha le sue procedure interne), i protocolli devono essere stati concordati prima, altrimenti alcune informazioni potrebbero andare perse, o addirittura la lettera potrebbe non essere recapitata in tempo. Pensate a una segretaria italiana che riceve una busta da una consociata asiatica con sopra scritto URGENTE in cinese! Ne nasce una considerazione importante. La base di ogni protocollo è il concetto di standardizzazione. Più vasta è l'accettazione dello standard, più forte e diffuso è il protocollo. Gli standard internazionali sono in genere i più importanti, ma non sempre. Un esempio è proprio il TCP/IP, nato per volontà dell'agenzia americana DARPA (Defense Advanced Research Projects Agency) e poi diventato di fatto il maggior sistema di protocolli per l'interconnessione di reti a livello mondiale. Internet Internet è fatta a strati, Internet è basato su tre livelli concettuali: il livello applicativo (Application Services), quello del trasporto (Reliable Stream Transport Service) e quello della spedizione dei pacchetti (Connectionless Packet Delivery Service). Per capire il TCP/IP, è necessario a questo punto capire bene che cosa è Internet. Tanto per cominciare Internet non è una rete di comunicazione. Una rete di comunicazione è in genere legata alle necessità specifiche di chi l'ha disegnata e dell'hardware utilizzato per implementarla. Costruire una rete ideale che vada bene per qualsiasi esigenza, o pensare di poter limitare a un solo tipo di hardware l'implementazione di una qualunque rete non solo non è fattibile, ma neanche auspicabile, date le limitazioni delle tecnologie attuali. A volte è necessario far correre i dati molto velocemente in un ambito molto ristretto, come per esempio all'interno di un edificio. Altre volte si ha l'esigenza di trasmettere dati a migliaia di chilometri di distanza in modo molto affidabile, anche se 87 questo può significare un rallentamento nella velocità di trasmissione. Se si cercasse di utilizzare lo stesso hardware in entrambi i casi, i costi sarebbero assolutamente inaccettabili. Internetworking La soluzione è l'interconnessione delle reti, o internetworking. Grazie a ponti di collegamento (detti gateway) e la definizione di opportuni protocolli, si possono collegare fra di loro reti anche molto diverse, fornendone agli utenti una visione comune. Questa è la forza di Internet rispetto alle varie reti proprietarie, e di conseguenza del TCP/IP sui vari protocolli proprietari. Il TCP/IP è un insieme di regole pubbliche, aperte a tutti, o come si dice nell'ambiente, un sistema aperto (open system), che permette l'interconnessione di reti anche molto differenti, indipendentemente dalla tecnologia usata da ogni rete. I suoi principali vantaggi sono appunto l'indipendenza dalle tecnologie delle singole reti interconnesse, la possibilità di far comunicare fra di loro ogni computer connesso al sistema, la possibilità di trasmettere conferme di ricezione (acknowledgement) direttamente dal destinatario al mittente, e soprattutto una notevole quantità di protocolli applicativi per qualunque possibile bisogno, come vedremo più avanti. Il TCP/IP definisce quindi una unità di trasmissione dati chiamata datagram, e le regole da seguire per trasmettere un datagram in una particolare rete. packet-switching Il principio che sta alla base dell'interconnessione è quello di schermare le applicazioni dalle caratteristiche fisiche delle reti in modo semplice e flessibile. Questo avviene attraverso un livello intermedio che si occupa di spedire e ricevere piccoli pacchetti di dati fra due punti qualsiasi del sistema di reti. Questo meccanismo si chiama packet-switching. Esso consiste nella divisione di ogni messaggio in un certo numero di pacchetti di dati. Ogni pacchetto è formato da poche centinaia di byte, e contiene una intestazione che fornisce informazioni sul destinatario e su come raggiungerlo. Questo meccanismo ha il vantaggio di ottimizzare l'utilizzo della rete, parallelizzando la trasmissione di più messaggi contemporaneamente. Lo svantaggio è che ogni nuovo sistema che si aggancia alla rete per trasferire dati riduce la disponibilità della rete per tutti gli altri sistemi già connessi. Una rete infatti ha una certa capacità ben definita, che dipende sostanzialmente dalla tecnologia hardware e software che utilizza. Tale capacità viene misurata in bit per second (bps). Questa grandezza non rappresenta la velocità dei dati in rete, come si potrebbe pensare in prima istanza, bensì dà una misura del numero massimo di bit che possono essere trasmessi nella rete in un secondo. La velocità reale di un singolo messaggio dipende da tanti fattori, come il numero di sistemi che stanno utilizzando la rete, la qualità delle connessioni e di conseguenza il numero di tentativi necessari 88 per trasferire correttamente i dati, le modalità di trasmissione e i dati aggiuntivi necessari al trasferimento degli stessi. circuit-switching Ci sono altri modi per trasferire dati in una rete: per esempio, quando fate una telefonata, la rete stabilisce un collegamento diretto fra il vostro telefono e quello della persona chiamata. A questo punto il telefono incomincia a campionare il microfono della vostra cornetta in modo continuo, trasferendo il segnare al ricevitore all'altro capo. Il tutto a 64.000 bit per secondo, che è la velocità di campionamento necessaria a digitalizzare la voce. Questo avviene comunque, indipendentemente dal fatto che stiate parlando o meno. Anche se state in silenzio la linea è saturata al massimo della sua capacità. Questo meccanismo è detto circuit-switching. Al contrario del meccanismo usato dal TCP/IP, quello cioè a pacchetti, la linea è completamente assegnata alla comunicazione in atto, per cui il fatto che altri stiano telefonando non riduce la capacità della connessione. D'altra parte la linea è utilizzata completamente indipendentemente dal fatto che ci siano o meno dati da trasferire. Di qui gli elevati costi di tale meccanismo. La telefonata, infatti, la pagate lo stesso sia che parliate molto velocemente, sia che stiate completamente in silenzio. Questo meccanismo è troppo costoso per una rete informatica, specialmente se si tiene conto che la disponibilità di tecnologie hardware sempre più raffinate e veloci per il trasferimento dei dati bilanciano in buona parte quello che è uno dei punti deboli del sistema a pacchetti, e cioè l'impossibilità di garantire a ogni utente e in ogni momento una certa capacità di trasferimento ben definita. “internet” e “Internet” Torniamo al sistema a pacchetti. Per trasferire dati da un sistema a un altro ogni sistema ha un nome unico ben definito. Non esistono cioè due sistemi con lo stesso nome, anche se in reti diverse, indipendentemente da quale è il nome locale di un sistema nella sua rete di appartenenza. All'interno di ciascuna rete, i vari computer usano la tecnologia hardware e software specifica di quella rete. Tuttavia, grazie a questo strato intermedio di software, le varie applicazioni hanno una visione unica e globale del sistema interconnesso di reti, detto appunto internet. Notate la "i" minuscola. Il concetto di internet è infatti quello appena descritto. Viceversa Internet con la "I" maiuscola, identifica quel sistema di reti, basato sull'architettura internet, che viene detto anche Connected Internet. internet gateway (IP router) La connessione tra due reti avviene attraverso macchine opportune che sono collegate fisicamente a entrambe le reti, e hanno la responsabilità di far passare i vari pacchetti da una rete all'altra e viceversa. Tali macchine sono dette internet gateway, o anche IP router. Sono loro il vero elemento portante di una internet. Ogni router non solo deve sapere che determinati pacchetti vanno passati da una 89 rete a un'altra, ma deve passare dall'altra parte anche pacchetti destinati a ulteriori reti connesse attraverso altri router. Essi però ragionano solo in termini di reti, non di destinazione finale. A un router non interessa chi è effettivamente il destinatario di un pacchetto, ma solo a quale rete appartiene. Questo semplifica molto l'implementazione di un router. Alla base del meccanismo dei router c'è l'indirizzo IP, o IP address. IP address Ogni cosa che conosciamo ha un nome. Cane, casa, auto, e via dicendo. Se ci interessa specificare meglio ciò di cui stiamo parlando, possiamo assegnare un nome anche a un sottogruppo di cose. Così abbiamo che i cani bassotti sono alquanto diversi dai San Bernardo, una catapecchia non è certo una villa, e una Ferrari costa un po' più di una Cinquecento. Se poi dobbiamo identificare una cosa in modo chiaro e univoco, è necessario assegnarle un nome che solo quella cosa ha. Già un nome come Mario Rossi non va bene, perché non è unico, e comunque, anche se scegliessimo oggi un nome veramente strano e originale, non avremmo la garanzia in futuro di non ritrovarci con un caso di omonimia. Ecco allora le targhe per le automobili, i codici fiscali per le persone, i numeri di telefono, e via dicendo. Ognuno di questi nomi ha tre caratteristiche. La prima è che esiste un organo competente centrale che li assegna, proprio per garantirne l'univocità. La seconda, è che hanno una struttura a sottogruppi. Esistono cioè degli elementi che garantiscono l'univocità a un certo livello, all'interno del quale esiste una certa libertà di scelta, e così via, livello dopo livello. Per esempio, il codice fiscale viene costruito in modo che un uomo e una donna non possano mai avere lo stesso codice, anche se fossero nati lo stesso giorno, nella stessa città e si chiamassero nello stesso modo. Similmente, i numeri di telefono di due città diverse si distinguono per il prefisso e se queste si trovano anche in stati diversi, per il prefisso internazionale. Affinché internet possa rappresentare un sistema universale di comunicazione, permetta cioè di far comunicare qualunque macchina connessa a una delle sue reti con una qualsivoglia altra macchina connessa alla stessa o a un'altra rete, è necessario fornire ogni macchina di un nome unico a livello globale. Internet fornisce ogni sistema di un nome, che identifica il sistema stesso, di un indirizzo, che mi dice dove si trova il sistema, e di un cammino, che mi dice come raggiungere il sistema. Ogni macchina connessa a una rete è detta host, nella terminologia internet. Lo stesso termine ha significati differenti in altri contesti informatici, come per esempio in quello client/server, o nel caso di mainframe. Attenzione a non fare confusione quindi. In internet un host può essere anche un vecchio 8088 con 640K di RAM e 10M di disco fisso. 90 IP address, classi L'indirizzo, o IP address, è un campo composto da 32 bit. I primi bit permettono di distinguere 5 forme standard identificate da una lettera dell’ alfabeto, e dette classi. Le prime tre classi dell'IP address contengono sia l'indirizzo di una rete (netid), sia quello di una macchina nella stessa (hostid). In realtà l'indirizzo non identifica necessariamente una macchina, ma una connessione alla rete. Per esempio, un router ha almeno due indirizzi, avendo connessioni ad almeno due reti. Questo in quanto un router appartiene a entrambe le reti, e quindi sono necessari due indirizzi dato che un IP address ha posto per un solo indirizzo di rete. Se l'indirizzo dell'host è 0, allora l'IP address si riferisce alla rete stessa. Se viceversa tutti i bit riservati all'indirizzo dell'host sono 1, allora l'indirizzo viene utilizzato per identificare tutti gli host della rete (broadcasting). Uno speciale indirizzo formato da 32 bit posti a uno (255.255.255.255)è chiamato local network broadcast address e serve solo in casi molto particolari. Il concetto di broadcasting è quello della diffusione a tutto raggio, un po' come fa un'emittente radiofonica. In generale internet interpreta i campi formati da tutti uno come all, cioè "tutti", mentre quelli formati da tutti zero come this, cioè "questo", "qui". Questo per quanto riguarda le classi A, B e C. La classe D è usata per un particolare tipo di distribuzione dei dati detto multicasting. La classe E è riservata a usi futuri. Dato che specificare ogni singolo bit di un indirizzo IP sarebbe alquanto poco pratico e di scarsa leggibilità, la convenzione è quella di leggere ogni ottetto, cioè ogni gruppo di 8 bit, come un intero, e di separare i quattro ottetti con un punto. Oltre a i casi speciali già descritti, l'indirizzo di classe A 127.0.0.0(loopback) è riservato per un particolare processo di test che rimanda indietro i dati al mittente senza propagarli nella rete. Uno dei vantaggi di questo schema è la possibilità da parte dell'organismo centrale che assegna gli indirizzi (Network Information Center) di delegare ai responsabili delle singole reti l'assegnazione di una parte dell'indirizzo all'interno della rete stessa. La cosa avviene un poco come con i numeri di telefono. A livello internazionale ogni stato ha il suo prefisso internazionale. Per esempio, per l'Italia, è 39. All'interno ogni stato divide il paese in aree geografiche a cui assegna un ulteriore codice. Per esempio, Roma è identificata dal 06, Milano dal 02, Firenze da 055, e così via. All'interno poi della provincia o della città possono essere definite ulteriormente sottoaree a cui si assegnano due, tre o quattro cifre. Per esempio 529 oppure 7054. Infine ogni telefono in tali aree avrà il suo numero. Così, se Mr. Smith deve chiamare dagli Stati Uniti il signor Mario Rossi abitante all'EUR, a Roma, comporrà per esempio il numero 011.39.6.529.4467. In questo caso lo 011 serve per uscire dagli USA, un po' come il nostro 00. 91 Analogamente in internet i numeri di classe C sono assegnati alla piccole reti, quelle cioè con meno di 256 host, quelli di classe B alle reti con al massimo 65536 host, e quelli di classe A alle reti con oltre 16 milioni di host. Ogni rete decide poi come suddividere gli indirizzi che gli sono stati riservati al suo interno come meglio crede. Ovviamente, una internet privata non ha la necessità di seguire queste regole, né a utilizzare indirizzi assegnati dal NIC, ma il non farlo potrebbe impedire in futuro la connessione alla TCP/IP Internet. Name server Dato che l'indirizzo può essere a volte abbastanza ostico da ricordare, è possibili associare a ogni host anche un nome, che può essere utilizzato come mnemonico per un IP address, e la cui risoluzione è responsabilità di particolari macchine chiamate name server. In realtà il name server è un programma software che può girare in qualunque macchina connessa alla rete, e che mantiene l'associazione tra nomi e indirizzi IP, fornendo tali corrispondenze quando richiesto da un altro programma chiamato name resolver. Di fatto, si preferisce far girare il name server su una macchina dedicata, che prende anch'essa, a questo punto, il nome di name server. Potete pensare al name server come a una agenda telefonica elettronica, che contiene una lista parziale di nomi e numeri telefonici. In internet infatti, non esiste un singolo elenco telefonico, ma tanti name server che cooperano per fornire quello che è un vero e proprio elenco distribuito. In realtà il sistema funziona in modo gerarchico, un po' come se una certa agenda contenesse solo i prefissi internazionali e il puntatore alle agende di ogni singolo stato, le quali a loro volta contengono i prefissi regionali e i puntatori agli elenchi regionali, e così via, fino ad arrivare all'agenda che contiene solo le estensioni telefoniche di un singolo edificio. DNS e domini I nomi Internet sono basati su una serie di regole dette Domain Name System (DNS), che si basa appunto su uno schema gerarchico in cui il nome è suddiviso in varie parti separate fra loro da punti. Per esempio, vnet.ibm.com. Ogni suffisso è a sua volta un dominio. Quindi, nel nostro esempio, ibm.com è un dominio di secondo livello, mentre com è un dominio di terzo livello. Una rete può richiedere di essere registrata come categoria, oppure usando il dominio geografico. Per esempio, l'Italia ha come dominio base it. Supponiamo che il governo decida di costruire un insieme di reti cittadine interconesse fra loro e connesse a Internet. Si può pensare di assegnare a ogni provincia un dominio xxxxxx.it. Per esempio, Firenze avrebbe come dominio firenze.it. L'università di Firenze potrebbe registrare la sue rete come unifi.edu, e in tal caso sarebbe direttamente il NIC a dover dare l'autorizzazione per tale nome, essendo il dominio edu sotto responsabilità dell'organismo centrale di controllo, oppure potrebbe decidere di far parte del dominio cittadino, come unifi.firenze.it, e quindi potrebbe richiedere il permesso di registrare tale nome direttamente all'amministratore del dominio di 92 Firenze. A questo punto, se il dipartimento di Fisica di Arcetri vuole registrare un proprio dominio, deve chiederlo solo all'Università stessa, ricevendo così, per esempio, arcetri.usf.fi.it oppure fisica.usf.fi.it. Esiste una piccola complicazione. Ogni oggetto connesso alla rete ha un tipo. Oggetti di tipo diverso possono avere lo stesso nome. Per cui, per poter risolvere un nome e ottenere indietro l'indirizzo IP, è necessario anche specificare il tipo di oggetto: macchina, utente, casella postale, e via dicendo. Dal solo nome non è possibile evincere il tipo di oggetto. Il DNS definisce anche come associare i nomi agli indirizzi IP, e come ottenere quest'ultimi dal nome. In realtà lo schema è ancora più generale di quanto può sembrare, in quanto permette di estendere la sintassi del nome per usi specifici, sfruttando anche il concetto di tipo. Per esempio, nel caso di una casella postale (tipo MX), il nome sarà del tipo utente@dominio. Per esempio ddejudicibus@tecnet.it Innanzi tutto una internet è un sistema di interconnessione fra reti differenti che utilizza sia sistemi dedicati per la connessione, detti gateway, sia uno strato (layer) di protocolli che mostrano alle applicazioni una visione omogenea di una rete virtuale e che sono basati sulla trasmissione di piccoli pacchetti di dati. Ogni pacchetto porta con sé l'indirizzo del destinatario il quale identifica univocamente sia la rete di destinazione che la connessione alla quale deve essere recapitato il pacchetto. Un sistema connesso a più reti della stessa internet avrà quindi più indirizzi IP. Un opportuno software, spesso installato su macchine dedicate, permette di associare a ogni indirizzo un nome di più facile utilizzo da parte degli utenti del sistema. Il formato di questo nome si basa su un insieme di regole dette DNS. Quella che è universalmente conosciuta come Internet è di fatto la principale rete interconnessa esistente, che si estende praticamente su tutto il pianeta. Reti A questo punto i sistemi sono in grado di scambiarsi i dati in modo non equivoco. Ma come fa a sapere la rete internet che un sistema è collegato, e soprattutto, come avviene l'associazione tra l'IP address e l'indirizzo fisico di rete? Ogni rete fisica infatti ha un suo formato per gli indirizzi fisici assegnati alle connessioni di rete. Nelle reti Ethernet, ogni scheda ha già reimpostato, da parte del costruttore, un indirizzo fisico fisso, per cui non c'è alcun rischio di collisione, ma cambiare la scheda vuol dire dover necessariamente cambiare indirizzo fisico. Inoltre, dato che questo indirizzo è unico non solo fra le schede installate su una certa rete, ma in assoluto fra tutte le schede costruite, esso è generalmente molto lungo. Nel caso di Ethernet è di ben 48 bit. 93 ARP Associare un IP address a un sistema con indirizzi formati da piccoli numeri e per giunta tali che a parità di connessione l'indirizzo non cambia mai, come nel caso di una rete proNET-10(rete Token Ring), è molto semplice. Per esempio, per un IP address di classe C, si può usare l'indirizzo fisico come host identifier. Così, se la rete ha IP address del tipo 10.214.32.x, l'host con indirizzo fisico 16 avrà IP address 10.214.32.16. Un altro paio di maniche è gestire indirizzi molto più lunghi dei 32 bit utilizzati per gli indirizzi internet, e per giunta che possono cambiare nel tempo a parità di connessione. Ovviamente si potrebbe tenere da qualche parte una tabella per gli accoppiamenti, e di fatto si fa così, ma non è certo molto pratico pensare che qualcuno la tenga aggiornata a mano. Il problema è stato risolto efficacemente utilizzando un meccanismo di risoluzione dinamica implementato dal protocollo ARP, o Address Resolution Protocol. ARP funziona più o meno così. Quando un host deve spedire un pacchetto a un certo destinatario, spedisce a tutti gli host nella stessa rete fisica un messaggio in cui chiede chi è l'host con quel ben preciso IP address. Nello stesso messaggio mette anche i propri indirizzi, sia quello fisico che quello IP. Si adopera cioè una tecnica di broadcasting. L'host il cui IP è quello cercato, rimanda indietro al richiedente il proprio indirizzo fisico, permettendo così l'associazione tra i due. Ciò è possibile in quanto esso ha comunque ricevuto anche l'indirizzo fisico del mittente. Ma allora per ogni pacchetto che va spedito a un certo IP address è necessario prima mandare un pacchetto a tutti gli host nella rete? E perché allora non mandare direttamente il pacchetto da trasmettere a tutti, invece di chiedere prima chi è che ha un certo indirizzo IP? Ovviamente la cosa non funziona così, anche perché si rischierebbe di appesantire inutilmente la rete con pacchetti che vengono recapitati ai sistemi sbagliati. Quello che si fa è di mantenere presso ogni host una tabella con tutti gli accoppiamenti già trovati, e di aggiornarla periodicamente per evitare che diventi obsoleta. A questo punto i meccanismi di broadcasting servono ad aggiornare tali tabelle. Per esempio, se un host deve spedire un pacchetto a un certo indirizzo IP, prima controlla nella sua tabella se non ha già l'indirizzo fisico del destinatario. Solo nel caso l'informazioni manchi, l'host spedisce a tutti gli altri host il messaggio di richiesta. Quando questo arriva a un qualunque host, sia esso il vero destinatario o no, ogni host aggiorna la sua tabella con l'indirizzo fisico e quello IP del mittente, tanto per guadagnare tempo. Il destinatario, in più, spedisce indietro anche il suo indirizzo fisico al mittente, così da potergli permettere di aggiornare la sua tabella di indirizzi. Un'ulteriore tecnica che si usa per assicurarsi che tali tabelle siano sempre aggiornate, è quella di far distribuire la propria coppia di indirizzi, fisico ed IP, ogni qual volta un sistema si connette alla rete, per esempio al reboot. 94 RARP ARP non viene considerato propriamente un protocollo internet, quanto un meccanismo della rete fisica. Su ARP si basa il protocollo IP per far comunicare fra loro le varie macchine quando non è possibile risolvere in altro modo gli indirizzi IP in indirizzi fisici. Un protocollo analogo è il RARP, o Reverse Address Resolution Protocol, con il quale una macchina senza disco fisso (diskless) è in grado di conoscere il proprio indirizzo IP a partire da quello fisico. Per far ciò la rete deve avere uno o più RARP Server, i quali contengono una tabella di associazione fra gli indirizzi IP e quelli fisici di tutte le macchine diskless. Anche questo protocollo si basa su un messaggio mandato in broadcasting. L'esistenza di questo protocollo è legata al fatto che una macchina diskless non può memorizzare il proprio indirizzo IP in alcun posto, non avendo memoria secondaria. TCP/IP E veniamo ora al TCP/IP vero e proprio. Come detto prima l'architettura internet è basata su tre livelli. L'Application Services è il livello più alto, cioè quello delle applicazioni. I programmi che utilizzate quando usate internet ricadono in questo livello. Il Reliable Stream Transport Service è il livello intermedio. Esso si occupa dell'affidabilità della comunicazione, gestendo gli errori di trasmissione e la perdita di eventuali dati. Esso inoltre fornisce una visione della comunicazione ad alto livello, in cui esiste una connessione tra i due host che si trasmettono grandi volumi di dati. Il livello più basso, chiamato Connectionless Packet Delivery Service è quello che effettua la spedizione vera e propria dei singoli pacchetti, senza garantire l'affidabilità sulla singola trasmissione, nella modalità detta connectionless. Il protocollo su cui si basa il livello più basso della torre internet è appunto l'Internet Protocol, o IP. Tale protocollo si basa su alcuni concetti fondamentali. Innanzi tutto il servizio che fornisce è detto unreliable, cioè inaffidabile, in quanto non dà alcun garanzia che il singolo pacchetto arrivi effettivamente a destinazione. In secondo luogo è detto connectionless, cioè senza connessione diretta, in quanto la trasmissione non avviene direttamente verso il destinatario, ma il messaggio è lanciato nella rete lasciando poi a questa il compito di portarlo a destinazione utilizzando l'indirizzo IP dell'host destinatario. Infine si parla di besteffort delivery, cioè spedizione al meglio delle possibilità, in quanto la rete fa tutto il possibile per portare comunque a destinazione il pacchetto. In pratica l'IP si comporta come un naufrago su un'isola deserta che lancia nella corrente un messaggio in una bottiglia per un tizio che si trova su di un'altra isola dello stesso arcipelago, contando sul fatto che se la bottiglia arriva sull'isola sbagliata qualcuno ributterà a mare il messaggio fintanto che non arriverà a destinazione. Detta così c'è quasi da stupirsi che internet funzioni così bene. Anzi, che funzioni del tutto! In realtà non dimentichiamoci che sopra al livello più basso ce n'è un altro che garantisce appunto l'affidabilità della comunicazione. Torniamo comunque 95 all'IP. Esso è formato da tre regole base: come è fatto il pacchetto da trasmettere, detto IP datagram, come avviene la scelta del cammino che il pacchetto segue per raggiungere il destinatario, come gli host e i gateway devono trattare i pacchetti e in particolare le modalità per l'emissione dei messaggi di errore e quelle per la soppressione dei pacchetti. Prima però di entrare nel dettaglio dei singoli campi, vediamo come si comporta l'IP nella gestione dei pacchetti di dati. Questo ci permetterà più avanti di comprendere meglio il significato di alcuni campi dell'IP datagram. Ricapitolando Innanzi tutto va ricordato che l'IP è un protocollo unreliable, non dà cioè alcuna garanzia che il singolo pacchetto arrivi effettivamente a destinazione, ed è connectionless, ovverosia il messaggio non viene spedito direttamente al destinatario ma viene immesso nella rete lasciando poi a questa il compito di portarlo a destinazione. Esso inoltre è di tipo best-effort delivery, in quanto la rete fa tutto il possibile per portare comunque a destinazione il pacchetto. Trasmissione dei dati (datagram, MTU) Detto questo, vediamo come avviene la trasmissione vera e propria dei dati. L'unità fisica di trasferimento dei dati in una rete è la frame. Questa è composta di due parti: l'intestazione (header) e l'area dati (data area). L'unità di misura è invece l'ottetto, formato da otto bit, cioè un byte. Ogni rete fisica ha un limite massimo di capacità di trasferimento per un singolo frame, detto Maximum Transfer Unit (MTU). L'MTU è cioè il massimo numero di ottetti di dati che può essere trasferito in un singolo frame. Per esempio, Ethernet ha generalmente una MTU di 1.500 ottetti (1492 secondo lo standard IEEE 802.3). Questo vuol dire che se si devono spedire 2.000 byte di dati via Ethernet, è necessario spezzarli in due blocchi tali che ogni blocco sia minore o uguale a 1.500. A ogni blocco si aggiunge poi l'intestazione del frame. Dal punto di vista della rete fisica l'IP datagram è un blocco di dati. La rete fisica ignora cioè come tali dati vengano utilizzati dall'IP. Quindi, il primo compito di IP è quello di decidere come costruire il datagram affinché possa essere trasmesso in un frame fisico. L'ideale sarebbe di poter mettere un singolo datagram in ogni frame, ottimizzando così la trasmissione e semplificando la logica. Ma quale frame? Quello della rete di partenza? Quello della rete di arrivo? E se durante la trasmissione il datagram deve passare attraverso più reti con MTU differenti? Il punto è che non c'è modo di fare una scelta che assicuri di avere un datagram per frame. D'altra parte internet ha come obiettivo quello di svincolarsi dalle caratteristiche fisiche delle varie reti interconnesse fra loro. E allora? La soluzione adottata è molto semplice. Le dimensioni del datagram sono scelte convenzionalmente secondo una logica del tutto indipendente dalle MTU 96 delle singole reti fisiche, dopodiché, a seconda della rete in cui il datagram deve passare, questo è spezzato in più pezzi di dimensioni inferiori alla MTU della rete fisica, detti frammenti (fragment). Il datagram è anch'esso un frame, che potremmo chiamare logico per distinguerla da quello usata da una specifica rete fisica per trasmettere i dati. Come tale anch'esso è formato da una intestazione e da un'area dati. All'atto della frammentazione, ogni frammento viene costruito replicando l'header del datagram, modificandone alcuni campi che vedremo in seguito, e aggiungendo a questo un pezzo dell'area dati originaria. L'aspetto più importante di questo meccanismo è che il riassemblaggio dei frammenti non viene effettuato quando i vari frammenti rientrano in una rete fisica ad alto MTU, ma sempre e comunque presso l'host di destinazione. Così, se due reti con MTU uguale a 1.500 ottetti sono separate da una rete con MTU più bassa, per esempio 500 ottetti, i frammenti che arriveranno a destinazione saranno di soli 500 ottetti. In questo caso la frammentazione avviene nel primo gateway mentre il riassemblaggio avviene solo nell'host di destinazione. Il protocollo IP richiede che sia gli host che i gateway siano capaci di gestire datagram di almeno 576 ottetti. In aggiunta, questi ultimi devono essere capaci anche di gestire datagram grandi quanto l'MTU più grande tra quelle delle reti a cui sono connessi. Ricordiamo che un gateway, per definizione, ha almeno due connessioni e quindi almeno due indirizzi IP. Il punto debole di questo meccanismo è che la perdita di anche un solo frammento comporta la perdita dell'intero datagram. Dato che ogni frammento è trasmesso indipendentemente, passare attraverso reti a bassa MTU comporta un'elevata frammentazione anche nelle reti a maggiore MTU e comunque aumenta i rischi di perdita dei dati. Quando un frammento arriva a destinazione, e non è detto che il primo arrivi per primo, l'host fa partire un timer. Se questo scade prima che tutti i frammenti siano arrivati, il sistema cancella tutti i frammenti e considera perduto il datagram. Il concetto di timer e di tempi è estremamente importante per l'IP ed è spesso usato per ottimizzare la rete. Per esempio, ogni datagram ha una scadenza. Se il datagram è ancora all'interno della rete quando il suo tempo è scaduto, esso viene cancellato definitivamente. Lo scopo è quello di evitare che un pacchetto possa restare all'infinito in internet a causa di un errore in una routing table. Queste tabelle infatti servono a gestire il processo di instradamento del pacchetto nella rete. Se una o più tabelle sono sbagliate, si potrebbero creare cammini chiusi in cui i datagram potrebbero rimanere intrappolati. 97 Routing Parliamo ora di due aspetti fin qui solo accennati: i meccanismi di instradamento dei pacchetti (routing) e la gestione degli errori. Incominceremo a salire nella torre dei protocolli internet, introducendo il primo protocollo che si poggia sull'IP, e precisamente lo User Datagram Protocol (UDP). Come vedremo si tratta ancora di un protocollo molto legato all'IP, ma comunque considerato al di sopra di questo. Come abbiamo già detto in precedenza, IP è un protocollo connectionless. Questo vuol dire che non esiste un collegamento diretto tra i due host che si scambiano dati, bensì una rete di connessioni attraverso la quale si possono identificare vari potenziali cammini da un host all'altro. Il cammino attraverso il quale i dati giungono all'host destinatario è scelto dinamicamente e può variare per ogni singolo pacchetto di dati. Tale scelta non avviene quando il pacchetto parte, ma è il risultato di numerose decisioni prese a ogni singolo gateway. Per questo motivo i gateway sono detti anche router. Tali scelte possono dover tenere conto di molti elementi, quali la priorità del messaggio, il carico di rete, la capacità delle reti intermedie, e via dicendo. La base tuttavia del meccanismo sono le tabelle di instradamento (routing table). Vediamo di che si tratta. Consideriamo prima una singola rete fisica. Se un host vuole spedire un messaggio a un altro host nella stessa rete, non deve far altro che incapsulare il messaggio in un datagramma IP fornendo quindi l'indirizzo IP del destinatario, e passare il tutto al livello inferiore. Questi provvederà a ricavare dall'indirizzo IP l'identificativo del destinatario nella rete fisica, a incapsulare il datagramma in un frame, e a spedire direttamente il tutto all'host finale . Questa tecnica si chiama instradamento diretto (direct routing). Vediamo adesso quello che succede quando abbiamo due reti interconnesse tramite un gateway. L'host mittente si accorge che il destinatario non è nella sua rete fisica, dato che il network id del suo indirizzo IP è diverso da quello a cui deve spedire il datagramma. Spedisce allora il messaggio al gateway passando sia il datagramma che l'indirizzo IP del gateway al livello inferiore. Il messaggio arriva quindi direttamente al gateway che estrae l'indirizzo IP del destinatario, si accorge che fa parte della seconda rete a cui è connesso, e spedisce quindi il tutto all'host finale attraverso la rete fisica. Questa tecnica si chiama di instradamento indiretto (indirect routing). In questo secondo caso la tabella di instradamento è semplice, dato che il gateway ritrasmette sempre i messaggi che devono andare da una rete all'altra attra- 98 verso la rete fisica. Se invece abbiamo più gateway tra i due host, ogni gateway, tranne l'ultimo, dovrà spedire il messaggio a un altro gateway. Per far questo userà appunto la tabella di instradamento che fornisce per ogni possibile rete destinataria finale l'indirizzo IP del gateway successivo. È da notare che queste tabelle non contengono di solito gli indirizzi IP di tutti i possibili host destinatari, cosa che sarebbe fisicamente impossibile, bensì gli indirizzi delle reti raggiungibili a partire da quel gateway. Esiste poi la possibilità di specificare un gateway di default e cammini specifici per host speciali. La prima cosa è molto comune, mentre la seconda è usata solo in casi eccezionali. La logica di instradamento è quindi quella riportata nel diagramma. ICMP La gestione dei messaggi di errore: Come si può facilmente capire dal meccanismo di instradamento appena spiegato, non è possibile sapere se il destinatario effettivamente esiste fintanto che il datagramma non arriva all'ultimo gateway. In generale l'IP non contiene grossi meccanismi di verifica, ed è per questo che è detto "inaffidabile". Esso richiede quindi un protocollo ausiliaro per l'emissione di messaggi di errore in rete, che permettano ai protocolli di livello superiore di implementare una logica più affidabile e robusta. Tale protocollo è chiamato Internet Control Message Protocol (ICMP). L'ICMP è considerato parte integrante dell'IP ed è sostanzialmente un protocollo per la segnalazioni di errori il cui utente principale è l'IP stesso. Solo in casi particolari l'ICMP arriva a informare dell'errore eventuali livelli superiori all'IP. In ogni caso cosa fare quando avviene un errore non spetta all'ICMP, ma ai processi che se ne avvalgono. L'ICMP informa sempre l'IP mittente, non i vari gateway intermedi. Questo in quanto del cammino percorso da un datagramma non rimane traccia, per cui l'unico possibile destinatario di un messaggio di errore è solo chi ha generato il datagramma. Inoltre, dato che i datagrammi ICMP viaggiano incapsulati in datagrammi IP, come un qualunque messaggio di livello superiore, essi sono soggetti alle stesse limitazioni in termini di affidabilità di qualunque altro messaggio spedito via TCP/IP. Non analizzeremo in dettaglio tutti i datagrammi ICMP, anche perché ognuno può avere una struttura differente. Diremo solamente che l'intestazione di un datagramma ICMP contiene sempre almeno tre campi: il tipo di messaggio, un codice di errore, e una somma di controllo. Il livello di Trasporto:Come sicuramente ricorderete, la torre Internet si può schematizzare più o meno su quattro livelli. Alla base della torre sta l'hardware che rappresenta la rete vera e propria. Sopra a questo sta il primo livello, quello cioè di interfaccia alla rete fisica, detto appunto Network Interface o anche Data Link. I protocolli a questo livello si scambiano blocchi di dati chiamati frame, la cui struttura è strettamente legata alle caratteristiche hardware della rete stessa. 99 Al di sopra di questo livello c'è il livello di interconnessione fra reti, ovverosia il livello dell'IP la cui unità di scambio dati è appunto il datagramma IP, mentre il terzo livello è quello detto di Trasporto. Concettualmente è a questo livello che si pongono sia il TCP che appunto l'UDP. L'unità di scambio dati al terzo livello si chiama pacchetto (transport packet). Il quarto livello è infine quello Applicativo, al quale vengono scambiati i messaggi applicativi (message e data stream). Abbiamo visto come l'IP permette di scambiare datagrammi fra host, cioè a livello di macchine. Tuttavia non è certo la macchina il destinatario finale dei dati che fluiscono nella rete, bensì le applicazioni e i programmi che girano su di essa. I moderni sistemi operativi permettono di far girare più processi contemporaneamente, e comunque questi non hanno le caratteristiche di permanenza che ha invece un host. Un programma infatti è un componente dinamico e temporaneo in un sistema. Non è quindi pensabile di poter associare a un processo un identificativo fisso come si fa con gli host e gli indirizzi IP. Un processo infatti non ha un identificativo univoco in un sistema, dato che ogni volta che viene lanciato esso può assumere un identificativo diverso. Inoltre non è detto che gli stessi dati siano sempre processati dalla stessa applicazione. Per esempio, oggi potrei voler usare un certo programma per gestire la mia posta elettronica, domani potrei decidere di usarne un altro, e non è sicuramente pensabile che si debba informare tutta la rete ogni volta che si decide di cambiare l'applicazione che gestisce un certo tipo di dati. Quindi, più che il processo, quello che è importante identificare è la funzione, come per esempio, trasferire file oppure spedire posta elettronica. Lo scopo dell'UDP è appunto quello di permettere di distinguere in un singolo host più destinatari per i dati che arrivano dalla rete. Ma come? Facciamo un attimo una digressione. Se io devo stampare un file cosa faccio? Collego al mio computer una stampante, attivo il driver corrispondente, e uso una applicazione o un comando del sistema operativo per lanciare l'ordine di stampa. Se ora stacco la stampante e ne attacco un'altra alla stessa porta non devo far altro che cambiare il driver per continuare a lavorare senza che il sistema si sia accorto di niente. Se poi le due stampanti usano lo stesso driver generico devo solo staccare e riattaccare fisicamente le stampanti senza modificare il sistema. In generale, tutto lo scambio di dati da e verso un computer avviene attraverso porte di I/O. Ogni applicazione accede la porta che gli serve in modo dinamico. La periferica di I/O non ha bisogno di sapere con quale applicazione sta parlando: la porta fa da schermo fra i due. L'UDP fa una cosa analoga. Esso permette di associare a un indirizzo IP più punti di ingresso e di uscita virtuali, detti protocol port. Queste porte si comportano un po' come quelle di I/O di un computer. Ogni porta è identificata da un numero intero positivo e i processi possono chiedere al sistema l'accesso a tali porte. Quando un processo accede una porta, 100 esso si mette in attesa dei dati sulla stessa. Il meccanismo è cioè sincrono. Inoltre, se dei dati arrivano a una porta alla quale non si è agganciato ancora un processo, questi vengono mantenuti in memoria nell'ordine di arrivo. Si dice cioè che le porte hanno un buffer. A questo punto, sia il processo mittente che quello destinatario sono univocamente identificati dall'indirizzo IP dell'host su cui girano e dal numero di porta che utilizzano per la trasmissione in rete. Tale associazione è tuttavia dinamica, e così come più applicazioni possono stampare sulla stessa stampante purché non contemporaneamente, così più processi possono attaccarsi uno alla volta alla stessa porta ed essere visti come lo stesso destinatario dalla controparte mittente. Questo permette di spedire un file di testo con un word processor, e subito dopo spedire un file binario, per esempio un file ZIP, con un comando di sistema. Il tutto sempre attraverso la stessa porta e con lo stesso destinatario in termini di host e di processo. UDP Come abbiamo visto nel caso dell'IP e dei vari protocolli di rete, anche il datagramma UDP è formato da una intestazione (header) e da una parte dati. Esso è inoltre incapsulato in un datagramma IP il quale a sua volta è contenuto in un frame della rete fisica. Al contrario tuttavia di quello IP, l'header UDP è molto più semplice. Esso è formato dal numero di porta del mittente, da quello del destinatario, dalla lunghezza del messaggio UDP, sia dei dati che dell'intestazione, e da una somma di controllo (checksum) per la verifica dell'integrità dei dati. Infatti, anche l'UDP, come l'IP, è un protocollo cosiddetto "inaffidabile". Questo vuol dire che un messaggio UDP può andare perso, essere duplicato, o arrivare nell'ordine sbagliato. L'UDP non fa alcun controllo al riguardo. L'affidabilità della comunicazione è infatti affidata a i protocolli di livello più elevato. Tutti i campi dell'intestazione sono lunghi 16 bit. Benché il formato del datagramma UDP sia alquanto semplice, la sua gestione può essere un po' più complessa. Il punto riguarda la somma di controllo. Questo valore è opzionale e, al contrario di quello che succedeva con la somma di controllo nel datagramma IP, esso non è relativo solo all'intestazione ma a tutto il datagramma, compresa la parte dati. Questo vuol dire che tale campo rappresenta l'unico elemento di controllo a livello IP e UDP dell'integrità dei dati arrivati. Se esso non viene utilizzato, il campo va posto a zero. Questo in quanto la somma di controllo segue la logica a complemento uno. Il che vuol dire che se la somma calcolata è zero, essa può essere memorizzata come 16 bit impostati a uno, dato che in tale logica un valore con tutti i bit a uno e uno con tutti i bit a zero rappresentano lo stesso numero. Quindi: se il campo è a zero, vuol dire che non è stato utilizzato; se viceversa ha tutti i bit ad 1, vuol dire che la somma era zero. 101 La somma di controllo, tuttavia, per ragioni pratiche, non riguarda solo il datagramma UDP, ma viene calcolata anche utilizzando alcune informazioni addizionali. Queste formano il cosiddetto pseudo-header. In pratica, quando si deve calcolare il checksum UDP si mette davanti al datagramma UDP un altro blocco di dati che contiene l'indirizzo IP del mittente e del destinatario, il codice del protocollo UDP (17), e la lunghezza del datagramma UDP. Il motivo di questa tecnica risiede nel fatto che, per verificare se un messaggio UDP è arrivato al giusto destinatario, non basta verificare il numero di porta, ma anche l'indirizzo IP dell'host in cui gira il processo che è collegato a quella porta. Il datagramma UDP contiene tuttavia solo il numero di porta, per cui il controllo fornito da una somma sul solo datagramma non potrebbe realmente verificare che il destinatario dei dati è quello giusto. Questa tecnica ha tuttavia un prezzo: gli indirizzi IP fanno parte appunto del livello internet, non di quello di trasporto. Perché l'UDP conosca tali informazioni è necessario violare una legge fondamentale dei protocolli di comunicazione, e cioè che ogni livello della torre deve gestire i suoi dati senza esportarli agli altri livelli a cui offre, o da cui riceve, servizi. Questo vuol dire che la separazione tra UDP ed IP non è così pulita come dovrebbe essere, ma che i due protocolli sono in qualche modo legati tra loro. D'altra parte i vantaggi in termini di controllo e semplicità di implementazione sono tali che si è deciso di fare un'eccezione ai principi dell'architettura. Da notare che la pseudo-intestazione serve solo a calcolare la somma di controllo. Essa non viene fisicamente trasmessa con il datagramma UDP, dato che le informazioni che contiene fanno già parte dell'intestazione del datagramma IP in cui quello UDP sarà incapsulato. Se l’IP rappresenta il braccio del TCP/IP, il TCP ne rappresenta la mente. Il primo si limita a spedire rapidamente i dati che gli arrivano senza preoccuparsi troppo se qualcosa va male. Il secondo si occupa invece di controllare che l’informazione passatagli dai livelli superiori arrivi correttamente a destinazione. Insieme sono sicuramente una coppia molto affiatata. In questo articolo useremo il termine applicazioni per indicare tanto i protocolli applicativi come FTP o SMTP, quanto i programmi applicativi veri e propri, salvo indicazione contraria. Indicheremo inoltre con il termine utente di un servizio colui che utilizza tale servizio, sia esso direttamente una persona, un’applicazione, o un protocollo. Per esempio, il TCP è un utente dell’IP. API (Application programming Interface) C’è subito da dire due cose importanti sul TCP. La prima è che lo standard del TCP non definisce né l’implementazione dello stesso, né le modalità con cui un’applicazione accede a i servizi di questo proto- 102 collo. Esso definisce solamente le caratteristiche di tali servizi, per cui si possono trovare molte differenti implementazioni del TCP, ognuna con la propria interfaccia applicativa. Per chi non programma ricordo che un’interfaccia applicativa o API (Application Programming Interface) non è altro che l’insieme delle funzioni, delle istruzioni, dei parametri e dei blocchi di controllo che vengono utilizzati dai programmatori per accedere ai servizi di un sistema. Per esempio, se ho un sistema di posta elettronica potrei definire un’API basata su due funzioni, una chiamata spedisci, e una chiamata ricevi . La seconda fondamentale è che il TCP è stato definito per funzionare su un qualsiasi sistema di trasmissione dati a pacchetto, e non necessariamente solo sull’IP. Di fatto esso può essere poggiato, per esempio, direttamente sopra una rete Ethernet senza bisogno di un livello Internet intermedio. Ma qual è lo scopo del TCP nell’architettura internet? Il protocollo non fornisce le garanzie di affidabilità e robustezza necessarie per implementare un sistema di trasmissione dati sicuro e di facile gestione. Per avere un protocollo di trasmissione affidabile abbiamo bisogno di gestire tutte le possibili situazioni di errore, la duplicazione o la perdita dei pacchetti, la caduta delle connessioni o di un router, e via dicendo. Vediamo allora quali sono le caratteristiche principali del TCP, eventualmente comparate a quelle dell’IP. Primo punto: il TCP fornisce una visione dei dati di tipo a flusso (data stream), cioè i dati sono ricevuti in sequenza e nello stesso ordine con il quale sono stati trasmessi. A questo livello cioè, l’utente del TCP spedisce i dati come un singolo flusso di byte e nello stesso modo li riceve. Nell’IP avevamo invece la divisione dei dati in pacchetti che potevano subire un’ulteriore frammentazione se si trovavano a passare attraverso reti caratterizzate da una soglia molto bassa sulle dimensioni dei frame fisici. I pacchetti potevano inoltre arrivare in ordine sparso rispetto a quello di trasmissione. Secondo punto: nell’IP non si sa mai a priori il cammino che effettua un pacchetto. Il TCP fornisce al suo utente una visione del collegamento come se esso fosse una linea dedicata. Ovviamente sotto sotto il meccanismo è ancora quello a pacchetti, ma la cosa è schermata agli utilizzatori del TCP. Tale caratteristica è detta virtual circuit connection, cioè circuito di connessione virtuale. Il TCP si basi sul concetto di connessione, piuttosto che su quello di indirizzo come fa invece l’IP. Una connessione, per definizione, richiede la definizione di due punti piuttosto che di uno solo, detti punti terminali o estremi della connessione (endpoint). 103 Terzo punto: abbiamo visto che l’IP divide i dati in pacchetti che vengono costruiti sulla base di esigenze di trasmissione legate alle varie reti fisiche su cui si poggia il sistema. D’altra parte le applicazioni dividono i dati in funzione delle esigenze applicative. Per esempio, un’applicazione di posta elettronica può considerare una lettera da 8.000 caratteri una singola unità dati, mentre un protocollo per la gestione della rete può avere l’esigenza di spedire tanti piccoli messaggi di non più di 16 byte l’uno. Il TCP permette di disaccoppiare il modo di dividere i dati delle applicazioni da quello dell’IP. Così la lettera di cui sopra viene prima spezzata in tante parti, spedita via IP e poi ricomposta dal livello TCP del destinatario, mentre per i messaggi di controllo avviene il contrario: prima vengono accumulati in un singolo pacchetto, e poi rispezzettati presso il destinatario. Questo meccanismo è detto buffered transfer. Naturalmente può sorgere l’esigenza di forzare la trasmissione dei dati anche se il buffer non è pieno. Per esempio, se serve sapere se un certo sistema è attivo o meno manderò prima un messaggio di interrogazione, e solo una volta ricevuta la conferma incomincerò a spedire gli altri dati. Dato che il messaggio di interrogazione è più piccolo del buffer, esso non verrebbe realmente spedito dal TCP fintanto che questi non è stato riempito. È quindi necessario forzare la trasmissione del primo messaggio (push) se si vuole evitare di attendere inutilmente la risposta a un messaggio che in realtà non è mai partito. Quarto punto: per quanto intelligente, il TCP si preoccupa di trasferire i dati che gli vengono passati senza entrare in merito a il loro significato dal punto di vista applicativo. In che modo il flusso di dati vada interpretato semanticamente è responsabilità delle due applicazioni che utilizzano la connessione TCP per cooperare. Questo vuol dire che se un’applicazione manda alla sua controparte una serie di indirizzi, questi arriveranno uno di seguito all’altro nel giusto ordine, ma senza alcuna garanzia che ogni buffer contenga un numero intero di indirizzi. Sta all’applicazione ricomporre un indirizzo capitato a cavallo di due buffer consecutivi. Si parla quindi di flusso senza struttura (Unstructured Stream). Quinto e ultimo punto: le connessioni TCP permettono il trasferimento contemporaneo dei dati in entrambe le direzioni, quello che nel gergo delle comunicazioni si chiama una connessione full-duplex. Si hanno cioè due flussi che scorrono indipendentemente in direzioni opposte, senza interagire fra loro. Le applicazioni hanno comunque la possibilità di passare alla modalità half duplex semplicemente bloccando uno dei due flussi di dati. Ma in che modo il TCP garantisce quella affidabilità che manca all’IP? Il meccanismo di base utilizzato sia dal TCP che da molti altri protocolli cosiddetti "affidabili" è quello della ritrasmissione in caso di mancata conferma (positive acknowledgement with retrasmission). Si tratta di un meccanismo concettualmente semplice: ogni qual volta uno dei due interlocutori di una connessione spedi- 104 sce dei dati, questi attende una conferma dell’avvenuta ricezione. Se questa arriva entro un tempo stabilito viene spedito il pacchetto successivo, altrimenti l’applicazione rispedisce quello precedente. Tale tempo viene misurato con un timer che viene fatto partire ogni volta che un pacchetto è spedito. Questo meccanismo risolve il problema dei pacchetti persi o danneggiati, ma può crearne un altro. Supponiamo che a causa di problemi di saturazione della rete un pacchetto ci metta molto più tempo del previsto ad arrivare. A questo punto il mittente, non vedendosi arrivare indietro la conferma ne rispedisce una copia. Succede così che il destinatario riceve a una certa distanza l’uno dall’altro due copie dello stesso pacchetto. Il problema della duplicazione dei pacchetti viene risolto facendo numerare sequenzialmente al mittente tutti i pacchetti da spedire e facendo verificare al destinatario la sequenza ricevuta. Naturalmente questo non vale solo per i messaggi ma anche per le conferme agli stessi. Infatti anche una conferma potrebbe venire erroneamente duplicata. Per evitare questo ogni conferma riporta il numero di sequenza del messaggio a cui si riferisce, permettendo così al mittente di verificare che a ogni messaggio spedito corrisponda una e solo una conferma di ricezione. È un po' lo stesso meccanismo di una raccomandata con ricevuta di ritorno. In realtà gli algoritmi utilizzati dal TCP sono un po' più complicati, e tengono conto di tutta una serie di situazioni che si possono verificare. Senza contare che il tempo di attesa prima della ritrasmissione è un punto chiave di tutto il discorso. Se si attende troppo poco si rischia di generare un sacco di duplicati inutili, saturando per giunta la rete, mentre se si attende troppo si rischia di abbassare notevolmente e inutilmente le prestazioni della trasmissione dei dati, rallentando le applicazioni alle estremità della connessione. Il meccanismo della conferma di ricezione con ritrasmissione ha inoltre un grosso svantaggio. Anche se i tempi di attesa sono scelti in modo ottimale, esso causa un notevole sottoutilizzo della rete. Infatti, indipendentemente dalla capacità della rete, i due interlocutori passano la maggior parte del tempo attendendo le varie conferme. È un po' come avere un tubo nel quale vengono fatte cadere una a una delle palline numerate in sequenza. All’altra estremità del tubo c’è una cesta poggiata su un prato, un po' distante dal foro di uscita. Se la pallina cade nella cesta fa rumore, altrimenti cade nel prato e non si sente niente. Se ogni volta che metto una pallina nel tubo aspetto di sentire il rumore che mi conferma che la pallina è caduta nel cesto, il tubo resta per la maggior parte del tempo vuoto. Una tecnica di ottimizzazione usata dal TCP per rendere più efficiente il meccanismo appena descritto è quella delle finestre di scorrimento (sliding window). Funziona più o meno in questo modo. Immaginate di immettere nel tubo una sequenza di dieci palline senza attendere che la prima sia arrivata. Come si sente il primo flop si aggiunge un’undicesima pallina, e poi una dodicesima e così via. Se si salta un flop si reinserisce una pallina con lo stesso numero di quella che non è 105 arrivata, tanto il destinatario può comunque riordinare le palline utilizzando i numeri scritti sopra. Il numero di palline che compongono il trenino da spedire indipendentemente dalla ricezione del flop si chiama dimensione della finestra di scorrimento (sliding window size). Se si sceglie una dimensione tale da riempire tutto il tubo nella sua lunghezza si sfrutta al massimo la capacità dello stesso. In pratica questo sistema divide la sequenza di pacchetti in tre fasce. La prima è rappresentata dai pacchetti spediti e di cui si è avuta la conferma di ricezione. La seconda è formata dai pacchetti spediti ma dei quali non si sa ancora niente, e la terza è formata dai pacchetti ancora da spedire. Con questa tecnica il TCP mantiene un timer per ogni singolo pacchetto che appartiene alla seconda fascia. Il nome "Finestra di scorrimento" deriva dal fatto che è come se ci fosse una finestra ampia quanto il trenino di pacchetti che possono essere spediti senza attendere la conferma dell’avvenuta ricezione che scorre in avanti un pacchetto alla volta ogni qual volta arriva una conferma. Anche in questo caso, come in quello del tempo di attesa prima di ritrasmettere un pacchetto, le dimensioni della finestra di scorrimento rappresentano un fattore critico per determinare l’efficenza del sistema. In generale, se le dimensioni della finestra sono maggiori del tempo di attesa per il singolo pacchetto, allora la finestra continua a scorrere regolarmente senza interruzioni, salvo nel caso di ritrasmissioni, e la capacità di carico della rete viene sfruttata al massimo. Affinché infatti due applicazioni possano comunicare fra di loro esse debbono conoscersi e il sistema di trasmissione che le serve deve sapere a chi effettivamente vanno recapitati i dati. È evidente che non basta l'indirizzo IP, che identifica univocamente un host nella rete. Basti pensare che un PC collegato in rete ha in genere un solo indirizzo IP, a meno che non sia collegato a più reti fisiche, come per esempio un gateway. Se una lettera viene spedita via rete a un certo indirizzo come fa TCP a sapere a quale applicazione deve far arrivare i dati? Un sistema potrebbe essere quello di assegnare un identificativo a ogni singola applicazione, ma come garantire allora l'univocità dell'identificativo? Senza contare che questo costringerebbe la controparte a sapere a priori tale valore per ogni possibile destinatario. Non è inoltre detto che un utente utilizzi sempre lo stesso programma per spedire o ricevere la posta elettronica. In realtà, più che la specifica applicazione, quello che è importante identificare è la funzione, come per esempio trasferire file oppure spedire posta elettronica. Le Porte La soluzione è quella di definire dei punti di ingresso e di uscita virtuali chiamati porte. Ogni porta rappresenta di fatto un punto di accesso a un'applicazione nel sistema. Si tratta in pratica di un'estensione del concetto di porta hardware. Un PC moderno, per esempio, può avere porte hardware parallele, seriali, video, audio e di vari altri tipi. Ad ogni porta possono essere attaccati dispositivi molto 106 differenti. Per esempio, a una porta parallela è possibile attaccare una stampante, uno scanner, un'unità Cd-Rom oppure un'unità disco ad alta capacità. Tutti questi dispositivi non hanno bisogno di una porta specifica, ma possono utilizzare la stessa porta perché gestiscono flussi di dati simili, possono cioè usare lo stesso protocollo di base per la trasmissione dei dati. Ovviamente, a livello applicativo, ogni periferica darà ai propri dati una struttura differente. Questo vuol dire che i dati costruiti per una stampante non possono certo essere mandati a uno scanner. D'altra parte anche TCP non entra in merito della struttura applicativa dei dati, ma solo alle modalità di trasmissione degli stessi. Ogni porta TCP è identificata da un numero. I numeri sotto il 256 sono utilizzati per le cosiddette "porte conosciute", cioè porte alle quali è stata assegnata una responsabilità ben precisa, mentre quelli al di sopra sono utilizzati per le assegnazioni dinamiche. Avremo per esempio una porta per i servizi di posta elettronica X.400 chiamata appunto X400 (103) alla quale faranno riferimento tutte le applicazioni che utilizzano tali servizi, oppure le due porte per il trasferimento dei file via FTP, una per il controllo (FTP, 21) e una per i dati (FTP-DATA, 20). Una lista delle porte conosciute attualmente assegnate è riportata nella RFC 1060, reperibile a ftp://ds.internic.net/rfc/rfc1060.txt Mentre in UDP la porta rappresenta un elemento sufficiente alla comunicazione, per cui il protocollo non fa altro che smistare i vari datagrammi nelle code dati (queue) associate alle varie porte . Una connessione è l'insieme di due punti, detti estremi della connessione (endpoint), ognuno identificato univocamente da due coordinate: l'indirizzo IP e il numero di porta. Una connessione è quindi rappresentata da ben quattro identificativi: gli indirizzi IP delle due macchine su cui girano le due applicazioni che si scambiano i dati, e i rispettivi numeri di porta. È importante capire che l'identificazione della connessione richiede tutti e quattro i valori, per cui la stessa porta con lo stesso indirizzo IP può essere condivisa simultaneamente da più connessioni senza creare alcun problema o ambiguità. Ecco perché in TCP si pensa in termini di linea dedicata. È come se ci fosse un filo che lega univocamente i due interlocutori. Ogni interlocutore può avere più connessioni aperte nello stesso momento a partire dallo stesso capo purché non ce ne siano due con la stessa controparte. Il vantaggio è che una singola applicazione, per esempio di posta elettronica, necessita di una sola porta TCP per fornire servizi a molte macchine contemporaneamente attraverso differenti connessioni che condividono uno stesso estremo. Va tenuto presente che, anche se UDP e TCP usano gli stessi numeri per le porte, non esiste possibilità di confusione, dato che i pacchetti IP portano con sé l'identificativo del protocollo utilizzato che è ovviamente diverso per i due protocolli. Affinché la connessione venga stabilita, entrambi gli estremi devono dare la loro autorizzazione. L'aggancio avviene nel seguente modo. Una delle due applica- 107 zioni che si vogliono connettere effettua un'apertura passiva (passive open), cioè informa il suo sistema che è disposta ad accettare una richiesta di connessione. TCP assegna all'applicazione un numero di porta. L'altra applicazione deve invece effettuare un'apertura attiva (active open), specificando l'indirizzo IP e la porta con la quale si vuole connettere. A questo punto i due livelli TCP stabiliscono la connessione e verificano che tutto sia a posto. La gestione dei dati: Vediamo adesso come TCP gestisce i dati. Innanzi tutto, come già detto, TCP vede i dati come una sequenza non strutturata di ottetti, cioè byte, detto flusso di dati (data stream). Questo flusso viene diviso in segmenti ognuno dei quali viaggia di solito in un singolo pacchetto IP. Per aumentare l'efficienza della trasmissione, TCP utilizza una versione particolare del meccanismo a finestre di scorrimento spiegato sopra. Ricordo che questo meccanismo consiste nel mandare un gruppetto di dati prima di aver ricevuto la conferma di ricezione di ogni singolo pacchetto, in modo da tenere costantemente sotto carico la linea. Se infatti si dovesse attendere la conferma di ricezione per ogni singolo pacchetto prima di spedire il successivo la linea resterebbe per la maggior parte del tempo inutilizzata. Si dà insomma fiducia alla rete, partendo dal presupposto che la perdita di dati sia l'eccezione piuttosto che la regola. Esistono tuttavia due importanti differenze tra il meccanismo base presentato prima e quello più sofisticato utilizzato effettivamente da TCP. La prima è che l'unità base per i dati non è né il segmento né il pacchetto IP ma il singolo ottetto. Ogni ottetto viene numerato e TCP mantiene tre puntatori per ogni flusso di dati in uscita: uno che separa gli ottetti già spediti e arrivati felicemente a destinazione da quelli di cui non si hanno ancora notizie, uno che separa quelli già spediti da quelli che devono ancora essere spediti senza attendere la conferma di ricezione per i precedenti ottetti, e uno che separa questi ultimi da quelli che non possono essere spediti fintanto che la finestra non scorre in avanti. Una serie di informazioni speculari è mantenuta dal destinatario che deve ovviamente ricostruire il flusso di dati nel modo corretto indipendentemente dall'ordine di arrivo dei dati. Dato che una connessione è full-duplex, TCP manterrà quindi per ogni connessione due finestre di scorrimento, una per i dati in uscita e una per quelli in ingresso: un totale di quattro finestre per connessione considerando entrambi gli estremi. Esiste quindi un'asimmetria rispetto al meccanismo base dove l'unità dati utilizzata nella finestra di scorrimento era la stessa utilizzata nella trasmissione. Qui TCP utilizza il segmento come unità dati da trasmettere, mentre ragiona in termini di ottetti per quello che riguarda il meccanismo di ritrasmissione. La seconda differenza è che le dimensioni della finestra di scorrimento non sono fisse ma variano nel tempo in funzione della capacità di ricezione del destinata- 108 rio. Ogni conferma di ricezione che ritorna al mittente contiene una soglia di capacità (window advertisement) che contiene il numero di ulteriori ottetti che il destinatario è in grado di ricevere. In pratica questo meccanismo permette di adattare la finestra di spedizione alle dimensioni del buffer di ricezione. Si tratta cioè di un meccanismo di controllo del flusso dei dati che limita il numero dei dati in ingresso man mano che il buffer di ricezione si riempie, fino a poter interrompere momentaneamente la trasmissione nel caso che si sia raggiunta la massima capacità di ricezione del destinatario. Basta infatti che il destinatario mandi una soglia uguale a zero perché il mittente interrompa la spedizione degli ottetti fino all'arrivo di una conferma di ricezione contenente di nuovo una soglia maggiore di zero. In realtà il mittente non smette del tutto di mandare dati. Innanzi tutto, se ci sono dati urgenti da spedire, il mittente informa comunque il destinatario di tale necessità trasmettendo un segmento con un indicatore di urgenza al suo interno. Questo permette al destinatario di prendere delle contromisure per ricevere comunque i dati urgenti, per esempio aumentando le dimensioni del buffer. In secondo luogo, è sempre possibile che la conferma con soglia positiva che dovrebbe far ripartire la trasmissione dei dati vada perduta. Per questo motivo il mittente prova ogni tanto a far partire un segmento per vedere se per caso il destinatario è di nuovo pronto a ricevere i dati. Il controllo di flusso: Il controllo del flusso dei dati è un aspetto estremamente importante in un sistema in cui sono collegate macchine anche molto differenti fra loro per dimensioni e capacità di trasmissione . Per controllo del flusso si intende la possibilità di regolare dinamicamente la quantità di dati che vengono immessi nella rete. Non solo è importante che il destinatario possa regolare la velocità di spedizione in funzione della sua capacità di ricezione, ma è fondamentale che ogni gateway intermedio possa frenare il flusso dei dati che riceve per evitare di entrare in saturazione. Il meccanismo appena descritto della soglia di capacità permette di risolvere il primo problema, non il secondo. Quest'ultimo è detto congestione, ed è estremamente importante perché non tenerne conto vuol dire mandare in tilt la rete. Lo standard TCP non prevede alcun meccanismo di controllo della congestione, lasciando agli implementatori di tale protocollo il non banale compito di sviluppare una logica capace di evitare questo tipo di problemi. Per quello che riguarda i segmenti, il fatto che TCP sia libero di dividere il flusso in segmenti può a volte causare problemi dal punto di vista applicativo. Per esempio, supponiamo di implementare via TCP/IP un terminale remoto. Questo vuol dire che tutte le operazioni effettuate con la tastiera e il mouse su di una macchina (chiamiamola locale) saranno visibili su di un'altra macchina (remota) 109 come se esse fossero state effettuate dalla tastiera e dal mouse della macchina remota. Non solo: sarà possibile vedere lo schermo della macchina remota all'interno di una finestra della macchina locale . Questo tipo di applicazioni è molto utile per esempio se per un qualche motivo la macchina da controllare non ha una sua tastiera oppure si trova in un locale non generalmente accessibile all'operatore. È evidente che affinché l'applicazione funzioni essa debba lavorare in tempo reale. Se cioè si preme il tasto T sulla tastiera locale, la lettera T deve apparire immediatamente sullo schermo della macchina remota, e quindi apparire anche all'interno della finestra locale che riproduce tale schermo. Lo stesso se si fa click sul pulsante di chiusura di una finestra. Ovviamente se TCP fosse libero di accumulare questi comandi per poi spedirli tutti in una volta l'applicazione sarebbe di difficile utilizzo. Infatti, se l'operatore decidesse di chiudere una finestra dello schermo remoto per accedere un'icona sottostante e TCP non spedisse il comando fintanto che il buffer di partenza non fosse pieno, non sarebbe possibile eseguire l'operazione successiva, cioè aprire l'icona sulla scrivania del sistema. Per questo motivo TCP prevede la possibilità di forzare la spedizione del buffer (push). Questo tuttavia non è sufficiente. Se infatti TCP che riceve i dati accumulasse gli stessi nel buffer di ricezione prima di passarli all'applicazione destinataria saremmo punto e da capo. Per questo motivo, quando un segmento è forzato in uscita, TCP imposta a uno un certo bit nell'intestazione del segmento in modo che questi possa venire riconosciuto e immediatamente passato all'applicazione remota. Abbiamo detto che il TCP utilizza il metodo della finestra di scorrimento per tenere la rete sempre impegnata al massimo della sua capacità e che esiste un'importante differenza tra il meccanismo generale e quello più sofisticato utilizzato effettivamente dal TCP. Tale differenza consiste in un'asimmetria rispetto al meccanismo base dove l'unità dati utilizzata nella finestra di scorrimento era la stessa utilizzata nella trasmissione. Il TCP utilizza il segmento come unità dati da trasmettere, mentre ragiona in termini di ottetti per quello che riguarda il meccanismo di ritrasmissione. Questo comporta una complicazione nella gestione delle conferme di ricezione (acknowledgement). A causa dell'asimmetria suddetta, la ritrasmissione in caso di mancata ricezione non avviene per segmenti, ma a livello di ottetti. Questo vuol dire che un segmento può contenere contemporaneamente sia nuovi dati sia una parte dei dati persi in precedenza. Ovviamente a queste condizioni ha poco senso numerare semplicemente i segmenti e usare questo identificativo nelle conferme di ricezione. Né è pensabile di usare i datagrammi IP a tale scopo, dato che questi sono generalmente di lunghezza fissa mentre i vari segmenti TCP sono di lunghezza variabile. Ne consegue che l'unico modo per gestire le conferme è quello di ragionare in termini di cursore all'interno del flusso di dati. Come dire "ho ricevuto i primi 300 caratteri della lettera che mi hai spedito". 110 Ecco che cosa accade: ogni segmento contiene la posizione dell'area dati del segmento TCP all'interno del flusso di dati. Tale posizione si chiama numero di sequenza (sequence number) ed è calcolata in byte. Il destinatario estrae i vari ottetti dai segmenti ricevuti e li ricompone per ricostruire il flusso dei dati, utilizzando i numeri di sequenza per riordinare i vari segmenti. Questi possono infatti arrivare in qualunque ordine, o essere andati persi. A questo punto, chi sta ricevendo i dati, avrà ricostruito in modo completo una parte del messaggio originario e si ritroverà alcuni dati in eccesso che non sono contigui alla parte di flusso ricostruito. Ogni volta che il destinatario riceve un segmento, manda indietro nella conferma di ricezione il numero di sequenza dell'ottetto che si aspetta di ricevere per continuare la ricostruzione, cioè il valore dell'ultimo ottetto della parte contigua ricostruita più uno. Immaginate di dover spedire una lettera a un vostro amico. Il TCP negozia con la controparte la lunghezza massima del segmento, come vedremo più avanti. Quindi inizia a riempire il primo segmento un carattere alla volta. Quando il segmento è pieno viene spedito e viene fatto partire il contatore a tempo per quel segmento. Quindi il TCP inizia a riempire il secondo segmento, che parte regolarmente, e così dicendo. Man mano che i segmenti partono arrivano dalla controparte le conferme di ricezione. Supponiamo che a un certo punto, dopo aver spedito 450 ottetti, arrivi per due volte al mittente la conferma che il destinatario è riuscito a ricostruire il flusso fino al 300° carattere e che si aspetta il 301°. È evidente che qualcosa è andato storto e che si sono persi dei dati. Il TCP allora spedisce un segmento che contiene di nuovo dal 301° carattere in poi, diciamo fino al 400°. Dato che i caratteri dal 370° al 450° erano comunque arrivati regolarmente, il successivo messaggio di conferma richiederà direttamente il 451° carattere, e non il 401°. Vantaggi e svantaggi: un vantaggio è che il valore di conferma è estremamente semplice da calcolare e di immediata comprensione. Inoltre, se una conferma di ricezione va persa, non è detto che questo causi automaticamente la ritrasmissione dei dati. Ci sarà comunque la conferma successiva che fornirà l'indicazione esatta del punto a cui è arrivato il destinatario nel ricostruire il flusso. Lo svantaggio più grosso è che il mittente non ha modo di sapere quanti dati siano effettivamente arrivati con successo al destinatario, dato che basta un buco nel flusso per far segnalare come validi un numero di byte molto inferiore a quelli effettivamente ricevuti. Questo crea seri problemi al mittente, che non sa se ritrasmettere tutti i dati successivi, e quindi sprecare tempo a ritrasmettere dati già arrivati, o trasmettere solo una piccola parte e aspettare la conferma che il potenziale buco si è chiuso. 111 Entrambi gli schemi sono alquanto inefficienti. Sta allo sviluppatore dello stack TCP/IP decidere quali algoritmi utilizzare, tenendo presente che un algoritmo troppo complesso ha comunque lo svantaggio di avere potenzialmente basse prestazioni. Un altro punto importante è il calcolo della lunghezza ottimale del segmento. Abbiamo detto più sopra che ogni conferma di ricezione contiene una soglia di capacità (window advertisement) la quale specifica il numero di ulteriori ottetti che il destinatario è in grado di ricevere. Questo meccanismo permette di adattare la finestra di spedizione alle dimensioni del buffer di ricezione. Tuttavia è anche necessario definire la lunghezza del segmento oltre che in funzione delle capacità di trasmissione del mittente e di ricezione del destinatario, anche e soprattutto in funzione delle caratteristiche della rete, come per esempio la grandezza massima del frame fisico, o Maximum Transfer Unit (MTU). La lunghezza massima di un segmento, o Maximum Segment Size (MSS), viene calcolata appunto sulla base dell'MTU se entrambi gli estremi della connessione si trovano nella stessa rete fisica, altrimenti lo standard raccomanda di utilizzare un valore di 536 byte, equivalente alla dimensione normale di un datagramma IP meno le dimensioni standard delle intestazioni IP e TCP sommate insieme, 40 byte appunto. Tale calcolo è ovviamente solo un primo tentativo di ottimizzare l'utilizzo della rete da parte del TCP. Durante la trasmissione il TCP può modificare tale valore in funzione della situazione contingente. Non esiste tuttora un algoritmo standard per definire il giusto valore per l'MSS, data la complessità del problema. Una cattiva definizione dell'MSS può seriamente penalizzare la comunicazione. Se il segmento è troppo piccolo, il rapporto tra i dati trasmessi e quelli utilizzati nella trasmissione stessa è sfavorevole. Per esempio, un segmento di cinque byte utilizza solo un ottavo della larghezza di banda (bandwidth) disponibile, dato che per ogni cinque byte di dati ce ne sono ben quaranta di intestazione. Viceversa, se il segmento è molto grande, altrettanto è il datagramma IP. Se il datagramma è più grande dell'MTU, verrà spezzato in più frammenti non indipendenti fra loro, per cui basta che si perda un solo frammento per perdere tutto il datagramma e di conseguenza il segmento TCP. Esiste poi la possibilità che il TCP debba spedire dei dati che non fanno parte del flusso normale e che vanno immediatamente gestiti dalla controparte indipendentemente dallo stato in cui si trova la ricostruzione del messaggio originario. Tali dati sono detti urgenti, e anche in questo caso esiste un bit nell'intestazione del segmento che informa il destinatario del fatto che il segmento va gestito immediatamente. Il concetto è analogo a quello del BREAK da tastiera. Se avete lanciato un programma che va in loop è necessario poterlo interrompere senza dover 112 far ripartire il sistema. Su molti sistemi operativi basta premere una sequenza di tasti, come per esempio Control-C (^C) per bloccare l'esecuzione del programma. Similarmente, se un estremo della connessione deve bloccare (o sbloccare) l'elaborazione del flusso di dati dall'altra parte, dovrà poter mandare un messaggio urgente che abbia la precedenza rispetto ai normali segmenti di dati. Si dice che tale messaggio è fuori banda (out of band). Segmento Benché il TCP presenti all’utente una visione continua dei dati, detta flusso, l’unità di trasferimento dei dati del TCP è il segmento. Un segmento è formato come al solito da una intestazione e da un’area dati. Al contrario del datagramma IP, il segmento ha dimensioni variabili nel tempo, cioè i vari segmenti spediti a fronte di uno stesso flusso possono avere lunghezze differenti. I segmenti sono utilizzati dal TCP per aprire e chiudere una connessione, trasferire dati, spedire conferme di ricezione e modificare la finestra di spedizione, quel meccanismo che garantisce un utilizzo ottimale della rete, come spiegato in precedenza. Due caratteristiche peculiari del TCP sono che lo stesso segmento può portare contemporaneamente sia dati veri e propri sia dati di controllo, e che le informazioni di controllo possono riferirsi sia allo stesso flusso dell’area dati, sia al flusso opposto (piggybacking). L’intestazione: Innanzitutto abbiamo i numeri di porta del mittente e del destinatario, esattamente come nell’UDP. Come già nell’UDP, infatti, gli indirizzi IP delle due controparti sono contenuti nell’intestazione del datagramma IP. Al contrario di quanto avveniva nell’UDP, tuttavia, la conoscenza da parte del TCP degli indirizzi IP non rompe il paradigma che vuole un certo isolamento fra le responsabilità dei vari livelli dello stack. Il TCP infatti, architetturalmente, ragiona in termini di connessioni, e queste comprendono sia l’informazione relativa alle porte, sia quella relativa agli indirizzi IP. Anzi, ogni qual volta l’IP consegna un segmento al TCP, gli passa anche gli indirizzi IP contenuti nell’intestazione del datagramma. Anche nel caso del segmento TCP la verifica della correttezza dell’intestazione da parte del destinatario viene effettuata utilizzando un meccanismo di somma di controllo con pseudointestazione. All’interno dell’intestazione TCP, infatti, esiste un campo chiamato somma di controllo (checksum). Il TCP imposta inizialmente tale campo di 16 bit a zero. Costruisce quindi una psedointestazione che contiene gli indirizzi IP del mittente e del destinatario, il numero di protocollo del sottosistema di trasmissione (nel caso del TCP basato su IP è sei) e la lunghezza del segmento TCP compresa l’intestazione. A questo punto appende alla pseudo intestazione il segmento IP e aggiunge alla fine dello stesso tanti zeri quanti ne servono per far sì che il blocco risultante sia un multiplo di parole da 16 bit (padding). Divide quindi il blocco in parole da 16 bit e ne calcola la som- 113 ma a complemento uno. Il risultato viene quindi salvato nel campo apposito dell’intestazione e sia la pseudointestazione sia i bit aggiunti in fondo vengono rimossi prima di spedire il segmento. Il destinatario ovviamente effettuerà un calcolo analogo per verificare che il valore di controllo così ottenuto corrisponda con quello arrivato nell’intestazione del segmento. Nell’intestazione ci sono tre campi calcolati in ottetti. Il primo è il numero di sequenza (sequence number), che rappresenta la posizione dell’area dati del segmento TCP all’interno del flusso di dati. Il secondo è il numero di conferma (acknowledgement number), ovverosia il numero di sequenza dell’ottetto che il mittente si aspetta di ricevere per continuare la ricostruzione. Da notare che tale valore corrisponde al flusso opposto rispetto a quello in cui viaggia il segmento che lo contiene. Il terzo campo è il puntatore ai dati "urgenti". Come detto prima, è possibile che il TCP debba spedire dei dati urgenti che vanno elaborati indipendentemente dal flusso normale di dati, e con priorità rispetto a quest’ultimo. In questo caso il segmento contiene un segnalatore (flag) che informa il destinatario della presenza d’informazioni urgenti nell’area dati. I dati urgenti sono posizionati all’inizio dell’area dati, e il puntatore in questione indica dove tali dati finiscono e dove ricominciano i dati normali, se ce ne sono. I segnalatori: Separati da un’area riservata per usi futuri c’è il campo che contiene la posizione dell’area dati nel segmento e un blocco di sei segnalatori. Il primo, misurato in parole da 32 bit, indica di fatto la lunghezza dell’intestazione del segmento in tale unità di misura. questo campo è necessario in quanto in fondo all’intestazione esiste una zona riservata a eventuali opzioni che rende la lunghezza dell’intestazione non fissata a priori. Il secondo campo contiene invece sei indicatori. Data infatti nel segmento la presenza contemporanea, almeno in potenza, sia di dati di controllo sia di dati applicativi normali e urgenti, è necessario utilizzare dei segnalatori per informare il destinatario su cosa effettivamente contiene il segmento. Tutti i segnalatori sono attivi se impostati a uno, inattivi altrimenti. Il primo segnalatore indica se l’area dati contiene dati urgenti. Il secondo indica la presenza nel segmento di una conferma di ricezione valida. Dato infatti che il campo corrispondente esiste sempre e comunque nell’intestazione, se il segmento non trasporta alcuna conferma di ricezione è necessario informare in qualche modo il destinatario che tale campo va ignorato. Il terzo bit è posto a uno quando si vuole forzare la trasmissione dei dati all’utente finale indipendentemente dal fatto che il buffer di ricezione sia o meno completamente riempito. Il quarto segnalatore serve per interrompere immediatamente la connessione (reset). Tale evento avviene solo in situazioni eccezionali e causa l’interruzione immediata delle trasmissioni da ambo le parti e il rilascio del contenuto dei buffer di ricezione. Il quinto bit è detto di sincronizzazione, ed è utilizzato durante la fase iniziale di negoziazione della connessione, detta in gergo handshake. In pratica, i segmenti scambiati quando questo bit è impostato a uno servono a 114 sincronizzare i numeri di sequenza delle due controparti prima d’iniziare la trasmissione vera e propria dei dati. L’ultimo bit serve a informare il destinatario che il mittente intende terminare in modo pulito la connessione e che non ha più dati da spedire. All’apertura e alla chiusura della connessione il TCP utilizza un algoritmo chiamato saluto a tre vie (three-way handshake) che garantisce la corretta sincronizzazione delle due operazioni. L’ultimo campo fisso è quello relativo alla soglia di capacità del mittente (window advertisement) che contiene il numero di ulteriori ottetti che esso è in grado di ricevere. A questo punto è di nuovo importante ricordare il concetto di piggybacking, a cui già si è accennato. Ovverosia, ogni segmento può portare contemporaneamente informazioni in cui una controparte è vista sia come chi spedisce i dati contenuti nel segmento, cioè come mittente, sia come chi ha ricevuto o deve ricevere dati dall’altro capo della connessione, cioè come destinatario. Quando noi parliamo di mittente, per evitare confusione, ci riferiamo sempre al mittente del segmento di cui stiamo parlando. È importante comunque tenere sempre presente che alcuni dati del segmento hanno senso solo se si considera il mittente quale destinatario di dati precedenti o ancora da venire. In fondo all’intestazione c’è un’area opzionale che può essere utilizzata a vari scopi. In genere essa contiene opzioni che permettono alle due controparti di negoziare alcuni aspetti della comunicazione. Un esempio è il calcolo della lunghezza ottimale del segmento. L’implementazione del protocollo TCP: Abbiamo visto che tutto il meccanismo funziona ed è affidabile grazie alle conferme di ricezione e alla ritrasmissione dei pacchetti probabilmente andati perduti. Ma come fa a sapere il mittente che un pacchetto è andato effettivamente perduto? Ovviamente perché non è arrivata la conferma di ricezione, direte voi. Va bene, ma quanto devo aspettare tale conferma prima di assumere che sia necessaria una ritrasmissione? E qui son dolori. Se aspetto troppo rischio di rallentare la comunicazione in modo inaccettabile. Se aspetto troppo poco rischio di ritrasmettere inutilmente troppi segmenti, magari semplicemente un po’ in ritardo. Il timeout Tutto il sistema si basa sul calcolo del tempo di attesa massimo, o timeout. Il TCP calcola il timeout sulla base del tempo intercorso fra la spedizione di un segmento e l’arrivo della conferma corrispondente. Sembra facile, ma non è così. Vediamo rapidamente i punti chiave del discorso. Il TCP calcola continuamente il timeout, ogni volta che arriva una conferma di ricezione. In questo modo il sistema è sempre aggiornato in funzione dello stato effettivo della connessione e della rete. Il timeout è calcolato come media pesata dei tempi intercorsi fra la spedizione del segmento e la ricezione della conferma. Chiamiamo quest’ultimo tempo rilevato di andata e ritorno (Round Trip Sample) o RTS. Il tempo stimato di andata e ritorno (Round Trip Time) è calcolato utilizzando una specifica formula. In pra- 115 tica ogni nuovo RTS pesa più o meno sul calcolo dell’RTT in base al valore di alfa. Se alfa è molto vicina a zero, l’RTT varia rapidamente a ogni cambiamento dell’RTS, per cui il sistema risponde rapidamente alle variazioni. Se viceversa alfa è vicina a uno, è necessario che la nuova RTS rimanga stabile più a lungo per avere effetto sull’RTT. A questo punto il timeout viene calcolato moltiplicando l’RTT per un valore maggiore di uno. Se il valore di beta è troppo vicino a uno la perdita di un pacchetto viene immediatamente rilevata, ma si rischia di ritrasmettere più pacchetti del necessario. Se viceversa beta è troppo alto si rischia di aspettare troppo a lungo prima di ritrasmettere un pacchetto perso, abbassando così le prestazioni della connessione. In genere si raccomanda per beta un valore di due. Una scelta difficile: La scelta di alfa e di beta sembra dunque essere critica, ma i problemi non sono ancora finiti. Infatti, se un segmento è trasmesso due volte, quando arriva la conferma di ricezione, a chi si riferisce? Al pacchetto originale o a quello ritrasmesso? Se usiamo il primo pacchetto per il calcolo dell’RTS rischiamo di far crescere esponenzialmente il valore di timeout. Infatti un pacchetto è ritrasmesso quando scade il timeout precedente. Di conseguenza il nuovo RTS è ovviamente più grande del vecchio timeout. Se viene perso un nuovo pacchetto l’RTS cresce ancora, e così via. Se usiamo il pacchetto ritrasmesso abbiamo il problema opposto, cioè il timeout rischia di ridursi sempre di più, o almeno si è dimostrato sperimentalmente che si stabilizza su valori alquanto bassi. Supponiamo infatti di avere un ritardo in rete: la conferma di ricezione arriva conseguentemente in ritardo. Nel frattempo il mittente ha rispedito il pacchetto che credeva perso. Appena arriva la conferma questa è associata al segmento ritrasmesso generando così un RTS molto piccolo. Il timeout si riduce, aumentando il rischio di considerare persi pacchetti la cui conferma di ricezione arriva in ritardo, e così via. P. Karn propose nel 1987 d’ignorare i pacchetti ritrasmessi nel calcolo del timeout. Questo evitava il problema suddetto, ma ne creava un altro. Se un pacchetto è ritrasmesso perché si è avuto un repentino calo di prestazioni della rete, il timeout rimarrà sempre troppo basso, in quanto il mittente continuerà a ritrasmettere pacchetti le cui conferme arrivano in ritardo rispetto al timeout calcolato prima del calo di prestazioni. Dato che tali conferme vengono regolarmente ignorate per il calcolo dell’RTT, il timeout non viene più aggiornato almeno fintanto che la rete non torna normale, cosa per giunta complicata dal sovraccarico dovuto all’inutile ritrasmissione dei pacchetti. La soluzione consiste nell’aumentare il timeout precedente a una ritrasmissione di un fattore arbitrario, diciamo gamma, fino a un limite massimo ragionevole calcolato sulla base dei possibili cammini all’interno della rete . In genere gamma non è minore di due. 116 Questa tecnica è detta di backoff. Conclusione: Implementare il protocollo TCP non è certo banale. Il che tra l’altro fa capire come non tutti i pacchetti TCP siano uguali: anzi, è proprio il contrario. Una scelta oculata degli algoritmi implementativi può fare seriamente la differenza fra un prodotto e un altro. Il fatto che essi implementino lo stesso standard non dà alcuna indicazione sulla qualità delle prestazioni dello stack che state utilizzando. Se poi alcuni parametri possono essere personalizzati dall’utente, una opportuna calibrazione del programma studiata sulle caratteristiche specifiche della vostra rete, può modificare significativamente i tempi di risposta del sistema. Naturalmente non è fra gli scopi di questi articoli entrare nel dettaglio di tutte le problematiche TCP/IP Come avviene la trasmissione di un messaggio di e-mail PC coinvolti: Un primo computer che non si vede è quello ove risiede la casella del destinatario. POP server Il computer del mittente dispone solamente di un client di posta elettronica Inoltre se una stessa e-mail deve essere inviata in copia a tanti destinatari che hanno le caselle su vari POP server sparsi per la terra, il mittente passerà al proprio server di spedizione una unica copia del mail: sarà il server a "fare le copie" e contattare tutti i computer destinatari. Pertanto, è consuetudine di tutti i provider mettere a disposizione dei propri clienti anche un server della posta in partenza, di solito chiamato SMTP server. Capita, in qualche caso, che POP server e SMTP server siano la stessa macchina: ciò è possibile in quanto i due servizi vengono svolti attraverso porte distinte. I grossi provider, con decine o centinaia di migliaia di utenti, avranno con ogni probabilità molti POP server e, a seconda del traffico, anche più SMTP server. Sapendo questo, passiamo a vedere come è fatto un normale messaggio di e-mail e quali vicissitudini subisce, dal momento in cui il mail client del mittente lo immette in rete, al momento in cui viene consegnato al mail client del destinatario. Gli header di un messaggio di e-mail From: mario.rossi@prima-rete-esempio.com (Mario Rossi) To: fverdi@seconda-rete-esempio.com Date: Wed, 15 Apr 1998 14:24:06 +0200 117 X-Mailer: Gorilla 3.2 (Win95; I) Subject: Richiesta informazioni sulle vs. iniziative Le sarei grato se mi facesse pervenire il programma delle In questo esempio è importante osservare che, prima del testo del messaggio vero e proprio, si hanno alcune righe scritte nella forma: nome-header: valore-testuale Ciascuna di queste righe è un header, e gli standard di rete prescrivono, tra le altre cose, i nomi degli header e la forma in cui deve essere espresso il corrispondente valore testuale. Dunque, il mail client prepara tutte le righe di testo, header e messaggio, come abbiamo visto sopra, e li passa al server SMTP prescelto Chi mette gli header in testa al messaggio da trasmettere è, come abbiamo detto, il mail client, ossia un programma in esecuzione sul computer del mittente. Tale programma è quindi sotto il completo controllo del mittente: questo sceglie quale programma adottare e come configurarlo. Anzi, potrebbe farsi realizzare da qualcuno un programma su misura per le sue esigenze (quando non farselo addirittura lui stesso). Questo in concreto cosa significa: che i valori forniti in tutti quegli header non significano nulla. Normalmente nel campo From: il mittente mette il proprio vero indirizzo, perché normalmente non si manda spam, ma si comunica con qualcuno che si desidera possa rispondere. Lo spammer, nella maggior parte dei casi, non desidera affatto che le sue vittime gli possano rispondere, quindi di solito se ne guarderà bene dal fornire un campo From: autentico. Anche il campo To: non ha valore, poiché non è in base al suo contenuto che si determina la destinazione del messaggio. Date: Mon, 09 Feb 1998 23:27:13 -0500 (EST) From: Internet.Services@mio-isp.it Subject: Important Message To: Tim@rhodes.edu Reply-To: Friend@public.net Message-Id: <<209.133.27.38> MAIL@earlthling.com> X-Pmflags: 6336476446536565465365 Comments: Authenticated sender is <Mail.INS.com> X-UIDL: <209.133.27.38> Thank-you, for visiting www.aaaaa.com. ....... Here is the information you requested. Notiamo alcune cose. Tanto per incominciare il campo From:, in cui hanno messo un indirizzo di fantasia attestato niente meno che presso il mio stesso provi- 118 der; quanto al campo To:, compare un destinatario (probabilmente inesistente) presso una università americana. Probabilmente lo spammer mi vuole indurre a pensare che il messaggio sia giunto a me per errore; simili errori, però, nella realtà della rete non si verificano. Vorrei far notare quello che dice: "Authenticated sender is ...": è tutto fumo negli occhi; quando vedete frasi tipo Authenticated sender o simili, non c'è proprio niente di autentico. Questo header, così come quello precedente (X-Pmflags:) viene inserito da Pegasus Mail, un famoso programma mail client. Non è detto però che questo messaggio sia effettivamente stato inviato usando Pegasus, più probabilmente è stato usato un client costruito apposta per spammer (ne esistono), che cerca di simulare l'uso di Pegasus. Possiamo anche dare un'occhiata alle prime righe del messaggio: notate il tentativo di far passare l'e-mail come sollecitata ("grazie per aver visitato il nostro sito", che io ovviamente non avevo visitato affatto, "ecco l'informazione che avevi richiesto" eccetera). Tutti questi trucchi non valgono nulla: l'importante è non farsene confondere. Quindi, di regola, lo spammer configurerà il proprio software in modo da nascondere il più possibile ogni sua traccia e, in molti casi, cercherà addirittura di inserire degli header fasulli per trarre in inganno chi cercasse di individuarlo. Ora vediamo che fa il nostro SMTP server dopo aver accettato il messaggio per l'inoltro. Cercherà di contattare il mail server destinatario e, una volta riuscito a stabilire una sessione con esso, gli passerà il messaggio usando lo stesso identico meccanismo che abbiamo appena visto applicare da parte del mail client. Che succedesse questo, in effetti, potevamo aspettarcelo; la novità è che, al nuovo server, il messaggio non verrà passato identico a come era stato preparato dal mail client nel passo precedente: al messaggio verranno aggiunti nuovi header (generalmente un paio), per lasciare traccia del fatto che sia transitato da quel server. Vediamo come diventa: Received: from mariorossi (ppp26-milano.prima-rete-esempio.com [194.188.15.26]) by mail.prima-rete-esempio.com (8.8.5/8.8.5) with SMTP id RU387493 for <fverdi@seconda-rete-esempio.com>; Wed, 15 Apr 1998 14:26:32 +0200 (METDST) From: mario.rossi@prima-rete-esempio.com (Mario Rossi) To: fverdi@seconda-rete-esempio.com Date: Wed, 15 Apr 1998 14:24:06 +0200 Message-ID: <3754F6E5.BA67D052@prima-rete-esempio.com> X-Mailer: Gorilla 3.2 (Win95; I) Subject: Richiesta informazioni sulle vs. iniziative 119 Vediamo dunque che è stato inserito nel mezzo un header 'Message-ID:', mentre è stato inserito in testa un header 'Received:'. Ben diverso è il discorso a proposito dell'header 'Received:': questo header ha finalmente un valore oggettivo, ed è ciò su cui dobbiamo contare per riuscire a individuare il nostro spammer. Aggiungendo l'header Received: il server che ha veicolato il messaggio dice, in sostanza: "questo messaggio l'ho trasportato io, che lo avevo ricevuto dal seguente indirizzo". A pensarci bene, è stato una fortuna il fatto che, quando la rete nacque, fosse una rete militare: nell'impostazione architetturale e dei protocolli entrò così anche una speciale attenzione alla tracciabilità degli eventi di rete, al fatto che si potesse individuare dove si erano generati e per dove erano passati. Così oggi abbiamo ottime possibilità di risalire allo spammer: i protocolli di rete stanno dalla nostra parte, e questo gli spammer sembrano non volerlo capire (peggio per loro!). Ma prendiamo in esame il nostro header Received: Received: from mariorossi (ppp26-milano.prima-rete-esempio.com [194.188.15.26]) by mail.prima-rete-esempio.com (8.8.5/8.8.5) with SMTP id RU387493 for <fverdi@seconda-rete-esempio.com>; Wed, 15 Apr 1998 14:26:32 +0200 (METDST) Il server che ha inserito l'header dichiara il proprio nome dopo la parola 'by'. Nella sostanza, l'header va letto come segue: "Questo messaggio è stato ricevuto su mail.prima-rete-esempio.com, proveniente da qualcuno che si è presentato come mariorossi e che comunque aveva l'indirizzo IP 194.188.15.26. Tale indirizzo risulta corrispondere alla risorsa di nome ppp26-milano.prima-rete-esempio.com" Si noti che qui è presente una parola from non seguita dai due punti. Dopo questo from c'è il nome con cui chi ha passato il messaggio al server si è presentato, per mezzo del comando HELO. Quindi, se questo fosse un messaggio di spam e dovessimo scoprire da dove viene, potremmo ignorare tranquillamente il mariorossi indicato qui. Ciò che c'è tra parentesi è invece quel che si deve guardare: il server che ha messo questo header ci assicura di avere ricevuto il messaggio dalla risorsa il cui indirizzo IP è indicato tra parentesi quadre, e di cui è dato anche il nome. 120 Protocolli di posta per scaricare i propri messaggi dal server POP3(Post Office Protocol) : i messaggi vengono scaricati completi di allegati in un solo computer locale e cancellati dal server. E’ possibile decidere se conservare una copia sul server. IMAP(Internet Message Access Protocol): i messaggi rimangono sul server, si può accedere alla propria posta da locazioni diverse, si scaricano inizialmente solo le intestazioni (poco pesanti) e poi decidere se scaricare tutto il contenuto. MUA:un client di posta (o Mail User Agent, client di e-mail, ecc.) è un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione di e-mail (i messaggi di posta elettronica) da e verso un server di posta. MTA:un mail server (Mail Transfer Agent ) è un programma, e per estensione il computer su cui viene eseguito, che si occupa dello smistamento da un computer a un altro della posta elettronica. Normalmente un mail server risiede su un sistema dedicato ma può essere eseguito su computer ove risiedano altri server o che vengano utilizzati anche per altri scopi. Si può installare un mail server anche su un normale personal computer. MDA:un Mail Delivery Agent è un software che accetta in entrata messaggi e-mail e li distribuisce alle mailbox destinatarie (se la destinazione è un account nella macchina locale) o li inoltra a un altro server SMTP (se la destinazione è in un server remoto). Un mail delivery agent non è necessariamente un mail transfer agent (MTA), anche se in molti sistemi le due funzioni sono implementate nello stesso programma. 121 SERVIZI E CONNESSIONI Introduzione a Internet Lo scopo di questa lezione è quello di dare una panoramica su alcuni servizi di base che le reti usano per fornire e scambiare informazioni e di discutere alcuni metodi con cui personal computers e reti locali si connettono ad altre reti all'interno di Internet. Servizi Chiunque possiede un computer sa che in esso ci sono informazioni utili e sa come accedervi. Milioni di altre persone possiedono a loro volta dei computer e possiamo presumere che questi altri computer contengano una grande quantità di informazioni che sarebbero molto interessanti. L'unico problema è come accedere a tali informazioni.I computer comunicano tra loro facilmente, attraverso porte, utilizzando vari protocolli, ma questi non ci aiutano realmente. Non è infatti facile capire il flusso di dati binari che i computer si scambiano tra loro. E' necessario disporre di un meccanismo con cui un computer possa interpretare le informazioni che riceve da altri computer in maniera tale da poterle utilizzare. I programmi che i computer utilizzano per convertire i dati che si scambiano in una forma comprensibile, sono chiamati servizi. Questi servizi consentono di esaminare pagine web, scambiare e-mail, effettuare chat e interagire con computer remoti in molti altri modi. Il vostro computer, il computer locale usa programmi chiamati clients (clienti) per interpretare le informazioni che riceve. Gli altri computer, i computer remoti, usano programmi chiamati server (serventi) per fornire queste informazioni al vostro computer. HTTP e il Web Quando si parla di ‘Internet,’ la maggior parte delle persone pensano al World Wide Web. Il World Wide Web, o semplicemente il Web, non è Internet. Al contrario, è un metodo di utilizzo di Internet per scambiare informazioni tra computer. Il Web usa http o hypertext transfer protocol e servizi noti come i browser web e server web per permettere lo scambio di informazioni nella forma di pagine web tra computer locali e remoti. Localmente ciò che si vede è il browser web. Le informazioni presenti sul computer remoto vengono inviate al vostro computer locale utilizzando il protocollo http. Il browser web interpreta tali informazioni e le visualizza sul vostro computer locale sotto forma di pagine web. Ipertesto La parte di ipertesto del protocollo http si riferisce ad un metodo non-lineare di 122 presentare le informazioni. Il testo viene normalmente letto in modalità lineare: la parola 2 segue la parola 1; la frase 3 segue la frase 2; il paragrafo 5 segue il paragrafo 4. L’idea di ipertesto consente alle informazioni di essere esaminate in maniera non-lineare. Questa è la differenza principale tra un ipertesto e i metodi meno recenti per visualizzare le informazioni in modo lineare. Con gli ipertesti, le parole e le idee possono essere connessi non solo con le parole che li circondano direttamente, ma anche con altre parole, idee o immagini. L’ipertesto non è limitato al Web. I word processor più completi consentono di creare pagine memorizzate localmente in formato web o http. Queste pagine vengono lette utilizzando un browser web e si comportano come farebbe una qualunque pagina web, con la sola differenza che si trovano sul vostro computer locale e non su un computer remoto. Browser Sul computer locale si utilizza un programma client chiamato browser web. Al contrario di quando si creda, esiste attualmente un vasto numero di browser web disponibili sia per Windows che per Linux. Questi includono i browser Internet Explorer della Microsoft, Netscape Navigator, Mozilla e Mozilla Firefox. E’ anche possibile creare pagine web personali. (anche con office) Una volta progettate le pagine, è necessario un computer su cui caricarle, in modo tale che possano essere viste dalle altre persone. Questo è chiamato web hosting. Il computer che ospita le pagine risiede su un server web. E' possibile attivare uno di questi server in casa vostra, utilizzando il vostro computer, ma ci sono vari inconvenienti, il primo di questi è la disponibilità continua dell’informazione. L'informazione memorizzata su un server web è disponibile solo quando il server è attivo, perfettamente funzionante ed ha una connessione aperta. Così, se volete rendere disponibile un server web dalla vostra camera, dovete lasciare sempre acceso il computer, essere sicuri che il programma web server operi correttamente per tutto il tempo (questo include l'individuazione di problemi hardware, il controllo dei virus, worms e altri attacchi, e altri inevitabili errori all'interno del programma stesso) e dovete tenere aperta la connessione ad Internet. Questo è il motivo per cui la maggior parte delle persone pagano qualcun altro per effettuare tutto questo. Una società di hosting memorizza le pagine web sul proprio computer. Una società di web hosting perfetta avrà più server ridondati e una politica di backup regolare in modo tale che il servizio non venga mai interrotto per problemi hardware, uno staff di supporto per mantenere il server attivo nonostante gli attacchi degli hackers e gli errori del programma, in modo tale che tutto ciò che si deve fare è realizzare le pagine web, caricarle (upload) sul server della compagnia di hosting, staccare il telefono, spegnere il computer e andare a dormire, e le pagine web saranno disponibili al mondo intero. E-Mail – POP e SMTP Il secondo aspetto più noto di Internet è probabilmente l'e-mail. Sul vostro com- 123 puter, usate un client di e-mail che si connette ad un server (mail server). Quando attivate un account e-mail vi viene dato un nome univoco con il formato utente@dominio. Vi viene anche chiesto di fornire una password da usare per scaricare le vostre e-mail. Il protocollo SMTP, che è utilizzato per inviare e-mail, non richiede password. Questo poteva non essere un difetto quando è stato sviluppato il protocollo e Internet era un piccolo mondo abitato da persone con le stesse idee, ma ora è diventato una breccia che consente l'uso non autorizzato di server di posta e vari altri trucchi, come 'e-mail spoofing', in cui qualcuno invia un'email che appare proveniente da un altro indirizzo. Tuttavia, alcuni server di posta minimizzano questo implementando un passo di autenticazione, in cui si deve provare la propria identità prima di inviare un'e-mail. Una cosa importante da ricordare è che l'e-mail, nonostante sia protetta da password, non è un mezzo sicuro per inviare informazioni. La maggior parte dei clients e server POP richiedono che la vostra password sia comunicata – non crittata – al vostro server di posta. Questo non significa che chiunque riceve un'email da voi riceva anche la vostra password; ma significa che qualcuno con le conoscenze e i mezzi adatti può facilmente 'sniffare' la vostra IRC IRC, o Internet relay chat, è il luogo in cui si esprime più chiaramente la natura non regolata di Internet. Su IRC, chiunque abbia qualcosa da dire ha l'opportunità di farlo. Probabilmente conoscerete le chat room utilizzate da certi servizi online. IRC è come una chat room, solo che non ci sono regole e non ci sono standard. Su un canale IRC potete trovare esattamente ciò che state cercando, o qualcosa che avete già, o ancora qualcosa che non avete mai saputo esistesse. Tutte le regole di cui avete sentito parlare circa le chat room sono applicabili ai canali IRC. Non dite a nessuno il vostro vero nome. Non date il vostro numero di telefono, il vostro indirizzo o i numeri del vostro conto bancario. FTP FTPè acronimo di file transfer protocol. Come suggerito dal nome, consente di trasmettere files tra un computer locale ed uno remoto. Può essere usato per trasferimenti privati di file, ma è generalmente associato a server liberi ed anonimi che offrono accesso pubblico a collezioni di files. L'ftp anonimo era una volta il mezzo con cui la maggior parte computer si scambiavano file su Internet. Mentre molti server ftp anonimi vengono usati per distribuire file che sono disponibili illegalmente (e che possono essere infettati da virus), ce ne sono anche molti usati legalmente per distribuire programmi e file. I server che offrono servizi ftp anonimi possono essere trovati con vari mezzi, inclusi i motori di ricerca di Internet. 124 La maggior parte dei server ftp ora consentono di accedere ai loro file usando il protocollo ftp attraverso un browser Telnet e SSH Telnet consente ad un utente locale di inviare una grande varietà di comandi ad un computer remoto. Questo consente all'utente locale di comandare al computer remoto di effettuare funzioni e restituire dati sul computer locale, quasi come se foste seduti alla tastiera di fronte al computer remoto. SSH, o secure shell, non è altro che la versione sicura di telnet, ovverosia i dati transitanti sono cifrati. Nuovamente, sia Windows sia Linux hanno una linea di comando per client telnet; per accedervi, aprite il prompt di comando e una finestra terminale e digitate: telnet. Per accedere ad un server mediante telnet, avrete bisogno di un account e di una password impostata per voi dall'amministratore del server remoto, perchè telnet consente di effettuare una grande varietà di azioni, alcune delle quali possono compromettere seriamente il computer remoto. Telnet era usato nel passato per consentire agli amministratori di un computer di controllare remotamente i server e fornire all'utente supporto a distanza. Telnet può anche essere usato per numerose altre funzioni, come inviare e ricevere e-mail ed esaminare il codice sorgente di pagine web (nonostante telnet sia uno degli strumenti più difficili per effettuare queste cose). Telnet può essere usato per effettuare molte cose illegali e immorali, ma ci sono anche ragioni legittime per utilizzarlo. Potete usare telnet per verificare le vostre e-mail, ed esaminare, non solo la linea dell'oggetto, ma le prime linee di un'e-mail, cosa che vi consentirà di decidere se cancellare o meno l'e-mail senza scaricare completamente l'intero messaggio. DNS Quando volete chiamare un amico al telefono, dovete conoscere il numero corretto; anche quando volete connettervi ad un computer remoto, dovete conoscere il suo numero. Ricorderete dalle lezioni precedenti che, per computer su Internet, questo numero è chiamato indirizzo IP. Come numeri, questi indirizzi IP sono facilmente gestibili dai computer, ma le persone preferiscono usare quelli che vengono chiamati nomi di dominio. Ad esempio, per connetterci alle pagine web dell'Hacker Highschool, digitiamo 'www.hackerhighschool.org' nella barra dell'indirizzo del browser web. Tuttavia, il browser web non può utilizzare questo nome per connetterci al server che ospi- 125 ta le pagine web della Hacker Highschool – deve utilizzare un indirizzo IP. Questo significa che il vostro computer locale deve avere un meccanismo per tradurre i nomi di dominio in indirizzi IP. Se ci fossero solo centinaia, od anche migliaia di computer su Internet, sarebbe possibile memorizzare sul proprio computer una semplice tabella per cercare tali indirizzi, ma non sono ci sono milioni di computer su Internet e le relazioni tra nomi di dominio e indirizzi IP possono cambiare giornalmente. Per questa ragione viene usato il DNS o Domain Name Service per tradurre i nomi di dominio in indirizzi IP. Quando digitate il nome di dominio www.domainname.com nel vostro browser web, questo contatta il server DNS scelto dal vostro ISP. Se tale server DNS contiene www.domainname.com nel proprio database, restituirà l'indirizzo IP al vostro computer, consentendovi la connessione. Se il vostro server DNS non contiene www.domainname.com nel suo database, invierà la richiesta ad un altro server DNS, e continuerà ad inviare la richiesta ad altri server DNS fino a quando non trova l'indirizzo IP corretto o non stabilisce che il nome di dominio non è valido. DHCP Il DHCP o Dynamic Host configuration Protocol consente di assegnare dinamicamente indirizzi IP all'interno di una rete. Alla rete è assegnato un intervallo di indirizzi IP. Quando un computer si unisce alla rete, gli viene assegnato un indirizzo IP. Quando un computer lascia la rete tale indirizzo diventa disponibile per qualunque altro computer. Questo è utile per reti di grandi dimensioni, dal momento che non è necessario che ogni computer abbia un indirizzo IP statico assegnato. Al contrario si usa un server DHCP. Quando un nuovo computer si connette alla rete, la prima cosa che fa è richiedere al DHCP server un indirizzo IP. Una volta che questo gli viene assegnato, il computer può accedere a tutti i servizi sulla rete. 126 Connessioni La maggior parte dei computer si connette ad Internet tramite un modem. I modem traducono i segnali digitali prodotti dai computer in segnali analogici che possono essere trasmessi attraverso le normali linee telefoniche. La velocità dei modem viene misurata in baud o bits al secondo. Velocità alte sono migliori, poichè consentono una trasmissione più veloce dei dati, ma dovete anche considerare cosa avete pianificato di fare. Ci sono certe applicazioni – come i MUD per cui un modem vecchio di vent'anni a 300 baud sarebbe ancora accettabile (presumendo che la vostra velocità di scrittura non sia così buona), mentre applicazioni a banda larga come lo streaming video possono spesso sforzare anche i modem più potenti. ISP Quando ci si collega ad Internet è necessario un server che connetta il proprio computer ad Internet. Il server effettua il lavoro pesante, cioè è sempre attivo. Il server è gestito da un ISP o Internet Service Provider. Un ISP ha un “punto di accesso” su Internet sempre attivo e mette a disposizione dei server con i servizi. E' possibile anche attivare questi servizi per conto vostro. Ad esempio, potete attivare un servizio di posta sul vostro computer locale, ma questo richiede che il vostro computer sia sempre acceso e connesso alla rete, solo per aspettare i brevi momenti in cui vengono scambiate le informazioni. Un ISP, tuttavia, riceve gli accessi di un elevato numero di utenti, in modo tale che il server di posta sia sempre funzionante, invece che fare nulla. Inoltre, i computer di un ISP utilizzano connessioni ad alta velocità per connettersi ad un NAP o Network Access Point. Questi NAP sono inserconnessi tra loro tramite connessioni ultra veloci chiamate backbones. Questo è Internet. 127 INTERNET Come viene individuato univocamente ciascun computer nella rete. All'interno di Internet ciascuna macchina è univocamente identificata da un numero binario lungo 32 bit e comunemente detto Indirizzo IP. Questo numero viene di solito presentato "tradotto" sotto forma di quattro cifre decimali separate da punti (es. 151.99.200.2). Poichè è un po' difficile ricordarsi gli indirizzi sotto forma di numeri, è stato tuttavia creato un sistema (il cosiddetto DNS o Domain Name System) per cui ad ogni computer viene assegnato anche un nome letterale, in modo univoco, ed esistono poi dei sistemi di "traduzione" automatica che permettono al software di comunicazione di risalire all'indirizzo IP dal nome letterale e viceversa. Mentre l'elettronica di gestione della rete, per trasmettere i vari messaggi, si serve degli IP, gli utenti possono così servirsi di più intuitivi nomi letterali. Dominio:I nomi letterali delle macchine sono costituiti da una o più parole (formate da lettere, numeri e altri caratteri come il trattino, ma non da spazi) separate da punti. Il nome più a destra individua il dominio (domain) di appartenenza della macchina, ossia un grosso sottoinsieme della rete, che al di fuori degli Stati Uniti tende a coincidere quasi sempre con una nazione. Alcuni domini nazionali sono ad esempio: Italia it Regno Unito uk Francia fr Germania de Svezia se Giappone jp Oltre ai domini nazionali, esistono dei domini di tipo organizzativo ossia in cui i siti vengono suddivisi in base al tipo di attività dell'organizzazione a cui appartengono. Originariamente questi domini erano riservati agli Stati Uniti, ma di fatto - tranne alcuni casi - essi sono ormai internazionali, e comprendono siti di tutto il mondo. Alcuni di essi sono: edu com org net 128 Università statunitensi Operatori commerciali Organizzazioni senza scopo di lucro Organizzazioni di gestione della rete Proprio all'inizio del 1998 sono stati creati nuovi domini di questo tipo, come ad esempio nom, dedicato alle pagine personali dei singoli utenti; questo in relazione alla continua crescita della richiesta di nomi. Se, fino ad oggi, non pensavate che un nome fosse qualcosa che poteva essere "richiesto" o "comprato", ricredetevi: su Internet, i nomi dei domini devono essere registrati - per evitare duplicati e confusioni - e quindi si comprano. Il nome più a sinistra è invece il "nome proprio" (hostname) del computer; i nomi che stanno in mezzo rappresentano sottoinsiemi della rete, o più propriamente sottodomini (subdomains), sempre più grandi procedendo da sinistra verso destra, e contenuti nell'ordine gli uni dentro gli altri. Si usa talvolta anche parlare di domini di primo livello (top level domains o TLD) per indicare i domini veri e propri, e di domini di secondo, terzo... livello per indicare mano a mano i sottodomini successivi, utilizzando il termine "dominio" per indicare in generale un qualsiasi sottoinsieme della rete caratterizzato dalla stessa parte finale nei nomi dei computer. In particolare, con il termine domain suffix si intende normalmente tutto ciò che sta a destra del primo punto del nome di un computer. Poichè probabilmente tutto ciò non è molto chiaro, si può ad esempio considerare il nome: lennon.engr.wisc.edu Questo nome indica il computer denominato lennon situato all'interno del sottodominio engr (Ingegneria) del sottodominio wisc (Università del Wisconsin) del dominio edu (Università americane). Si noti quindi come edu sia un dominio di primo livello, wisc un dominio di secondo livello, engr un dominio di terzo livello e lennon un semplice computer; inoltre, si potrebbe anche dire che lennon appartiene sia al dominio edu, sia al (sotto)dominio wisc.edu, sia al (sotto)dominio engr.wisc.edu. Il domain suffix è in questo caso proprio engr.wisc.edu. In alcuni paesi extra-USA (ad esempio nel Regno Unito) è stato adottato un sistema misto, per cui il dominio è unico e uguale per tutti (in quel caso, uk) ma i domini di secondo livello ricalcano la suddivisione americana, sebbene con sigle diverse: pertanto i nomi che terminano con .co.uk si riferiscono a computer di aziende commerciali inglesi, quelli che terminano con .ac.uk a computer di università inglesi, eccetera. Si noti infine che, poichè i nomi "letterali" sono soltanto una comodità introdotta per noi poveri esseri umani, non vi è in realtà alcun vincolo geografico che individui i vari domini: sebbene in Italia quasi tutti i computer appartengano al do- 129 minio it, esistono anche computer situati fisicamente in Italia ma appartenenti ai domini com, net... Normalmente, ogni computer ha uno e un solo nome; tuttavia, è possibile definire degli alias (più precisamente, alias DNS), ossia ulteriori nomi per lo stesso computer. Questa possibilità è utilizzata normalmente per concentrare un certo numero di servizi sullo stesso computer: ad esempio, poichè per ragioni di convenienza generale si è soliti porre il sito FTP di un'ente sullo stesso computer in cui è posto il suo sito WWW, il nome ftp.azienda.com e il nome www.azienda.com individuano solitamente lo stesso computer! In realtà, non vi è alcun obbligo di mettere in piedi alias di questo tipo, in quanto il nome di un computer è completamente scorrelato dai servizi che sono posti su di esso (in altre parole, è possibile realizzare siti WWW anche su computer il cui "nome proprio" non è www, e così via); tuttavia, si cerca normalmente di assegnare nomi intuitivi, anche sfruttando gli alias, ai computer che svolgono determinati servizi (come mail per i server di posta elettronica, o news per i server per i newsgroup). HTTP e HTML Entrambe queste sigle riguardano gli ipertesti. L'HTML (HyperText Markup Language) è il "linguaggio di programmazione", estremamente semplice, per creare gli ipertesti, ed è costantemente in via di sviluppo. Dal punto di vista informatico, infatti, un ipertesto è semplicemente un normale file di testo (ASCII) contenente, in mezzo al testo del documento e racchiuse tra i caratteri < e >, alcune istruzioni particolari, dette tag, che permettono di inserire immagini, creare rimandi, eccetera, e che sono appunto definite nell'HTML. Non bisogna allora confondere l'HTML (che è una specie di rudimentale linguaggio di programmazione) con l'HTTP (HyperText Transfer Protocol), che è invece il protocollo di comunicazione usato per trasferire sulla rete gli ipertesti, e più in generale gli iperoggetti del World Wide Web, dal computer dove sono memorizzati a quello dell'utente che vuole leggerli. L'HTTP, difatti, permette di trasferire qualsiasi tipo di file; sarà poi il computer dell'utente, in base al tipo MIME del file, a decidere che cosa farsene. Ad esempio Netscape permette di configurare una azione predefinita per ciascun possibile file in arrivo; mentre i file HTML vengono visualizzati come ipertesti, i file di immagini vengono visualizzati come tali, i file audio vengono spediti alla scheda sonora (se disponibile), eccetera. Nel caso che il browser non sappia come trattare il tipo del file, normalmente esso chiederà all'utente che cosa fare. 130 Il tipo MIME (Multipurpose Internet Mail Extensions) è uno standard che è stato proposto dai laboratori Bell Communications nel 1991 per estendere le possibilità della posta elettronica (mail), cioè permettere di inserire dei documenti (immagini, suoni, testo,…) in un messaggio. Da allora, il tipo MIME è usato da una parte per tipare i documenti allegati ad una mail ma anche per tipare i documenti trasferiti con il protocollo HTTP. Quindi durante una transazione fra un server web e un navigatore internet, il server web invia in primo luogo il tipo MIME del file inviato al navigatore, affinché quest'ultimo possa sapere come visualizzare il documento. Un tipo MIME è costituito nel seguente modo : Content-type: type_mime_principale/su_type_mime Ad esempio, un'immagine GIF ha il seguente tipo MIME : Content-type: image/gif Elenco dei tipi MIME Estensione associata application/acad File AutoCAD dwg application/clariscad File ClarisCAD ccad application/drafting File MATRA Prelude drafting drw application/dxf File AutoCAD dxf application/i-deas File SDRCI-deas unv application/iges Formato di scambio CAO IGES igs,iges application/octet-stream File binari non interpretati bin application/oda File ODA oda application/pdf File Adobe Acrobat pdf application/postscript File PostScript ai,eps,ps application/pro_eng File ProEngineer prt application/rtf Formato di testo rich rtf application/set File CAO SET set application/sla File stereolitografici stl application/solids File MATRA Solids dwg application/step File di dati STEP step application/vda File di superficie vda application/x-mif File Framemaker mif Tipo MIME Tipo di file 131 application/x-csh application/x-dvi application/hdf application/x-latex application/x-netcdf application/x-sh application/x-tcl application/x-tex application/x-texinfo application/x-troff application/x-troff-man application/x-troff-me application/x-troff-ms application/x-waissource application/x-bcpio application/x-cpio application/x-gtar application/x-shar application/x-sv4cpio application/x-sv4crc application/x-tar application/x-ustar application/zip audio/basic audio/x-aiff audio/x-wav image/gif image/ief image/jpeg image/tiff image/x-cmu-raster image/x-portableanymap image/x-portable-bitmap 132 Script C-Shell (UNIX) File di testo dvi File di dati File LaTEX File netCDF Script Bourne Shell Script Tcl File Tex File eMacs File Troff File Troff/macro man File Troff/macro ME File Troff/macro MS dwg dvi hdf latex nc,cdf dwg tcl tex texinfo,texi t,tr,troff man me ms Sorgente Wais src CPIO binario CPIO Posix Tar GNU Archives Shell CPIO SVR4n CPIO SVR4 con CRC File compresso tar File compressi tar Posix File compressi ZIP File audio basici File audio AIFF File audio Wave Immagini gif Immagini exchange format Immagini Jpeg Immagini Tiff Raster cmu bcpio cpio gtar shar sv4cpio sc4crc tar man man au,snd aif,aiff,aifc wav man ief jpg,jpeg,jpe tiff,tif cmu File Anymap PBM pnm File Bitmap PBM pbm image/x-portablegraymap image/x-portable-pixmap image/x-rgb image/x-xbitmap image/x-xpixmap image/x-xwindowdump multipart/x-zip multipart/x-gzip text/html text/plain text/richtext File Graymap PBM File Pixmap PBM Immagine RGB Immagini Bitmap X Immagini Pixmap X Immagini dump X Window File archivio zip File archivio GNU zip File HTML File texte senza messa in forma File di testo rich File di testo con separazione di text/tab-separated-value valori text/x-setext File di testo Struct video/mpeg Video MPEG video/quicktime Video QuickTime video/msvideo Video Microsoft Windows video/x-sgi-movie Video MoviePlayer pgm ppm rgb xbm xpm man zip gz,gzip htm,html txt,g,h,c,cc,hh,m,f90 rtx tsv etx mpeg,mpg,mpe qt,mov avi movie Che cos'è e come è fatto un URL? Come visto, per poter recuperare un qualsiasi oggetto posto in rete è necessario conoscere: 1. 2. Dove è situato (ossia il nome della macchina, il percorso sull'hard disk della macchina e il nome del file); Con che protocollo esso può essere recuperato. Per racchiudere in un unico "indirizzo" tutte queste informazioni è stato creato uno schema detto URL (Uniform Resource Locator, ossia Localizzatore Uniforme di Risorse). Un URL assume normalmente la forma seguente: metodo://nomemacchina:porta/nomeoggetto dove il metodo (di accesso alla risorsa, anche detto schema) può valere solitamente http, ftp, telnet, news, mailto o file a seconda del protocollo 133 che si deve utilizzare; il nomemacchina è il nome (letterale o IP) del computer su cui si trova l'oggetto; la porta (solitamente sottintesa, nel qual caso si assume un valore standard che varia a seconda del protocollo scelto) è il numero della porta con cui si intende comunicare con la macchina (argomento tecnico che potete al momento tralasciare); il nomeoggetto è il nome completo (percorso e nome del file) dell'oggetto. Anche qui, non preoccupatevi se non avete afferrato subito tutto: nel resto del capitolo troverete vari esempi di URL, e comunque la pratica vi sarà di grande aiuto. La stragrande maggioranza delle macchine collegate alla rete - almeno, quelle su cui vengono realizzati gli ipertesti, gli archivi di software... - sono grossi calcolatori che funzionano con il sistema operativo Unix; pertanto i nomeoggetto seguono per definizione (e anche quando la macchina a cui ci si collega è un PC) le convenzioni dello Unix, e non, ad esempio, dell'MS-DOS. Nella pratica, questo significa alcune cose importanti da tenere a mente: 1. 2. Le barre che compaiono negli URL sono diritte (cioè / ) e non rovesciate ( \ ) come quelle dell'MS-DOS! Mentre per quanto riguarda il metodo e il nomemacchina non c'è differenza tra maiuscole e minuscole (sebbene comunemente si usino solo minuscole), per quanto riguarda il nomeoggetto la differenza c'è: scrivere i nomi dei file o delle directory in maiuscolo, in minuscolo, o con l'iniziale maiuscola e il resto minuscolo fa differenza, e può impedirvi di recuperare l'oggetto! In realtà, lo schema dell'URL varia leggermente a seconda del protocollo scelto, per cui può essere utile esaminare alcuni esempi: http://www.cl.ais.net/mkurth/atsfaq.html Questo indirizzo corrisponde all'ipertesto atsfaq.html (gli ipertesti sono individuati dall'estensione .html o .htm) posto nella directory mkurth situata nella directory radice (root) del computer www.cl.ais.net (ossia, il computer www situato nel sottoinsieme cl del sottoinsieme ais del dominio net), da trasferire seguendo il protocollo HTTP. http://www.polito.it/~bertola/ Questo indirizzo, simile al precedente, presenta però alcuni aspetti particolari. Per prima cosa, vi è indicato un percorso (/~bertola/) ma non un nome di file; in questo caso, e solo per il protocollo HTTP, viene sottinteso il nome di file index.html (notare l'estensione di quattro caratteri: nello Unix non c'è la limitazione a tre caratteri!); se questo file c'è, esso viene letto come ipertesto (vista 134 la sua estensione .html, che indica appunto un ipertesto); se questo file non vi fosse, a seconda della configurazione del sito, viene presentato un elenco dei file contenuti nella directory indicata e l'utente può sceglierne uno, o viene restituito un messaggio d'errore. Va inoltre notato il carattere speciale ~ (se non l'avete sulla tastiera del vostro PC, potete realizzarlo tenendo premuto il tasto Alt sinistro, digitando il numero 126 sul tastierino numerico, e quindi rilasciando Alt). Esso indica che il nome seguente è il nome di un "utente" del computer, e non un normale percorso sull'hard disk. Di fatto, la scrittura /~bertola/ è un altro modo per indicare la directory public_html (è un nome convenzionale, che significa "ipertesti pubblici"!) posta all'interno dell'area dell'utente bertola. Per farla breve, indirizzi contenenti ~ corrispondono solitamente a pagine scritte da singoli utenti nel proprio tempo libero (home page), mentre gli indirizzi senza ~ si riferiscono solitamente a pagine ufficiali dell'ente o dell'azienda possessori del computer. Si noti infine la barra ( / ) finale: con molti browser non è necessaria, ma è utile abituarsi a metterla in quanto indica e permette di sapere immediatamente che l'ultimo nome scritto prima (nel nostro caso, ~bertola) rappresenta una directory e non un file. ftp://ftp.coast.net/SimTel/win3/sysutil/3dk24.zip Questo indirizzo individua il file 3dk24.zip (che, come dice l'estensione, è un archivio realizzato con PkZip) situato nella directory /SimTel/win3/sysutil/ (sono tre directory una dentro l'altra: notare che SimTel è diverso da simtel!) del computer ftp.coast.net e da trasferire mediante il protocollo FTP e da un sito FTP anonimo. L'inserimento dell'URL di un file su di un browser provocherà lo scaricamento del file (ossia la copia dal computer remoto al proprio) e una azione che varierà a seconda dell'estensione del file, che può essere configurata dall'utente e che generalmente sarà poi il salvataggio su disco. ftp://ftp.sunet.se/pub/pc/ Questo indirizzo individua la directory (come si desume dalla barra finale: se non ci fosse, individuerebbe un file) denominata pc e contenuta nella directory pub della root directory del computer ftp.sunet.se, alla quale si vuole accedere tramite il protocollo FTP usato in modo anonimo. L'inserimento in un browser dell'URL di una directory con protocollo FTP provoca la visualizzazione dell'elenco dei file contenuti in essa, preceduto in certi casi da messaggi informativi predisposti dall'amministratore del sito remoto. telnet://165.113.211.4:4801 Questo indirizzo individua un collegamento mediante il protocollo TELNET con 135 il computer 165.113.211.4 (individuato non mediante il suo nome letterale, ma mediante il suo indirizzo IP) usando la porta numero 4801. gopher://gopher.polito.it/ Questo indirizzo determina un collegamento con il gopher del Politecnico di Torino. Verranno presentati una serie di menu che permetteranno di scaricare file di vario tipo. mailto:bertola@athena.polito.it Sui browser che supportano la spedizione di posta, ossia tutti quelli pubblicati negli ultimi due anni, l'immissione di questo indirizzo provoca l'apertura di una finestra nella quale è possibile inserire un messaggio. Il messaggio viene successivamente spedito, seguendo il protocollo SMTP, all'utente bertola del computer o dominio athena.polito.it (si veda la sezione sugli E-mail per il significato di @!). news:it.faq Questo indirizzo individua il newsgroup it.faq, sottintendendo il "nomemacchina" (che sarà quindi quello specificato come default nella configurazione del programma che si sta usando per leggere le news). Per altre informazioni sugli URL delle news, si legga la sezione sui newsgroup. file:///C|/Doc/inizio.htm Il metodo file serve per recuperare file direttamente dal proprio hard disk, senza usare la rete; in questo caso, l'indirizzo corrisponde al file inizio.htm posto nella directory C:\Doc di un PC con Windows. Si noti che l'indirizzo rispetta comunque le convenzioni Unix sopra citate: le barre sono state convertite da rovesciate a diritte, e i due punti - carattere che negli URL, come visto, indica il numero di porta - sono stati convertiti nella barra verticale (quella che, sulle tastiere italiane, è normalmente posta sull'ultimo tasto in alto a sinistra). Le barre iniziali sono tre e non due, in quanto dovrebbero esserci le due barre iniziali, poi il nome della macchina, poi un'altra barra, ma il nome della macchina è sottinteso! Sono stati presentati esempi relativi a tutti i metodi di accesso normalmente usati; in realtà, molti browser recenti utilizzano internamente altri metodi non standard per indicare altri tipi di risorse, che comunque l'utente non dovrebbe utilizzare direttamente. In conclusione, va detto che non tutti i programmi usati in rete si servono degli URL per individuare l'oggetto che l'utente desidera. Tipicamente, l'uso degli URL è associato all'uso di un browser: in essi è possibile chiedere al programma di recuperare un oggetto fornendo direttamente l'URL. Invece, se si utilizzano al- 136 tri programmi, ad esempio per la posta, o per il trasferimento di file, o per la lettura delle news, normalmente verrà chiesto di identificare l'oggetto fornendo le stesse informazioni (nome del computer, nome del file...) in un modo diverso e variabile da programma a programma. La grande innovazione degli URL, che è alla base dell'esplosione di Internet avvenuta negli ultimi due anni, è proprio quella di racchiudere in un unico insieme di caratteri tutte le informazioni necessarie per individuare un oggetto messo in rete! A cosa servono quegli URL contenenti strani simboli come #, ?, +, % ? Allo scopo di rendere gli URL estremamente flessibili, è possibile includere al loro interno una serie di dati che non riguardano direttamente l'individuazione dell'iperoggetto che con essi si vuole recuperare, ma sono piuttosto informazioni ulteriori che devono essere comunicate dal browser al server e viceversa. In particolare: • • Il carattere #, posto al termine di un indirizzo che individua un ipertesto, serve ad individuare una particolare posizione (un capitolo, un titolo, una voce di glossario...) al suo interno; mentre un normale URL ipertestuale provoca da parte del browser la visualizzazione dell'inizio della pagina, un URL di questo tipo farà sì che la pagina venga visualizzata a partire da un punto del testo individuato dalla parola che segue il carattere #, grazie ad una particolare tag inserita in tale punto dell'ipertesto. Un esempio sono gli URL che corrispondono alle singole domande in questa guida! Il carattere ?, posto al termine di un indirizzo che individua - normalmente - un programma CGI, indica che la stringa seguente costituisce una serie di argomenti da passare al programma suddetto: un caso tipico sono i programmi di ricerca nei database, in cui la parte dopo ? tipicamente indica gli argomenti da cercare e altre caratteristiche della ricerca, ed è spesso generata da una form precedentemente riempita. In alcuni particolari URL, dopo ? può essere posta semplicemente una parola, che viene ricercata all'interno dell'iperoggetto indicato dall'URL (questa possibilità deve essere predisposta dal server; in generale, l'utente non dovrà mai inserire a mano un URL contenente un punto interrogativo). • Il carattere + è stato introdotto in quanto l'URL non può contenere spazi, mentre spesso gli argomenti di ricerca posti dopo un punto interrogativo li contengono (si pensi ad esempio ad un nome e cognome, o a più 137 • parole...): pertanto il + sostituisce gli spazi all'interno di questi argomenti. Il carattere % serve per inserire negli URL alcuni caratteri speciali che normalmente non potrebbero essere inseriti, ed è seguito dal codice ASCII del carattere in oggetto, scritto in esadecimale. In generale, a parte forse #, gli utenti non avranno mai la necessità di scrivere un URL contenente questi caratteri: saranno il browser e/o altri iperoggetti a generare questi indirizzi. newsgroup Un newsgroup (gruppo di discussione) è qualcosa di molto simile ad una mailing list: un "giornale" sul quale chiunque voglia intervenire può farlo spedendo (postando) un "articolo", che può essere un vero e proprio brano o (molto più spesso) un messaggio di poche righe. I newsgroup presentano tre grandi vantaggi rispetto alle mailing list: 1. 2. 138 Per leggere o scrivere in un newsgroup non è necessario essere iscritti ad esso; Gli articoli dei newsgroup sono conservati una volta per tutte in appositi news server, e non intasano quindi la vostra casella postale (per quanto sia possibile decidere di copiare sul proprio hard disk gli articoli dei gruppi a cui si è interessati, in modo da poterli leggere e rileggere con calma); 3. I newsgroup sono facilmente accessibili semplicemente digitando un URL, e comunque utilizzando il vostro browser (sebbene sia solitamente meglio usare un programma apposito). In realtà, per ovvi motivi di spazio, i server per le news conservano soltanto gli articoli più recenti; regolarmente si provvede a cancellare gli articoli più vecchi. Il numero di articoli e il tempo di conservazione, e anche il numero di newsgroup conservati, varia da server a server. Per lo stesso motivo, quando si scrive un articolo in un newsgroup esso non viene pubblicato immediatamente in tutto il mondo, ma deve trascorrere un certo periodo di tempo - di solito qualche ora perchè esso venga trasmesso ai vari server. L'iscrizione ad un newsgroup, comunque, non va notificata a nessuno e non è necessaria per poter leggere il gruppo (è solo una opzione di configurazione del programma che usate). Ogni gruppo di discussione (o "giornale", proseguendo nel paragone con la carta stampata) è identificato univocamente da un nome. Anche il nome di un newsgroup è formato da una serie di parole separate da punti; tuttavia, la "gerarchia" funziona in modo inverso rispetto ai nomi dei computer: la parola più a sinistra indica un grosso sottoinsieme di tutti i gruppi esistenti, mentre procedendo verso destra le varie parole indicano sottoinsiemi sempre più piccoli, fino all'ultima che rappresenta il nome del gruppo. Ad esempio il gruppo soc.culture.italian corrisponde al gruppo italian (italiano) del sottoinsieme culture (gruppi di discussione sulle culture nazionali) del sottoinsieme soc (gruppi di discussione ad argomento sociale) di tutti i newsgroup esistenti. I sottoinsiemi di primo livello - talvolta detti anche gerarchie (hierarchies) - più comuni sono: alt bionet comp it misc news rec sci soc talk Gruppi di discussione amatoriali Discussioni sulla biologia a livello professionale Gruppi di discussione sul computer Gruppi di discussione in italiano Gruppi di argomento vario Informazioni e discussioni su Usenet stessa Discussione sulle attività ricreative (sport, spettacolo...) Discussioni scientifiche a livello professionale Discussioni sociali e politiche Dibattiti (spesso lunghi e inutili...) 139 Che cosa sono le FAQ Le FAQ (Frequently Asked Questions) sono una raccolta delle domande più comuni su di un dato argomento e delle relative risposte. Normalmente sono collegate ad una mailing list o ad un newsgroup che discute sullo stesso argomento: generalmente uno dei frequentatori più assidui della discussione si prende il compito di scrivere e aggiornare periodicamente un file, in formato testuale o ipertestuale, contenente tale raccolta. In questo modo, le persone meno esperte dell'argomento possono "farsi una cultura di base" o anche solo trovare la risposta ad un problema urgente senza dover disturbare le persone che discutono nel newsgroup o nella mailing list, spesso ad un livello molto più approfondito. È quindi buona abitudine, oltre che buona educazione, ricercare e leggere le FAQ di un certo argomento prima di mettersi a spedire messaggi a destra e a manca per ottenere aiuto. Molto spesso nelle FAQ si trovano informazioni che non sono reperibili nemmeno in pubblicazioni ufficiali sull'argomento! Le FAQ possono essere reperite in vari modi. Innanzi tutto, esse sono spesso inserite sul WWW in apposite pagine (che possono essere reperite mediante una normale ricerca di rete). Esistono anche numerosi siti FTP che conservano una copia delle FAQ di tutti o parte dei newsgroup esistenti. Inoltre, nella maggior parte dei newsgroup e delle mailing list le FAQ vengono pubblicate ad intervalli regolari, oppure viene pubblicato l'indirizzo al quale sono reperibili. Se poi il newsgroup o la lista dispone di un proprio spazio in un sito FTP, certamente le FAQ saranno reperibili anche lì. In generale, gli aderenti ai gruppi di discussione cercheranno di pubblicizzare le FAQ il più possibile! Inoltre, il newsgroup news.answers è stato istituito proprio allo scopo di pubblicare al suo interno le FAQ degli altri gruppi. Tutte le FAQ pubblicate su questo gruppo sono archiviate in alcuni siti, accessibili (al momento) a partire dagli URL: http://www.lib.ox.ac.uk/internet/news/faq/by_group.index.html http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html http://www.cs.ruu.nl/cgi-bin/faqwais/ ftp://rtfm.mit.edu/pub/usenet/ Sono inoltre accessibili per posta elettronica, utilizzando il server mailserver@rtfm.mit.edu (provate a spedire a questo indirizzo un messaggio contenente nel corpo la sola parola help). 140 Qualcosa di simile esiste anche in Italia: il gruppo it.faq pubblica regolarmente guide in italiano a Internet e agli argomenti trattati nella gerarchia it.*. Esiste inoltre un Archivio delle FAQ italiane, mantenuto dall'autore di questa guida agli indirizzi: http://www.poli.studenti.to.it/~bertola/faq/ http://www.polito.it/~bertola/faq/ e accessibile anche per FTP anonimo agli indirizzi: ftp://ftp.poli.studenti.to.it/pub/people/bertola/faq/ ftp://ftp.polito.it/pub/people/bertola/faq/ Infine, il GCN (il gruppo di persone che coordina i gruppi italiani) ha predisposto un sito FTP contenente tutti gli articoli pubblicati su it.faq, all'indirizzo: ftp://beatles.cselt.stet.it/GCN/FAQ/ Tale gruppo mantiene inoltre guide all'uso dei gruppi italiani all'interno dei propri siti WWW. All'interno delle FAQ si trovano spesso raccolte di altri siti WWW riguardanti l'argomento o argomenti simili. Inoltre viene anche pubblicato l'indirizzo di Email del curatore, da contattare nel caso si abbiano aggiunte o correzioni. Le FAQ vengono periodicamente aggiornate e migliorate: per questo motivo può essere utile dare un'occhiata una volta ogni tanto nel newsgroup o mailing list a cui appartengono (dove vengono pubblicate con regolarità) o nel sito Web su cui vengono pubblicate (normalmente esiste un URL presso cui è sempre disponibile la versione più recente, ed è indicato nelle prime righe della FAQ). Cosa sono un "client" e un "server"? Come già detto in precedenza, i dialoghi tra computer su Internet si basano sul modello "client-server". In poche parole, il dialogo avviene essenzialmente tra due computer alla volta, dei quali uno (tipicamente quello su cui lavora l'utente) assume il ruolo di client (cliente) e l'altro (quello remoto, sul quale è posto l'oggetto a cui l'utente vuole accedere) assume il ruolo di server (servitore). Analogamente, si dice che il programma che, venendo eseguito sul computer cliente, gestisce il dialogo è a sua volta il "programma cliente", mentre il programma che gestisce il dialogo venendo eseguito sul computer remoto è il "programma servitore". Per poter fare sì che i due computer dialoghino secondo uno qualsiasi dei 141 protocolli di alto livello descritti in precedenza (HTTP, FTP, TELNET...) è allora necessario che: • • Sul computer dell'utente sia in esecuzione un programma cliente del protocollo specificato; Sul computer remoto sia in esecuzione un programma servitore del protocollo specificato. Questo significa che non è sufficiente che un oggetto, ad esempio un ipertesto, esista fisicamente su un computer connesso alla rete e in un'area aperta al pubblico perchè sia possibile recuperarlo; è anche necessario che stia venendo eseguito su tale computer un programma server per il protocollo con il quale si desidera leggere l'oggetto. Per questo motivo non è possibile recuperare, ad esempio, un file posto in un sito FTP tramite il protocollo HTTP: difatti normalmente nei siti FTP è in esecuzione solo un programma server FTP e non un programma server HTTP. Per lo stesso motivo, anche avendo uno spazio su di un computer connesso in rete, non è possibile creare propri ipertesti visibili a tutta la comunità di rete se sul computer non è stato messo in funzione un server HTTP. Sempre per questo motivo, se volete avere un programma di FTP da far girare sul vostro computer oltre al browser dovete cercare un "cliente FTP" e non un "server FTP", che è una cosa ben diversa (anche come dimensioni) e che non vi serve a niente, a meno che voi stessi non vogliate installare un archivio FTP sul vostro computer! Una volta stabilita la connessione tra il client e il server, il client prende il controllo del server, che esegue tutte le operazioni che il client richiede. In molti protocolli questo dialogo viene mostrato all'utente tradotto sotto forma di comandi letterali: ad esempio molti programmi di posta elettronica permettono all'utente di leggere sotto forma di un vero e proprio dialogo ciò che avviene tra il client (ossia il programma stesso) e il server (ossia il programma situato sulla macchina dove si ha la propria casella postale). Va infine notato che i browser comunemente usati sono programmi sviluppati per poter essere clienti di più protocolli, a seconda dell'URL che viene inserito. Ho trovato un file in formato... ma cosa diavolo è? Sulla rete si trovano una quantità immensa di oggetti, memorizzate in una quantità altrettanto immensa di modi. Molti di questi modi sono quasi sconosciuti a chi si affaccia sulla rete con la sola esperienza di un personal computer MS-DOS, per cui è utile avere qualche indicazione su di essi. Qui di seguito è riportata una breve lista di formati, riconoscibili dalla relativa estensione, e con qualche indicazione su come trattarli. Un elenco più completo di estensioni e tipi di file : 142 Estensione Descrizione .htm .html Ipertesti realizzati tramite HTML .txt .asc Testi in formato ASCII (leggibili ad esempio con il Blocco Note di Windows) .ps .eps Documenti in formato PostScript .tex .latex .dvi Documenti realizzati con TeX o LaTeX. Per i file DVI esistono anche lettori per Windows. .pdf Documenti di testo in formato PDF. .zip Archivi realizzati con PkZip e decomprimibili con PkUnzip o WinZip. .arj Archivi realizzati e decomprimibili con ARJ. .gz Archivi realizzati e decomprimibili con GZip / GUnzip (GNU Zip). .z Archivi realizzati con Compress per Unix e decomprimibili con Compress o con GZip / GUnzip. .lzh Archivi realizzati e decomprimibili con LHA. .tar Archivi realizzati e "decomprimibili" (in realtà, TAR incolla, non comprime) con TAR (Tape Archive). .tar.z .tz .tar.gz .tgz Archivi realizzati prima incollando vari file in uno solo con TAR e poi comprimendo il tutto con Compress o GZip: per poterli usare, bisogna prima decomprimere il file con GZip / GUnzip e poi spezzarlo con TAR. .uu .uue File codificati con UUEncode per essere trasmissibili via posta elettronica. .gif .jpg .png Immagini (questi formati di immagine, GIF, JPEG e PNG, sono pressochè gli unici usati in rete, anche perchè sono quelli con cui le immagini risultano memorizzate in file di dimensione minore). 143 .wav File audio ascoltabili con il Lettore Multimediale degli Accessori di Windows (o programmi migliori, se li avete...) .au File audio in formato standard Unix (le versioni recenti di Netscape li riproducono) .avi .mpg .mov "Film" (serie animata di immagini). Il formato MPEG è il migliore; lettori shareware per MPEG sono reperibili in rete. Il formato MOV appartiene al programma QuickTime (originariamente per Macintosh, esiste anche per Windows). Come posso trovare l'indirizzo E-mail o altre informazioni riguardo una persona? Al momento, questo è uno dei punti dolenti della rete: non esistono sistemi completi e di facile uso per associare un nome ad un indirizzo di E-mail o ad altre informazioni personali. Comunque, se si desiderano informazioni su uno specifico utente o dominio della rete. esistono alcuni sistemi di ricerca sviluppati a questo scopo: FINGER, WHOIS e NETFIND, di cui si parlerà nei paragrafi successivi. In particolare, Finger è il più utile, ed è molto comodo per conoscere il nome della persona associata ad un determinato E-mail. Whois, invece, può servirvi per trovare i nomi e gli E-mail dei responsabili di un determinato sottodominio o provider, a cui rivolgersi per eventuali problemi o lamentele riguardanti le comunicazioni con persone di tale sottodominio. Netfind, infine, è un sistema ormai abbastanza in disuso per via dell'interfaccia piuttosto complessa, che potete però sperimentare specialmente per cercare indirizzi E-mail di persone in ambito universitario o all'estero. Esistono comunque alcuni comodi sistemi accessibili tramite WWW, come Internet Address Finder (http://www.iaf.net/), WhoWhere? (http://www.whowhere.com/) e Four11 (http://www.four11.com/), che permettono di cercare l'E-mail di persone di cui è noto il nome e viceversa. Si tratta comunque di archivi di dati ben lontani dall'essere completi. In Italia, la Telecom ha lanciato un servizio simile, denominato Mailory (http://mailory.tin.it/). E' comunque opportuno, prima di inserire il proprio indirizzo di E-mail in uno di questi archivi, controllare la politica di garanzia della privacy applicata dal sito, al fine di evitare che i proprietari dell'archivio possano poi farvi spedire junk mail indesiderata. 144 Che cos'è Finger? Finger è un programma originariamente pensato per "suonare il campanello" di un utente della rete che dispone di una propria area su una macchina collegata a Internet, fornendo al programma semplicemente l'indirizzo dell'utente sotto forma di nomeutente@nomemacchina. Il computer che va indicato con il nomemacchina è quello su cui l'utente dispone dell'area, per cui l'indirizzo di Finger può non coincidere con quello di posta elettronica dell'utente, in quanto spesso la casella postale non è posta sullo stesso computer in cui è posta l'area dell'utente. Il computer dell'utente "fingerato" (verbo orribile e da non usare, anche se in inglese to finger viene usato tra gli utenti della rete con questo significato) risponderà alla persona che ha "suonato" con alcuni dati, tra cui il nome completo dell'utente, se egli è attualmente collegato o no, nonchè tipicamente data e ora dell'ultimo collegamento e dell'ultima lettura della posta elettronica. Ciascun utente, inoltre, può fare in modo che ad una richiesta di Finger venga risposto anche con un testo personalizzato (plan), che, per gli utenti che lavorano con un sistema operativo Unix, è convenzionalmente contenuto in un file denominato .plan o .project posto nella home directory dell'utente. In assenza di questi file, la persona che ha eseguito Finger riceverà, oltre ai dati sull'utente, un messaggio del tipo "No plan". Fornendo a Finger un'indirizzo del tipo @nomemacchina (ossia senza nomeutente) viene invece presentata una lista di tutti gli utenti attualmente collegati alla macchina. In questo modo, ad esempio, quando si vuole parlare con una determinata persona tramite Talk si può vedere se egli è collegato in quel momento. Esistono anche alcuni utenti o enti che forniscono servizi tramite Finger - ad esempio le previsioni del tempo o un elenco di fatti storici e nascite avvenute nel giorno - modificando opportunamente e regolarmente il loro file .plan. Gli utenti che si collegano via modem non possono essere fatti oggetto di una richiesta di Finger diretta, in quanto il loro PC non è permanentemente connesso alla rete e comunque non dispone normalmente del software adatto. Tuttavia, quando un utente di questo tipo telefona per collegarsi egli effettua in realtà un login tramite una macchina che è collegata permanentemente alla rete, e che potrete scoprire ad esempio osservando il percorso dei vostri dati mediante Traceroute: è il primo computer dopo il vostro. In questo caso, è possibile ottenere i vostri dati mediante un Finger a tale macchina, usando come nomeutente quello che voi inserite per collegarvi a Internet. Tuttavia, molti provider disabilitano questa possibilità per motivi di sicurezza. Per questo motivo, Finger è ormai usato soltanto in congiunzione con aree Unix. 145 Che cos'è WHOIS? WHOIS è un programma che ricerca informazioni su di un determinato utente o sottodominio della rete, interrogando un determinato database. Questo database contiene normalmente informazioni sui domini di secondo livello e sui relativi amministratori, per i quali fornisce dati come l'indirizzo di E-mail e dell'ufficio e il telefono dell'ufficio. Questi dati possono quindi essere utili nel caso dobbiate contattare i responsabili di un determinato dominio (ad esempio per lamentarvi delle azioni maleducate di un loro utente...). I nomi di alcuni database (host) che possono essere interrogati sono: whois.nis.garr.it whois.ripe.net whois.internic.net nic.ddn.mil Database italiano Database europeo Database mondiale Database della rete dell'esercito statunitense Il database WHOIS italiano può essere interrogato anche tramite WAIS (all'indirizzo wais.nis.garr.it, sia tramite un proprio cliente WAIS, sia collegandosi ad esso con TELNET e fornendo come login wais) o tramite WWW (a partire dall'URL http://www.nis.garr.it/cgi-bin/nisdb-query). Che cos'è NETFIND? NETFIND è un servizio simile a WHOIS, ma più potente in quanto effettua una ricerca diretta sul momento, invece di accedere ad un database precostituito. Per lo stesso motivo, NETFIND permette di ritrovare informazioni praticamente su qualsiasi utente della rete, anche se non è l'amministratore di un sito e quindi non sarebbe reperibile con WHOIS. Sfortunatamente, comunque, il suo uso è possibile soltanto con utenti di domini che siano stati censiti dal suo database; ciò è vero, in Italia, quasi esclusivamente per utenti universitari. Per usare NETFIND è necessario collegarsi tramite TELNET a uno dei computer su cui è installato tale programma, inserendo come login netfind. Il principale host europeo a cui collegarsi è netfind.fnet.fr. Dopo essersi collegati, viene proposto un menu dal quale è possibile richiamare un breve manuale oppure iniziare la ricerca vera e propria. Selezionando l'opzione per la ricerca viene richiesto di inserire il nome della persona cercata e le 146 chiavi di ricerca (keys). Il nome specificato (uno solo) può essere quello reale (il nome o il cognome) oppure un nome di utente (login); le chiavi di ricerca possono essere parti di un nome di sottodominio (sostituendo eventuali punti con spazi; non può essere specificato il nome del computer vero e proprio), oppure parole vere e proprie, come ad esempio la città di residenza o il tipo o nome dell'organizzazione per cui lavora ("university", "politecnico", "fiat"...). Il nome e le chiavi devono essere separate da spazi; verranno individuati solo gli utenti che possiedono un accesso all'interno di sottodomini che rispettano tutte le chiavi specificate (per cui se non ottenete niente provate ad eliminarne alcune). Ad esempio, se doveste ricercare l'indirizzo di E-mail dell'autore di questa guida, sapendo che si chiama Bertola e che studia in un Politecnico in Italia, potreste inserire le seguenti chiavi (ricordate che il nome va per primo): bertola politecnico it Per prima cosa, NETFIND ricerca all'interno di un proprio database (seed database) tutti i sottodomini che contengono nel proprio indirizzo Internet o nella loro descrizione le chiavi specificate. Ad esempio, per il sottodominio del Politecnico di Torino NETFIND possiede la seguente descrizione: polito.it (politecnico di torino, italy) che effettivamente contiene sia politecnico sia it. Dopo questa fase, NETFIND restituisce all'utente una lista di tutti i sottodomini che contengono le chiavi indicate e gli chiede di sceglierne al più tre in cui effettuare la ricerca. A questo punto, il programma contatta in tempo reale i computer che gestiscono i sottodomini scelti e ricerca l'utente. Se l'intero processo va a buon fine, normalmente viene restituito un indirizzo di posta elettronica presso il quale contattare l'utente ricercato. Come posso accedere a Internet da casa? Cosa sono SLIP e PPP? Negli ultimi anni si è diffuso l'accesso diretto su linea commutata, ossia il collegamento diretto del proprio computer alla rete via telefono. Questo tipo di collegamento presenta difficoltà tecniche, in quanto le linee telefoniche, rispetto ai normali cavi usati nelle reti locali di calcolatori, permettono velocità di trasmissione molto minori e risultano molto più "sporche", ossia provocano più facilmente errori di trasmissione. È stato allora necessario studiare alcuni particolari protocolli di comunicazione che permettessero il dialogo tra computer secondo le convenzioni Internet (ossia quell'insieme di protocolli che va sotto il nome di TCP/IP) anche sfruttando le linee telefoniche. 147 La prima risposta a questo problema è il protocollo SLIP (Serial Line Internet Protocol). L'efficienza del collegamento può essere migliorata sfruttando il protocollo CSLIP, ossia lo SLIP a cui è stato aggiunto l'algoritmo di compressione di Van Jacobson, e che quindi, comprimendo i dati, permette una maggior velocità di trasmissione. Infine, è stato sviluppato il protocollo PPP (Point to Point Protocol), che aggiunge alla compressione dei dati un algoritmo di correzione degli errori di trasmissione, e include inoltre alcuni protocolli (il più diffuso è PAP o Password Authentication Protocol, ma esiste anche CHAP o Challenge Authentication Protocol) per l'autenticazione dell'utenza, ossia la verifica di username e password nel momento in cui si stabilisce il collegamento. Lo SLIP è il primo sistema sviluppato, ma il PPP include anche alcune funzionalità più avanzate, come la negoziazione automatica per l'assegnazione dinamica degli IP: mentre con gli accessi SLIP è necessario inserire a mano o leggere mediante uno script dati come l'indirizzo IP del proprio computer o del server DNS, con gli accessi PPP queste assegnazioni possono essere effettuate in modo automatico, eliminando la necessità di utilizzare uno script. Il collegamento con PPP è quindi più efficiente e più semplice da gestire per l'utente, e del resto PPP è stato scelto come standard sia per Internet che per i sistemi Microsoft: di fatto, le connessioni SLIP sono quasi sparite. Ad esempio, Windows 95 supporta direttamente il PPP e i protocolli PAP e CHAP, mentre lo SLIP è supportato soltanto installando una apposita espansione. Per poter collegare direttamente il proprio computer tramite telefono è allora necessario eseguire in "sottofondo" un programma che si occupi di effettuare la connessione telefonica (dial-up connection: difatti la parte di programma che esegue questa funzione è denominata dialer) e di trasmettere i dati sulla linea telefonica e sulla rete secondo uno di questi protocolli (facendo le funzioni di TCP/IP stack). Uno dei più noti programmi di questo tipo, per Windows 3.1, è Trumpet Winsock, mentre in Windows 95 questo tipo di applicazione è fornita con il sistema operativo e denominata Accesso Remoto. Senza un programma di questo tipo è assolutamente impossibile far funzionare i programmi di "alto livello" come i browser! Quando l'utente si collega da casa via telefono utilizza la rete telefonica per tutto il tratto tra il proprio modem e il modem del fornitore di accessi. Pertanto dovrà anche pagare, per tutto il tempo di collegamento a Internet, la bolletta telefonica, secondo la tariffa relativa a tale tratto (ossia la tariffa urbana se il proprio telefono e quello del fornitore sono nella stessa rete urbana telefonica, altrimenti l'opportuna tariffa interurbana). 148 Quali pericoli corro mentre sono collegato? La semplice conoscenza del vostro indirizzo IP numerico (che peraltro può essere individuato in vari modi, ad esempio esaminando l'header NNTP-PostingHost: dei vostri articoli di newsgroup o mediante una richiesta /WHOIS quando siete collegati con IRC) fornisce ad una persona che ce l'abbia con voi alcune armi potenziali. Ad esempio, è possibile far resettare a distanza un PC collegato alla rete: sfruttando un bug di Windows 95 (un sistema operativo ben fatto...), basta un semplice Ping fatto in un certo modo per mandare in tilt il vostro PC. Questa operazione è nota come nuke. In particolare, accade molto spesso di essere nukati da qualche "buontempone" mentre si sta dialogando su un canale affollato di IRC. In questo caso, conviene scaricare e installare l'upgrade Winsock 2.2 e un programma che sorveglia i tentativi di nuke, come ad esempio NukeNabber (http://www.dynamsol.com/puppet/). Inoltre, l'innocente e utile Finger può fornire molte informazioni che preferireste non rendere pubbliche, come il vostro login per la connessione, il vostro indirizzo e numero di telefono, e simili. I provider previdenti disattivano Finger sulle macchine su cui accedono via telefono gli utenti, in modo da non rispondere a richieste Finger fatte su di voi. Quali altri rischi posso incontrare su Internet? Uno dei rischi più comuni è legato alla sicurezza dei pagamenti elettronici, che richiedono normalmente l'invio di un numero di carta di credito. Anche ammettendo l'affidabilità dell'azienda da cui acquistate, il vostro numero di carta di credito - così come qualsiasi dato che voi inseriate in un modulo del WWW - viaggia in chiaro e può essere intercettato in modo molto semplice lungo la rete. Per questo motivo, è bene inviare dati importanti soltanto se essi possono essere comunicati in modo cifrato - ad esempio, usando un protocollo di navigazione cifrato come HTTPS. Comunque, la sicurezza non è soltanto legata agli aspetti tecnici. Ad esempio, pensate al caso seguente: voi volete acquistare via Internet un prodotto da una nota multinazionale, pagando con carta di credito. A questo scopo, vi collegate con un motore di ricerca, trovate l'indirizzo del sito ufficiale dell'azienda, vi collegate con esso, trovate il modulo per gli acquisti, e inserite il vostro numero di carta di credito, fidandovi del fatto che si tratta di una azienda molto nota e che 149 avrà preso tutte le opportune precauzioni per garantire la sicurezza del pagamento. Tutto a posto? Ad alcune persone che hanno messo in pratica questa procedura è capitata una brutta sorpresa: difatti, una persona piuttosto furba aveva realizzato una copia automatica del sito ufficiale della multinazionale, l'aveva messa ad un indirizzo simile a quello del sito originale, e aveva pubblicizzato la pagina nei motori di ricerca. Gli utenti, senza prestare troppa attenzione, si erano quindi collegati con quella pagina, anzichè con quella ufficiale (peraltro identica nell'aspetto), e avevano così fornito il proprio numero di carta di credito ad un malintenzionato. Insomma, anche su Internet si possono riproporre tutte le truffe più tradizionali, a partire dalla falsificazione dei siti WWW (Web spoofing), indipendentemente dalla sicurezza intrinseca delle comunicazioni. Alle volte le truffe sono particolarmente ingegnose: ad esempio mi è successo di vedere un sito americano di hacker che, mediante un linguaggio da spie e una grafica da film di fantascienza, proponeva una form per "cancellare la propria esistenza dagli elenchi dell'FBI". Inutile dire che in questo modulo bisognava inserire una serie di dati personali che sarebbero stati di grande aiuto a chi volesse falsificare un documento o impersonare qualcun altro. State attenti... Che cosa sono SSL e HTTPS? SSL (Secure Sockets Layer) è un insieme di protocolli sviluppato dalla Netscape per proteggere le comunicazioni tra browser e siti WWW, criptando i messaggi in entrambe le direzioni. Esso è particolarmente utile per il commercio elettronico, che richiede la trasmissione senza pericoli di dati personali e numeri di carta di credito. Tale insieme di protocolli, inoltre, garantisce un ulteriore controllo sull'integrità dei dati, e inoltre dispone di tecniche per l'autenticazione del sito remoto (ossia, per controllare che il sito che sta dialogando con l'utente sia proprio quello desiderato, e non un impostore che si spaccia per esso). A livello tecnico, i protocolli di SSL si inseriscono tra l'HTTP (il protocollo di trasmissione degli iperoggetti) e il TCP (il protocollo che cura la trasmissione vera e propria dei dati); l'insieme dell'HTTP e dell'SSL è denominato HTTPS, e il suo uso è individuato da URL aventi come metodo https. Ad esempio, l'indirizzo https://home.netscape.com/ 150 indica una connessione HTTP al sito home.netscape.com effettuata criptando le comunicazioni secondo quanto stabilito dall'SSL. Solitamente, l'utente non inserisce direttamente un indirizzo di questo tipo, ma esso è richiamato a partire da un'altra pagina o da un modulo. Inoltre, per poter effettuare una connessione di questo tipo anche il server del sito deve essere opportunamente attrezzato. Che cos'è SSH? SSH (Secure Shell) è un sistema di collegamento remoto, analogo a Telnet, che però cripta la comunicazione tra il terminale e il computer utilizzato, utilizzando vari sistemi (di base, alcune varianti del già citato DES, a cui però può essere aggiunta una cifratura sulla base di chiavi RSA). In questo modo non è possibile intercettare la vostra comunicazione - inclusi i dati di login e password - mediante un semplice sniffer. Questo sistema, inoltre, permette di porre limitazioni sui computer che possono essere utilizzati come terminale: il computer su cui è posto l'account accetterà collegamenti SSH soltanto da un elenco di computer predefinito. Che cosa vuol dire "shareware", "PD"... ? Ciascun programma disponibile in rete viene distribuito insieme ad opportune condizioni di licenza, che stabiliscono chi e come è autorizzato ad usarlo e se egli deve corrispondere un prezzo d'acquisto o no. Talvolta queste condizioni sono contenute in un file a parte, ad esempio LICENSE.TXT o REGISTER.TXT, ma dovreste comunque trovare indicazioni nel file README. È quindi opportuno, prima ancora di installare il prodotto, leggere questo file per capire a quali condizioni potrete usarlo. Alcuni programmi, comunque, vi presentano le condizioni di licenza durante l'installazione o al primo caricamento, e vi richiedono di accettarle "esplicitamente" premendo un bottone identificato da scritte come I Agree o Accept License. In questo caso, premendo il bottone accettate ai fini legali tutte le condizioni di licenza e vi impegnate a rispettarle (cosa che comunque vale anche per i programmi che non richiedono l'accettazione esplicita...) Nel corso del tempo sono entrati nell'uso comune alcuni nomi particolari per indicare alcune condizioni di licenza più o meno standardizzate. 1. Public Domain (PD): i programmi distribuiti come PD sono liberi da ogni vincolo di copyright: l'autore li mette gratuitamente a disposizione di chiunque rinunciando ai propri diritti. Qualunque persona può non 151 2. 3. 4. solo copiare e utilizzare il programma, ma anche modificarlo (spesso nel pacchetto di distribuzione sono acclusi anche i sorgenti del programma), riutilizzarlo, inserirlo in altri programmi anche commerciali. Freeware: questi programmi sono copiabili e utilizzabili gratuitamente da chiunque, ma l'autore mantiene su di essi i propri diritti: il programma non può essere modificato e il codice non può essere utilizzato senza il suo consenso. Cardware: questi programmi sono copiabili e utilizzabili da chiunque a patto che egli invii una cartolina all'autore. (Alcuni autori richiedono cartoline di argomento specifico; dipende dalla licenza). L'autore mantiene i propri diritti: il programma non può essere modificato e il codice non può essere utilizzato senza il suo consenso. Shareware: questa è la categoria più grande, ed indica che il programma può essere copiato liberamente (molti autori incoraggiano a farlo) ma può essere utilizzato esclusivamente allo scopo di valutarne la validità in vista di un eventuale acquisto. Le condizioni esatte sotto le quali è ammesso l'uso a tale scopo sono indicate nella licenza. I casi più tipici sono: 1. Il programma può essere utilizzato solo per un determinato periodo di tempo, e quindi deve essere cancellato; 2. Il programma è incompleto, e per poterne usare tutte le potenzialità deve essere acquistato (modalità anche detta crippleware); 3. Il programma "disturba" l'utente in vari modi (ad esempio costringendolo ad una lunga attesa prima di mettersi in moto, compiendo operazioni indesiderate, modificando parzialmente i dati che si stanno trattando...), che verranno eliminati solo dopo l'acquisto (modalità anche detta nagware). (Esistono poi molte combinazioni dei casi suddetti; quasi ogni autore si inventa una propria modalità per scoraggiare l'uso non autorizzato). Comunque sia, per poter usare un programma shareware in permanenza e nel pieno delle sue funzionalità esiste l'obbligo (perlomeno dal punto di vista legale e morale) di acquistarlo, ossia di registrarsi (to register) come utente autorizzato. La registrazione avviene in modo diverso da programma a programma, ma comporta normalmente il pagamento di una somma di denaro all'autore. Se il programma è crippleware o nagware, in cambio l'autore provvederà - inviando un dischetto con un nuovo archivio o una password - ad eliminare le limitazioni o le azioni di disturbo. 152 Un caso particolare è quello del progetto GNU (la sigla GNU è definita "ricorsivamente": significa GNU's Not Unix), promosso dalla FSF (Free Software Foundation). Si tratta di un lavoro collettivo, portato avanti da centinaia di programmatori, teso a creare un insieme di programmi gratuitamente disponibili in rete, e insieme a diffondere la programmazione. I programmi realizzati nell'ambito di questo progetto sono posti sotto la cosiddetta GNU GPL (General Public License), e possono essere distribuiti e utilizzati gratuitamente (come per il freeware) con in più l'obbligo di accludere alla distribuzione il codice dei programmi. Sotto licenza GNU sono disponibili programmi molto famosi, come il compilatore per il linguaggio C GCC e il programma Ghostscript per la lettura di file PostScript; per maggiori informazioni potete consultare http://www.gnu.org/. Il software GNU è princpalmente per sistemi Unix, e lo troverete nei siti FTP del progetto; tuttavia, esistono delle versioni per PC dei programmi GNU (incluso il compilatore C) disponibili nei siti Simtel.Net. Esistono anche programmi con licenze di tipo particolare, diversificate a seconda di classi di utenti: ad esempio Netscape Communicator 4 è freeware per studenti e docenti universitari, è shareware ma con un periodo di valutazione illimitato per gli utenti domestici, è shareware e va registrato entro 90 giorni per l'uso in azienda o a fini commerciali. Può capitare anche di trovare in vendita a basso prezzo, ad esempio su CDROM, raccolte di software PD, freeware o shareware. Normalmente, difatti, le licenze di questi programmi prevedono che essi, sebbene di copia e uso parzialmente o totalmente gratuito, possano essere inseriti in raccolte di software per le quali viene richiesto un compenso in denaro, a patto che il prezzo richiesto sia tale da coprire esclusivamente le spese di pubblicazione (stampa dei CD, distribuzione...) più un piccolo margine. Tuttavia, acquistando una raccolta di questo tipo si acquista soltanto la possibilità di leggere e copiare gli archivi in essa contenuti; se essi contengono programmi shareware che si desidera utilizzare, bisognerà poi provvedere ad "acquistarli" in senso vero e proprio, registrandosi e corrispondendo direttamente all'autore il relativo prezzo. In generale, la "libertà di copia" concessa vale soltanto a patto che l'archivio sia mantenuto integro e non modificato (ossia, è possibile copiare l'archivio originale ma non i singoli file in esso contenuti). Che cos'è Gopher? E Veronica? Gopher è stato il primo tentativo di unificazione dei vari protocolli esistenti sulla rete, sebbene sia stato dopo poco tempo dalla sua creazione soppiantato dal più potente World Wide Web. Un programma Gopher presenta all'utente una se- 153 rie di menu testuali, la cui selezione può portare ad un altro menu (situato sullo stesso computer o su di un altro, proprio come nel WWW), alla visualizzazione di un file di testo, oppure alla copia di un file, o persino ad un collegamento Telnet o di altro tipo. Questo servizio, dopo aver avuto un enorme "boom" al momento della sua ideazione, sta sparendo e venendo rimpiazzato dal sistema a ipertesti; tuttavia si possono ancora trovare su Gopher un buon numero di risorse. Inoltre, esso presenta il vantaggio di disporre di un comodo e potente sistema di ricerca, denominato Veronica; collegandosi ad esso si può inserire una stringa e ricevere, al termine della ricerca, un menu testuale che presenta tutte le voci di menu, situate nei vari gopher sparsi per il mondo, che contengono la stringa indicata. In realtà, ciascun computer di ricerca pone un tetto al numero di voci da restituire (un valore tipico è 200), per evitare menu chilometrici ed illeggibili. Nel caso che il computer al quale si è presentata la richiesta sia troppo occupato, inoltre, esso girerà la richiesta ad un altro, segnalando ciò all'interno di una particolare voce di menu posta all'inizio dei risultati della ricerca. Alcuni indirizzi a cui si può trovare Veronica sono: gopher://veronica.unipi.it:2347/7 (per l'Europa) gopher://veronica.scs.unr.edu:70/11/veronica (sito base mondiale) Spesso ci si dimentica dell'esistenza dei Gopher e di Veronica; tuttavia, può valere la pena di usarli (anche tramite un browser, mediante URL che iniziano per gopher:, per effettuare ricerche relativamente veloci e semplici. Che cos'è un proxy? Un proxy server è un programma (e, per estensione, il computer su cui esso viene eseguito) che svolge la funzione di "agente" per gli utenti di altri computer. Difatti, configurando i propri programmi di comunicazione perchè sfruttino un proxy - tipicamente situato su un computer diverso dal proprio - tutte le richieste di comunicazione, come ad esempio la richiesta di caricamento di un ipertesto, non saranno fatte dal proprio computer direttamente al sito remoto, ma verranno fatte al proxy server; il programma di proxy si occuperà poi di contattare il sito remoto, farsi spedire l'oggetto desiderato, e "girarlo" al computer dell'utente. Apparentemente, questa può sembrare una perdita di tempo (e talvolta lo è, se il sistema non è ben studiato); tuttavia, l'operazione può presentare molti vantaggi: ad esempio il proxy dispone solitamente di una propria "cache", nella quale memorizza tutti gli oggetti recuperati negli ultimi tempi; se un utente richiede di caricare un oggetto, ad esempio un ipertesto, che è già stato richiesto qualche tem- 154 po prima da un altro utente, e si trova quindi memorizzato sul proxy, esso provvede a spedirglielo direttamente, senza dover ricontattare il sito remoto, e quindi molto più velocemente di quanto succederebbe se il computer dovesse attendere la lunga e lenta connessione con il sito remoto. Spesso il proxy viene utilizzato in congiunzione con un firewall, sullo stesso computer; difatti nel caso del firewall tutti i messaggi provenienti dalla zona protetta devono comunque passare e venire esaminati da quel computer, per cui tanto vale aggiungere su di esso anche funzioni, come quella della cache, tipiche del proxy; in questo caso, la presenza del proxy insieme al firewall non provocherà nessun rallentamento rispetto alla presenza del solo firewall; tuttavia, non sarà possibile navigare senza utilizzare il proxy (provando a navigare senza proxy, nessuna connessione verrà stabilita). Nella configurazione dei browser più recenti, è possibile configurare i proxy in modo manuale oppure automatico. Nella configurazione manuale, è necessario specificare il proxy per i differenti protocolli di comunicazione; normalmente i proxy sono attivi per i protocolli HTML, FTP e Gopher. Un altro parametro richiesto è il numero di porta; i valori più frequenti sono 80, 1080, 8080 o 3128. Che cos'è Java? Java è il nome di un linguaggio di programmazione sviluppato dalla Sun e recentemente proposto come principale strumento di sviluppo per applicazioni pensate per funzionare su reti di calcolatori. Tramite questo linguaggio è possibile sviluppare programmi che possono essere eseguiti senza problemi su qualsiasi computer che soddisfi a certi requisiti, indipendentemente dalle caratteristiche particolari del computer stesso: questo significa che, per un programma scritto in Java, non è necessario produrre versioni diverse per i vari computer, ma lo stesso identico programma potrà tranquillamente essere eseguito su un PC, un Macintosh, un computer Unix... Java suppone di non avere a che fare con un particolare modello di computer, ma con una macchina virtuale (virtual machine) dalle caratteristiche standardizzate. D'altra parte, per ottenere una simile versatilità è stato necessario rinunciare a varie altre cose: Java è un linguaggio estremamente povero (il che, d'altra parte, può anche essere un vantaggio), e soprattutto è interpretato invece che compilato. In parole povere, per eseguire un qualsiasi programma scritto in Java è necessario disporre di un altro programma (l'interprete) al quale "dare in pasto" il codice: difatti, questo programma deve occuparsi di realizzare le funzioni standard della macchina virtuale sul particolare computer usato dall'utente. Per questo mo- 155 tivo, i programmi in Java saranno tendenzialmente più lenti e meno efficienti dei normali file eseguibili, che non necessitano di interprete. Inoltre, per poter scrivere un codice funzionante su computer molto diversi tra loro è necessario che il programma si limiti a sfruttare solo le potenzialità hardware comuni a tutti loro. Per questo motivo, si è scelto di "limitare" Java a sistemi con una certa potenza minima, e in particolare a sistemi operativi a 32 bit capaci di un vero multitasking. Pertanto, inizialmente sono stati disponibili interpreti Java esclusivamente per Windows 95 / NT e per alcune particolari versioni di Unix prodotte dalla Sun; soltanto recentemente il linguaggio è stato portato su Windows 3.x., e comunque con applicazioni molto limitate. Oltre a veri e propri programmi eseguibili tramite l'interprete, è possibile in Java scrivere degli applet, ossia programmi che vengono inseriti in pagine WWW ed eseguiti quando l'utente carica tali pagine. Anche qui, per poter utilizzare questi programmi è necessario disporre di un browser con incorporate le capacità di un interprete Java; su Windows 95 tali caratteristiche sono possedute da Netscape Navigator 2.0 e superiori, mentre per usare gli applet Java su Windows 3.x è necessario disporre di Netscape Communicator 4. Le caratteristiche "orientate alla rete" di Java rendono anche possibile la realizzazione di normali applicazioni (word processor, fogli di calcolo...) che vengono governate dal computer dell'utente, ma eseguite su computer remoti, che funzionano da server; in questo caso il computer dell'utente potrebbe essere un terminale di scarsa potenza e basso costo (si ipotizza una cifra intorno a 500 dollari): un network computer (NC), che non può funzionare se non attaccato ad una rete. Sebbene questo tipo di realizzazioni sia ancora di là da venire, questo sembra essere il vero futuro di questo linguaggio di programmazione... Che cos'è Javascript? Javascript è un linguaggio di scripting pensato appositamente per realizzare programmi da inserire in pagine WWW. Si tratta in sostanza di un insieme di comandi, abbastanza simile al C e a Java, che vengono interpretati in tempo reale dal browser ed eseguiti sul momento dal computer dell'utente. Rispetto a Java, Javascript è molto più semplice da usare, anche se meno potente. Permette tuttavia lo svolgimento di semplici operazioni dal lato cliente della connessione: ad esempio il controllo della validità dei dati inseriti in una form, in precedenza affidato ad un programma CGI, o semplici realizzazioni grafiche come quella della scritta che scorre nella barra inferiore del browser, visibile in molti siti. È quindi un ideale complemento dell'HTML, che permette un incre- 156 mento della flessibilità per gli autori di pagine Web senza però richiedere l'acquisizione di un linguaggio di programmazione complesso come Java e l'utilizzo di strumenti come compilatori o interpreti. Al momento, Javascript è supportato da Netscape versione 2 o superiore, per qualsiasi sistema operativo; inoltre è supportato da Internet Explorer 3 o superiore. Si tratta comunque di un linguaggio in forte evoluzione, per cui alcune caratteristiche sono supportate soltanto da versioni più recenti dei browser; sviluppando un programma è opportuno fare attenzione ai problemi di compatibilità. La documentazione completa sul linguaggio può essere recuperata dal sito della Netscape, all'indirizzo http://developer.netscape.com/library/documentation/javascript.html. Che cos'è MPEG? MPEG (Motion Pictures Expert Group) è il nome di un gruppo di lavoro dell'ISO - il maggiore organismo mondiale di standardizzazione - che si occupa di produrre standard per la codifica di audio e video, e, per estensione, è anche il nome degli standard da esso prodotti. Scopo della codifica audio-video è essenzialmente quello di comprimere il segnale prodotto dalla digitalizzazione di un'immagine o di un brano sonoro, permettendo di trasmetterlo e riprodurlo col miglior rapporto possibile tra qualità e dimensioni del file (o velocità di trasmissione richiesta per la spedizione dei dati dalla sorgente all'utente). In questo modo, diventa più semplice ed economico fornire servizi multimediali sulle reti di telecomunicazioni e distribuire audio e video in forma digitale. Esistono tre diversi standard MPEG: • • • MPEG-1, il primo sviluppato, è nato per applicazioni a qualità relativamente bassa (video di livello VHS, per intenderci), e per la registrazione su CD (CD-video); MPEG-2 è invece mirato in generale alla trasmissione e memorizzazione di audio-video su reti digitali, con grande scalabilità, ossia con la possibilità di avere qualità diversa a seconda delle necessità; MPEG-4, in corso di sviluppo, dovrebbe introdurre una codifica per oggetti, e non più semplicemente per immagini. 157 MPEG-3 doveva essere lo standard per la TV ad alta definizione, ma si è visto che le prestazioni di MPEG-2 erano sufficienti a inglobare anche queste applicazioni. La codifica MPEG si basa in gran parte sulla tecnica delle trasformate spaziali: l'immagine viene divisa in blocchetti, e di ogni blocchetto viene calcolato lo spettro in termini di variazione delle componenti dell'immagine nello spazio: poichè tipicamente pixel vicini hanno colori molto simili, si riesce a buttar via una parte dei dati - quelli relativi alle forti variazioni di colore - senza perdere molto in qualità. Esistono poi altre tecniche: ad esempio, i vari fotogrammi di un filmato possono essere trasmessi interamente (i cosiddetti frame I), ma anche essere trasmessi come differenza rispetto al fotogramma precedente (frame P) o come differenza rispetto all'interpolazione lineare tra il fotogramma precedente e il successivo (frame B): in generale, le differenze hanno un valore molto piccolo, il che permette di trasmetterle bene utilizzando pochi bit. In questo modo, si ottiene un flusso di dati estremamente compresso, che può essere anche salvato in un file (tipicamente distinto dall'estensione .MPG) e riprodotto in seguito. Per quanto riguarda l'audio, normalmente si sfruttano le caratteristiche dell'orecchio umano, e in particolare la sua incapacità di sentire suoni deboli se vicino ad essi, in frequenza o nel tempo, vi è un suono molto forte, per eliminare una parte dei dati da trasmettere. La codifica dell'audio è distinta in livelli (layer); sono abbastanza diffusi i file audio MPEG Layer 2 (normalmente con estensione .MP2), e hanno conosciuto recentemente una grande diffusione i file audio MPEG Layer 3 (.MP3); questi ultimi file garantiscono, rispetto a formati largamente diffusi come i .WAV, una compressione anche di 10 - 15 volte senza una significativa perdita di qualità: un brano musicale di tre minuti può essere tranquillamente ridotto fino a stare su un normale dischetto. Sia i file MPEG video che i file MPEG audio necessitano, per essere riprodotti, di appositi programmi, che sono normalmente reperibili in rete. Che cos'è una Intranet? Anche le aziende si sono dimostrate interessate alla grande quantità di informazioni e di servizi disponibili gratuitamente su Internet. Mentre in passato l'accesso a Internet degli utenti aziendali era limitato ed avveniva tramite postazioni dedicate oppure tramite un gateway che convertiva i dati dal formato della rete locale dell'azienda a quello di Internet, il desiderio di una maggiore interazione ha portato al concetto di Intranet: una rete locale interna all'azienda, realizzata però con i protocolli e gli standard di Internet. In questo modo, gli utenti della rete aziendale potranno usare i sistemi e i programmi della grande rete non solo per 158 navigare all'esterno, ma anche per la normale comunicazione interna; contemporaneamente, i dati e i messaggi prodotti all'interno saranno già pronti per essere "esportati" nel grande mare di Internet, e le informazioni reperite all'esterno potranno essere immediatamente inserite nel circuito aziendale. Inoltre, è possibile sfruttare i normali canali di comunicazione di Internet, disponibili in modo sostanzialmente gratuito, per le trasmissioni tra le varie sedi dell'azienda, costruendo quindi, a bassissimo costo, quella che spesso viene chiamata una Extranet. Se immaginate di avere sedi in tutto il mondo, il risparmio non è indifferente, anche se viene pagato in termini di velocità dei collegamenti e soprattutto di sicurezza. Dal punto di vista della sicurezza, difatti, bisogna stare ben attenti a proteggere le parti nevralgiche della propria rete locale dall'ingresso di possibili sbirciatori non desiderati, solitamente tramite un firewall, e inoltre è necessario crittografare opportunamente tutto il traffico che transita sui canali di comunicazione comuni. La scelta del modello Internet per la rete locale di un'azienda comporta anche conseguenze sull'organizzazione del lavoro interno: difatti, come visto, Internet è basata sul modello client-server. Questo significa che, solitamente, vengono creati nella rete locale uno o più information server, su cui vengono conservate tutte le informazioni che devono essere condivise tra più utenti. I computer degli utenti saranno quindi in costante collegamento con l'information server, che diventerà il cuore della rete locale. Un modello di questo tipo semplifica la cooperazione e la supervisione del lavoro e il reperimento delle informazioni, ma rende necessaria una assoluta sicurezza negli accessi al server e una buona efficienza della rete. Che cos'è ISDN? La sigla ISDN (Integrated Services Digital Network) indica una generica rete per la trasmissione di dati binari, mirata all'integrazione di servizi, ossia alla possibilità di offrire contemporaneamente servizi diversi sulla stessa rete (ad esempio, il telefono, la trasmissione dati, l'accesso a videoteche in rete, il teleacquisto, la videoconferenza, e tutto quello che può venirvi in mente). Difatti, mentre le tradizionali reti di comunicazione, come quella telefonica, si preoccupavano di fornire un singolo servizio, con l'avvento della digitalizzazione è diventato possibile trasformare qualsiasi cosa in dati binari, e quindi, attraverso la trasmissione a pacchetti, far convivere sullo stesso mezzo di trasmissione più comunicazioni diverse e più servizi. 159 In parole povere, su una rete ISDN è possibile far viaggiare contemporaneamente, ad esempio, la voce (telefono) e i dati; in realtà, essi non viaggiano veramente in contemporanea, ma invece la voce viene campionata e trasformata anch'essa in una serie di dati binari, e poi tali dati vengono inframmezzati agli altri, permettendo di mandare avanti entrambe le comunicazioni. Per l'utente, comunque, l'effetto è quello di più comunicazioni contemporanee, proprio come se esse avvenissero su due linee separate. Nell'uso commerciale attuale, ISDN indica un collegamento digitale a banda stretta, ossia relativamente lento: l'offerta di base si fonda su due canali a 64 Kb/s, dei quali uno sostituisce la normale linea telefonica (difatti, 64 Kb/s è la velocità necessaria per trasmettere senza compressione i dati vocali generati dal telefono) mentre l'altro può essere utilizzato, ad esempio, per collegarsi a Internet. L'obiettivo, tuttavia, è quello di realizzare reti ISDN a larga banda, ossia con velocità di trasmissione dai 2 Mb/s (per ciascun utente) in su. Reti di questo tipo richiedono in pratica di realizzare una nuova rete di telecomunicazioni, basata in gran parte sulla fibra ottica, ed è proprio questo che la Telecom sta facendo in Italia. Mentre 64 Kb/s sono di gran lunga troppo pochi per trasmettervi del video di qualità decente, e sono appena sufficienti a trasmettere della musica compressa di buona qualità, con qualche Mb/s diventa (quasi) possibile realizzare applicazioni come il video on demand: l'utente si collega con un server, sceglie il film che desidera vedere, e riceve via rete il flusso di immagini che saranno proiettate dal suo televisore. Resta da vedere quanti saranno interessati a spendere cifre non indifferenti per un servizio di questo tipo: i primi esperimenti sono stati abbastanza deludenti. Tutte le realizzazioni già esistenti di rete a larga banda si basano sulla tecnica ATM (Asynchronous Transfer Mode), che è stata sviluppata proprio allo scopo di garantire una elevata velocità di trasmissione unita ad una garanzia sulla qualità del servizio offerto, che diventa fondamentale nel momento in cui si devono offrire servizi in tempo reale come il telefono o il video on demand: non può certo succedere che, a causa del traffico, la telefonata si interrompa, così come oggi si interrompono i collegamenti su Internet! Che cos'è una BBS? Posso collegarmi a una BBS via Internet? Una BBS (Bulletin Board System) è semplicemente un computer dotato di uno o più modem e su cui viene eseguito un apposito programma di gestione. Questo programma permette a tutti gli utenti autorizzati (ossia dotati di un proprio login e una propria password) di entrare nel sistema tramite un proprio modem, chia- 160 mando un numero di telefono che è collegato ai modem della BBS. Nel sistema sono posti archivi di file, aree messaggi, giochi interattivi, e tutto quanto il gestore della BBS (detto SysOp o System Operator) vuole mettere a disposizione degli utenti autorizzati. Ciascun utente dispone generalmente di un tempo d'accesso limitato e di un tetto massimo alla quantità di file che si possono prelevare dall'archivio della BBS; la quantità precisa varia a seconda del "livello" di partecipazione alla BBS. Un nuovo utente, che non possiede un login autorizzato, può generalmente collegarsi, ricevendo però un tempo d'accesso molto ridotto; mano a mano che esso "partecipa" alla BBS, ad esempio copiando file dal proprio computer all'archivio della BBS, sale di livello e riceve privilegi maggiori. In buona sostanza, questi sistemi, molto in voga negli anni '80 e ancora adesso molto diffusi, permettevano di fare "in piccolo" e solo tra i loro relativamente pochi utenti quello che si può fare con Internet (dialogare via computer, copiare file); prima dell'avvento di Internet rappresentavano spesso l'unica alternativa ai negozi per il reperimento di software e l'unica possibilità di comunicazione diretta tra utenti di computer, specialmente piccoli (PC, Amiga...). Molte BBS, nel tempo, hanno compreso l'utilità di comunicare tra loro, e sono pertanto nate vere e proprie "reti di BBS" (ad esempio FidoNet). Alcune BBS hanno cominciato a connettersi a Internet in modo da fornire anche questo servizio ai loro utenti autorizzati. Poichè una BBS è semplicemente un computer, a ciascuna BBS connessa a Internet corrisponde quindi un IP numerico e un nome letterale; normalmente, noto il nome Internet della BBS, ci si collega ad essa tramite Telnet; il computer remoto richiederà login e password, proprio come se ci si stesse connettendo direttamente tramite il numero telefonico della BBS, e quindi permetterà l'accesso di conseguenza. Come è fatto un PC? Come posso valutarne le prestazioni? Avvertendo che questo paragrafo risulterà particolarmente stupido per molti dei lettori di questa guida, vale la pena di risolvere alcuni dubbi che spesso si hanno quando si tratta di scegliere o di valutare un computer. Per chiarire questi dubbi, ecco una breve lista dei componenti principali di un computer e dei parametri che permettono di valutarne le prestazioni, con l'avvertenza che il mercato dell'elettronica è soggetto a sbalzi clamorosi: le indicazioni sotto riportate sono state scritte all'inizio del 1998, e potrebbero diventare obsolete in pochi mesi. 1. Il microprocessore. Esso è il cuore del computer: è quello che compie quasi tutte le operazioni richieste durante l'esecuzione di un programma. I primi PC originali (quelli IBM) erano basati su microprocessori prodotti dalla Intel, ma negli ultimi anni sono stati immessi sul mercato 161 computer compatibili basati su processori di altri costruttori. Ovviamente, non è detto che un processore non-Intel sia per forza migliore o peggiore di un processore Intel: dipende dal modello! Le prestazioni di un microprocessore possono essere valutate dalla sua frequenza di clock e dal suo numero di bit (oltre che dal processore stesso). La frequenza di clock (50 MHz, 66 MHz...3.2 GHz) misura la velocità intrinseca del processore: un processore da 50 MHz (megahertz) può eseguire 50 milioni di "operazioni elementari" al secondo, per cui più alta è questa frequenza maggiore è il numero di operazioni eseguite in un secondo. Poichè oltre qualche decina di MHz, per una serie di motivi fisici, non si riesce ad andare, almeno per quanto riguarda la velocità generale del computer, sono stati inventati vari trucchi per aumentare questo numero e far felici i clienti, il più diffuso dei quali (implementato nelle serie "DXn" dei 486, e su tutti i Pentium) è quello di aumentare la velocità interna del processore - il che non è troppo difficile - senza aumentare la velocità con cui il processore comunica con tutte le altre parti del computer - il che sarebbe molto più difficile; in pratica, un processore "DXn" lavora alla frequenza di clock indicata, ma comunica con l'esterno ad una frequenza che è un ennesimo della frequenza di clock. Per fare un esempio, un processore 486-DX2 a 66 MHz compie internamente 66 milioni di operazioni elementari al secondo, ma comunica con il resto del computer a 33 MHz (66 diviso 2), ossia può comunicare un dato all'esterno per 33 milioni di volte al secondo. Insomma, quando vi danno un Pentium a 166 MHz, non pensate che tutte le parti del vostro computer lavorino a tale frequenza: quella è la velocità soltanto delle parti interne del microprocessore! Il numero di bit (16 – 32 – 64) indica quanti bit possono essere trattati dal computer in una volta sola. Ad esempio, un processore a 16 bit può sommare tra loro in un colpo solo due numeri binari di 16 bit ciascuno, ma se deve sommare due numeri di 32 bit ciascuno deve farlo in due passi. Pertanto, maggiore è il numero di bit maggiore è la velocità di calcolo. Anche qui, sono stati inventati vari trucchi, il più diffuso dei quali è quello adottato nelle serie "SX", peraltro ormai praticamente defunte: in questi processori, il computer lavorava internamente ad un certo numero di bit, ma comunicava con l'esterno a "blocchi" di metà di questo numero di bit. Ad esempio il processore 386SX lavorava internamente a 32 bit, ma spediva i dati agli altri componenti a 16 bit alla volta (il che ovviamente rallenta le comunicazioni con il resto del computer). Poichè le esigenze di marketing non sono quelle della chiarezza, comunque, varie ditte hanno prodotto processori con caratteristiche leg- 162 germente diverse da quelle che il loro nome farebbe supporre... insomma, non prendete le indicazioni sopra esposte come valide sempre e comunque. Ad esempio, ditte concorrenti della Intel hanno lanciato i "processori col più": un processore 586 "166+" funziona in realtà a meno di 166 MHz, ma grazie ad alcuni accorgimenti riesce ad offrire circa le stesse prestazioni di un Pentium 166. Questi parametri, comunque, servono a confrontare tra loro processori dello stesso tipo (ossia dello stesso numero di serie), ma ovviamente processori diversi, pur andando alla stessa frequenza di clock e avendo lo stesso numero di bit, possono fornire prestazioni radicalmente diverse. Tanto per chiudere, ecco una lista in ordine di potenza dei vari processori Intel storicamente montati sui PC: 8088, 8086 (il primo nato), 80286, 80386, 80486, Pentium, Pentium Pro (quest'ultimo è superiore al Pentium solo in determinati ambienti operativi) e Pentium II. Le case concorrenti, come la Cyrix o la AMD, si sono inventati nomi come il 586 o il 6x86 (che in realtà è più o meno della stessa fascia del Pentium...) Nel corso del 1997 si sono diffusi i processori Pentium MMX, ossia dei Pentium a cui sono state aggiunte "istruzioni multimediali" che dovrebbero aumentarne la potenza per l'uso grafico. 2. 3. I coprocessori. Un coprocessore è un particolare chip che, una volta montato, interagisce strettamente con il processore centrale, diventandone una appendice e migliorandone le prestazioni. Famosissimo, fino a qualche anno fa, era il coprocessore matematico (l'80287 per il 286, l'80387 per il 386) che aggiungeva al processore la capacità di eseguire velocemente calcoli con numeri non interi. Tuttavia, a partire dal 486 (che è sostanzialmente formato da un 386 e un 387) queste capacità sono state integrate direttamente nel processore, per cui i coprocessori matematici a parte si sono estinti. La memoria RAM. La RAM (Random Access Memory) è la memoria usata dal calcolatore per conservare i programmi e i dati con cui sta lavorando, per tutto il tempo per cui il computer rimane acceso. In realtà, esistono altri tipi di memorie, come vedremo; tuttavia la RAM è fondamentale. Nella generazione dei 486, quasi tutti i programmi richiedevano almeno 4 MB (megabyte) di RAM per funzionare decentemente, ed era bene non scendere sotto gli 8 MB. Con i Pentium - anche in seguito ad un crollo di circa 8 volte nel prezzo della memoria, avvenuto intorno alla metà del 1996 - il minimo è 16 MB di RAM, e sono consigliati 32 MB. Esistono vari tipi di chip contenenti memoria RAM: fino ai 486 si usavano le SIMM a 30 pin (i pin sono i piedini che collegano un chip alla scheda madre), poi 486 e Pentium si sono diffusi prevalentemente in- 163 sieme alle SIMM a 72 pin, e recentemente si sono diffuse le DIMM. (Le SIMM sono moduli in cui i piedini sono disposti su una singola fila, e i chip sono quindi montati su un rettangolo sottile; le DIMM hanno invece i piedini su due file, e hanno quindi una forma a parallelepipedo.) Un parametro importantissimo per l'efficienza della RAM è il tempo di attesa per accedere ad un dato memorizzato; le SIMM a 72 pin avevano tempi dell'ordine dei 60 - 70 nanosecondi, mentre le DIMM hanno tranquillamente un tempo d'attesa di 10 ns. Per velocizzare l'accesso, le più recenti SIMM a 72 pin utilizzano la modalità EDO (Extended Data Output), che sincronizzava meglio le operazioni accelerando il tutto. Il tipo di memoria che potete montare dipende comunque dagli spazi (slot) disponibili sulla vostra scheda madre; inoltre spesso sono necessarie particolari combinazioni (ad esempio bisogna riempire gli slot a coppie con chip uguali) descritte sul manuale della scheda madre. Poichè comunque la RAM è relativamente costosa, i sistemi operativi moderni permettono di impostare la cosiddetta memoria virtuale, ossia di definire uno spazio sull'hard disk (swap space) che verrà sottratto ai normali file - spesso occupandolo con un grosso file detto appunto swap file - e utilizzato come ulteriore memoria. Quando la memoria RAM sarà tutta occupata, difatti, il sistema operativo provvederà a scrivere temporaneamente sull'hard disk parte del suo contenuto, liberando così spazio per nuovi dati e programmi; quando sarà necessario ricominciare ad usare il contenuto di memoria spostato sull'hard disk, verrà scritta sull'hard disk qualche altra parte della memoria, e quella precedente verrà riletta nella RAM. Ovviamente, questo sistema funziona finchè l'accesso al disco è veloce e il riempimento della RAM è evento relativamente raro, altrimenti il sistema passa tutto il proprio tempo a copiare blocchi di memoria sull'hard disk e a rileggerli. 4. 164 La memoria cache. Una cache (o memoria tampone) è una parte di memoria molto veloce (come tempi di lettura e scrittura) che viene usata per trattare velocemente piccole quantità di dati: se devo trattare una grossa quantità di dati memorizzati in una memoria lenta (come può essere la RAM) è più veloce ed efficiente copiarne un intero blocco in una memoria veloce, e poi operare su di esso. Poichè il costo di una memoria è direttamente proporzionale alla velocità, la memoria cache è di estensione molto minore della RAM, tipicamente 128, 256 o 512 KB (kilobyte). In realtà, questa è la cache esterna (o cache di secondo livello); normalmente esiste anche una cache interna, integrata nel processore (quindi l'utente non può comprarne altra o modificarla: si becca quella che c'è) che funziona a sua volta da cache per la cache esterna. Difatti il concetto di "lento" e "veloce" è relativo: dovunque ci sia una memoria se ne può prendere una più veloce e usarla da cache per quella memoria. 5. Ad esempio, il programma SmartDrive incluso nel DOS utilizzava la RAM da cache per l'hard disk, visto che la RAM è più veloce dell'hard disk! L'efficienza di una memoria cache è misurata dall'hit rate, che misura quanto spesso il dato cercato è stato letto dalla cache invece che dalla memoria originaria: difatti, se sfortunatamente il processore deve leggere un dato che è memorizzato in un punto della memoria originaria che non fa parte del blocco attualmente copiato nella cache, esso dovrà andarselo a leggere nella memoria originaria, più lenta. La memoria di massa. Con questo termine si intendono tutte quelle memorie di grandi dimensioni e capaci di conservare i dati a lungo anche a computer spento, ma di accesso molto più lento della RAM. L'esempio tipico è l'hard disk, la cui capacità influenza essenzialmente la quantità di dati e di programmi che potete installare sul vostro computer. Al giorno d'oggi il minimo consigliato è 1.2 GB (ossia un hard disk che può memorizzare 1.2 gigabyte, ossia più di un miliardo di caratteri), non solo per lo spazio disponibile, ma anche perchè hard disk di dimensioni inferiori non permettono risparmi significativi. Di fatto, 2 GB sono oggi un valore sensato. Esistono sostanzialmente due tipi di hard disk: gli IDE/EIDE e gli SCSI; quest'ultimo è uno standard per l'interazione tra periferiche e PC che garantisce prestazioni superiori, ma ovviamente richiede hardware apposito e periferiche compatibili, generalmente più costose di quelle normali. Il tipo di hard disk che potete usare è determinato dal vostro controller, ossia dall'hardware che si occupa di gestire le comunicazioni con l'hard disk stesso. Altri tipi di memoria di massa, a differenza dell'hard disk, sono rimovibili, ossia possono essere facilmente estratti e portati in giro, e possono essere utilizzati dovunque vi sia un lettore. Il più comune tipo di memoria di massa rimovibile è attualmente il floppy disk, nel formato universale da 3"1/2 (ma se vi interessate di informatica da un po' di tempo, vi ricorderete senz'altro dei floppy da 5"1/4 e dei "padelloni" da 7 pollici e rotti che si usavano quindici anni fa, e magari anche dei tempi in cui al posto dei PC si usavano gli "home computer" dotati di un efficientissimo registratore a cassette). Negli ultimi anni, tuttavia, a causa dell'insufficiente capacità dei dischetti, si sono affermati altri tipi di memoria, primo fra tutti il CD-ROM (la sigla ROM significa Read Only Memory e indica una memoria i cui contenuti vengono impressi una volta per tutte in sede di fabbricazione e non possono più essere modificati), che offre una capacità di memorizzazione pari a quasi 500 dischetti! A proposito dei lettori CD-ROM, la sigla nx che li caratterizza, dove al posto di n c'è un numero, ne indica semplicemente la velocità, espressa come multiplo di quella dei primi modelli apparsi sul mercato (8x = otto vol- 165 te). Stanno cominciando a diffondersi i masterizzatori, ossia apparecchi capaci di scrivere (per una volta sola, ovviamente) i CD-ROM; sono già pronti ad essere lanciati i CD riscrivibili e altri sistemi come il DVD. Sempre per via della scarsa capacità dei dischetti, sono stati sviluppati altri strumenti, come gli streamer, basati sull'uso di nastro magnetico ma lenti e poco affidabili, e i drive Zip o Syquest, che utilizzano cartucce rimovibili di capacità che va da qualche decina di MB al GB, utilizzabili però allo stesso modo dei floppy. In particolare, molto diffuso è il drive Zip, che è facilmente trasportabile, usa cartucce da 100 MB e, a seconda del modello, può essere collegato alla porta parallela o ad un controller SCSI. Oltre a questi componenti, sono necessarie schede (ossia, piastre contenenti un circuito stampato e alcuni componenti elettronici integrati montati su di esso) aggiuntive, che possono essere inserite in appositi alloggiamenti (slot). Esistono vari standard di schede a seconda del tipo di bus (che è l'"insieme di fili" che mette in comunicazione il processore e i vari componenti del computer) presente sulla motherboard (ossia la scheda base del computer, quella su cui è montato il processore) del vostro computer. Il mercato è attualmente orientato alla diffusione dello standard PCI PCI Express per i bus, sostituendo i precedenti ISA e VESA, ma anche qui le mode cambiano facilmente... Il numero di alloggiamenti disponibili nel computer limita la quantità di schede aggiuntive installabili: una volta che tutti gli slot sono occupati, non potrete installare nuove schede senza togliere una di quelle esistenti. La maggior parte delle schede aggiuntive richiede l'installazione di proprio software, detto driver (letteralmente, autista, ossia programma che controlla il funzionamento della scheda), per poter essere utilizzata. Che cosa sono e come funzionano le schede audio e video? Tra le schede aggiuntive, fondamentale è la scheda video, che deve obbligatoriamente essere presente (altrimenti non potreste vedere un bel niente sul vostro monitor: la sua gestione è affidata a questa scheda). Alcuni costruttori, comunque, integrano la scheda video sulla motherboard, il che presenta il vantaggio di non occupare uno slot con essa, e lo svantaggio di rendere difficile la sua sostituzione (operazione peraltro raramente necessaria, a meno di guasti). Fino a qualche anno fa, le schede video rispettavano alcuni standard (CGA, EGA, VGA...). Con la crescita delle capacità grafiche dei computer, comunque, il numero di produttori è aumentato, ed ha portato ad una notevole anarchia nel mercato, che spesso offre pochi punti di riferimento. 166 Ciascuna scheda video è caratterizzata in generale dalle risoluzioni visualizzabili. Una risoluzione, o meglio modo video, è caratterizzata da due dimensioni (larghezza e altezza) e da un numero di colori. Le dimensioni indicano il numero di colonne e righe in cui viene diviso il monitor; il loro prodotto dà il numero di pixel (ossia, puntini elementari) sullo schermo: maggiore è il numero di pixel, migliore sarà l'immagine, in quanto essa sarà composta da puntini di dimensioni minori, mentre se il numero di pixel è basso si avrà l'effetto "quadratoso" tipico dei computer di qualche anno fa. Il numero di colori è il massimo numero di colori diversi che possono essere mostrati contemporaneamente sullo schermo, e viene talvolta dato sotto forma di numero di bit, nel qual caso il numero dei colori è pari a 2 elevato al numero di bit. Le modalità a 16 milioni di colori (24 bit) vengono indicate come truecolor. Ad esempio, alla risoluzione 800x600 in 256 colori (o anche 800x600x8 bit, visto che 256 = 2 all'ottava) lo schermo viene diviso in 800 colonne e 600 righe (ossia in 480.000 puntini) e vengono visualizzati al più 256 colori. Le risoluzioni visualizzabili sono limitate dalla memoria disponibile sulla scheda video (e non dalla RAM del computer; ciascuna scheda attinge dalla propria memoria video (VRAM)). Ad esempio, nella risoluzione 800x600x8 bit (256 colori), ciascun pixel può assumere 256 valori diversi a seconda del suo colore, per cui per ciascun pixel sono necessari 8 bit per memorizzare il suo colore, ossia un byte. Essendoci 480.000 puntini sullo schermo, saranno necessari 480.000 byte per poter memorizzare l'intera schermata, per cui la scheda dovrà disporre di una propria memoria di almeno 480.000 byte per poter funzionare a quella risoluzione. Le schede attuali hanno tipicamente una memoria di 1, 2 o 4 megabyte. Oltre alla scheda video, comunque, perchè la risoluzione possa essere utilizzata anche il monitor deve supportarla: scegliendo un monitor è bene informarsi di quali sono le sue risoluzioni massime. Molti monitor riescono a raggiungere risoluzioni maggiori tramite la tecnica dell'interlacciamento: se si deve visualizzare una schermata ad esempio di 1024 righe, il monitor divide il proprio schermo in 512 righe (la metà), accoppia le 1024 righe della schermata a due a due, accoppiando righe tra loro adiacenti, e visualizza alternativamente l'una e l'altra delle righe di ciascuna coppia sulla stessa riga delle 512 disponibili; in questo modo, se l'alternanza delle due righe della schermata sulla stessa riga del video è sufficientemente rapida, si riesce a creare l'illusione della presenza di entrambe le righe. Tuttavia, in questo modo si ottengono immagini che, come normalmente si dice, "ballano", e alla lunga stancano gli occhi molto più di un video normale: pertanto non conviene adottare modalità video alle quali il proprio monitor adotta l'interlacciamento, ed è bene informarsi all'atto dell'acquisto su quali siano le risoluzioni interlacciate. 167 La scheda audio è un componente meno diffuso, che permette al software che la supporta di generare e registrare suono. Al momento la scheda più diffusa è la Sound Blaster nelle sue varie versioni: la Pro (che genera suoni in modulazione di frequenza (FM) a 8 bit), la 16 (suoni in FM a 16 bit) e le AWE 32/64/64 Gold (che si servono anche di suoni campionati, che presentano una qualità migliore di quelli in FM). Un'altra scheda, meno diffusa e quindi meno supportata, è la Gravis Ultrasound. Tra le caratteristiche più importanti di una scheda audio vi sono le sue capacità di comunicazione: la scheda può essere half duplex - e in questo caso non può registrare suono mentre ne riproduce - o full duplex - e in questo caso può registrare e riprodurre contemporaneamente. Quest'ultima caratteristica - posseduta ad esempio dalle SoundBlaster AWE 64, ma non dalla 16 - è fondamentale per usare il PC per telefonare in rete o come studio di registrazione audio casalingo. Inoltre, può essere utile la compatibilità con lo standard General MIDI, ossia la capacità della scheda di riprodurre brani MIDI utilizzando un set di strumenti standard di buona qualità. Che cos'è TRACEROUTE (o HOP) e a cosa serve? Traceroute è un programma di diagnostica e statistica diffuso sui grossi server Unix, che ha come scopo quello di individuare il percorso compiuto dai pacchetti di dati per giungere dal computer dell'utente ad un computer remoto. Quando l'utente fornisce a Traceroute il nome di un computer remoto, il programma spedisce ad esso un particolare pacchetto di dati, che provoca la spedizione di un messaggio interpretabile come segnale di "ricevuto" da ciascuno dei computer incontrati lungo il percorso. In questo modo, il programma restituisce all'utente l'elenco di tutti i computer tramite cui è passato il pacchetto e dei tempi di percorrenza di ciascuna tratta, cosa che può essere di grande interesse per gli amministratori di rete, ma può anche soddisfare le curiosità degli utenti comuni. In genere, per ciascun nodo del percorso vengono effettuate tre prove, e sono quindi restituiti tre valori di tempo. Questo è il tipico output di un Traceroute: Tracing route to menelao.polito.it [130.192.3.30] over a maximum of 30 hops: 1 2 3 4 5 215 ms 232 ms 162 ms 213 ms 187 ms 423 ms * * * 304 ms 297 ms 168 234 ms dial02.dialup.csi.it [158.102.23.254] 526 ms csi-policy.csi.it [158.102.255.62] 178 ms 192.168.255.62 Request timed out. 221 ms 130.192.80.1 6 207 ms 185 ms 194 ms LAN-gw.polito.it [130.192.2.254] 7 213 ms 213 ms 193 ms menelao.polito.it [130.192.3.30] Trace complete. Per raggiungere dal computer dell'utente il server desiderato (in questo caso, menelao.polito.it) sono necessari sette passaggi; per ognuno, sono riportati il nome e/o l'indirizzo IP, e i tempi di risposta nei tre tentativi. Come vedete, i tempi non sono affatto crescenti man mano che ci si allontana, come ci si aspetterebbe: difatti il tempo di risposta è fortemente influenzato anche dalle prestazioni del server. Si noti anche che il quarto host intermedio non ha risposto alle richieste (probabilmente questa attività è stata disabilitata per motivi di sicurezza o prestazioni). 169 Proxy :Anonimato con Proxy Cos'è un proxy? Semplicemente il server proxy è un dispositivo che intercetta le richieste che arrivano dai client, per procurare dai vari siti le pagine Html e replicarle in locale In pratica, è un server che vi permette di accedere a un servizio senza mostrare il vostro IP address. Se inseriamo un indirizzo nel nostro Browser (Internet Explorer, Firefox, Opera ecc) questo si collega alla pagina da voi richiesta e le scarica sul vostro PC. Ovviamente l'amministratore di sistema del sito avrà il vostro IP e molte altre informazioni su di voi. Se invece è attivo il servizio proxy, l'IP address registrato dal sito sarà quello del proxy, in quanto è stato il proxy server a collegarsi al sito, non voi.I proxy server registrano comunque il vostro IP address,se proprio volete un maggiore grado di sicurezza, concatenate più server proxy.Più lunga e` la catena, più difficile sarà rintracciarvi. Concatenare piu proxy vuol dire arrivare al sito d'interesse passando per vari proxy in modo che è solo il primo a sapere chi siete veramente la concatenazione deve essere effettuata in questo modo: http://Proxy1:Porta1/ http://Proxy2:Porta2/ http://www.Sito.it/ Nei servizi di Anonimato vi è un elenco di proxy e un esempio di concatenazione piu semplice E' possibile anche usare programmi come 4proxy, MultiProxy ecc.. MultiProxy è Free e lo si trova all'indirizzo http://www.multiproxy.org/ Buoni Motivi per utilizzare i Proxy Server I proxy non sono solo una soluzione per navigare in anonimato, ma spesso rappresentano anche un modo per aggirare i limiti geografici imposti da certi siti che limitano gli indirizzi ip in base a determinati stati, in questo modo se il sito è visibile ad esempio esclusivamente per la Germania utilizzando un proxy tedesco si riesce a visualizzare il sito. Le limitazioni geografiche per gli ip sono spesso relativi a contratti per i diritti d'autore e ancora più spesso queste censure per ip address vengono utilizzate dai governi alcuni come fa l'Italia per un'attività di tutela dei cittadini da frodi per bloccare i siti di gioco d'azzardo non riconosciuti dallo stato, per altri governi invece si tratta di vera è propria censura dell'informazione. Quali Proxy Server scelgo ? I proxy sono classificati in base alla loro velocità e soprattutto livello di anonimato che restituiscono: • 170 Proxy di tipologia Trasparent ( proxy trasparenti ) sono proxy molto veloci, ma lasciano con semplici tecniche scoprire il vero indirizzo ip di chi naviga rendendo la navigazione non più anonima . Si usano soprat- • • tutto in attività di concatenazione proxy inserendo ovviamente un proxy elite all'inizio della concatenazione e poi una serie di proxy trasparent in questo modo si crea un pò di confusione in caso si voglia risalire al mittente. Proxy di tipologia Anonimus ( proxy anonimi ) sono server proxy meno veloci dei trasparent, ma che consentono un livello discreto di anonimato, ma con particolari tecniche è possibile comprendere che si sta utilizzando un proxy quindi in teoria si potrebbe bloccare l'accesso al sito, ed è possibile alcune volte risalire al mittente anche se la procedura di identificazione del ip reale è più complessa. Proxy di tipologia Elite ( proxy migliori ) si tratta di proxy che consentono un ottimo livello di anonimato, molto difficili da essere individuati come proxy. Usare un proxy server Il proxy server è lo strumento migliore per navigare in Internet in modo anonimo, senza lasciare traccia e visitare siti, inviare posta, andare in chat od in IRQ senza che tutti sappiano chi siamo. Un Proxy server è un computer che si interpone fra il proprio computer e Internet, facendo da intermediario per tutto il traffico di dati sia in uscita che in entrata. Quando il computer vuole visualizzare una pagina Internet, l’indirizzo richiesto viene mandato al proxy invece che al server DNS (che è il server collegato alla rete esterna). Il server proxy, a sua volta, chiede la pagina inviando l’indirizzo al server DNS. Quando la pagina arriva al server DNS, questo la invia al server proxy, e questo al computer che l’ha chiesta inizialmente. In pratica, se un server proxy è utilizzato in una rete locale, i singoli computer non avranno accesso diretto alla rete esterna, ma solamente il proxy. Il che vuol dire che non saranno le identità dei singoli computer a viaggiare in rete, ma solamente quella del proxy. Siccome ogni computer collegato alla rete ha un indirizzo IP, e questo indirizzo (che ha la forma xxx.xxx.xxx.xxx, tipo 151.21.136.51) accompagna tutta l’attività in rete (invio di posta, ingresso in siti, chat, download di programmi…) e rende identificabile qualsiasi nostro movimento, navigare utilizzando un proxy vuol dire poter navigare con una identità generica, e solamente andando a vedere le registrazioni del proxy sarà possibile sapere il nostro vero IP. 171 Quindi, solamente un computer che naviga da dietro un proxy non è identificabile dall’esterno, quindi in effetti è anonimo sia quando è in chat che quando è in IRQ, quando visita un sito o quando scarica un file. Chi navighi senza utilizzare proxy è sempre subito identificabile e lascia traccia del suo passaggio (il numero IP) dovunque vada. Anche se i server proxy sono in genere utilizzati nelle LAN private, esistono un certo numero di server proxy che sono pubblicamente utilizzabili (volontariamente o per caso) anche dall’esterno. Usando Internet Explorer, ad esempio, attraverso “Strumenti”/”Opzioni Internet”/”Connessioni”/”Impostazioni LAN…” si può settare “Utilizza un server proxy” con l’indirizzo e la porta di uno di questi proxy pubblici. Riavviando Explorer, adesso tutto quello che faremo in Internet passerà attraverso il server proxy.Il che vuol dire che se andremo in chat, spediremo posta… qualunque cosa facciamo, gli altri ci vedranno con l’identità (il numero IP) del server proxy.Se si tratta di un server proxy in Romania, ad esempio, tutti ci vedranno come se fossimo un computer romeno, ad esempio, e nessuno potrà sapere dove e chi siamo, l’IP del nostro computer. Unico difetto: la navigazione sarà leggermente più lenta. TOR Tor è una rete di tunnel virtuali che permette alle persone ed alle organizzazioni di aumentare la propria privacy e sicurezza su Internet. Tor aiuta a ridurre i rischi derivati dall'analisi del traffico, sia semplice che sofisticata, distribuendo le transazioni attraverso molti nodi della rete Internet, in modo che nessun singolo punto possa collegare una transazione alla sua destinazione. Tor è scaricabile da : http://www.torproject.org/easy-download.html.it Sostanzialmente si scarica un eseguibile che installa un software per gestire TOR, un Proxy e un Toolbar per Firefox che lo configura e, tramite una finestra ci permette di attivare o disattivare il proxy. Per la configurazione visitare http://www.geekissimo.com/2008/01/15/comeinstallare-e-navigare-anonimi-con-tor-utilizzando-firefox-video-by-shor/ 172 INDICE UTILITY WINDOWS Programmi eseguibili dal prompt dei comandi I comandi di WinXP più usati da linea di comando (Esegui) Esecuzione programmi e file disinstallazione di Messeger maggiore potenza del processore Recovery Console bloccare il pc da intrusioni Come si utilizza l'utility SFC di Microsoft Shutdown.exe per chiudere/riavviare il sistema Spegnere il pc in remoto Disabilitare la richiesta password Terminare le applicazioni bloccate Password caching Windows: tracciare i problemi di avvio/chiusura Come Cambiare il product-key di XP da registro Ho perso la product key di windows: come posso ritrovarla Disabilitare la memorizzazione di password Windows: disabilitare le condivisioni amministratore Il file di Paging Svuotare il file di paging al reboot Eliminare il file di paging all'uscita di windows Proteggere la propria privacy cancellando il file di paging all'uscita Cambiare la lettera d'unità del disco di boot. Forzare Windows a scaricare dalla memoria le DLL Controllo sui crash/blue-screen del sistema Creare una copia di backup delle connessioni remote Come disabilitare la segnalazione e l'invio di errori Non visualizzare l'ultimo login Blocco allo spegnimento di WindowsXP Come 'bloccare' la home page Impedire la modifica della password esistente Far risultare effettuata la registrazione Potenzialità dei Criteri di Gruppo (Local Group Policy Editor) Rendere il computer invisibile in rete Servizi di Windows disattivabili Servizi che possono essere modificati per ottimizzare le prestazioni La Management Console di Windows XP Eliminare i contenuti di una cartella Come faccio per avere configurazioni multiple di rete su Windows 2000/XP ? Come faccio a sapere quali porte sono in uso in questo momento sul mio pc? Accesso ai file personali Ripristino delle funzionalità di Windows Svuotare regolarmente la cartella Prefetch Migliorare le impostazioni di Prefetch Convertire la FAT32 in NTFS Bloccare le Proprietà dello schermo Eliminazione automatica dei file temporanei Ripristinare la schermata di login classica Problemi col Service Pack 2 (Firewall e Centro Sicurezza PC) Messaggio all'avvio (Windows XP) Eliminare la modalità grafica all'avvio (Windows 2000/XP) Ripristino di account utenti bloccati (Windows XP) 173 Modificare la password dimenticata Registro di sistema • memorizzare una qualsiasi chiave (e sottochiave) da voi specificata in un file .reg. • backup di una chiave • Come aggiornare il registro senza riavviarlo • Modifica del registro Guida rapida ai "DWORD" del menu Avvio Utility nascoste (Windows XP/2000) Come cambiare le informazioni sul sistema in XP Eliminare le copie di backup dei service pack Problemi d'avvio del sistema (Windows 2000/XP) Ripristino dei driver (Windows XP) I principali processi di sistema di Windows 2000/XP Disabilitare la segnalazione e l'invio di errori Velocizzare la navigazione tramite browser Non riesco ad accedere a Windows XP: un messaggio mi informa che \WINDOWS\SYSTEM32\CONFIG\SYSTEM è corrotto! Non riesco a cancellare un file memorizzato su disco fisso: Windows XP segnala che è in uso Migliorare le prestazioni caricando il nucleo di Windows in RAM Controllare i problemi allo spegnimento Visualizzare le periferiche nascoste Copiare il sistema operativo su un nuovo Hard Disk Reinstallazione del sistema operativo Ottimizzare la cache del processore Disinstallare i componenti non necessari di Windows XP Ripulire il computer dai files inutili Leggere i DVD con Windows Media Player Nascondere i propri files Togliere le voci inutili dal menu "installazione applicazione" Diritti di accesso alle cartelle (*********) Non mostrare il nome di un computer all'interno della finestra Risorse di rete Un suggerimento per condividere in rete locale una serie di cartelle Come Accedere a Windows senza dover immettere la password Alla scoperta dell'utility NETSH: tutte le informazioni su hardware e connessioni di rete Risolvere i problemi che impediscono l'avvio del sistema operativo -- Soluzioni pratiche per problemi comuni Risolvere i problemi con NTLDR e NTDETECT.COM Quando NTOSKRNL sembra danneggiato o mancante HAL.DLL danneggiato o mancante Pag 38 batchRun - HijackThis Pag 42 reti Pag 53 wireless lan Pag 59 nove modi per proteggere la rete wireless Pag 61 Come Recuperare e Craccare la Chiave WPA su Xp Pag 68 Il provetto ricercatore(utility :tracert ping whois telnet) Pag 79 Telnet per spedire posta Pag 86 La trasmissione dei dati Guida TCP/IP Avanzato OSI MODEL Internet 174 Internetworking packet-switching circuit-switching “internet” e “Internet” internet gateway (IP router) IP address Name server DNS e domini Reti ARP RARP TCP/IP Trasmissione dei dati (datagram, MTU) Routing ICMP UDP API (Application programming Interface) Le Porte La gestione dei dati Il controllo di flusso Segmento L’intestazione I segnalatori Il timeout Pag 117 Come avviene la trasmissione di un messaggio di e-mail Gli header di un messaggio di e-mail Protocolli di posta per scaricare i Pag 122 servizi e connessioni (introduzione a Internet) Pag.128 INTERNET Come viene HTTP e HTML individuato univocamente propri ciascun messaggi computer dal nella server rete. Che cos'è e come è fatto un URL? A cosa servono quegli URL contenenti strani simboli come #, ?, +, % ? newsgroup Che cosa sono le FAQ Cosa sono un "client" e un "server"? Ho trovato un file in formato... ma cosa diavolo è? Come posso trovare l'indirizzo E-mail o altre informazioni riguardo una persona? Che cos'è Finger? Che cos'è WHOIS? Che cos'è NETFIND? Come posso accedere a Internet da casa? Cosa sono SLIP e PPP? Quali pericoli corro mentre sono collegato? Quali altri rischi posso incontrare su Internet? Che cos'è NETFIND? Che cosa sono SSL e HTTPS? Che cos'è SSH? Che cosa vuol dire "shareware", "PD"... ? Che cos'è Gopher? E Veronica? Che cos'è un proxy? 175 Che cos'è Java? Che cos'è Javascript? Che cos'è MPEG? Che cos'è una Intranet? Che cos'è ISDN? Che cos'è una BBS? Posso collegarmi a una BBS via Internet? Come è fatto un PC? Come posso valutarne le prestazioni? Il microprocessore. I coprocessori La memoria RAM. La memoria cache La memoria di massa Che cosa sono e come funzionano le schede audio e video? Che cos'è TRACEROUTE (o HOP) e a cosa serve? Pag 170 : anonimato con il proxy, JAP e TOR 176