Elementi di programmazione con interfaccia Socket

Размер: px
Начинать показ со страницы:

Download "Elementi di programmazione con interfaccia Socket"

Транскрипт

1 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 Socket() Connect() Write() Read() Close() Connection establishment (3-way handshake) Data (Request) Data (Reply) End-of-File notification Listen() Accept() Blocks until connection received from client Read() Process request Write() Read() 7 Close() Struttura generale per datagram sockets Socket() Sendto() Recvfrom() Close() Well-Known Port Data (Request) Data (Reply) Socket() Bind() Recvfrom() Blocks until datagram received from client Process request Sendto() Funzioni principali (1) socket() Predispone il sistema operativo alla gestione di un nuovo flusso dati creando una struttura in memoria Crea un nuovo socket descriptor con determinate caratteristiche (protocollo di rete, protocollo di trasporto) bind() Collega il socket descriptor precedentemente creato ad una porta specificata Normalmente è utilizzato per un socket di tipo server (anche se esistono casi in cui è utilizzato anche per i client) Il socket non è ancora attivo (non può essere utilzizato per inviare / ricevere dati) listen() Comunica al sistema operativo che deve aspettarsi delle connessioni Crea e gestisce un'apposita coda d'attesa la cui lunghezza è passata come parametro. Una connessione è pronta per essere de-accodata nel momento in cui il 3-way handshake del TCP è terminato correttamente 8 9

2 Funzioni principali (2) accept() Restituisce un socket descriptor corrispondente alla prima connessione che è stata accodata dalla Listen. La chiamata è bloccnte: se non esistono connessioni in arrivo, il programma si blocca fino a che ne arriva una. Questa funzione crea un nuovo socket descriptor: Il primo (unconnected socket) viene usato per accettare nuove connessioni Il secondo (connected socket) è relativo alla prima connessione accettata Buona prassi è la gestione della nuova connessione attraverso una chiamata di tipo fork() Il processo mantiene un thread in ascolto e un altro al servizio della nuova connessione Funzioni principali (3) connect() Attiva una connessione tra il socket descriptor locale e un socket descriptor remoto. La connessione può essere sia di tipo esplicito (TCP 3-way handshake) oppure implicito (UDP) Questa chiamata viene fatta sempre dal client UDP Questa funzione non è necessaria; è utile per poter utilizzare le primitive send() e recv() anzichè sendto() e recvfrom() Minore overhead di gestione della connessione: ad ogni sendto() il sistema apre il socket, sceglie una porta casuale, invia un datagram e richiude il socket) Necessita di avere una "connessione" aperta per ogni peer close() Chiude un socket descriptor precedentemente creato e ne disalloca le risorse interne Tutti i dati ancora pendenti (ad esempio dati in transito verso il socket chiuso ) vengono persi Funzioni di send/receive (1) read(), write() Usabili solo in UNIX Stesso significato e stessa sintassi rispetto al loro utilizzo su un normale file Mancano di alcune peculiarità che sono proprie dei socket Es. leggere i dati senza cancellarli del buffer(msg_peek), etc Tendenzialmente poco usate Funzioni di send/receive (2) send(), recv() Utilizzabili solo su socket connessi Sempre su socket TCP Solo se è stata chiamata la connect() nel caso di socket UDP Permettono alcuni opzioni attraverso l utilizzo dei flags sendto(), recvfrom() Utilizzabili su socket non connessi UDP senza a chiamata connect() Permettono di ricevere/inviare dati da/ad una certa destinazione senza effettuare la connessione a priori Con uno stesso socket permettono di inviare/ricevere dati da molte destinazioni Se utilizzati su socket connessi, i parametri relativi all host remoto vengono ignorati Sono equivalenti a send() e recv() 12 13

