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)); }

Raw socket. L intercettazione di un pacchetto IP

Raw socket. L intercettazione di un pacchetto IP 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

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Paradigma client-server

Paradigma client-server Interazione Client Server (socket) Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 15 CliSer - 1/31 Paradigma client-server Le applicazioni utente devono interagire con

Dettagli

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Transmission Control Protocol

Transmission Control Protocol Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione

Dettagli

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

Socket TCP. seconda parte

Socket TCP. seconda parte Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare

Dettagli

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

TCP/IP. Principali caratteristiche

TCP/IP. Principali caratteristiche TCP/IP Principali caratteristiche 1 TCP/IP Caratteristiche del modello TCP/IP Struttura generale della rete Internet IL MONDO INTERNET Reti nazionali e internazionali ROUTER Rete Azienade ROUTER ROUTER

Dettagli

Architettura e servizi Internet

Architettura e servizi Internet Architettura e servizi Internet Laboratorio di Sistemi Operativi Corso di Laurea in Informatica Università degli Studi dell'aquila A.A. 2011/2012 Romina Eramo materiale tratto da: Fazio Vincenzo e-mail:

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Introduzione alle Reti di Calcolatori versione 1.0 del 11/03/2003 G. Mecca mecca@unibas.it Università della Basilicata Reti >> Sommario Sommario dei Concetti Elab. Client-Server

Dettagli

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

Uso di sniffer ed intercettazione del traffico IP

Uso di sniffer ed intercettazione del traffico IP Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy

Dettagli

L architettura di TCP/IP

L architettura di TCP/IP L architettura di TCP/IP Mentre non esiste un accordo unanime su come descrivere il modello a strati di TCP/IP, è generalmente accettato il fatto che sia descritto da un numero di livelli inferiore ai

Dettagli

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 maximiliano.marchesi@studenti.unipr.it Sommario Introduzione..................................................................................

Dettagli

Socket TCP. prima parte

Socket TCP. prima parte Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd

Dettagli

Il livello trasporto Protocolli TCP e UDP

Il livello trasporto Protocolli TCP e UDP Il livello trasporto Protocolli TCP e UDP Standard: OSi vs TCP/IP Application Presentation Session NFS XDR RPC Telnet, FTP SMTP, HTTP SNMP, DNS RTP,... Protocolli per la comunicazione tra applicativi:

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

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta

Dettagli

Il protocollo IP (Internet Protocol)

Il protocollo IP (Internet Protocol) Politecnico di Milano Advanced Network Technologies Laboratory Il protocollo IP (Internet Protocol) -Servizi offerti da IP -Formato del pacchetto IP 1 Il servizio di comunicazione offerto da IP Connectionless

Dettagli

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket SC per Inter Process Comminication Comunicazione fra macchine diverse: socket 1 Sockets File speciali utilizzati per connettere due o più processi con un canale di comunicazione i processi possono risiedere

Dettagli

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat. Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto

Dettagli

SNIFFING. Università Degli Studi Di Salerno. SCENARIO Annarella Invia Un Messaggio a Biagio SNIFFER SNIFFER SNIFFER SNIFFER. Uso lecito.

SNIFFING. Università Degli Studi Di Salerno. SCENARIO Annarella Invia Un Messaggio a Biagio SNIFFER SNIFFER SNIFFER SNIFFER. Uso lecito. Università Degli Studi Di Salerno Facoltà Di Scienze Matematiche Fisiche Naturali SCENARIO Annarella Invia Un Messaggio a Biagio Sistemi di elaborazione : Sicurezza su reti SNIFFING Annarella Carlo Biagio

Dettagli

IL LIVELLO TRASPORTO Protocolli TCP e UDP

IL LIVELLO TRASPORTO Protocolli TCP e UDP Reti di Calcolatori ed Internet IL LIVELLO TRASPORTO Protocolli TCP e UDP 5-1 Il Livello Trasporto I servizi del livello Trasporto Le primitive di Trasporto Indirizzamento Protocolli di Trasporto Livello

