Prerequisiti. Saper usare un editor Saper usare un compilatore Saper usare un sistema unix (linux/bsd) Rudimenti di programmazione in C.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Prerequisiti. Saper usare un editor Saper usare un compilatore Saper usare un sistema unix (linux/bsd) Rudimenti di programmazione in C."

Transcript

1 Programmazione di rete in C Dario Maggiorini Università degli Studi di Milano Dipartimento di Informatica e Comunicazione Obiettivi Imparare a programmare con le socket Progettare un protocollo applicativo Implementare un sistema client-server 2 1

2 Prerequisiti Saper usare un editor Saper usare un compilatore Saper usare un sistema unix (linux/bsd) Rudimenti di programmazione in C 3 Contenuti Il modello client-server I protocolli di comunicazione Le socket Dominio Naming Protocolli Programmare client e server con TCP Programmare client e server con UDP 4 2

3 Testi consigliati James F. Kurose Computer Networking: A Top-Down Approach Featuring the Internet Addison Wesley W. Richard Stevens UNIX Network Programming Prentice Hall 5 Il modello client-server Presuppone l esistenza di due entità CLIENT richiede un servizio SERVER eroga un servizio Data flow CLIENT SERVER 6 3

4 Sono sistemi client-server voi ed uno sportello bancomat una classe ed il docente voi e la vostra banca lo sportello bancomat al primo punto ed il vostro istituto di credito 7 Server iterativo CLIENT SERVER Coda d attesa 8 4

5 Server concorrente Client 1 Client 3 SERVER Client 2 Client 4 9 Server multiprocesso SERVER Server 1 Server 2 Server 3 Server 4 Client 1 Client 2 Client 3 Client

6 Servizi a più stadi Client SERVER SERVER Client o Server? 11 Protocollo 1. l insieme delle norme che regolano lo svolgimento di manifestazioni, visite, ricevimenti ufficiali 2. insieme di regole che governano la successione e lo scambio di informazioni fra due dispositivi comunicanti tra loro dizionario garzanti 12 6

7 Progettazione di un protocollo Quando si progetta un protocollo si deve stabilire: Il formato dei messaggi Quali sono le sequenze di messaggi valide Quando inviare e quando ricevere 13 Protocolli applicativi Dobbiamo definire dei protocolli per far scambiare informazioni tra applicazioni I messaggi sono sequenze di byte il cui formato viene stabilito a priori. I programmi dovranno riconoscere e reagire a sequenze di messaggi valide Tutte le considerazioni viste prima sono ancora valide Le socket ci forniranno solo l infrastruttura per lo scambio dei messaggi 14 7

8 Socket È il punto terminale di un sistema di comunicazione Due processi distinti possono creare una socket ognuno e connetterle tra loro 15 Le socket nel S.O. Application Kernel interface Network socket protocols Network Network interface protocols drivers Network interface hardware drivers hardware 16 8

9 E a livello di linguaggio? Per il S.O. Una socket è un canale di I/O In C sarà un file descriptor In un linguaggio a oggetti un file descriptor con una serie di metodi attorno 17 Indirizzamento Abbiamo bisogno di identificare in maniera univoca una socket, in modo tale da poterla raggiungere da un altro punto della rete Problema: Tecnologie diverse hanno formalismi diversi per i formati degli indirizzi 18 9

10 Università di Milano, D.I.Co. Via Comelico Milano Italy University of California, C.S. Dept 420 Westwood plaza Los Angeles, CA, U.S.A. 19 Soluzione: definizione del dominio Informiamo la socket di quale formalismo intendiamo usare Equivale a dire al postino la cultura di riferimento in cui è stato scritto l indirizzo Il dominio di una socket stabilisce vincoli al suo utilizzo, in quanto la correla al sistema di indirizzamento sottostante 20 10

11 Possibili domini ATM Appletalk DECNet Internet Internet6 IPX IRDA NETBIOS UNIX SNA 21 Altro problema: a chi? Gli indirizzi a livello di rete non bastano: identificano un host, non una entità al suo interno Dobbiamo usare indirizzi di livello trasporto 22 11

12 Indirizzi transport Un indirizzo a livello di trasporto unisce all indirizzo di livello rete un identificativo per indirizzare un entità all interno dell host Nel caso di TCP/IP vengono ottenuti concatenando l indirizzo IP con un numero di 16 bit che prende il nome di porta Alcuni servizi tipici di Internet vengono forniti usando porte standardizzate 23 Porte standard Servizio mail WWW ftp telnet ssh Porta

13 Naming / Binding È l operazione in cui associamo un indirizzo transport ad una socket già creata In questo modo l indirizzo diventa noto al sistema operativo ed altre socket sono in grado di stabilire una connessione 25 Semantica di comunicazione È possibile impostare il protocollo a livello rete che verrà utilizzato per il trasferimento dei dati Nel caso delle socket abbiamo due opzioni: byte-stream I dati vengono trasferiti come una sequenza ordinata ed affidabile di byte datagram I dati vengono inviati come messaggi indipendenti ed inaffidabili 26 13

14 Implementazione di un client Dobbiamo andare a costruire un programma in C che richiede un servizio 27 creazione socket connessione scambio dati chiusura canale 28 14

15 socket() connect() read()/write() close() 29 SOCK_DGRAM SOCK_STREAM SOCK_RAW SOCK_SEQPACKET socket() /etc/protocols #include <sys/socket.h> int s; s = socket (domain, type, protocol) AF_UNIX AF_INET AF_NS 30 15