3 socket() Dominio Rappresenta l architettura di rete prescelta TCP/IP, IPX, SNA,.. Tipo Tipologia del socket (connesso, non connesso, etc) Stream, Datagram. Raw Protocollo Nell eventualità che esistano più protocolli che soddisfano le caratteristiche indicate da Dominio e Tipo, questo parametro permette di specificare quale protocollo debba essere scelto Questo parametro è normalmente a zero Il socket descriptor che è stato creato dal sistema operativo socket(): Esempio int SockDescr; /* Socket descriptor */ int family, socktype, protocol; family= AF_INET; /* IP protocol */ socktype= SOCK_STREAM; /* TCP */ protocol= 0; SockDescr = socket(family, socktype, protocol); if (SockDescr == -1) bind() struct sockaddr: parametri su cui fare il binding Contiene i parametri (indirizzo, porta) sui quali il server dovrà mettersi in ascolto Indirizzo: può non essere specificato (ci si mette in ascolto su tutti gli indirizzi della macchina) Porta: è obbligatoria per un socket di tipo server struct sockaddr: è una struttura fasulla, necessaria solamente per astrarsi dalla particolare address family in uso Lunghezza della precedente struttura La bind() può operare con architetture di rete diverse (quindi indirizzi con formato diverso) 0 se tutto è OK, -1 in caso di errore bind(): Esempio int ret; /* return value */ struct sockaddr_storage addr; /* address/port on which we */ /* want to create a server */ socklen_t addrlen; /* length of the sockaddr_in */ SockDescr = socket(family, socktype, protocol); addrlen= sizeof(addr); /* now we have to initialize addr (not done here) */ ret= bind(sockdescr, (struct sockaddr *) &addr, addrlen); if (ret == -1) 16 17

4 listen() Numero massimo di connessioni che possono essere accodate Nel momento in cui il programmatore chiama la accept(), la coda delle connessioni viene decrementata di un unità 0 se tutto è OK, -1 in caso di errore listen(): Esempio int ret; /* return value */ struct sockaddr_storage addr; /* address/port on which we */ /* want to create a server */ socklen_t addrlen; /* length of the sockaddr */ ret= bind(sockdescr, (struct sockaddr *) &addr, addrlen); if (ret == -1) if (listen(sockdescr, MAX_CONNECTIONS) == -1) accept() struct sockaddr: parametri della macchina (indirizzo, porta sorgente) che si è connessa a noi Lunghezza della precedente struttura Un nuovo Socket Descriptor relativo alla nuova connessione se tutto è OK, -1 in caso di errore La accept() crea automaticamente un nuovo socket di tipo connesso, necessario per servire la connessione accettata accept(): Esempio int ret; /* return value */ struct sockaddr_storage from; /* address/port of the host */ /* is connecting to us */ socklen_t fromlen; /* length of the sockaddr */ int ChildSock; /* Socket Descriptor of the child */ if (listen(sockdescr, MAX_CONNECTIONS) == -1) ChildSock= accept(sockdescr, (struct sockaddr *) &from, &fromlen); if (ChildSock == -1) 20 21

5 connect() struct sockaddr: parametri della macchina (indirizzo, porta) con la quale si vuole attivare una connessione Lunghezza della precedente struttura 0 se tutto è OK, -1 in caso di errore connect(): Esempio int ret; /* return value */ struct sockaddr_storage addr; /* address/port of the host */ /* we want to connect to */ socklen_t addrlen; /* length of the sockaddr */ SockDescr = socket(family, socktype, protocol); /* now we have to initialize addr (not done here) */ ret= connect(sockdescr, (struct sockaddr *) &addr, addrlen); if (ret == -1) recv() void *buffer Buffer (allocato dall utente) nel quale verranno messi i dati ricevuti int bufferlen Lunghezza del buffer (per evitare buffer overflow) Corrisponde anche alla massima quantità di dati che si vogliono leggere int flags Eventuali modificatori del comportamento della funzione Il numero di bytes letti se tutto è OK, -1 in caso di errori Il numero di dati letti equivale a bufferlen nel caso in cui il numero di dati sia superiore alla disponibilità del buffer recv(): Esempio int AmountRead; /* the number of bytes read */ char Buffer[64000]; /* buffer in which data will be stored */ ChildSock= accept(sockdescr, (struct sockaddr *) &from, &fromlen); if (ChildSock == -1) AmountRead= recv(childsock, Buffer, sizeof(buffer), 0); if (AmountRead == -1) 24 25

