Socket TCP. seconda parte



Documenti analoghi
Socket TCP. prima parte

Esempio 1: stampa locale di file remoto

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

I Socket. Laboratorio Software M. Grotto R. Farina

Cenni di programmazione distribuita in C++ Mauro Piccolo

rsystem Maximiliano Marchesi

Esercizio 2. Client e server comunicano attraverso socket TCP

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

Controllo Winsock di Visual Basic

Introduzione alle applicazioni di rete

Esercitazione [6] Client/Server con Socket

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

IPC System V. Code di messaggi

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

Interprocess Communications - II. Franco Maria Nardini

Paradigma client-server

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

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

Interazione con il DNS Conversioni di Nomi ed Indirizzi

Corso di Reti di Calcolatori

Programmazione dei socket con TCP #2

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

Corso di recupero di sistemi Lezione 8

Guida all' uso dei sockets nella programmazione in C

Corso di Reti di Calcolatori. Datagrammi

Laboratorio di Programmazione in Rete

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

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

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Inizializzazione degli Host. BOOTP e DHCP

Introduzione al Dns. Loredana Pillitteri. Semplificazione della gestione e delega amministrativa Pisa - CNR - ISTI dicembre 2003

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

TCP/IP: INDIRIZZI IP SIMBOLICI

appunti delle lezioni Architetture client/server: applicazioni client

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

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

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

Creare una applicazione Winsock di base

Laboratorio di Networking Operating Systems. Lezione 2 Principali strumenti di diagnostica

Zoo 5. Robert McNeel & Associates Seattle Barcelona Miami Seoul Taipei Tokyo

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

INTERNET DOMAIN SOCKETS (Cap.59)

P2-11: BOOTP e DHCP (Capitolo 23)

Dal protocollo IP ai livelli superiori

DNS-Tunneling. Reference to. Ettore di Giacinto Luca Montunato

Reti Informatiche. dott. Andrea Mazzini

Interazione (TCP) Client-Server con le socket

Modello client-server

IPC Inter Process Communication

Esercitazione [7] Client/Server con Socket

Una semplice applicazione client/server 1

I/O su Socket TCP: read()

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Agent, porte, connettività e reti L agent di Kaseya utilizza la porta 5721 per comunicare con il server, ma che tipo di porta è?...

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

RETI E SISTEMI INFORMATIVI Domain Name System. Prof. Andrea Borghesan

ARP (Address Resolution Protocol)

Introduzione alla programmazione in C

unsigned long inet_addr(cp) char *cp;

Abilitare la connettività per 3PAR Storage

Arduino Quick Ethernet library Reference

OSOR. Applicazioni di Rete

Laboratorio di Reti Esercitazione N 2-DNS Gruppo 9. Laboratorio di Reti Relazione N 2. Mattia Vettorato Alberto Mesin

Protocolli applicativi: FTP

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

PROTOCOLLI APPLICATIVI PER INTERNET

Reti (già Reti di Calcolatori )

Sistemi Operativi: Programmazione di Sistema

Architettura Client-Server

Studi di Settore. Nota Operativa 22/4/2013

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Transcript:

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(...) connect(i2) socket(...) bind(i2) listen(...) accept(...) Marco Faella 2

Comandi utili: netstat netstat [ t] [ all] [ p] [ n] elenca tutti i socket di rete del sistema (non riguarda i socket locali) t mostra solo i socket TCP, cioè quelli con famiglia=pf_inet e tipo=sock_stream all (oppure a ) mostra anche i socket in ascolto p specifica il pid del processo che ha creato ciascun socket n mostra gli indirizzi e le porte in formato numerico (invece di simbolico) ad es., netstat t a p n mostra tutti i socket TCP aperti, indicando il PID del processo corrispondente e mostrando gli indirizzi in formato numerico Marco Faella 3

Comandi utili: netstat netstat t a p Proto Recv Q Send Q Local Address Foreign Address State PID/Program name tcp 0 0 *:sunrpc *:* LISTEN 6519/portmap tcp 0 0 *:ipp *:* LISTEN 6677/cupsd tcp 0 0 localhost:smtp *:* LISTEN 6612/master tcp 0 0 *:ssh *:* LISTEN 6873/sshd tcp 0 0 pcfaella.na:44619 alfa.na.infn.it:ssh ESTABLISHED 17378/ssh Marco Faella 4

