Elementi di programmazione con interfaccia Socket
|
|
|
- Raimondo Boni
- 10 anni fa
- Просмотров:
Транскрипт
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 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 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
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 [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 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 Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
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 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
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 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 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. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
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 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 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]
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 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+...
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
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
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. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
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 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 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.
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 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 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 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 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 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 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 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 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
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 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 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
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 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 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
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.
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 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità
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 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
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 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 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 [email protected] POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo
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" 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
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 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
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 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 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
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
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 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 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.
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 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
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 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
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 ( 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 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
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 1 NAT(NETWORK ADDRESS TRANSLATION) MOTIVAZIONI NAT(Network Address Translation) = Tecnica di filtraggio di pacchetti IP con sostituzione
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 È 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
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 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
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) 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)
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
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 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 Danilo Demarchi [email protected] GLUG Cuneo Corso Sicurezza 2006 Concetti introduttivi Come pensare un Firewall Argomenti trattati I Gli strumenti del Firewall Gli strumenti