6 send() void *buffer Buffer (allocato dall utente) che deve essere inviato int datatosend Numero di bytes (nel buffer) che devono essere inviati int flags Eventuali modificatori del comportamento della funzione Il numero di bytes inviati se tutto è OK, -1 in caso di errori Il numero di dati inviati può essere inferiore a datatosend nel caso in cui il numero di dati sia superiore alla disponibilità del buffer interno del sistema operativo send(): Esempio int AmountSent; /* the number of bytes sent */ int BytesToSend; /* the number of bytes to send */ char Buffer[64000]; /* buffer in which data will be stored */ ChildSock= accept(sockdescr, (struct sockaddr *) &from, &fromlen); if (ChildSock == -1) /* We suppose Buffer contains only strings */ BytesToSend= strlen(buffer); AmountSent= send(childsock, Buffer, BytesToSend, 0); if (AmountSent == -1) close() Indica il socket che si vuole chiudere 0 se tutto è OK, -1 in caso di errore close(): Esempio int ret; /* return value */ struct sockaddr_storage addr; /* address/port of the host */ /* we want to connect to */ socklen_t addrlen; /* length of the sockaddr */ AmountSent= send(childsock, Buffer, BytesToSend, 0); if (AmountSent == -1) ret= close(childsock); if (ret == -1) 28 29

7 Funzioni introdotte dalla RFC 2553 getaddrinfo() Consente una traduzione di una coppia nomehost/porta in strutture che potranno poi essere utilzizate dai socket successivi È trasparente dal protocollo di rete (IPv4/IPv6) Accetta sia nomi/porte numerici (es /80) che letterali ( freeaddrinfo() Libera le strutture dati precedentemente allocate dalla getaddrinfo() getnameinfo() Consente di tradurre le variabili di tipo struct sockaddr utilizzate internamente da alcune chiamate socket, in un nomehost/porta di tipo numerico oppure letterale E la speculare della getaddrinfo() Funzioni non supportate in Win32 E previsto il loro abbandono da parte di IETF Sono sostituibili dalle getaddrinfo() e getnameinfo() getipnodebyname() Intendeva sostituire la gethostbyname() Traduce un nome letterale in un insieme di strutture dati per il successivo utilizzo getipnodebyaddr() Intendeva sostituire la gethostbyaddr() Traduce un nome numerico in un insieme di strutture dati per il successivo utilizzo freehostent() Libera le strutture allocate dalle due funzioni precedenti inet_pton(), inet_ntop() Intendevano sostituire le inet_addr() e inet_ntoa() Convertono un indirizzo binario in un indirizzo stringa (stampabile) Strutture dati Sono state definite molte strutture dati Storicamente i socket hanno avuto una certa evoluzione Molte informazioni sono presenti in più posti Certe scelte possono apparire, in certi casi, incongruenti Struttura generale : struct addrinfo Mantiene tutti i parametri necessari ad operare Address family, protocollo, indirizzo, porta, flags, nome canonico Definita nella RFC 2553 Strutture di tipo sockaddr Mantengono i parametri più importanti per operare Address family, protocollo, indirizzo, porta Esistono due tipologie di strutture di questo tipo: Strutture reali legate ad un preciso protocollo di rete Strutture astratte indipendenti dal protocollo network Strutture dati astratte Definite per astrarsi dal tipo di indirizzo di rete/porta (e altro) L interfaccia socket è indipendente dal protocollo di livello network struct sockaddr È quella definita storicamente per prima È utilizzata da tutte le principali funzioni (connect(), bind(),) che richiedono per poter operare, informazioni del tipo indirizzo/porta Purtroppo, la sua lunghezza non è sufficiente a mantenere certi indirizzi di rete (la sua lunghezza è pari solamente a 16 bytes) È stata rimpiazzata dalla struct sockaddr_storage struct sockaddr_storage Struttura attualmente in uso È utilizzata per la definizione di variabili che dovranno contenere fondamentalmente indirizzi/porte Non è utilizzata per passare i parametri alle funzioni Per mantenere la compatibilità a livello di API, le funzioni hanno come parametri sempre delle struct sockaddr È necessario effettuare il cast delle variabili di questo tipo in struct sockaddr 32 33

8 Strutture dati astratte: definizioni struct sockaddr u_short sa_family; /* Address family */ char sa_data[14]; /* Up to 14 bytes of direct address */ }; struct sockaddr_storage short ss_family; /* Address family */ char ss_pad1[_ss_pad1size]; /* 6 byte pad, to make */ /* implementation specific pad up to alignment */ /* field that follows explicit in the data structure */ int64 ss_align; /* Field to force desired structure */ char ss_pad2[_ss_pad2size]; /* 112 byte pad to achieve */ /* the desired size; _SS_MAXSIZE value minus size of */ /* ss_family, ss_pad1, and ss_align fields is 112 */ }; Strutture dati astratte: esempio struct sockaddr_storage from; /* address/port of the host */ /* is connecting to us */ socklen_t fromlen; /* length of the sockaddr */ if (listen(sockdescr, MAX_CONNECTIONS) == -1) /* We cannot know, a priori, if the connecting host is */ /* IPv4 or IPv6: from must be a generic sockaddr_storage */ /* accept() has a struct sockaddr * as second parameter */ /* so we have to cast from into a struct sockaddr */ /* fromlen checks that the size of from is sufficient */ fromlen= sizeof(from); /* Get the size of from */ ChildSock= accept(sockdescr, (struct sockaddr *) &from, &fromlen); Strutture dati di tipo sockaddr reali (1) Sono quelle effettivamente utilizzate all interno delle funzioni Le struct sockaddr vengono convertite attraverso appositi cast Funzionamento Quando una funzione si trova a dover riempire una struct sockaddr, la riempie secondo il formato della sockaddr reale relativa a quella address family Le funzioni accettano, oltre al parametro struct sockaddr, anche un parametro indicate la lunghezza effettiva della struttura che è stata definita Necessario per sapere se la variabile originaria è stata allocata della lunghezza effettiva Strutture dati di tipo sockaddr reali (2) Strutture attualmente definite struct sockaddr_in Mantiene i parametri più importanti per il mondo IPv4 Address family, protocollo, indirizzo, porta struct sockaddr_in6 Mantiene i parametri più importanti per il mondo IPv6 Address family, protocollo, indirizzo, porta, flow label, scope 36 37

