Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Reti di Calcolatori
Sommario
¨ Socket API
¨ Esempio di applicazione TCP
¨ Esempio di applicazione UDP
¨ Packet Sniffer
1
Socket API
¨ Le API per la programmazione delle socket sono
state introdotte in BSD4.1 UNIX nel 1981
¤ Per questo motivo solitamente le funzioni di
programmazione delle socket vengono chiamate
Berkley socket API
¨ Utilizzano il paradigma client/server
¨ Offrono due tipologie di servizi di trasporto
¤ Datagramma inaffidabile
¤ Affidabile, orientato ai byte
Definizione di socket
2
Sommario
¨ Socket API
¨ Esempio di applicazione TCP
¨ Esempio di applicazione UDP
¨ Packet Sniffer
Controllato Controllato
dal sistema dal sistema
operativo TCP con TCP con operativo
buffer e buffer e
variabili variabili
3
Programmazione delle socket TCP
¨ Lato server
¤ Il processo server deve essere sempre in
esecuzione
¤ Il server ha creato precedentemente una socket
che dà il benvenuto al contatto con il client,
welcoming socket
¨ Lato client
¤ Il client crea una socket TCP
¤ Specifica indirizzo IP e il numero di porta del
processo server
¤ Quando il client crea la socket: il client TCP
stabilisce una connessione con il server TCP
(handshaking a tre vie)
¨ Al termine della connessione del client, il
server TCP crea una nuova socket, connection
socket, per il processo server per comunicare
con il client
¤ Consente al server di comunicare con più client
¤ Numeri di porta origine usati per distinguere i
client
abcdeabcdfeg
Processo A Processo B
4
Alcuni termini: flusso di ingresso
¨ Un flusso d’ingresso (input stream) è un’origine di
dati in input per il processo, ad esempio la tastiera
o la socket
abcdeabcdfeg
abcdeabcdfeg
abcdeabcdfeg
abcdeabcdfeg
10
5
Esempio di applicazione TCP
client/server
¨ Il client legge una riga dall’input
standard (flusso inFromUser) e la
invia al server tramite la socket
(flusso outToServer)
11
Chiude Chiude
connectionSocket clientSocket
12
6
Esempio client Java in TCP - 1
import java.io.*;
import java.net.*;
class TCPClient {
DataOutputStream outToServer =
Crea un flusso di uscita
new DataOutputStream(clientSocket.getOutputStream()); collegato al server
13
sentence = inFromUser.readLine();
clientSocket.close();
}
}
14
7
Esempio server Java in TCP - 1
import java.io.*;
import java.net.*;
class TCPServer {
15
outToClient.writeBytes(capitalizedSentence);
}
}
}
Termina il ciclo while, ricomincia
il ciclo in attesa di un nuovo
client
16
8
Sommario
¨ Socket API
¨ Esempio di applicazione TCP
¨ Esempio di applicazione UDP
¨ Packet Sniffer
17
18
9
Interazione delle socket UDP
client/server
Server Client
Crea la socket port=x per la
richiesta in arrivo Crea la socket clientSocket
serverSocket = = DatagramSocket()
DatagramSocket()
Chiude
clientSocket
19
20
10
Esempio client Java in UDP - 1
class UDPClient {
Traduce il nome
InetAddress IPAddress = InetAddress.getByName("hostname"); dell’host nell’indirizzo
IP usando il DNS
21
clientSocket.receive(receivePacket);
Legge il datagramma
String modifiedSentence = dal server
new String(receivePacket.getData());
22
11
Esempio server Java in UDP - 1
import java.io.*;
import java.net.*;
class UDPServer {
while(true)
{
DatagramPacket receivePacket = Crea lo spazio per i
new DatagramPacket(receiveData, receiveData.length); datagrammi
serverSocket.receive(receivePacket);
String sentence = Fino a quanto non si riceve un
new String(receivePacket.getData()); Datagramma il metodo receive si blocca
23
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, Crea il datagramma da
IPAddress, port); inviare al client
24
12
Costruire un semplice server web
¨ Un server web deve svolgere i seguenti compiti
¤ Gestire una richiesta HTTP
¤ Accettarla e analizzarla
25
Sommario
¨ Socket API
¨ Esempio di applicazione TCP
¨ Esempio di applicazione UDP
¨ Packet Sniffer
26
13
Studiare i protocolli di rete
¨ Due modalità
¤ Simulazione (tool di simulazione, applet, ..)
¤ Osservazione in un ambiente di rete reale
27
Packet sniffer
¨ Sniffing
¤ Attività di intercettazione passiva dei dati che transitano in
una rete telematica
¤ Per scopi leciti (e.g. l'individuazione di problemi di
comunicazione o di tentativi di intrusione)
¤ Per scopi illeciti (e.g. intercettazione fraudolenta di
password o altre informazioni sensibili)
¨ Packet sniffer
¤ Cattura i messaggi inviati/ricevuti dal proprio computer
¤ Memorizza e/o visualizza i contenuti dei vari campi del
protocollo nei messaggi catturati (packet analyzer)
¤ Non invia mai pacchetti di per sé, ovvero è passivo
28
14
Struttura Packet Sniffer
29
Packet analyzer
¨ Visualizza i contenuti di tutti i campi presenti in un
messaggio
¨ Comprendere la struttura di tutti i messaggi
scambiati tra i protocolli:
¤ Comprende il formato degli Ethernet frame
¤ Identifica il datagramma IP
30
15
Wireshark
31
TCP/IP Tools
¨ Windows/Linux possiedono degli utili strumenti per
la gestione delle reti o degli host
¨ Alcuni di questi tool sono:
¤ ipconfig
¤ ping
¤ tracert
¤ netstat
¤ nslookup
32
16
ipconfig
¨ ipconfig mostra tutti i parametri associati alla connessione TCP/IP
ipconfig [/all] [/renew [Adapter]] [/release [Adapter]] [/flushdns] [/displaydns]
[/registerdns] [/showclassid Adapter] [/setclassid Adapter [ClassID]]
¨ Esempi
¤ ipconfig
n Mostra la configurazione TCP/IP per tutti gli adattatori
¤ ipconfig /all
n Mostra tutte le configurazioni TCP/IP per tutti gli adattatori
¤ ipconfig /release
n Disconnette tutte le schede di rete
¤ ipconfig /renew
n Assegna a tutte le schede di rete le configurazioni per una connessione
TCP/IP
¤ Ipconfig /flushdns
n Svuota la cache DNS
33
ping
¨ Il comando ping è utilizzato per verificare lo stato della connessione del
proprio host verso una destinazione indicando se è stata restituita una
risposta dalla destinazione e quanto tempo è trascorso prima di riceverla
¤ Se si verifica un errore nella consegna, il comando ping visualizza un messaggio
di errore
¨ Le opzioni disponibili sono:
¤ -n conteggio
n Determina il numero di richieste echo da inviare. Il numero di richieste predefinito è 4
¤ -w timeout
n Consente di regolare il valore di timeout (in millisecondi). Il valore predefinito è 1000
(corrispondente a un timeout di un secondo)
¤ -l dimensione
n Consente di regolare la dimensione del pacchetto di ping. La dimensione predefinita è
32 byte
¤ -f
n Imposta il bit di Non frammentazione nel pacchetto di ping. Per impostazione
predefinita, il pacchetto di ping consente la frammentazione
34
17
tracert
¨ tracert è un comando che può essere utilizzata per rilevare
il percorso seguito da un pacchetto IP per giungere alla
relativa destinazione
¤ Invia pacchetti echo ICMP (Internet Control Message Protocol)
alla destinazione
¤ Utilizza valori TTL (Time-To-Live) diminuiti di 1 ad ogni inoltro
¤ Quando il TTL di un pacchetto raggiunge lo zero (0), il router
invia di nuovo un messaggio ICMP "Tempo scaduto" al computer
di origine
¨ Utile per scoprire il punto della rete in cui un pacchetto si è
interrotto
¨ Visualroute http://www.visualroute.it/vr.asp
35
Opzioni tracert
¨ -d
¤ Specifica di non risolvere gli indirizzi relativi ai nomi host
¨ -h numeromassimo_hop
¤ Specifica il numero massimo di hop per cercare la destinazione
¨ -j elenco-host
¤ Specifica l'origine di routing ampia in base all'elenco di host
¨ -w timeout
¤ Attende per il numero di millisecondi specificato dal timeout per
ogni risposta
¨ host_destinazione
¤ Specifica il nome o l'indirizzo IP dell'host di destinazione
36
18
netstat
¨ netstat permette di vedere lo stato delle connessioni
instaurate sul computer locale
¨ Fornisce le seguenti informazioni:
¤ Il nome del protocollo (TCP o UDP)
¤ L’indirizzo locale e la porta utilizzata
¤ L’indirizzo remoto e la porta utilizzata
¤ Lo stato della connessione TCP
n CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1,
FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED,
SYN_SEND e TIME_WAIT
37
netstat
¨ Esempi di utilizzo di netstat
¤ Fornisce statistiche sulle connessioni TCP e UDP
n netstat -sp tcp
n netstat -sp udp
38
19
nslookup
¨ nslookup consente di effettuare delle query
(interrogazioni) ad un server DNS per la risoluzione
di indirizzi IP dagli Hostname o viceversa
¨ Funziona in due modalità:
¤ Modalità interattiva
n Permette di effettuare più query e visualizza i singoli
risultati
n Abilitato in modo automatico quando il comando non è
seguito da argomenti
¤ Modalità non interattiva
n Abilitato ogni qualvolta si specifica un hostname
39
20