Comandi utili: netstat netstat t a p indirizzo (INADDR_ANY) porta (111) Proto Recv Q Send Q Local Address Foreign Address State PID/Program name tcp 0 0 *:sunrpc *:* LISTEN 6519/portmap tcp 0 0 *:ipp *:* LISTEN 6677/cupsd tcp 0 0 localhost:smtp *:* LISTEN 6612/master tcp 0 0 *:ssh *:* LISTEN 6873/sshd tcp 0 0 pcfaella.na:44619 alfa.na.infn.it:ssh ESTABLISHED 17378/ssh porta effimera client ssh server ssh Marco Faella 5

Comandi utili: telnet telnet <indirizzo> <porta> crea un socket e lo collega all'indirizzo remoto dato esempio: telnet www.unina.it 80 si mette in comunicazione con il server http dell'università quello che si digita da terminale viene mandato sul socket quello che proviene dal socket viene stampato su stdout telnet può quindi fungere da client generico Marco Faella 6

Altri comandi utili /sbin/ifconfig mostra l'indirizzo IP della macchina corrente nslookup <nome di dominio> fornisce l'indirizzo IP di un host del quale conosciamo il nome esempio: nslookup www.unina.it Marco Faella 7

Server concorrenti Per gestire più client contemporaneamente, un server può generare un nuovo figlio per ogni nuova connessione Il server esegue una fork dopo ogni accept il padre torna subito ad eseguire una nuova accept il figlio gestisce la connessione e poi termina In alternativa, si possono usare i thread Marco Faella 8

Schema di un server concorrente socket(...); bind(...); listen(...); while (1) { fd2 = accept(fd1, (struct sockaddr *)NULL, NULL); } if ( (pid = fork()) < 0 ) { perror( fork ); exit(1); } else if (pid == 0) { // processo figlio close(fd1); // al figlio non serve fd1 // gestisce la connessione usando fd2... exit(0); // poi il figlio termina } // il processo padre chiude fd2 e ripete il ciclo close(fd2); Marco Faella 9

Nomi di dominio Ad un host può venir assegnato un nome di dominio (domain name), come www.unina.it Il servizio di rete chiamato DNS (Domain Name Service) converte i nomi di dominio in indirizzi IP www.unina.it 143.225.5.3 questa conversione prende il nome di risoluzione del nome, dall'inglese domain name resolution Dalla shell, il comando nslookup esegue la conversione nslookup <nome> esempio: nslookup www.unina.it Marco Faella 10

Nomi di dominio struct hostent *gethostbyname(const char *nome); struct hostent { char *h_name; nome canonico dell'host char **h_aliases; lista di alias int h_addrtype; famiglia dell'indirizzo (AF_INET) int h_length; lunghezza dell'indirizzo (4) char **h_addr_list; lista di indirizzi } Restituisce l'indirizzo IP (oltre ad altre informazioni) corrispondente al nome di dominio dato L'indirizzo si trova in h_addr_list[0], già in network order Un nome può corrispondere a più indirizzi h_addr_list[0], h_addr_list[1],... Marco Faella 11

Nomi di dominio Struttura hostent [Stevens] struct sockaddr_in indirizzo; struct hostent *p = gethostbyname( www.unina.it ); if (!p) herror( gethostbyname ), exit(1); indirizzo.sin_addr.s_addr = *(uint32_t *)(p >h_addr_list[0]); Marco Faella 12

Nomi di dominio Restituisce NULL in caso di errore La struttura con il risultato viene riutilizzata ad ogni nuova chiamata! Quindi, gethostbyname non è thread safe C'è una versione thread safe chiamata gethostbyname_r Accetta anche un indirizzo in formato dotted Quindi, rimpiazza anche inet_aton Marco Faella 13

Stampare un indirizzo IP Partiamo da un indirizzo IP in network order, come quello ottenuto da accept char *inet_ntoa(struct in_addr in); Converte l'indirizzo in una stringa in formato dotted La stringa viene sovrascritta da ogni nuova chiamata inet_ntoa non è thread safe Marco Faella 14

Informazioni utili Indirizzo server Centri Comuni (Infserv64) 143.225.178.5 Indirizzo server Biologia (Infserv64bio) 143.225.117.252 Per trasferire file da un server a un altro comando scp (secure copy) Marco Faella 15

Informazioni utili Dimensione dei tipi base Pentium AMD64 void * 4 8 int 4 4 long 4 8 short 2 2 Marco Faella 16

Esercizio 1 Modificare il server dell'esercizio 1 dei socket TCP, in modo che sia concorrente Modificare il client in modo che accetti come indirizzo IP del server anche un nome di dominio esempi:./client www.unina.it 5510./client localhost 5510./client 143.225.5.3 5510 Marco Faella 17