9 Strutture di tipo sockaddr_in: definizione struct sockaddr_in6 short sin6_family; /* AF_INET6 */ u_short sin6_port; /* Transport level port number */ u_long sin6_flowinfo; /* IPv6 flow information */ struct in_addr6 sin6_addr; /* IPv6 address */ u_long sin6_scope_id; /* Set of interfaces for scope */ }; struct sockaddr_in short sin_family; /* AF_INET */ u_short sin_port; /* Transport level port number */ struct in_addr sin_addr; /* IPv6 address */ char sin_zero[8]; }; Strutture di tipo sockaddr_in: esempio struct sockaddr_storage from; /* address/port of the host */ /* is connecting to us */ socklen_t fromlen; /* length of the sockaddr */ fromlen= sizeof(from); /* Get the size of from */ ChildSock= accept(sockdescr, (struct sockaddr *) &from, &fromlen); if (from. sa_family == AF_INET) /* This is an IPv4 address */ struct in_addr binip4addr; /* IPv4 address in binary form */ struct sockaddr_in *sockaddr4; /* real struct for IPv4 hosts */ sockaddr4= (sockaddr_in *) &from; /* convert the structure */ binip4addr= sockaddr4->sin_addr; /* assign the IPv4 address */ } Struttura generale: struct addrinfo Struttura fondamentale per l utilizzo dei socket Introdotta dalla RFC 2553 Caratteristiche Contiene tutti i parametri necessari a qualunque funzione socket per poter operare Viene riempita automaticamente dalla getaddrinfo() E possibile realizzare una lista linkata di strutture di tipo struct addrinfo Esiste un puntatore next a sè stessa Utilizzata prevalentemente nel caso in cui, ad uno stesso host (identificato come nome letterale, es ) corrispondano più indirizzi diversi In questo caso, la lista linkata permette di scegliere uno tra gli indirizzi identificati Struttura addrinfo: definizione struct addrinfo int ai_flags; /* AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST */ int ai_family; /* AF_xxx */ int ai_socktype; /* SOCK_xxx */ int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ size_t ai_addrlen; /* length of ai_addr */ char *ai_canonname; /* canonical name for nodename */ struct sockaddr *ai_addr; /* binary address */ struct addrinfo *ai_next; /* next structure in linked list */ }; 40 41