16 socket()? int s; s = socket(af_inet, SOCK_STREAM, 0); if ( s < 0 ) { perror("socket() "); exit(1); } 31 # # Internet protocols # # $FreeBSD: src/etc/protocols,v /09/24 11:26:39 asmodai Exp $ # 5.1 (Berkeley) 4/17/89 # # See also # ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group management protocol ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') st2 5 ST2 # ST2 datagram mode (RFC 1819) tcp 6 TCP # transmission control protocol cbt 7 CBT # CBT, Tony Ballardie egp 8 EGP # exterior gateway protocol nvp 11 NVP-II # Network Voice Protocol pup 12 PUP # PARC universal packet protocol argus 13 ARGUS # ARGUS emcon 14 EMCON # EMCON xnet 15 XNET # Cross Net Debugger chaos 16 CHAOS # Chaos udp 17 UDP # user datagram protocol

17 getprotobyname() #include <sys/socket.h> struct protoent *p; p = getprotobyname ( name ) 33 int s, protocol_number; struct protoent *protocol_entry; protocol_entry = getprotobyname("tcp"); If ( protocol_entry == NULL ) { perror("getprotobyname() "); exit(1); } protocol_number = protocol_entry -> p_proto; s = socket(af_inet, SOCK_STREAM, protocol_number); if ( s < 0 ) { perror("socket() "); exit(2); } 34 17

18 struct sockaddr_in struct sockaddr_un connect() sizeof(addr) #include <sys/socket.h> int error; error = connect(socket, addr, len); socket() 35 struct sockaddr_un sun_family Dominio sun_path Locazione della socket nel file system 36 18

19 struct sockaddr_in sin_family Dominio sin_port Porta (16 bit indirizzo transport) sin_addr Indirizzo IP 37 hton / ntoh Host -> network Short (16 bit) htons(int) Long (32 bit) htonl(int) Network - > host Short (16 bit) ntohs(int) Long (32 bit) ntohl(int) 38 19

20 gethostbyname() #include <sys/socket.h> struct hostent *server; server = gethostbyname( name ); 39 gethostbyname() struct hostent bcopy() h_addr htons(porta) struct in_addr assegnamento struct sockaddr_in 40 20