Dettagli

Il livello di Trasporto del TCP/IP

Il livello di Trasporto del TCP/IP Il livello di Trasporto del TCP/IP Il compito del livello transport (livello 4) è di fornire un trasporto efficace dall'host di origine a quello di destinazione, indipendentemente dalla rete utilizzata.

Dettagli

Capitolo 2 - parte 3. Corso Reti ed Applicazioni Mauro Campanella

Capitolo 2 - parte 3. Corso Reti ed Applicazioni Mauro Campanella Capitolo 2 - parte 3 Corso Reti ed Applicazioni Mauro Campanella Agenda - Domain Name Sytem (DNS) - Le socket BSD per Internet M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2-3 pag. 2 DNS: Domain

Dettagli

Una semplice applicazione client/server 1

Una semplice applicazione client/server 1 Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello

Dettagli

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO Corso DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO Docente: Ing. Luca Romanelli Mail: romanelli@baxsrl.com Networking Tipi di reti, gli standard e gli enti Protocollo IP Protocolli TCP, UDP 1

Dettagli

I protocolli UDP e TCP

I protocolli UDP e TCP I protocolli UDP e TCP A.A. 2005/2006 Walter Cerroni Il livello di trasporto in Internet APP. APP. TCP UDP IP collegamento logico tra diversi processi applicativi collegamento logico tra diversi host IP

Dettagli

Internet Protocol Versione 4: aspetti generali

Internet Protocol Versione 4: aspetti generali Internet Protocol Versione 4: aspetti generali L architettura di base del protocollo IP versione 4 e una panoramica sulle regole fondamentali del mondo TCP/IP 1 Cenni storici Introduzione della tecnologia

Dettagli

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita Reti Informatiche Approfondimento alla programmazione distribuita Acknowledgment: Prof Vincenzo Auletta, Università di Salerno Introduzione API send e receive bloccanti e non API select Socket UDP Esempio

Dettagli

Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto

Livello Trasporto. Liv. Applic. Liv. Transport. Transport Entity. Liv. Network. Trasporto Livello Trasporto Fornire un trasporto affidabile ed efficace dall'host di origine a quello di destinazione, indipendentemente dalla rete utilizzata Gestisce una conversazione diretta fra sorgente e destinazione

Dettagli

unsigned long inet_addr(cp) char *cp;