10 Struttura addrinfo: esempio int ClientSock; /* Socket descriptor */ struct addrinfo Hints, *AddrInfo; /* Generic struct addrinfo */ int Ret; /* Generic return value */ /* Reset the content of the Hints variable */ memset(&hints, 0, sizeof(struct addrinfo)); /* Initialize the Hints variable, needed to specify some param */ Hints.ai_family = AF_INET; Hints.ai_socktype = SOCK_STREAM; /* Get the addresses in binary form */ Ret= getaddrinfo( 80, &Hints, &AddrInfo); ClientSock = socket(addrinfo->ai_family, AddrInfo->ai_socktype, AddrInfo->ai_protocol); /* Connects to the first address returned */ Ret= connect(clientsocket, AddrInfo->ai_addr, AddrInfo->ai_addrlen); freeaddrinfo(addrinfo); 42

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

Подробнее

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

Подробнее

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

Подробнее

Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected]

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

Подробнее

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

Подробнее

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

Подробнее

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

Подробнее

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Подробнее

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

Подробнее

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(...)

Подробнее

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

Подробнее

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

Подробнее

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Подробнее

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

Подробнее

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

Подробнее

rsystem Maximiliano Marchesi [email protected]

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

Подробнее

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

Подробнее

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

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

Controllo Winsock di Visual Basic

Controllo Winsock di Visual Basic Controllo Winsock di Visual Basic Il controllo Winsock, non visibile all'utente, consente di accedere ai servizi di rete TCP e UDP. Per creare applicazioni client o server non è necessario conoscere in

Подробнее

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

Подробнее

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Подробнее

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Подробнее

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci CORSO DI RETI SSIS Lezione n.2. 2 Novembre 2005 Laura Ricci IL DOMAIN NAME SYSTEM (DNS) Indirizzi IP poco adatti per essere memorizzati da utenti umani è prevista la possibiltà di associare nomi simbolici

Подробнее

Interprocess Communications - II. Franco Maria Nardini

Interprocess Communications - II. Franco Maria Nardini Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono

Подробнее

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

Подробнее

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 [email protected] Orario di ricevimento: mercoledì ore 10-12

Подробнее

Interazione (TCP) Client-Server con le socket

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

Подробнее

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local

Подробнее

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

Подробнее

Reti di Telecomunicazione Lezione 6

Reti di Telecomunicazione Lezione 6 Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica [email protected] Lo strato di applicazione protocolli Programma della lezione Applicazioni di rete client - server

Подробнее

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 [email protected] http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in

Подробнее

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo

Подробнее

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) Esercizi PARTE 1 Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) When you make a phone call, it s usually the callee that answers with hello. What changes to our example client and server would

Подробнее

Inizializzazione degli Host. BOOTP e DHCP

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

Подробнее

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica [email protected] Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Подробнее

Protocolli applicativi: FTP

Protocolli applicativi: FTP Protocolli applicativi: FTP FTP: File Transfer Protocol. Implementa un meccanismo per il trasferimento di file tra due host. Prevede l accesso interattivo al file system remoto; Prevede un autenticazione

Подробнее

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

Подробнее

Networking. Mauro Migliardi Ph. D.

Networking. Mauro Migliardi Ph. D. Software Architectures Networking Mauro Migliardi Ph. D. A word of wisdom The word networking strikes fear in the hearts of many programmers. Fear not! Using the networking capabilities provided in the

Подробнее

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à

Подробнее

Gestione degli indirizzi

Gestione degli indirizzi Politecnico di Milano Facoltà di Ingegneria dell Informazione Gestione degli indirizzi -Address Resolution Protocol (ARP) -Reverse Address Resolution Protocol (RARP) -Dynamic Host Configuration Protocol

Подробнее

API e socket per lo sviluppo di applicazioni Web Based

API e socket per lo sviluppo di applicazioni Web Based API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione

Подробнее

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

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

Подробнее

Esercitazione [7] Client/Server con Socket

Esercitazione [7] Client/Server con Socket Esercitazione [7] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Federico Lombardi - [email protected] Sistemi di Calcolo - Secondo

Подробнее

Socket API per il Multicast

Socket API per il Multicast Socket API per il Multicast Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/

Подробнее

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena [email protected]

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena [email protected] POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Подробнее

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

Подробнее

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Esercitazione. Formato di compitini e compiti: domande ed esercizi closed book G. Ferrari - Reti di calcolatori. Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:

Подробнее

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Подробнее

Altri tipi di connessione

Altri tipi di connessione Altri tipi di connessione Francesca Martelli [email protected] Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo

Подробнее

Gestione degli indirizzi

Gestione degli indirizzi Politecnico di Milano Advanced Network Technologies Laboratory Gestione degli indirizzi - Address Resolution Protocol (ARP) - Reverse Address Resolution Protocol (RARP) - Dynamic Host Configuration Protocol

Подробнее

IPC System V. Code di messaggi

IPC System V. Code di messaggi IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile

Подробнее

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Подробнее

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 [email protected] http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

Подробнее

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,

Подробнее

il trasferimento di file

il trasferimento di file il trasferimento di file g.di battista e m.patrignani nota di copyright questo insieme di slides è protetto dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Подробнее

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori I Roberto Canonico ([email protected]) Giorgio Ventre ([email protected]) Il livello rete in Internet Il protocollo

Подробнее

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine. ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione

Подробнее

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Подробнее

API Socket di Berkeley

API Socket di Berkeley Laboratorio Reti di Calcolatori (A.A. 2008-2009) Programmazione di rete ed interfaccia API socket di Berkeley Delfina Malandrino [email protected] http://www.dia.unisa.it/professori/delmal/ API Socket

Подробнее

Esercizio 2. Client e server comunicano attraverso socket TCP

Esercizio 2. Client e server comunicano attraverso socket TCP Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si

Подробнее

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 [email protected]

Подробнее

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

Подробнее

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 200, ore 1.00 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome: Nome:

Подробнее

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento I protocolli del livello di applicazione Porte Nelle reti di calcolatori, le porte (traduzione impropria del termine port inglese, che in realtà significa porto) sono lo strumento utilizzato per permettere

Подробнее

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls Università degli Studi di Pisa Dipartimento di Informatica NAT & Firewalls 1 NAT(NETWORK ADDRESS TRANSLATION) MOTIVAZIONI NAT(Network Address Translation) = Tecnica di filtraggio di pacchetti IP con sostituzione

Подробнее

Sistemi Operativi: Programmazione di Sistema

Sistemi Operativi: Programmazione di Sistema Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2011/2012 Prof. Luca Ferrari e-mail: [email protected] telefono: 055 4237454

Подробнее

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Подробнее

Maschere di sottorete a lunghezza variabile

Maschere di sottorete a lunghezza variabile Sottoreti Il CIDR (Classless Inter-Domain Routing) è un nuovo schema di indirizzamento introdotto nel 1993 per sostituire lo schema classful secondo il quale tutti gli indirizzi IP appartengono ad una

Подробнее

Il routing in Internet Exterior Gateway Protocols

Il routing in Internet Exterior Gateway Protocols Il routing in Internet Exterior Gateway Protocols A.A. 2005/2006 Walter Cerroni Exterior Gateway Protocols I protocolli di tipo EGP sono diversi da quelli di tipo IGP All interno di un AS si persegue l

Подробнее

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: [email protected] Networking NAT 1 Sommario L indirizzamento privato e pubblico I meccanismi di address

Подробнее

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Подробнее

P2-11: BOOTP e DHCP (Capitolo 23)

P2-11: BOOTP e DHCP (Capitolo 23) Autunno 2002 Prof. Roberto De Prisco -11: BOOTP e DHCP (Capitolo 23) Università degli studi di Salerno Laurea e Diploma in Informatica Indirizzi IP dinamici 11.2 Un indirizzo IP statico è assegnato ad

Подробнее

Creare connessioni cifrate con stunnel

Creare connessioni cifrate con stunnel ICT Security n. 24, Giugno 2004 p. 1 di 5 Creare connessioni cifrate con stunnel Capita, e purtroppo anche frequentemente, di dover offrire servizi molto insicuri, utilizzando ad esempio protocolli che

Подробнее

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica [email protected] Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Подробнее

Progettare un Firewall

Progettare un Firewall Progettare un Firewall Danilo Demarchi [email protected] GLUG Cuneo Corso Sicurezza 2006 Concetti introduttivi Come pensare un Firewall Argomenti trattati I Gli strumenti del Firewall Gli strumenti

Подробнее