Ping: scoprire il percorso per raggiungere un indirizzo IP.

1 03 2008

Ping è un programma disponibile sui principali sistemi operativi che misura il tempo, espresso in  millisecondi, impiegato da uno o più pacchetti ICMP a raggiungere un altro computer o server in rete (sia essa Internet o LAN) ed a ritornare indietro all’origine. È prettamente utilizzato per conoscere la presenza e la raggiungibilità di un altro computer connesso in rete. Dal prompt di DOS si esegue con la sintassi “ping [ indirizzo IP ]” oppure “ping it.wikipedia.org” (non preceduto da “http://”).Tecnicamente ping invia un pacchetto ICMP di echo request e rimane in attesa di un pacchetto ICMP di echo response in risposta. Solitamente infatti la parte di sistema operativo dedicata alla gestione delle reti (stack di rete) è programmata per rispondere automaticamente con un pacchetto echo response alla ricezione di un pacchetto di echo request.Il ping misura il tempo, espresso in millisecondi, che impiega una informazione a raggiungere, partendo da un certo computer, un altro computer o server in rete (sia essa Internet o Lan) e a ritornare indietro allo stesso computer. Il prompt di DOS indica quanti pacchetti sono stati inviati e ricevuti, e in caso positivo il tempo per la ricezione del nodo finale. Il traceroute fornisce le stesse informazioni, con un dettaglio maggiore: i dati riguardano tutti i nodi di rete attraversati dai frame per arrivare al sito indicato.Il protocollo ICMP è incapsulato nello strato IP, anche se nella pila protocollare ISO/OSI viene inquadrato al livello network. Nonostante in effetti funziona più come un protocollo dello strato network, al pari del TCP ed UDP.Si immagini un router che non riesce a risolvere il rilancio per un determinato datagram, non avendo niente sopra al livello rete, ci si troverebbe difronte alla difficoltà di generare feedback al mittente per avvisarlo dell’errore di instradamento che si è verificato. In tale contesto il protocollo ICMP incapsulato direttamente nel livello IP da la possibilità al router di generare in feedback un vero datagram anche non essendo un host (ricordiamo infatti che la generazione di un datagram è la fase a valle della generazione di un segmento a livello TCP e che nei router siccome un livello TCP o anche UDP non esiste, ci troveremmo senza l’incapsulamento del ICMP direttamente a livello IP, senza la possibilità di generare un datagram). ICMP è definito in RFC 792: Internet Control Message Protocol. Di seguito un esempio chiarificatore:

Microsoft Windows XP [Versione 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.
C:Documents and Settingsxxx>ping/?
Sintassi: ping [-t] [-a] [-n conteggio] [-l dimensione] [-f] [-i durata]
[-v tiposervizio] [-r conteggio] [-s conteggio]
[[-j elencohost] | [-k elencohost]]
[-w timeout] elenco di destinazioni
Opzioni:
-t  Effettua un ping sull’host specificato finché non viene
interrotto.
Per visualizzare le statistiche e continuare – digitare
Ctrl-Inter;
Per interrompere – digitare Ctrl-C.
-a Risolve gli indirizzi in nomi host.
-n conteggio Numero di richieste di eco da inviare.

-l dimensione Invia dimensioni buffer.
-f Imposta il flag per la disattivazione della
frammentazione nel pacchetto.
-i durata Durata.
-v tiposervizio Tipologia di servizio.
-r conteggio Registra route per il conteggio dei punti di passaggio.
-s conteggio Timestamp per il conteggio dei punti di passaggio.
-j elencohost Instradamento libero lungo l’elenco host.
-k elencohost Instradamento vincolato lungo l’elenco host.
-w timeout Timeout in millisecondi per ogni risposta.
C:Documents and Settingsxxx>ping -t 192.168.0.1
Esecuzione di Ping 192.168.0.1 con 32 byte di dati:
Risposta da 192.168.0.1: byte=32 durata=3ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=3ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=2ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Risposta da 192.168.0.1: byte=32 durata=1ms TTL=255
Statistiche Ping per 192.168.0.1:
Pacchetti: Trasmessi = 14, Ricevuti = 14, Persi = 0 (0% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 1ms, Massimo = 3ms, Medio = 1ms
Control-C

Si noti che il ping è stato fermato schiacciando ctrl+C.





Telnet : inviare posta elettronica da DOS.

8 02 2008

Telnet è un’applicazione standard di ‘Internet ed è disponibile nella maggior parte delle implementazioni del TCP/IP, indipendentemente dal sistema operativo host.Si tratta di un semplice protocollo di login remoto, implementato secondo un modello di tipo client-server, che permette ad un utente attestato ad una certa macchina di stabilire una connessione TCP con un server di login che si trova su un’altra macchina, la porta che utilizza è la numero 23. Subito dopo Telnet rilancia i caratteri battuti sulla tastiera dell’utente direttamente al calcolatore remoto come se essi fossero battuti su una tastiera direttamente connessa ad esso. Inoltre Telnet rimanda l’output della macchina remota indietro fino allo schermo dell’utente.Il servizio è definito trasparente perché dà l’apparenza che la tastiera e lo schermo dell’utente siano attaccati direttamente alla macchina remota. Sebbene Telnet non sia molto sofisticato se paragonato ad altri protocolli di terminale remoto, esso risulta tuttavia largamente diffuso. Di solito, il codice client di Telnet permette all’utente di specificare la macchina remota a cui ci si vuole connettere dando il suo nome di dominio oppure il suo indirizzo IP. Telnet è un client presente di default in windows e ci si può accedere in tre diversi modi:

  1. premendo avvio/start, poi esegui e si digitando “telnet” nella finestra di dialogo.
  2. facendo click sul file “telnet.exe” presente nella cartella “windows”.
  3. digitando “telnet” nel prompt ms-dos.

Come collegarsi: La prima cosa da fare per mandare o ricevere la posta è collegarsi al server predisposto così come farebbe il proprio client come per esempio Outlook Express, Pegasus Mail, Eudora o Netscape Messanger. Qualunque software usiate è bene sapere che una volta collegati al server compiono tutti le stesse azioni o quasi. Per avviare telnet basta utilizzare una normale sessione di DOS oppure lo si può far partire con il comando esegui. Si deve ora distinguere come inviare e come ricevere la posta.

Invio della posta. Il server destinato all’invio della posta viene generalmente denominato SMTP (Simple Mail Trasfer Protocol) e per comunicare con esso ci si deve collegare alla porta 25, riservata appunto al protocollo SMTP. Se per esempio il nostro server destinato all’ invio di posta è mail.tin.it dovremmo digitare quanto segue per collegarci:

  • telnet out.alice.it 25

Questo può essere scritto in una finestra dos oppure nella riga di comando del menu esegui. A questo punto si aprirà il programma telnet.exe pronto a collegarsi.

Ricezione della posta. Il server destinato alla ricezione della posta viene generalmente denominato POP3 e per comunicare con esso ci si deve collegare alla porta 110. Se per esempio il nostro server destinato alla ricezione della posta fosse box.tin.it dovremmo digitare quanto segue:

  • telnet in.alice.it 110

Questo può essere scritto in una finestra dos oppure nella riga di comando del menu esegui. A questo punto si aprirà il programma telnet.exe pronto a collegarsi. A questo punto senza lasciare alcuna riga vuota si deve inserire il campo Subject: specificando di seguito il soggetto del messaggio. Quindi una volta lasciata una riga vuota che sta ad indicare la fine degli header si può cominciare a scrivere il messaggio. Vediamo un esempio:

220 FBCMCL01B04.fbc.local Microsoft ESMTP MAIL Service, Version: 6.0.3790.1830 ready at Fri, 8 Feb 2008 18:34:53 +0100
helo pippo
250 FBCMCL01B04.fbc.local Hello [87.10.35.115]
mail from:<paperino@hotmail.com>
250 2.1.0 paperino@fbc.local….Sender OK
rcpt to:<olatitant@alice.it>
250 2.1.5 olatitant@alice.it
data
354 Start mail input; end with <CRLF>.<CRLF>
from: paperino@hotmail.com
to: olatitant@alice.it
subject: prova
hello world!
hello world!
.
250 2.6.0
Queued mail for deivery
quit
Connessione all’host perduta.

In questo caso mi sono collegato al server SMTP del mio provider e ho inviato una e-mail a me stesso. Come si più notare posso inserire nell’ header tutti i campi che voglio, anche un falso “From:” e un falso “To:”. Come si può notare il server risponde ad ogni comando. Queste risposte possono variare da programma a programma. Ecco qui di seguito un esempio di ricezione:

+OK Microsoft Exchange Server 2003 POP3 server version 6.5.7638.1 (FBCMPO01B08.fbc.local) ready.
user olatitant@alice.it
+OK
pass xxxxxxxxxxxxx
+OK User successfully logged on.
list
+OK 16 229096
1 13707
2 13707
3 13509
4 13509
5 18364
6 18364
7 12650
8 12650
9 13712
10 13712
11 27941
12 27941
13 26047
14 1789
15 747
16 747
.
retr 16
+OK
X-Kaspersky: Original server data starting here: +OK
Received: from FBCMMI01B06.fbc.local ([192.168.69.39]) by FBCMST05V03.fbc.local
with Microsoft SMTPSVC(6.0.3790.1830);
Fri, 8 Feb 2008 19:27:38 +0100
Received: from FBCMCL01B08.fbc.local ([192.168.171.46]) by FBCMMI01B06.fbc.local
with Microsoft SMTPSVC(6.0.3790.1830);
Fri, 8 Feb 2008 19:27:37 +0100
Received: from RA ([87.10.35.115]) by FBCMCL01B08.fbc.local with Microsoft SMTPS
VC(6.0.3790.1830);
Fri, 8 Feb 2008 19:27:22 +0100
from: paperino@hotmail.com
to: olatitant@alice.it
subject: prova
Return-Path: paperino@hotmail.com
Message-ID: <FBCMCL01B08EUjb9oBs000ab154@FBCMCL01B08.fbc.local>
X-OriginalArrivalTime: 08 Feb 2008 18:27:30.0250 (UTC) FILETIME=[4398BAA0:01C86A
80]
Date: 8 Feb 2008 19:27:30 +0100
hello world!
hello world!
.
quit
Connessione all’host perduta.

Il protocollo SMTP usato per depositare posta in un server di posta da un altro server di posta o da un user-agento anche maualmente da remoto come abbiamo fatto noi è definito nella RFC 821, mentre il formato del messaggio mail è definito nella RFC 822. Dai numeri piccoli di RFC (l’HTTP è definito nella RFC 1945), si capisce che l’SMTP è vecchiotto, ed in quanto tale ha una grossa pecca, lavora sempre con codifica ASCII a 7 bit sia per le linee di controllo che per il messaggio in se e per se, e a discapito dell’evoluzione subita dal web, tratta unicamente codifica ASCII e non usa oggetti, ma tutto quello che trasporta deve essere contenuto in un unico messaggio tutto codificato in ASCII.Per ovviare a cio’già nella RFC 822 sono state definite estensioni multiuso che servono per indicare che decodifica applicare all’ASCII del messggio. Tali estensioni sono state ulteriormente ampliate per stare al passo con i contenuti multimediali moderni nell RFC 2045 e 2046. Si vede che sto preparando l’esame di “Reti di Calcolatori”. Unico appunto che ancora voglio aggiungere, riguarda il fatto della comunicazione remota che instaura telnet : una volta avvenuta la connessione TCP, tutto quello che viene battuto a tastiera è come se fosse battuto sull’host remoto con cui si sta comunicando, in questo caso il server di posta, ragion per cui quando si fanno errori di battitura, anche se sul video locale si risolve cancellando, la stessa cosa non avviene nell’host remoto, sul quale è come se passassimo i caratteri ASCII corrispondenti ai tasti premuti a seguito dell’errore di battitura.