unsigned long inet_addr(cp) char *cp; /* bcopystru.c #include struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta=

Dettagli

IL LIVELLO RETE IN INTERNET Protocollo IP

IL LIVELLO RETE IN INTERNET Protocollo IP Reti di Calcolatori IL LIVELLO RETE IN INTERNET Protocollo IP D. Talia RETI DI CALCOLATORI - UNICAL 4-1 Il Protocollo IP IPv4 Datagram IP: formato Indirizzi IP: formato Protocolli di controllo IP mobile

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Funzioni utili, server ricorsivi, echo client ed echo server. Paolo D Arco Abstract Scopo della lezione è presentare alcune funzioni di utilità generale (e.g., funzioni

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

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport. ICMP Application Presentation Session Transport Telnet FTP SMTP SNMP TCP e UDP NFS XDR RPC Network Data Link Physical OSI ICMP ARP e RARP IP Non Specificati Protocolli di routing Internet Protocol Suite

Dettagli

Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing. Chiara Braghin chiara.braghin@unimi.it

Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing. Chiara Braghin chiara.braghin@unimi.it Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing Chiara Braghin chiara.braghin@unimi.it Sniffing (1) Attività di intercettazione passiva dei dati che transitano in una rete telematica, per:

Dettagli

Inter-process communication: socket

Inter-process communication: socket Le Socket Inter-process communication: socket Abbiamo visti alcune tipologie di Inter-process communication: Anonymous pipes FIFOs o named pipes Le socket di comunicazione si pongono nell'ipc per realizzare:

Dettagli

Introduzione (parte III)

Introduzione (parte III) Introduzione (parte III) Argomenti della lezione Ripasso degli argomenti del primo corso: il livello di trasporto, il meccanismo di controllo delle congestioni e le applicazioni Il livello di trasporto

Dettagli

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream

Dettagli

IP Internet Protocol

IP Internet Protocol IP Internet Protocol Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 13 IP - 1/20 IP IP è un protocollo a datagrammi In spedizione: Riceve i dati dal livello trasporto e

Dettagli

Strumenti di sicurezza delle reti:

Strumenti di sicurezza delle reti: Strumenti di sicurezza delle reti: nozioni di base e componenti open-source ing. Roberto Larcher http://utenti.lycos.it/webteca robertolarcher@hotmail.com Obiettivi del Seminario Prima parte: sapere cosa

Dettagli

TCP/IP un introduzione

TCP/IP un introduzione TCP/IP un introduzione Introduzione Il successo di Internet (rate di crescita annuo > 200 %) e dovuto all uso di protocolli standard aperti (IETF) TCP/IP (Transmission Control Protocol/Internet Protocol)

Dettagli

INTERNET DOMAIN SOCKETS (Cap.59)

INTERNET DOMAIN SOCKETS (Cap.59) INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso

Dettagli

L architettura di rete TCP/IP. www.vincenzocalabro.it 1

L architettura di rete TCP/IP. www.vincenzocalabro.it 1 L architettura di rete TCP/IP 1 Cenni Storici Nella prima metà degli anni 70 la DARPA dimostra interesse e finanzia l Università di Stanford e la BBN (Bolt, Beraken e Newman) per realizzare una rete: a

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Socket UDP. Paolo D Arco Abstract Scopo della lezione è descrivere le funzioni che l interfaccia dei socket offre per far interagire client e server attraverso il protocollo

Dettagli

Reti di comunicazione

Reti di comunicazione Reti di comunicazione Maurizio Aiello Consiglio Nazionale delle Ricerche Istituto di Elettronica e di Ingegneria dell Informazione e delle Telecomunicazioni Comunicazione via rete Per effettuare qualsiasi

Dettagli

Architetture di router IP

Architetture di router IP Torino, novembre 2004 Reti e sistemi telematici Architetture di router IP Gruppo Reti TLC giancarlo.pirani@telecomitalia.it http://www.telematica.polito.it/ GIANCARLO PIRANI TELECOM ITALIA LAB ROUTER IP

Dettagli

Classe bit: 0 1 2 3 4 8 16 24 31. 0 net id host id. 1 0 net id host id. 1 1 0 net id host id. 1 1 1 0 multicast address

Classe bit: 0 1 2 3 4 8 16 24 31. 0 net id host id. 1 0 net id host id. 1 1 0 net id host id. 1 1 1 0 multicast address CAPITOLO 11. INDIRIZZI E DOMAIN NAME SYSTEM 76 Classe bit: 0 1 2 3 4 8 16 24 31 A B C D E 0 net id host id 1 0 net id host id 1 1 0 net id host id 1 1 1 0 multicast address 1 1 1 1 0 riservato per usi

Dettagli

Elementi di programmazione con interfaccia Socket

Elementi di programmazione con interfaccia Socket Struttura generale per stream sockets Socket() Well-Known Port Bind() Elementi di programmazione con interfaccia Socket Cenni di programmazione secondo la nuova interfaccia Socket definita nella RFC 2553

Dettagli

Il modello TCP/IP. Sommario

Il modello TCP/IP. Sommario Il modello TCP/IP Il protocollo IP Mario Cannataro Sommario Introduzione al modello TCP/IP Richiami al modello ISO/OSI Struttura del modello TCP/IP Il protocollo IP Indirizzi IP Concetto di sottorete Struttura

Dettagli

Reti di Calcolatori in Tecnologia IP

Reti di Calcolatori in Tecnologia IP Reti di Calcolatori in Tecnologia IP Il Livello Transport e TCP Dott. Marco Bianchi 04/12/2001 1 Agenda Introduzione Indirizzamento Protocolli di livello transport Attivazione e rilascio di una connessione

Dettagli

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

Dettagli

La nascita di Internet

La nascita di Internet La nascita di Nel 1969 la DARPA (Defence Advanced Research Project Agency) studia e realizza la prima rete per la comunicazione tra computer (ARPAnet) fra 3 università americane ed 1 istituto di ricerca.

Dettagli

Internet e protocollo TCP/IP

Internet e protocollo TCP/IP Internet e protocollo TCP/IP Internet Nata dalla fusione di reti di agenzie governative americane (ARPANET) e reti di università E una rete di reti, di scala planetaria, pubblica, a commutazione di pacchetto

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

Protocolli di Comunicazione

Protocolli di Comunicazione Protocolli di Comunicazione La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e presenta una struttura solo parzialmente aderente al modello OSI. L'architettura di rete Internet Protocol

Dettagli

Livello Trasporto Protocolli TCP e UDP

Livello Trasporto Protocolli TCP e UDP Livello Trasporto Protocolli TCP e UDP Davide Quaglia Reti di Calcolatori - Liv Trasporto TCP/UDP 1 Motivazioni Su un host vengono eseguiti diversi processi che usano la rete Problemi Distinguere le coppie

Dettagli

Internet. Cos'è internet? I parte

Internet. Cos'è internet? I parte Internet Da leggere: Cap.6, in particolare par. 6.4 del Console Ribaudo (testo B) I parte Cos'è internet? Milioni di dispositivi di calcolo tra loro interconnessi: host o end-systems Pc, workstation, server

Dettagli

Wireless Network Esercitazioni. Alessandro Villani avillani@science.unitn.it

Wireless Network Esercitazioni. Alessandro Villani avillani@science.unitn.it Wireless Network Esercitazioni Alessandro Villani avillani@science.unitn.it Radius AAA Dato un certo numero di punti di accesso dall esterno alla rete Data una grande quantità di utenti Abbiamo la necessità

Dettagli

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Protocolli per il Web. Impianti Informatici. Protocolli applicativi Protocolli per il Web Protocolli applicativi I protocolli applicativi 2 Applicazioni Socket interface HTTP (WEB) SMTP (E-MAIL) FTP... NFS RPC DNS... Trasporto TCP UDP Rete ICMP RIP OSPF IP ARP RARP Non

Dettagli

Protocollo TCP/IP & Indirizzamento IP

Protocollo TCP/IP & Indirizzamento IP Protocollo TCP/IP & Indirizzamento IP L architettura TCP/IP: Nasce per richiesta del Dipartimento della Difesa degli USA che intendeva poter creare una rete in grado di funzionare in qualsiasi tipo di

Dettagli

Sommario. Configurazione della rete con DHCP. Funzionamento Configurazione lato server Configurazione lato client

Sommario. Configurazione della rete con DHCP. Funzionamento Configurazione lato server Configurazione lato client Esercitazione 3 Sommario Configurazione della rete con DHCP Funzionamento Configurazione lato server Configurazione lato client 2 Sommario Strumenti di utilità ping traceroute netstat Test del DNS nslookup

Dettagli

GNU/Linux e i firewall

GNU/Linux e i firewall GNU/Linux e i firewall Relatori: Giorgio Bodo Bodini Roberto Oliverino Azzini Classificazione delle reti in base all'estensione VPN VPN: Virtual Private Network LAN security gateway security gateway LAN

Dettagli

Internetworking TCP/IP: esercizi

Internetworking TCP/IP: esercizi Politecnico di Milano Facoltà di Ingegneria dell Informazione Fondamenti di Reti di Telecomunicazione prof. A. Capone Internetworking TCP/IP: esercizi 1 Esercizio 7.1 Si consideri la rete in figura dove

Dettagli

Politecnico di Bari. Facoltà di Ingegneria Elettronica. Corso di Reti di Telecomunicazioni

Politecnico di Bari. Facoltà di Ingegneria Elettronica. Corso di Reti di Telecomunicazioni Politecnico di Bari Facoltà di Ingegneria Elettronica Corso di Reti di Telecomunicazioni Internet Protocol versione 4 Generalità sulle reti IP... 2 Lo header IP versione 4... 3 Concetti generali sugli

Dettagli

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1 Introduzione Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio Livello applicativo Principi delle applicazioni di rete 2-1 Pila di protocolli Internet Software applicazione: di

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli 20 dicembre 2004 ii Indice 1 Introduzione 1 1.1 Notazioni e terminologia..................................... 1 2 Un po di

Dettagli

Una prima applicazione in C per l utilizzo delle socket

Una prima applicazione in C per l utilizzo delle socket Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface

Dettagli

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP)

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP) I Socket in PHP (manuale PHP) Introduzione Questa estensione implementa una interfaccia a basso livello verso i socket, fornendo la possibilità di agire sia come server sia come client. Per l'utilizzo

Dettagli

Il firewall Packet filtering statico in architetture avanzate

Il firewall Packet filtering statico in architetture avanzate protezione delle reti Il firewall Packet filtering statico in architetture avanzate FABIO GARZIA DOCENTE ESPERTO DI SECURITY UN FIREWALL PERIMETRALE È IL PUNTO CENTRALE DI DIFESA NEL PERIMETRO DI UNA RETE

Dettagli

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II

RETI TELEMATICHE Lucidi delle Lezioni Capitolo II Prof. Giuseppe F. Rossi E-mail: giuseppe.rossi@unipv.it Homepage: http://www.unipv.it/retical/home.html UNIVERSITA' DEGLI STUDI DI PAVIA Facoltà di Ingegneria A.A. 2011/12 - I Semestre - Sede PV RETI TELEMATICHE

Dettagli

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall Firewall e NAT A.A. 2005/2006 Walter Cerroni Protezione di host: personal firewall Un firewall è un filtro software che serve a proteggersi da accessi indesiderati provenienti dall esterno della rete Può

Dettagli

Un sistema di Network Intrusion Detection basato su tcpdump

Un sistema di Network Intrusion Detection basato su tcpdump I INFN Security Workshop Firenze 19-20 Settembre 2000 Un sistema di Network Intrusion Detection basato su tcpdump Massimo Gravino INFN Sezione di Padova Perche` utilizzare un sistema di Network Intrusion

Dettagli

Architettura di TCP/IP. IP: Internet Protocol. IP:Internet Protocol. Il livello Network si occupa di: È il livello di Network di TCP/IP

Architettura di TCP/IP. IP: Internet Protocol. IP:Internet Protocol. Il livello Network si occupa di: È il livello di Network di TCP/IP a.a. 2002/03 Architettura di TCP/IP IP L architettura di Internet è organizzata intorno a tre servizi organizzati gerarchicamente Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/

Dettagli

TOPOLOGIA di una rete

TOPOLOGIA di una rete TOPOLOGIA di una rete Protocolli di rete un protocollo prevede la definizione di un linguaggio per far comunicare 2 o più dispositivi. Il protocollo è quindi costituito dai un insieme di convenzioni

Dettagli

Reti standard. Si trattano i modelli di rete su cui è basata Internet

Reti standard. Si trattano i modelli di rete su cui è basata Internet Reti standard Si trattano i modelli di rete su cui è basata Internet Rete globale Internet è una rete globale di calcolatori Le connessioni fisiche (link) sono fatte in vari modi: Connessioni elettriche

Dettagli

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO okfabian@yahoo.com Fabian Chatwin Cedrati Ogni scheda di rete ha un indirizzo MAC univoco L'indirizzo IP invece viene impostato dal Sistema Operativo HUB 00:50:DA:7D:5E:32

Dettagli

HTTP adaptation layer per generico protocollo di scambio dati

HTTP adaptation layer per generico protocollo di scambio dati HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003

Dettagli

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci CORSO DI RETI SSIS Lezione n.3 9 novembre 2005 Laura Ricci IL LIVELLO TRASPORTO realizza un supporto per la comunicazione logica tra processi distribuiti comunicazione logica = astrazione che consente

Dettagli

Identità sulla rete protocolli di trasmissione (TCP-IP) L architettura del sistema. Dal livello A al livello B

Identità sulla rete protocolli di trasmissione (TCP-IP) L architettura del sistema. Dal livello A al livello B Identità sulla rete protocolli di trasmissione (TCP-IP) L architettura del sistema contenuto della comunicazione sistema per la gestione della comunicazione sottosistema C sottosistema B sottosistema A

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

TCP: trasmissione Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario

Dettagli

Reti e Linux. Andrea Bontempi. Corsi Linux 2012. POuL

Reti e Linux. Andrea Bontempi. Corsi Linux 2012. POuL POuL Corsi Linux 2012 Una breve introduzione: le reti Una rete di calcolatori è un mezzo fisico sul quale è possibile inviare e ricevere messaggi o flussi di dati. La prima rete a commutazione di pacchetto

Dettagli

Architettura TCP/IP: indirizzamento e routing

Architettura TCP/IP: indirizzamento e routing Architettura TCP/IP: indirizzamento e routing Manlio Astolfi Servizio Reti e Telecomunicazioni m.astolfi@src.cnr.it STORIA 1964: proposta di una rete resistente agli attacchi Le caratteristiche dovevano

Dettagli

Le Opzioni per i Socket

Le Opzioni per i Socket Advanced TCP Socket Le Opzioni per i Socket Le opzioni per i socket sono controllate mediante tre tipi di primitive: 1) le funzioni getsockopt() e setsockopt(), che permettono di configurare alcune caratteristiche

Dettagli

Tappe evolutive della rete Internet

Tappe evolutive della rete Internet UNIVERSITA DEGLI STUDI DI ANCONA FACOLTA DI INGEGNERIA Dipartimento di Elettronica e Automatica Internet della nuova generazione: protocolli e prestazioni Laureando: ANDREA CAPRIOTTI Relatore: Ing. E.GAMBI

Dettagli

Anno Accademico 2012-2013. Corso di Reti di Calcolatori e Comunicazione Digitale. Modulo 3 : TCP/IP Lo strato di rete.

Anno Accademico 2012-2013. Corso di Reti di Calcolatori e Comunicazione Digitale. Modulo 3 : TCP/IP Lo strato di rete. CdS in INFORMATICA e COMUNICAZIONE DIGITALE Anno Accademico 2012-2013 Corso di Reti di Calcolatori e Comunicazione Digitale Modulo 3 : TCP/IP Lo strato di rete Prof. Sebastiano Pizzutilo Dipartimento di

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Interazione con il DNS Conversioni di Nomi ed Indirizzi

Interazione con il DNS Conversioni di Nomi ed Indirizzi a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in

Dettagli

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema

Dettagli

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server a.a. 2003/04 Introduzione all API socket di Berkeley Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Reti di Calcolatori Claudio Marrocco Componenti delle reti Una qualunque forma di comunicazione avviene: a livello hardware tramite un mezzo fisico che

Dettagli

Lezione n.9 LPR- Informatica Applicata

Lezione n.9 LPR- Informatica Applicata Lezione n.9 LPR- Informatica Applicata LINUX Gestione della Rete 3/4/2006 Laura Ricci Laura Ricci 1 INDIRIZZI RISERVATI Alcuni indirizzi all interno di una rete sono riservati: indirizzo di rete e broadcast.

Dettagli