21 struct hostent *server_host; struct in_addr server_host_addr; struct sockaddr_in server_addr; server_host = gethostbyname( if ( server_host == NULL ) { perror("gethostbyname() "); exit(1); } bcopy(server_host->h_addr, &server_host_addr, server_host->h_length); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(80); bcopy(&server_host_addr, &server_addr.sin_addr, sizeof(server_host_addr)); if(connect(s, &server_addr, sizeof(server_addr)==-1) { perror("connect() "); exit(1); } 41 inet_addr() #include <sys/socket.h> unsigned long addr; addr = inet_addr( xxx.xxx.xxx.xxx ); server_addr.sin_addr.s_addr = addr 42 21

22 getservbyname() Get SERVICE by name /etc/services struct servent *service; service = getservbyname( service, proto) 43 struct servent *service_entry; int service_port; service_entry = getservbyname("chargen", "tcp"); if(service_entry == NULL) { perror("getservbyname() "); exit(2); } service_port = service_entry -> s_port; 44 22

23 # # Network services, Internet style # # # $FreeBSD: src/etc/services,v /10/05 07:37:37 # sheldonh Exp $ # 5.8 (Berkeley) 5/9/91 # # WELL KNOWN PORT NUMBERS # rtmp 1/ddp #Routing Table Maintenance Protocol tcpmux 1/tcp #TCP Port Service Multiplexer tcpmux 1/udp #TCP Port Service Multiplexer nbp 2/ddp #Name Binding Protocol echo 4/ddp #AppleTalk Echo Protocol echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null 45 systat 11/tcp users #Active Users systat 11/udp users #Active Users daytime 13/tcp daytime 13/udp qotd 17/tcp quote #Quote of the Day qotd 17/udp quote #Quote of the Day chargen 19/tcp ttytst #Character Generator chargen 19/udp ttytst #Character Generator ftp-data 20/tcp #File Transfer [Default Data] ftp-data 20/udp #File Transfer [Default Data] ftp 21/tcp #File Transfer [Control] ftp 21/udp #File Transfer [Control] ssh 22/tcp #Secure Shell Login ssh 22/udp #Secure Shell Login telnet 23/tcp telnet 23/udp

24 read / write int num_bytes; num_bytes = read(socket, buffer, size); int num_bytes; num_bytes = write(socket, buffer, size); 47 close() int error; error = close(socket); 48 24

25 Implementazione di un server Dobbiamo scrivere un programma in C che offre un servizio 49 Server iterativo Offro servizio ad un client alla volta Il sistema operativo tiene gli altri client in coda È la variante più semplice 50 25

26 creazione socket naming messa in attesa accettazione client scambio dati chiusura canale 51 socket() bind() listen() accept() read()/write() close() 52 26

27 Server Client socket() socket() bind() listen() accept() connect() read()/write() read()/write() close() close() 53 bind() Associa ad una socket l indirizzo transport sul quale dovrà attendere i client Viene anche chiamato naming della socket Anche in questo caso dobbiamo riempire una struttura che contiene un indirizzo transport 54 27

28 bind() struct sockaddr_in struct sockaddr_un sizeof(localaddr) int error; error = bind(socket, localaddr, addrlen); socket() 55 Local address L indirizzo IP e la porta prendono significati diversi rispetto al client L indirizzo IP È lindirizzo LOCALE tramite il quale sarà possibile accettare connessioni (ha senso solo nel caso ci siano più schede di rete) local_addr.sin_addr.s_addr = INADDR_ANY; La porta È la porta sulla quale il server sarà in attesa. Questa è un informazione che interessa al client 56 28

29 Le porte disponibili Non tutte le porte sono uguali Da 1 a 1024 sono riservate al sistema Solo il superuser può fare una bind a quella porta Sono quasi tutte standardizzate Da 1025 a sono allocabili dagli utenti Chiunque può fare bind Se specifichiamo porta 0 alla bind li sistema alloca il server sulla prima libera maggiore di 1024 Alcune sono standardizzate 57 int s; struct sockaddr_in local_addr; s = socket(af_inet, SOCK_STREAM, 0); if ( s < 0 ) { perror("socket() "); exit(1); } local_addr.sin_family = AF_INET; local_addr.sin_port = htons(0); local_addr.sin_addr.s_addr = INADDR_ANY; If (bind(s, &local_addr, sizeof(local_addr)) == -1) { perror("bind() "); exit(1); } 58 29

30 E adesso? Ho lasciato scegliere al sistema la porta, e adesso... come faccio a sapere qual è? int error; error = getsockname(socket, sockaddr, addrlen); indirizzo da riempire 59 struct sockaddr_in query_addr; int query_addrlen;... if (bind(s, &local_addr, sizeof(local_addr)) == -1) { perror("bind() "); exit(1); } query_addrlen = sizeof(query_addr); if (getsockname(s, &query_addr, &query_addrlen) == -1){ perror("getsockname() "); exit(2); } printf( binded on port %d\n, ntohs(query_addr.sin_port)); 60 30

31 listen() Abilita la socket a ricevere connessioni dai client Stabilisce la lunghezza massima della coda d attesa Quando un client si presenta e tutta la coda è già piena, allora a questo viene rifiutato il servizio Per motivi non molto chiari la lunghezza massima della coda è 5 Dopo che una socket viene abilitata all attesa, non potrà più essere usata per trasferire dati, ma solo per attendere richieste di connessione 61 listen() int error; error = listen(socket, queuelen); if (listen(s, 5) == -1) { perror("listen() "); exit(1); } 62 31

32 accept() Serve ad accettare richieste di connessione da parte di un client Il processo rimane bloccato fino a che un client non esegue una connect all indirizzo transport su cui siamo in attesa 63 Verrà riempito con l indirizzo della socket del client accept() sizeof(peeraddr) int data_socket; data_socket = accept(socket, peeraddr, addrlen); socket() 64 32

33 struct sockaddr_in accept_addr; int accept_addrlen; char client_host[255]; int client_port;... accept_addrlen = sizeof(struct sockaddr_in); data_sock = accept(s, &accept_addr, &accept_addrlen); if (data_sock < 0) { perror("accept() "); exit(1); } strcpy(client_host, inet_ntoa(accept_addr.sin_addr)); client_port = ntohs(accept_addr.sin_port); printf( client on host %s, port %d\n", client_host, client_port); 65 Implementazione di un server concorrente o multiprocesso Dobbiamo scrivere un programma in C che offre un servizio, ma non vogliamo tenere gente in coda 66 33

34 Server multiprocesso Offro servizio a più client contemporaneamente È una variante di poco più complicata del server iterativo 67 creazione socket naming messa in attesa accettazione client scambio dati chiusura canale 68 34

35 creazione socket naming messa in attesa accettazione client creazione processo scambio dati chiusura canale 69 socket() bind() listen() accept() fork() read()/write() close() 70 35

36 fork() int pid; pid = fork(); if (pid == 0) printf( figlio\n ); else printf( padre\n ); 71 int data_socket; int pid; fork() while(1) { data_socket = accept(s, &accept_addr, &accept_addrlen); pid = fork(); if (pid == 0) give_service(data_socket); close(data_socket); /* codice del padre */ }... void give_service(int socket) { close(s);... close(socket); exit(0); } 72 36

37 La morte del processo figlio Il sistema operativo notifica l avvenuta morte al padre Un segnale viene messo in coda al PCB del processo padre ed il figlio viene tolto dalla process table solo quando il processo è stato gestito Quindi, il server deve prendersi cura di gestire il segnale, altrimenti avremmo una proliferazioni di processi zombie 73 socket() bind() listen() accept() fork() read()/write() close() signal() exit() 74 37

38 signal()/exit() int reaper(); void main(int argc, char ** argv) {... signal(sigchld, reaper);... while (1) {... } } int reaper() { int status; while ( wait3 (&status, WNOHANG, NULL) >= 0); (void) signal(sigchld, reaper); } 75 Server concorrente Offro servizio a più client contemporaneamente È la variante più complessa da gestire 76 38

39 creazione socket naming messa in attesa attesa multipla accettazione client chiusura connessione scambio dati 77 socket() bind() listen() select() accept() close() read()/write() 78 39

40 Maschere di bit Servono ad elencare dei gruppi di file descriptor Questo non vuol dire che ci limitiamo alle socket Potremmo voler scrivere un server che gestisce delle socket e contemporaneamente un operatore da tastiera 79 select() Ci permette di stare in attesa su più canali contemporaneamente La select termina quando è possibile fare una operazione su uno qualunque dei canali, secondo certi criteri di selezione 80 40

41 FOPEN_MAX seletc() fd_set select( maxfd, read_mask, write_mask, error_mask, timeout) struct timeval 81 Maschere di bit ATTENZIONE Dopo essere stata usata come parametro per la select, una maschera di bit non è più utilizzabile. Dentro ci saranno le informazioni su quali canali sono disponibile per effettuare operazioni 82 41

42 Manipolazione delle maschere FD_ZERO(maschera) Azzeramento della maschera FD_SET(fd, maschera) Impostazione di un canale FD_CLR(fd, maschera) De-impostazione di un canale FD_ISSET(fd, maschera) Controlle se è possibile fare operazioni sul canale 83 fd_set fds; fd_set temp_fds; int nfds;... FD_ZERO(&fds); FD_SET(s, &fds);... while(1) { bcopy((char *)&fds,(char *)&temp_fds, sizeof(fds)); if (select(nfds, temp_fds, NULL, NULL, NULL) < 0) { perror( select() ); exit(1); }... } 84 42

43 int fd; while(1) { bcopy((char *)&fds,(char *)&temp_fds, sizeof(fds)); select(nfds, temp_fds, NULL, NULL, NULL); if(fd_isset(s, &temp_fds)) { data_sock = accept(s,...); FD_SET(data_sock,&fds); } else { for(fd = 0; fd <= nfds; fd += 1) { if(fd_isset(fd, &temp_fds)) { do_read_write(fd); } } } } 85 int fd; while(1) {... else { for(fd = 0; fd <= nfds; fd += 1) { if(fd_isset(fd, &temp_fds)) { do_echo(fd); FD_CLR(fd, &fds); close(fd); } } } } 86 43

44 Socket UDP La differnza tra TCP e UDP è che il secondo non implementa strutture per il controllo di flusso Ogni singolo blocco di dati viene spedito come un pacchetto indipendente, se viene perso il sistema non si preoccupa di ritrasmetterlo 87 creazione socket connessione scambio dati chiusura canale 88 44

45 socket() connect() send()/recv() close() 89 SOCK_DGRAM SOCK_STREAM SOCK_RAW SOCK_SEQPACKET socket() /etc/protocols #include <sys/socket.h> int s; s = socket (domain, type, protocol) AF_UNIX AF_INET AF_NS 90 45

46 socket() int s; s = socket(af_inet, SOCK_DGRAM, 0); If ( s < 0 ) { perror("socket() "); exit(1); } 91 struct sockaddr_in struct sockaddr_un connect() sizeof(addr) #include <sys/socket.h> int error; error = connect(socket, addr, len); socket() 92 46

47 send() 0 MSG_EOF #include <sys/types.h> #include <sys/socket.h> int size; size = send(socket, buffer, len, flags) socket() 93 recv() 0 MSG_PEEK MSG_WAITALL #include <sys/types.h> #include <sys/socket.h> int size; size = recv(socket, buffer, len, flags) 94 47

48 creazione socket naming messa in attesa accettazione client scambio dati chiusura canale 95 socket() bind() send()/recv() close() 96 48

49 bind() struct sockaddr_in struct sockaddr_un sizeof(localaddr) int error; error = bind(socket, localaddr, addrlen); socket() 97 socket() bind()????? send()/recv() close() 98 49

50 Connectionless! Non avendo fatto la connect la socket locale NON possiede informazioni sul peer remoto! Questa cosa può essere risolta a livello applicazione, dall altra parte anche il client deve fare una bind e darci la possibilità di mandare indietro i dati (comunicandoci la porta) NOTA: lo schema appena visto NON va bene! 99 Client/Server completamente connectionless Perchè fare la connect (o accept) se puoi non abbiamo controllo di flusso? È possibile usare la socket in maniera connectionless se facciamo uso di altre primitive (specializzate) per inviare/ricevere messaggi a/da indirizzi arbitrari

51 socket() bind() sendto()/recvfrom() close() 101 sendto() #include <sys/types.h> #include <sys/socket.h> int size; size = sendto(socket, buffer, len, flags, to_addr, addrlen); struct sockaddr_in struct sockaddr_un sizeof(to_addr)

52 recvfrom() #include <sys/types.h> #include <sys/socket.h> int size; size = recvfrom(socket, buffer, len, flags, from_addr, addrlen); struct sockaddr_in struct sockaddr_un sizeof(from_addr) 103 Client/Server completamente connectionless Anche da parte del client possiamo fare a meno della connect Però questo ci costringe ad usare una bind, altrimenti il sistema non allocherà una porta alla socket locale ed il server non riuscirà comunque a rispondere

53 creazione socket naming connessione scambio dati chiusura canale 105 socket() bind() sendto()/recvfrom() close()

54 Client o Server? Lo schema ottenuto risulta identico allo schema che abbiamo visto parlando del server Siamo di fronte ad una struttura completamente simmetrica 107 Raw socket Il sistema compie molte operazioni sui livelli bassi della rete, ma che non sono immediatamente visibili all utente tramite l interfaccia delle socket L intercettazione di un pacchetto IP Anche se non era indirizzato a noi (sniffing) La generazione di un pacchetto (IP) partendo da un array di byte Possiamo creare un header arbitrario (spoofing)

55 Cose certe... Java? No grazie! La programmazione dipende fortemente dal sistema operativo Gli header con cui interpretiamo/costruiamo i pacchetti sono molto specifici per ogni implementazione (BSD/Linux/SUN/HP) Dobbiamo essere superuser per poter utilizzare queste funzionalità 109 PCAP PCAP (Packet CAPture) è una libreria scritta da Van Jacobson, Craig Leres e Steven McCanne all università di Berkeley Attualmente è subito disponibile dopo l installazione in molte distribibuzioni di UNIX (BSD e Linux-mandrake), in altre occorre installare software aggiuntivo (Linuxredhat e UNIX commerciali) Non è inclusa di default, per farne uso occorre specificare -lpcal alla compilazione cc file.o o file -lpcap

56 Ricezione di pacchetti Identificare l interfaccia da utilizzare Inizializzare (aprire) l interfaccia Applicare dei filtri sui pacchetti da intercettare (opzionale) Intercettare pacchetti Chiudere l interfaccia 111 Identificazione interfaccia Abbiamo bisogno di una stringa che identifica la periferica per il sistema operativo (e.g. eth0 ) Abbiamo due possibilità: L utente ce la fornisce (con un parametro) La richiediamo al sistema I nomi delle interfacce variano da sistema a sistema Linux: ethx BSD: xlx, dex, edx

57 pcap_lookupdev() #include <pcap.h> char error_desc[pcap_errbuf_size]; char *dev; dev = pcap_lookupdev(error_desc) 113 #include <stdio.h> #include <pcap.h> int main() { char *dev, errbuf[pcap_errbuf_size]; dev = pcap_lookupdev(errbuf); if (dev == null) printf( Error: %s\n, errbuf); else printf("device: %s\n", dev); }

58 Apertura dell interfaccia Usiamo la funzione pcap_open_live() per ottenere un handle dell interfaccia da cui leggere i pacchetti L interfaccia può essere aperta in due modalità Standard: vedo solo i pacchetti indirizzati alla mia macchina Promisqua: vedo tutti i pacchetti sulla mia sottorete (TUTTI!) 115 pcap_open_live() pcap_lookupdev() packet snap size #include <pcap.h> pcap_t *handle; char *dev; int snaplen, promisc, timeout; char error_desc[pcap_errbuf_size]; True/False handle = pcap_open_live(dev, snaplen, promisc, timeout, errror_desc) milliseconds

59 #include <pcap.h>... char *dev; char errbuf[pcap_errbuf_size]; pcap_t *handle; char packet[packet_size];... dev = pcap_lookupdev(errbuf); printf("device: %s\n", dev); handle = pcap_open_live(dev, PACKET_SIZE, 1, 0, errbuf); 117 Filtri Se la rete è molto congestionata potremmo non voler vedere tutto il traffico ma solo una parte (e.g. quello verso il server web) Risulta utile poter scrivere dei filtri in modo che l interfaccia selezioni a monte quello che il programma vedrà La creazione di un filtro avviene in due passaggi: La compilazione, che permette di passare da una rappresentazione tramite stringa ad una binaria L associazione della rappresentazione binaria all interfaccia

60 pcap_compile() #include <pcap.h> pcap_open_live() output pcap_t *handle; struct bpf_program *binary char * source; int optimize; unsigned int netmask; int error; True/False error = pcap_compile(handle, binary, source, optimize, netmask) input tcpdump(1) expression??? 119 pcap_setfilter() #include <pcap.h> pcap_open_live() pcap_t *handle; struct bpf_program *binary; int error; pcap_compile() error = pcap_setfilter(handle, binary)

61 L informazione mancante A volte è necessario passare parametri relativi alla configurazione della scheda di rete alle funzioni di PCAP Potremmo richiederli all utente o andare a interpretare i file di configurazione In realtà PCAP ci mette a disposizione una funzione per chiedere alla scheda stessa come è configurata (pcap_lookupnet()) 121 pcap_lookupnet() #include <pcap.h> pcap_open_live() non serve char *dev; unsigned int net, mask; char errbuf[pcap_errbuf_size]; int error; netmask error = pcap_lookupnet(dev, &net, &mask, errbuf); Identificativo della rete IP & NETMASK

62 #include <pcap.h>... char *dev = eth0 ; unsigned int net, mask; char errbuf[pcap_errbuf_size]; pcap_t *handle; char packet[packet_size]; struct bpf_program binary; char * source = port 80 ;... pcap_lookupnet(dev, &net, &mask, errbuf); handle = pcap_open_live(dev, PACKET_SIZE, 1, 0, errbuf); pcap_compile(handle, &binary, source, 0, mask); pcap_setfilter(handle, &binary); Ricezione dei pacchetti Abbiamo due possibilità: Prelevare un pacchetto alla volta Predisporre una routine che verrà chiamata ogni volta che arriva un pacchetto fino al raggiungimento di un numero prefissato

63 pcap_next() #include <pcap.h> informazioni pcap_t *handler; struct pcap_pkthdr *header; char packet[packet_size]; packet = pcap_next(handler, header) payload 125 struct pcap_pkthdr { struct timeval ts; /* time stamp */ bpf_u_int32 caplen; /* length of portion present */ bpf_u_int32 len; /* length this packet (off wire) */ };

64 pcap_loop() #include <pcap.h> numero pacchetti pcap_t *handler; int counter; pcap_handler handler; char * user; int error; routine di gestione error = pcap_loop(handler, counter, callback, *user) dati utente 127 La routine di gestione #include <pcap.h> char * args; struct pcap_pkthdr *header; char packet[packet_size]; header payload void got_packet(args, header, packet); ultimo parametro di pcap_loop()

65 Interpretazione di un pacchetto Quello che otteniamo tramite le routine di PCAP è un array di byte È compito nostro interpretare il contenuto bit src TCP port # 16 bit dst TCP port # DATA Protocol TCP 32 bit src IP addr 32 bit dst IP addr TCP header DATA Frame type IP 48 bit src ETH addr 48 bit dst ETH addr IP header TCP header DATA Ethernet header IP header TCP header DATA Ethernet frame

66 Ethernet header Ethernet destination address (first 32 bits) Ethernet dest (last 16 bits) Ethernet source (first 16 bits) Ethernet source address (last 32 bits) Type code data... end of data Ethernet Checksum IP, ARP, RARP IP header Version IHL Type of Service Total Length Identification Flags Fragment Offset Time to Live Protocol Header Checksum Source Address Destination Address Options Padding data TCP, UDP, MPLS

67 TCP header Source Port Destination Port Sequence Number Acknowledgment Number Data U A P R S F Offset Reserved R C S S Y I Window G K H T N N Checksum Urgent Pointer Options Padding data 133 UDP header Source Port Destination Port Length Checksum Data

68 Interpretazione di un pacchetto L unica cosa di cui siamo sicuri è che l inizio dell array corrisponde ad un header ethernet Il sistema operativo mette a disposizione delle strutture che interpretano gli header usando i loro campi 135 char * packet; struct ether_header * eptr; /* net/ethernet.h */ struct iphdr * iph; /* netinet/ip.h */ struct tcphdr * tcph; /* netinet/tcp.h */ struct udphdr * udph; /* netinet/udp.h */... eptr = (struct ether_header *) packet; if (ntohs (eptr -> ether_type) == ETHERTYPE_IP) { printf("ip packet\n ); iph = (struct iphdr *) (packet + sizeof(struct ether_header)); if (ntohs (iph -> ip_p) == IPTYPE_TCP) { tcph = (struct tcphdr *) ((char *) iph + sizeof(struct iphdr));

69 printf( TCP destination port is %x\n, ntohs(tcph -> th_dport); } else if (ntohs (iph -> ip_p == IPTYPE_UDP) { udph = (struct udphdr *) ((char *) iph + sizeof(struct iphdr)); printf( UDP destination port is %x\n, ntohs(udph -> uh_dport); } else { printf( IP type not TCP nor UDP ); } } else if (ntohs (eptr -> ether_type) == ETHERTYPE_ARP) { printf("arp packet\n ); else { printf("ethernet type %x not IP nor ARP, ntohs(eptr->ether_type)); }

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

Socket per TCP: Fondamenti

Socket per TCP: Fondamenti Socket per TCP: Fondamenti Network Applications Molte applicazioni di rete sono formate da due programmi distinti (che lavorano su due diversi host) uno detto server ed uno detto client. Il server si mette

Dettagli

La configurazione degli indirizzi IP. Configurazione statica, con DHCP, e stateless

La configurazione degli indirizzi IP. Configurazione statica, con DHCP, e stateless La configurazione degli indirizzi IP Configurazione statica, con DHCP, e stateless 1 Parametri essenziali per una stazione IP Parametri obbligatori Indirizzo IP Netmask Parametri formalmente non obbligatori,

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi:

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Routing (instradamento) in Internet Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Stub AS: istituzione piccola Multihomed AS: grande istituzione (nessun ( transito Transit AS: provider

Dettagli

Cos è un protocollo? Ciao. Ciao 2:00. tempo. Un protocollo umano e un protocollo di reti di computer:

Cos è un protocollo? Ciao. Ciao 2:00. <file> tempo. Un protocollo umano e un protocollo di reti di computer: Cos è un protocollo? Un protocollo umano e un protocollo di reti di computer: Ciao Ciao Hai l ora? 2:00 tempo TCP connection request TCP connection reply. Get http://www.di.unito.it/index.htm Domanda:

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Modulo 11. Il livello trasporto ed il protocollo TCP Indice Pagina 1 di 14 Il livello trasporto ed il protocollo TCP Indice servizi del livello trasporto multiplexing/demultiplexing trasporto senza connesione: UDP principi del trasferimento dati affidabile trasporto

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Dispensa Reti tcp/ip

Dispensa Reti tcp/ip Dispensa Reti tcp/ip Indice Livello di reti... 2 Tcp/ip... 2 Reti e sottoreti... 2 Dns... 3 Servizi e protocolli... 4 Cooperativa ALEKOS 20155 MILANO - V. Plana, 49 - P.IVA 11027820155 Tel 02-39264592

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette.

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

ARP (Address Resolution Protocol)

ARP (Address Resolution Protocol) ARP (Address Resolution Protocol) Il routing Indirizzo IP della stazione mittente conosce: - il proprio indirizzo (IP e MAC) - la netmask (cioè la subnet) - l indirizzo IP del default gateway, il router

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it)

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) In una rete TCP/IP, se un computer (A) deve inoltrare una richiesta ad un altro computer (B) attraverso la rete locale, lo dovrà

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

WAN 80.80.80.80 / 24. L obiettivo è quello di mappare due server web interni (porta 80) associandoli agli indirizzi IP Pubblici forniti dall ISP.

WAN 80.80.80.80 / 24. L obiettivo è quello di mappare due server web interni (porta 80) associandoli agli indirizzi IP Pubblici forniti dall ISP. Configurazione di indirizzi IP statici multipli Per mappare gli indirizzi IP pubblici, associandoli a Server interni, è possibile sfruttare due differenti metodi: 1. uso della funzione di Address Translation

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo. In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi.

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi. I server di stampa vengono utilizzati per collegare le stampanti alle reti. In tal modo, più utenti possono accedere alle stampanti dalle proprie workstation, condividendo sofisticate e costose risorse.

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

PRESENTAZIONE DI UN SMS AL GATEWAY

PRESENTAZIONE DI UN SMS AL GATEWAY Interfaccia Full Ascii Con questa interfaccia è possibile inviare i dati al Server utilizzando solo caratteri Ascii rappresentabili e solo i valori che cambiano tra un sms e l altro, mantenendo la connessione

Dettagli

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi Prof. S.Pizzutilo Elementi

Dettagli

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi I semestre 03/04 Inidirizzi IP e Nomi di Dominio Domain Name System Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 Matricole congr. 0 mod 3 File & Directory #include #include stat,fstat e lstat int stat (const char *pathname, struct stat *buf); int fstat (int

Dettagli

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Test di comunicazione tra due LOGO! 0BA7: Master - Master Industry Test di comunicazione tra due LOGO! 0BA7: Master - Master Dispositivi utilizzati: - 2 LOGO! 0BA7 (6ED1 052-1MD00-0AB7) - Scalance X-208 LOGO! 0BA7 Client IP: 192.168.0.1 LOGO! 0BA7 Server IP:

Dettagli

GLI ERRORI DI OUTLOOK EXPRESS

GLI ERRORI DI OUTLOOK EXPRESS Page 1 of 6 GLI ERRORI DI OUTLOOK EXPRESS 1) Impossibile inviare il messaggio. Uno dei destinatari non è stato accettato dal server. L'indirizzo di posta elettronica non accettato è "user@dominio altro

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

Dettagli

Cosa è lo spoofing. Cosa è lo spoofing. Argomenti. Spoofing conosciuti. Introduzione. Corso di Sistemi di Elaborazione: Sicurezza su Reti

Cosa è lo spoofing. Cosa è lo spoofing. Argomenti. Spoofing conosciuti. Introduzione. Corso di Sistemi di Elaborazione: Sicurezza su Reti Introduzione Corso di Sistemi di Elaborazione: Sicurezza su Reti A.A. 2001/2002 Prof. A. De Santis A cura di: Angelo Celentano matr. 53/11544 Raffaele Pisapia matr. 53/10991 Mariangela Verrecchia matr.

Dettagli

Interfaccia Web per customizzare l interfaccia dei terminali e

Interfaccia Web per customizzare l interfaccia dei terminali e SIP - Session Initiation Protocol Il protocollo SIP (RFC 2543) è un protocollo di segnalazione e controllo in architettura peer-to-peer che opera al livello delle applicazioni e quindi sviluppato per stabilire

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Lezione n 1! Introduzione"

Lezione n 1! Introduzione Lezione n 1! Introduzione" Corso sui linguaggi del web" Fondamentali del web" Fondamentali di una gestione FTP" Nomenclatura di base del linguaggio del web" Come funziona la rete internet?" Connessione"

Dettagli

Outlook Express 6 Microsoft Internet Explorer, Avvio del programma Creare un nuovo account

Outlook Express 6 Microsoft Internet Explorer, Avvio del programma Creare un nuovo account Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito, semplice da utilizzare e fornisce

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Sistemi avanzati di gestione dei Sistemi Informativi

Sistemi avanzati di gestione dei Sistemi Informativi Esperti nella gestione dei sistemi informativi e tecnologie informatiche Sistemi avanzati di gestione dei Sistemi Informativi Docente: Email: Sito: Eduard Roccatello eduard@roccatello.it http://www.roccatello.it/teaching/gsi/

Dettagli

Determinare la grandezza della sottorete

Determinare la grandezza della sottorete Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano

Dettagli

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Dettagli

IL LIVELLO APPLICAZIONI DNS, SNMP e SMTP

IL LIVELLO APPLICAZIONI DNS, SNMP e SMTP Reti di Calcolatori IL LIVELLO APPLICAZIONI DNS, SNMP e SMTP D. Talia RETI DI CALCOLATORI - UNICAL 6-1 Applicazioni di Rete Domain Name System (DNS) Simple Network Manag. Protocol (SNMP) Posta elettronica

Dettagli

Livello applicazione: Protocollo DNS

Livello applicazione: Protocollo DNS Livello applicazione: Protocollo DNS Gaia Maselli Queste slide sono un adattamento delle slide fornite dal libro di testo e pertanto protette da copyright. All material copyright 1996-2007 J.F Kurose and

Dettagli

DNS (Domain Name System) Gruppo Linux

DNS (Domain Name System) Gruppo Linux DNS (Domain Name System) Gruppo Linux Luca Sozio Matteo Giordano Vincenzo Sgaramella Enrico Palmerini DNS (Domain Name System) Ci sono due modi per identificare un host nella rete: - Attraverso un hostname

Dettagli

Routers and Routing process explanation through the Network Address Translation

Routers and Routing process explanation through the Network Address Translation Routers and Routing process explanation through the Network Address Translation 0x100 Router 0x110 Cos è? Quello che nel gergo informatico viene chiamato Router (o Switch Router) è un dispositivo di rete

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Corso Base su Linux. Basato su Fedora 7 Lezione 4

Corso Base su Linux. Basato su Fedora 7 Lezione 4 Corso Base su Linux Basato su Fedora 7 Lezione 4 Configurare la rete Esistono diversi metodi per configurare il servizio di rete: editare i singoli file di configurazione del networking (per applicare

Dettagli

- Antivirus, Firewall e buone norme di comportamento

- Antivirus, Firewall e buone norme di comportamento Reti Di cosa parleremo? - Definizione di Rete e Concetti di Base - Tipologie di reti - Tecnologie Wireless - Internet e WWW - Connessioni casalinghe a Internet - Posta elettronica, FTP e Internet Browser

Dettagli

Zeroshell come client OpenVPN

Zeroshell come client OpenVPN Zeroshell come client OpenVPN (di un server OpenVpn Linux) Le funzionalità di stabilire connessioni VPN di Zeroshell vede come scenario solito Zeroshell sia come client sia come server e per scelta architetturale,

Dettagli

Università degli Studi di Parma

Università degli Studi di Parma Università degli Studi di Parma Information and Communication Technology Base Esercitazione di laboratorio ultima revisione in data 30 aprile 2003 esercitazione 8 maggio 2003 Questa esercitazione ha lo

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Servizi DNS - SMTP FTP - TELNET. Programmi. Outlook Express Internet Explorer

Servizi DNS - SMTP FTP - TELNET. Programmi. Outlook Express Internet Explorer Servizi DNS - SMTP FTP - TELNET Programmi Outlook Express Internet Explorer 72 DNS Poiché riferirsi a una risorsa (sia essa un host oppure l'indirizzo di posta elettronica di un utente) utilizzando un

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Voice Over IP NAT Traversal

Voice Over IP NAT Traversal Voice Over IP Traversal Giorgio Zoppi zoppi@cli.di.unipi.it Tecnologie di Convergenza su IP a.a.2005/2006 VoIP Traversal 1 57 Tecnologie di Convergenza su IP Che cosa è il (Network Address Translation?

Dettagli

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Protocollo SSH (Secure Shell)

Protocollo SSH (Secure Shell) Università degli Studi Roma Tre Dipartimento di Informatica ed Automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesina per il corso di Elementi di Crittografia Protocollo SSH

Dettagli

Livello di applicazione. Reti di Calcolatori. Corso di Laurea in Ingegneria Informatica. Livello di applicazione DNS A.A.

Livello di applicazione. Reti di Calcolatori. Corso di Laurea in Ingegneria Informatica. Livello di applicazione DNS A.A. Corso di Laurea in Ingegneria Informatica Reti di Calcolatori Livello di applicazione DNS A.A. 2013/2014 1 Livello di applicazione Web e HTTP FTP Posta elettronica SMTP, POP3, IMAP DNS Applicazioni P2P

Dettagli

Interazione, sincronizzazione e comunicazione tra processi

Interazione, sincronizzazione e comunicazione tra processi Interazione, sincronizzazione e comunicazione tra processi Classificazione Processi interagenti processi interagenti/indipendenti due processi sono indipendenti se l esecuzione di ognuno non è in alcun

Dettagli

Protocollo HTTP. Alessandro Sorato

Protocollo HTTP. Alessandro Sorato Un protocollo è un insieme di regole che permettono di trovare uno standard di comunicazione tra diversi computer attraverso la rete. Quando due o più computer comunicano tra di loro si scambiano una serie

Dettagli

Test del funzionamento di un Rendez-vous Server mediante l implementazione InfraHIP

Test del funzionamento di un Rendez-vous Server mediante l implementazione InfraHIP Facoltá di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato finale in Protocolli per Reti Mobili Test del funzionamento di un Rendez-vous Server mediante l implementazione InfraHIP Anno Accademico

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 Sistemi Web-Based - Terminologia Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 CLIENT: il client è il programma che richiede un servizio a un computer collegato in

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Guida all'installazione ed uso dell'app RXCamLink

Guida all'installazione ed uso dell'app RXCamLink Guida all'installazione ed uso dell'app RXCamLink Questa guida riporta i passi relativi all'installazione ed all'utilizzo dell'app "RxCamLink" per il collegamento remoto in mobilità a sistemi TVCC basati

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it Sicurezza delle reti wireless Alberto Gianoli alberto.gianoli@fe.infn.it Concetti di base IEEE 802.11: famiglia di standard tra cui: 802.11a, b, g: physical e max data rate spec. 802.11e: QoS (traffic

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Sistemi a più processori

Sistemi a più processori Università di Udine Facoltà di Scienze MM.FF.NN. A.A. 2007-2008 Copyright c 2000 04 Marino Miculan (miculan@dimi.uniud.it) La copia letterale e la distribuzione di questa presentazione nella sua integrità

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor NetMonitor Micro guida all uso per la versione 1.2.0 di NetMonitor Cos è NetMonitor? NetMonitor è un piccolo software per il monitoraggio dei dispositivi in rete. Permette di avere una panoramica sui dispositivi

Dettagli

Introduzione alle reti e all architettura TCP/IP

Introduzione alle reti e all architettura TCP/IP Introduzione alle reti e all architettura TCP/IP Indice dei contenuti: 1) Introduzione alle reti Topologia di Internet e topologie di rete I mezzi fisici Il software di rete: architetture a livelli Reti

Dettagli

Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk. by Gassi Vito info@gassielettronica.com

Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk. by Gassi Vito info@gassielettronica.com Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk by Gassi Vito info@gassielettronica.com Questa breve guida pratica ci consentirà installare Zeroshell su pen drive o schede

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente Linux Debian, Fedora, Ubuntu www.ondacommunication.com Chiavet ta Internet MT503HSA Guida rapida sistema operativo LINUX V 1.1 33080, Roveredo in Piano (PN)

Dettagli

Sicurezza delle reti Spoofing: cos'è e come avviene IP Spoofing Spoofing non Cieco

Sicurezza delle reti Spoofing: cos'è e come avviene IP Spoofing Spoofing non Cieco SPOOFING Sicurezza delle reti Non bisogna essere sorpresi dal fatto che le reti di computer siano l'obbiettivo preferito, sia oggi sia in futuro, da parte di aggressori. Visto che un attacco su larga scala

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli