Reti (già Reti di Calcolatori )

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

Esercitazione [6] Client/Server con Socket

Una semplice applicazione client/server 1

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

L interfaccia socket

Interazione (TCP) Client-Server con le socket

Creare una applicazione Winsock di base

Guida all' uso dei sockets nella programmazione in C

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Cenni di programmazione distribuita in C++ Mauro Piccolo

IPC Inter Process Communication

Lo strato di applicazione in Internet

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.

Socket per TCP: Fondamenti

LABORATORIO di Reti di Calcolatori

Programmazione di applicazioni di rete

Laboratorio di Sistemi Operativi Cognome Nome Mat.

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

I Socket. Laboratorio Software M. Grotto R. Farina

La programmazione di rete

TECN.PROG.SIST.INF. TCP socket in Windows Roberta Gerboni

Paradigma client-server

Introduzione alla programmazione C di socket

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita

Socket TCP. prima parte

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

Capitolo 2: Livello di applicazione

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

Esercitazione Laboratorio di Sistemi Operativi Cognome Nome Mat.

Guida di Beej alla Programmazione di Rete

Elementi di programmazione con interfaccia Socket

programmazione distribuita Introduzione Introduzione alla programmazione distribuita

INTERNET DOMAIN SOCKETS (Cap.59)

I Socket di Berkeley

Applicazione distribuita

Program m azione di Sistem a 6

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva

Ret e i Inf n o f rm r a m t a ich c e Terza esercitazione

rsystem Maximiliano Marchesi

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

Il modello Client/Server. La comunicazione

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&

Laboratorio di Programmazione in Rete

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.

Socket TCP. seconda parte

Inter-process communication: socket

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW

Sockets 1. Concetti basici 2. Domini e tipi di comunicazione 3. Protocolli 4. Socket in sistemi UNIX/Windows

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

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

Programmazione di rete: 1. Architettura di Internet 2. Richiami di TCP/IP 3. Sockets in sistemi UNIX/Windows

Esempio 1: stampa locale di file remoto

Laboratorio di Reti di Calcolatori

Laboratorio di Programmazione in rete

Architettura e servizi Internet

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

Applicazione Client-Server con Server Concorrente Specifiche

Introduzione alle applicazioni di rete

Socket per TCP: Fondamenti

unsigned long inet_addr(cp) char *cp;

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

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

Architetture di rete. 4. Le applicazioni di rete

Le Reti Informatiche

Il livello di Trasporto del TCP/IP

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

Laboratorio di Reti di Calcolatori

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

SISTEMI DI ELABORAZIONE

OSOR. Obiettivi. Cooperazione fra processi. Introduzione alla programmazione distribuita. Processi indipendenti. Processi Cooperanti

Programmazione dei socket di rete in GNU/Linux

Basic Sniffer Tutorial

HTTP adaptation layer per generico protocollo di scambio dati

Laboratorio di Reti di Calcolatori

Struttura interna del sistema operativo Linux

Introduzione allo sniffing

Tecnologie di Sviluppo per il Web

Esercitazione [5] Input/Output su Socket

Telematica II 12. Esercitazione/Laboratorio 4

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

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Modello client-server

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Corso di Reti di Telecomunicazioni. Giovanni Schembra. Trasmissione trame su canale broadcast

Laboratorio di Programmazione in Rete

ALTRI TIPI DI CONNESSIONE

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta

I/O su Socket TCP: read()

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

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime

Una prima applicazione in C per l utilizzo delle socket

Socket API per il Multicast

Reti di Calcolatori:

OSOR. Obiettivi. Cooperazione fra processi. Introduzione alla programmazione distribuita. Processi indipendenti. Processi Cooperanti

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof.

MODELLI ISO/OSI e TCP/IP

Progettazione di Servizi Web e Reti di Calcolatori

Le Opzioni per i Socket

Transcript:

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 a costruire un protocollo di livello applicativo usando le API socket r Introdotte in BSD4.1 UNIX, nel 1981 r Esplicitamente creata, usata, distribuita dalle applicazioni r Paradigma client/server r Due tipi di servizio di trasporto tramite una socket API: v Datagramma inaffidabile (UDP) v Affidabile, orientata ai byte (TCP) v Esistono anche socket per accedere direttamente a IP e anche a Ethernet socket Interfaccia di un host locale, creata dal protocollo applicativo, controllata dal SO (una porta ) in cui il processo di un applicazione può inviare e ricevere messaggi al/dal processo di un altra applicazione Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 2

TCP socket Socket: una porta tra il processo di un applicazione e il protocollo di trasporto end-end (UCP o TCP) Servizio TCP: trasferimento affidabile di byte da un processo all altro, detto anche stream socket (SOCK_STREAM) Controllato dallo spazio utente Controllato dal sistema operativo processo socket TCP con buffer e variabili Internet processo socket TCP con buffer e variabili Controllato dallo spazio utente Controllato dal sistema operativo host o server host o server Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 3

TCP socket Il client deve contattare il server r Il processo server deve essere in corso di esecuzione r Il server deve avere creato una socket (porta) che dà il benvenuto al contatto con il client Il client contatta il server: r Creando una socket TCP r Specificando l indirizzo IP, il numero di porta del processo server r Quando il client crea la socket: il client TCP stabilisce una connessione con il server TCP r Quando viene contattato dal client, il server TCP crea una nuova socket per il processo server per comunicare con il client v consente al server di comunicare con più client v numeri di porta origine usati per distinguere i client TCP fornisce un trasferimento di byte affidabile e ordinato ( pipe ) tra client e server Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 4

Server Creazione del socket Associazione ad un porta Ascolto sulla porta selezionata socket() bind() listen() attende la richiesta di connessione in ingresso accept() legge la richiesta da recv() scrive la risposta a send() Chiusura del socket Interazione client/server: TCP Setup della connessione TCP Client Creazione del socket connesso a hostid, port=x socket() invia la richiesta usando send() legge la risposta da recv() Chiusura del socket Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 5

Esempi di manipolazione socket Client/Server TCP in Linguaggio C Esempi di base Socket Programming viene sviluppato a reti avanzate Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 2-6

Indirizzamento (i) Questa struct permette di manipolare in maniera semplice i Socket Address in stands for Internet sin_family : AF_INET à IPv4; AF_INET6 à IPv6; AF_UNIX à a local file struct sockaddr_in { short int sin_family; // Address family unsigned short int sin_port; // Port number struct in_addr sin_addr; // Internet address unsigned char sin_zero[8]; }; Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 7

Indirizzamento (ii) Esistono diverse funzioni per manipolare gli indirizzi inet_aton("10.12.110.57", &(my_addr.sin_addr)); ina.sin_addr.s_addr = inet_addr("10.12.110.57"); ina.sin_addr.s_addr = INADDR_ANY; struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; my_addr.sin_port = htons(myport); inet_aton("10.12.110.57", &(my_addr.sin_addr)); memset(&(my_addr.sin_zero), '\0', 8); Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 8

Creare un socket Un socket è creato utilizzando la seguente system call: int socket(int domain, int type, int protocol); Dove: Domain: PF_INET Type: SOCK_STREAM or SOCK_DGRAM or SOCK_RAW Protocol: IPPROTO_TCP, o altri protocolli Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 9

Associare una porta Se stiamo implementando un server dobbiamo attendere le nuove connessioni su una specifica porta intbind(intsockfd, struct sockaddr *my_addr, intaddrlen); Dove: Sockfd: file descriptorrestituito dalla funzione socket() my_addr: puntatore ad una struct sockaddr che contiene le informazioni relative al socket address(porta ed indirizzo IP addrlen: deve essere impostato a sizeof(struct sockaddr) Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 10

Ascoltare su una porta Dopo essersi associato su una porta il processo server deve rimanare in attesa di nuove connessioni int listen(int sockfd, int backlog); Dove: Sockfd: socket file descriptor ottenuto da socket() Backlog: numero massimo di connessione che possono essere accettate Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 11

Accettare una connessione (i) Quando qualcuno cerca di connettersi al server sulla porta dove si sta ascoltando, la loro connessione viene messa in cosa in attesa di essere servita Nel momento in cui la connessione viene accettata il sistema operativo crea un nuovo file descriptor Il file descriptor originale restaancora in attesa sulla porta originale Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 12

Accettare una connessione (ii) Sintassi: intaccept(intsockfd, struct sockaddr *addr, socklen_t *addrlen); Dove: Sockfd: file descriptor del socket in ascolto Addr: puntatore ad una struct utilizzata per memorizzare le informazioni sulla connessione in arrivo Addrlen: da impostaa sizeof(struct sockaddr_in) Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 13

Trasmettere dati Sintassi: int send(int sockfd, const void *msg, int len, int flags); Dove: Sockfd: file descriptor relativo al socket da utilizzare per la trasmissione Msg: puntatoreai dati da trasmettere Len: lunghezzadella trasmissione in byte Flags: NON sono i Flag TCP, ma controlli localiper definire il funzionamento (es. consentire l invio solo su rete locale e non su Internet) Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 14

Ricevere dati Sintassi: int recv(int sockfd, void *buf, int len, unsigned int flags); Dove: Sockfd: file descriptor del socket da utilizzare per la ricezione buf: buffer di memoria dove scrivere I dati ricevuti len: dimensionemassima del buffer Flags: da impostare a 0 Reti - locigno@disi.unitn.it - Cenni ai Socket BSD 15