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

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

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

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

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

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

È possibile filtrare i pacchetti in base alla porta Ad esempio specificando la porta 80 ascolto il traffico web di un host

È possibile filtrare i pacchetti in base alla porta Ad esempio specificando la porta 80 ascolto il traffico web di un host Sniffer con libreria Pcap 1 Realizzazione di uno Sniffer con la libpcap Sistemi per l elaborazione dell informazione: Sicurezza su Reti A.A. 2001/2002 Prof. Alfredo De Santis Giovanni Lovisi Nicola Rossi

Dettagli

Che cos è uno sniffer?? (3) Uno sniffer con la libreria PCAP. GeTThings sniffer: : scelte progettuali. Il layering TCP/IP

Che cos è uno sniffer?? (3) Uno sniffer con la libreria PCAP. GeTThings sniffer: : scelte progettuali. Il layering TCP/IP Uno sniffer con la libreria PCAP Realizzato da: Avolio Luca lucavo Domini Angelo sha Listo Massimiliano maslis Ventre Carmine lucavo@libero. @libero.itit sha.man@.man@tiscalinet.itit maslis@tiscalinet.itit

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

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

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

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it

Dettagli

4 - Il livello di trasporto

4 - Il livello di trasporto Università di Bergamo Dipartimento di Ingegneria Gestionale e dell Informazione 4 - Il livello di trasporto Architetture e Protocolli per Internet Servizio di trasporto il livello di trasporto ha il compito

Dettagli

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

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

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

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

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

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

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

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

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

Program m azione di Sistem a 6

Program m azione di Sistem a 6 Program m azione di Sistem a 6 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale

Dettagli

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor Le socket costituiscono un fondamentale strumento di comunicazione, basato sullo scambio di messaggi,

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,

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

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità

Standard: OSi vs TCP/IP. Il livello di trasporto. TCP e UDP. TCP: Transmission Control Protocol. TCP: funzionalità Standard: OSi vs TCP/IP Application Presentation Session NFS XDR RPC Telnet, FTP SMTP, HTTP SNMP, DNS RTP,... Protocolli per la comunicazione tra applicativi: le raisons d etre della rete Transport TCP

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

Introduzione allo sniffing

Introduzione allo sniffing Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2007/2008 Introduzione allo sniffing Roberto Paleari 2-4 Settembre 2008 Roberto Paleari Introduzione

Dettagli

T.A.R.I. Socket (ICT, AL)

T.A.R.I. Socket (ICT, AL) Internet Applications (Client-Server Concept, Use of Protocol Ports, Socket API, DNS, E-mail, TELNET, FTP) Funzionalità Livello di trasporto e livelli sottostanti Comunicazione base Disponibilità Livello

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

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

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

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

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

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

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

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

Creare un'elementare backdoor in C in ambiente UNIX

Creare un'elementare backdoor in C in ambiente UNIX Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui

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

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 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

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

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

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

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

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

Guida all' uso dei sockets nella programmazione in C

Guida all' uso dei sockets nella programmazione in C Guida all' uso dei sockets nella programmazione in C ( pseudo-traduzione personalizzata di "Beej's Guide to Network Programming" ) (Prima parte) INTRODUZIONE Finalmente ho trovato una guida chiara e semplice

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

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

Problematiche di Sicurezza in Ambiente Linux

Problematiche di Sicurezza in Ambiente Linux ALESSIA CIRAUDO Problematiche di Sicurezza in Ambiente Linux Progetto Bari-Catania: Buone Prassi Integrative tra Università e Impresa FlashC om Durata: 2 mesi Tutor aziendale: Vincenzo Mosca Collaboratore

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

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

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) ICMP ARP RARP DHCP - NAT ICMP (Internet

Dettagli

IL LIVELLO TRASPORTO Protocolli TCP e UDP

IL LIVELLO TRASPORTO Protocolli TCP e UDP Reti di Calcolatori IL LIVELLO TRASPORTO Protocolli TCP e UDP D. Talia RETI DI CALCOLATORI - UNICAL 5-1 Il Livello Trasporto I servizi del livello Trasporto Le primitive di Trasporto Indirizzamento Protocolli

Dettagli

Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35.

Livello trasporto: TCP / UDP. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35. Livello trasporto: TCP / UDP Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 14 TCP/UDP - 1/35 TCP e UDP Internet Protocol (IP) fornisce un servizio non affidabile di trasmissione

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

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

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

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

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

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

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori Corso di Reti di Calcolatori IP switch uplink FDDI backbone global server porta Fddi Prof. Orazio Mirabella HUB SWITCH Ethernet SWITCH Ethernet Eth. 10Base-T SWITCH Ethernet TCP/IP Cenni Storici Internet

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

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

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

Reti locati e reti globali. Tecnologie: Reti e Protocolli. Topologia reti. Server e client di rete. Server hardware e server software.

Reti locati e reti globali. Tecnologie: Reti e Protocolli. Topologia reti. Server e client di rete. Server hardware e server software. Reti locati e reti globali Tecnologie: Reti e Protocolli Reti locali (LAN, Local Area Networks) Nodi su aree limitate (ufficio, piano, dipartimento) Reti globali (reti metropolitane, reti geografiche,

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

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

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

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

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

Laboratorio di Programmazione in rete

Laboratorio di Programmazione in rete Laboratorio di rogrammazione in rete Introduzione alla programmazione C di socket A.A. 2005/06 Comunicazione tra computer Come far comunicare più computer su una rete? Una collezione di protocolli: TC/I

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

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

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

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

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Il livello Network del TCP/IP. Il protocollo IP (versione 4) Il livello Network del TCP/IP. Il protocollo IP (versione 4) L architettura TCP/IP (il cui nome più preciso è ) è formata da diversi componenti, che si posizionano nello stack dei protocolli a partire

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

Programmazione di applicazioni di rete

Programmazione di applicazioni di rete Programmazione di applicazioni di rete Valeria Cardellini Università di Roma Tor Vergata Applicazioni di rete Applicazioni di rete - forniscono i servizi di alto livello utilizzati dagli utenti - determinano

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

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

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

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

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

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP

Uso di UDP per client-server UDP. Porte e multiplexing. TCP e UDP. Connessione TCP (o messaggio UDP) Caratteristiche delle porte TCP e UDP CP e UDP: il livello trasporto dell'architettura CP/IP Antonio Lioy < lioy@polito.it > 7 6 5 4 3 network OSI vs. CP/IP packet process (DNS, HP, SMP, ) (CP, UDP) network (IP) Politecnico di orino Dip. Automatica

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

ICMP. Internet Control Message Protocol. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it http://staff.polito.it/mario.

ICMP. Internet Control Message Protocol. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it http://staff.polito.it/mario. ICMP Internet Control Message Protocol Silvano GAI sgai[at]cisco.com Mario BALDI mario.baldi[at]polito.it http://staff.polito.it/mario.baldi Fulvio RISSO fulvio.risso[at]polito.it ICMP - 1 Copyright: si

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

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

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

Sniffing Danilo Bonardi 29 Febbraio 2005 Diario delle revisioni Revisione 0.2 29 Febbraio 2005 danilo.bonardi@studenti.unipr.it

Sniffing Danilo Bonardi 29 Febbraio 2005 Diario delle revisioni Revisione 0.2 29 Febbraio 2005 danilo.bonardi@studenti.unipr.it Sommario Sniffing Danilo Bonardi 29 Febbraio 2005 Diario delle revisioni Revisione 0.2 29 Febbraio 2005 danilo.bonardi@studenti.unipr.it Introduzione..................................................................................

Dettagli

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol)

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol) CdS in INFORMATICA e COMUNICAZIONE DIGITALE Anno Accademico 2012-2013 Corso di Reti di Calcolatori e Comunicazione Digitale Modulo 5 TCP/IP : i protocolli a livello 3 e 4 Prof. Sebastiano Pizzutilo Dipartimento

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