Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e...

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

Transcript of Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e...

Page 1: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

Capitolo 2 - parte 3

Corso Reti ed ApplicazioniMauro Campanella

Page 2: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 2

Agenda

- Domain Name Sytem (DNS)- Le socket BSD per Internet

Page 3: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 3

DNS: Domain Name System

I nodi che utilizzano il protocollo IP versione 4 hannocome indirizzo un numero intero di 32 bit, generalmentescritto (per la versione 4) nella forma decimale puntata

111.222.333.444

Per IP versione 6 l’indirizzo è di ben 16 Byte ed è scrittocome sequenza di gruppi di quattro nibble esadecimali:

8000:0007:6000:0005:CAB4:EFFE:0002:0001

L’associazione [ nodo indirizzo numerico ] valeanche per altri protocolli di rete (Appletalk, DECnet, SNA…)

Page 4: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 4

Numeri o Nomi ?

??

!!!!!!192.168.7.2 = www.site.firm.cc192.168.7.4 = mail.site.firm.cc

E’ quindi fondamentale per gliesseri umani associare ad ogniindirizzo un nome univoco chene permetta una facileidentificazione e che abbia unsignificato che il numero noncontiene.

Page 5: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 5

DNS: Domain Name System

Dopo una prima fase in cui la corrispondenza era fatta amano, su ogni macchina, con un file chiamato “hosts” si èprogettato un sistema più automatico.

Il DNS (RFC 1034 e 1035) è

- un schema di nomi gerarchico che si appoggia su un di un database distribuito- un protocollo dello strato di applicazione

che permette ai nodi nella rete di risolvere (tradurre) nomiin indirizzi e viceversa

Il DNS è un servizio vitale per Internet (core function).

Page 6: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 6

DNS name servers

Ogni server è responsabilesolo di una parte deldatabase.

Si crea una strutturagerarchica di delegazionedella responsabilità ditraduzione corrispondenteallo schema di nomi scelto.

Si utilizza la ridondanza edil caching.

Perché non un databasecentralizzato:- singolo punto di fallimento- alto volume di traffico- manutenzione remota

Non permetterebbe discalare a dimensionimondiali.

Page 7: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 7

DNS: la gerarchia

La struttura gerarchica è ad albero, con la restrizione chesia libera da loop.La radice dell’albero (root) indicata col il “.” (punto) è presacome punto più alto della gerarchia e da lì si procede con lacreazione di “domini” per ramificazione.Il nome si legge, gerarchicamente, da destra a sinistra ed èdel tipo:

nodo.sottodominio.dominio.country.

Per esempio www.mi.infn.it.

Page 8: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 8

DNS: i domini

Nella scelta “semantica” della struttura di nomi si è deciso diseguire un misto di scelta geografica e per ente “a strati”.Ogni “zona” precisa sempre di più il luogo o l’ente fino adarrivare all’ultimo che corrisponde al nodo.

- La radice è il “.” e corrisponde ai “Root Name Server”- seguono i domini corrispondenti ai vari paesi ed a pari livello i domini “generici” (p.e. biz, info) e quelli USA originari: gov(ernament), mil(itary), edu(cation), com(mercial), int(ernational), org(anisation), net(work)- la zona seguente corrisponde alle varie entità (p.e. apple) o sotto domini del paese (p.e. “co” per commercial)

Page 9: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 9

DNS: la gerarchia dei nomi

.

it

uninsubria

co

www

root

1o

2o

3o

I nomi si considerano spesso apparenenti a “livelli”.Il 1o livello è chiamato anche “Top Level Domain” o TLD.I nomi dei paesi (ccTLD - country code TLD) rispettano ISO 3166.

Page 10: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 10

DNS: Root NS

b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA

e NASA Mt View, CAf Internet Software C. Palo Alto, CA

i NORDUnet Stockholm

k RIPE London

m WIDE Tokyo

a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA

13 Root NS a livello mondiale (lettere da A ad M), ma permotivi storici sbilanciati geograficamente.

Page 11: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 11

I DNS server

Per ogni zona nell’albero dei nomi (p.e. uninsubria oppureit), esiste un name server che è autoritativo per essa, dettoprimario. Ad esso si possono affiancare uno o più nameserver secondari che offrono una copia esatta delleinformazioni, copiata periodicamente dal primario (perridondanza e bilanciamento del carico).

Entrambi devono essere registrati ufficialmente nel nameserver di al livello superiore, che li delega alla risoluzione.

Un calcolatore che svolge la funzione di Name Server puòessere autoritativo per certi domini e solo secondario peraltri. La scelta della mappatura domini-nameserver non èdefinita dal protocollo, ma decisa dagli esseri umani.

Page 12: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 12

I DNS server

In questo modo si ottiene un sistema altamentedistribuito il cui aggiornamento è a carico deiresponsabili locali.I files di configurazione sono in ASCII.

Sia i sistemi client che i server durante il funzionamentoutilizzano una cache per ottimizzare il traffico ed il tempodi risposta. Dopo aver imparato una risoluzione latengono in cache locale per un tempo massimo fissato.Poi è necessario rinnovare l’informazione.

Il protocollo di trasporto delle richieste e delle risposte trai vari Server ed i client è normalmente UDP.

Page 13: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 13

clienteele.infn.it www.disney.com

root name server

NS autoritativodns.disney.com

NS localedns.infn.it

1

2

4

5

8

10

Ricorsività nella risoluzione

In questo modo, se ilserver non conoscel’informazione, si fa caricodella risoluzioneprocedendo nell’albero.Alla fine la risposta è dataal cliente.I name server dovrebberoessere autoritativi.

NS autoritativoper .com

3

6

79

NS autoritativoper .it

Page 14: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 14

DNS: metodo iterativo

metodo ricorsivocarico eccessivo suiname server di livello piùalto (vicini alla radice)

metodo iterativoil name server di livellosuperiore “ridirige” larichiesta al server adatto

clienteele.infn.it

www.disney.com

root name server

NS localedns.infn.it

1

23

4

5 6

NS autoritativodns.disney.com

NS intermediodns.com

7

8

richiesta ridiretta

Page 15: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 15

I record principali del DNS

I server DNS svolgono sia la risoluzione diretta (da nome anumero) che quella inversa (da numero a nome). Tipicamentei due files di risoluzione sono distinti.

I tipi di “Resource Record” principali nei files sono:Relativi ad una particolare host: A (Address) l’indirizzo numerico associato al nome obbligatorio HINFO (Hardware Info) fornisce informazioni sull’host MX (Mailer eXchage) il nodo che smista la posta per l’host TXT testo non interpretato PTR (Pointer) per la traduzione numero in nomeGenerali: SOA (Source of Authority) parametri del name server stesso CNAME (Canonical Name) crea un alias

Page 16: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 16

DNS formato dei messaggi - l’header

Sia i messaggi di richiesta che di risposta hanno la stessasintassi

Nell’header del messaggio:un Numero di 16 bit diidentificazione, copiatonella rispostaflags:- richiesta o risposta- desiderata ricorsione- ricorsione disponibile- la risposta è autoritativa

Page 17: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 17

DNS formato dei messaggi - campo dati

Nome, campi di tipo per una richiesta

RR in risposta aduna richiesta

records per iserver autoritativi

informazioni aggiuntiveche possono essere utili

Page 18: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 18

Esempio file soa per sample.org@ IN SOA www.sample.org. root.pc1.sample.org. ( 2002103101 ; serial 86400 ; refresh (1d) 7200 ; retry (2h) 604800 ; expire (1w) 86400 ) ; minimum (1d); NS Records@ IN NS pc1.sample.org. IN NS dns.infn.it; MX Records@ IN MX 5 pc2.sample.org.; A Recordslocalhost IN A 127.0.0.1 IN HINFO LOOPBACK-HOST LOOPBACK; Class 192.169.1.0 - assigned to sample.orgpc1 IN A 192.169.1.1pc2 IN A 192.169.1.2; CNAME Recordsdns IN CNAME pc1.sample.org.www IN CNAME pc1.sample.org.mail IN CNAME pc2.sample.org.

Page 19: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 19

Esempio file rev per sample.org

@ IN SOA pc1.sample.org. root.pc1.sample.org. ( 2002103101 ; serial 86400 ; refresh (1d) 7200 ; retry (2h) 604800 ; expire (1w) 86400 ) ; minimum (1d)

;; Authoritative name server for this domain; IN NS pc1.sample.org. IN NS dns.infn.it.;$ORIGIN 1.169.192.in-addr.arpa.1 IN PTR pc1.sample.org.2 IN PTR pc2.sample.org.

Comandi per la consultazione del DNS da Linux sono dig ed host (nslookup).

Page 20: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 20

Agenda

- Domain Name Sytem (DNS)- Le Socket BSD per Internet

Page 21: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 21

L’interfaccia dello strato di trasporto

Lo strato di trasporto deve offrire allo strato di applicazioneuna serie di funzioni primitive per accedere ai suoi servizi.Queste funzioni (dette anche API, Application ProgrammingInterface) sono normalmente fornite dal sistema operativo.

Le Socket BSD sono l’insieme di primitive di trasporto piùutilizzate, sono state create per la versione originale diUnix, ed introdotte nella versione 4.1 BSD.

Tutti gli altri sistemi operativi hanno adottato le socket,creando una “libreria delle socket” per la rete che offrisseesattamente le stesse chiamate delle socket BSD rendendole socket lo standard di fatto.

Page 22: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 22

Unix I/O

In Unix ogni operazione di I/O viene fatta su un “file”attraverso il descrittore di un file, cioè un numero interoche identifica il file .Il file può corrispondere ad una connessione di rete, unaFIFO, una “pipe”, un terminale, un file su disco o altro.

Il modello base per operazioni di I/O in Unix è composto daquattro operazioni semplici: open, read, write, close.

La chiamata “open” restituisce il descrittore del file cheviene usato un ognuna delle chiamate successive di read,write e close.

Page 23: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 23

Socket

Le socket vengono esplicitamentecreate e distrutte dalle applicazioni(non esistono prima).

Forniscono su rete due tipifondamentali di trasporto :- affidabile, attraverso un byte stream (TCP)- inaffidabile, a datagrammi (UDP)

Una “porta”(identificata da un

descrittore)creata

dall’applicazione,controllata

da Sistema Operativoin cui un processo

a livello applicazione puòsia mandareche ricevere

messaggi da/verso un altroprocesso a livello applicativo

socket

processo

TCP oUDP

socket

controllato dallaapplicazione

controllato dalsistema operativo

Page 24: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 24

Primitive delle Socket BSD

Primitiva Descrizione

socket Crea una porta di comunicazione (descrittore)

bind Collega un indirizzo di porta locale alla socket (se non privilegiato la porta deve essere maggiore di 1024)

listen Fornisce disponibilità ad accettare connessioni e ne crea la coda in ingresso

accept Blocca il server in attesa di una connessione in ingresso. All'arrivo nella coda restituisce un descrittore nuovo

connect Apre una connessione remota

send Invia una sequenza di Byte nella socket (affidabile)

sendto Invia un datagramma ad un destinatario Inaffidabile)

recv Riceve una sequenza di byte (affidabile)

recvfrom Riceve un datagramma (inaffidabile)

close Chiude immediatamente, rilasciando il descrittore

Page 25: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 25

Primitive delle Socket BSD

Le funzioni primitive di BSD Unix descritte sono quelleoriginali e le descrizioni si hanno per esempio su Linux con“man nome-primitiva”.Sono utilizzabili con questo nome nel linguaggio “C”.

Java possiede una libreria con un maggior numero diprimitive, che sono combinazioni di quelle base BSD e, comequeste, offre uno strato indipendente dal sistema operativo.La libreria Java è limitata a PF_INET ed a TCP ed UDP.

Gli esempi saranno in Java, ma è utile conoscere le primitiveoriginali.

Page 26: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 26

La primitiva socket()

La funzione restituisce un intero ed ha la seguente sintassi:

socket(int domain, int type, int protocol)

domain = specifica la famiglia di protocolli da usare. P.e.PF_INET per Internet

type = specifica il tipo di trasmissione per esempio: SOCK_STREAM orientata alla connessione SOCK_DGRAM singoli datagrammi inaffidabile

protocol = il numero del protocollo da utilizzare

Page 27: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 27

Domain (Protocol Families)

PF_UNIX,PF_LOCAL Local communicationPF_INET IPv4 Internet protocolsPF_INET6 IPv6 Internet protocolsPF_IPX IPX - Novell protocolsPF_NETLINK Kernel user interface devicePF_X25 ITU-T X.25 / ISO-8208 protocolPF_AX25 Amateur radio AX.25 protocolPF_ATMPVC Access to raw ATM PVCsPF_APPLETALK Appletalk

Ad ogni famiglia di protocolli possono corrispondere piùfamiglie di indirizzamento (Address Families). In praticaper Internet AF_INET è usato con lo stesso significatodi PF_INET

Page 28: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 28

Tipo

SOCK_STREAM Fornisce una trasmissione di flussi di bytebidirezionali, orientate alla connessione, affidabile.

SOCK_DGRAM Supporta datagrammi (messaggi di lunghezzamassima fissata) è inaffidabile e senza connessione)

SOCK_SEQPACKET Fornisce un canale di trasmissione affidabile,bidirezionale, orientato alla connessione, in sequenzaper datagrammi di lunghezza massima fissata

(non disponibile per PF_INET)

SOCK_RAW Fornisce un protocollo di accesso base alla rete

SOCK_RDM Fornisce un trasporto a datagrammi che nongarantisce l’ordine

SOCK_PACKET Fornisce accesso ai pacchetti completi di Header

Page 29: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 29

Protocolli InternetNormalmente esiste un unico protocollo che supporta un particolare tipoall’interno di una famiglia di protocolli.

ip 0 IP # internet protocol, pseudo protocol number

icmp 1 ICMP # internet control message protocoligmp 2 IGMP # internet group management protocolggp 3 GGP # gateway-gateway protocolipencap 4 IP-ENCAP # IP encapsulated in IPtcp 6 TCP # transmission control protocolegp 8 EGP # exterior gateway protocoludp 17 UDP # user datagram protocolipv6 41 IPv6 # IPv6rsvp 46 RSVP # Resource ReSerVation Protocolgre 47 GRE # Generic Routing Encapsulationospf 89 OSPFIGP # Open Shortest Path First IGPpim 103 PIM # Protocol Independent Multicastisis 124 ISIS # ISIS over IPv4

http://www.iana.org/assignments/protocol-numbers

Page 30: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 30

Programmazione Socket con TCP

ServerIl processo server deve essereattivato per primo, aprendouna socket su una porta erimanendo in attesa

Clientcrea una socket locale especifica TCP come trasportospecifica l’indirizzo IP e laporta del server remotoall’atto della connessione vieneutilizzato TCP

Il server, quando riceve larichiesta di connessione, creauna nuova socket- più client contemporanei possono parlare con il server- la distinzione è attraverso l’indirizzo IP e la porta del client

Page 31: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 31

Programmazione Socket con TCP

Una applicazione client-server:1) client legge una linea dallo

standard input (lo streaminFromUser) e la invia alserver attraverso le socket(stream outToServer)

2) il server legge la linea dallasocket

3) server convere la linea inmaiuscolo e la ritorna

4) il client legge dalla socket estampa la linea modificatasocket (inFromServer)

ou

tTo

Ser

ver

inFr

om

Ser

ver

processonel client

tastiera monitor

inputstream

inFr

om

Use

r

verso la rete dalla rete

inputstream

outputstream

client socket

Page 32: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 32

Referenze base

Programmazione Socket in “C”:

Spencer’s Socket Site (in inglese - anche C++, Java, Win)http://www.lowtek.com/sockets/

Unix Socket Programming FAQ (in inglese)http://www.developerweb.net/sock-faq

Un capitolo dal libro Gapilhttp://www.lilik.it/~mirko/gapil/gapilch15.html#gapilse45.html

Unix Network Programming - W. Richard Stevens(Prentice-Hall 1990, ISBN 0-13-949876-1

Page 33: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 33

Esempio scanport.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>

void scan_connect( char *host, int p_start, int p_end ) { struct sockaddr_in sa; int s, port, check; int connection; port = p_start; while( port <= p_end ) { s = socket( AF_INET, SOCK_STREAM, 0 ); if( s != -1 ) { memset(&sa, 0, sizeof( sa ) ); sa.sin_family = AF_INET; sa.sin_port = htons( port ); check = inet_pton(AF_INET, host, &sa.sin_addr); if ( check <= 0 ) { printf("Formato indirizzo IP errato\n"); exit(-1);} connection = connect( s, (struct sockaddr *) &sa, sizeof( sa )); if( connection == 0 ) printf( "Connessione accettata sulla porta TCP %d\n", port ); } else perror( "socket()" ); c lose( s ); ++port; } }

Page 34: Corso Reti ed Applicazioni Mauro Campanellacmp/CorsoReti/slides05/Cap2-3.pdf · Il DNS (RFC 1034 e 1035) è - un schema di nomi gerarchico che si appoggia su un di un database distribuito

M. Campanella Corso Reti ed Applicazioni - Como 2005 Cap 2 - 3 pag. 34

Esempio scanport.c

int main( int argc, char *argv[] ) { int p_start, p_end;

if( argc != 4 ) { printf( "scanport <indirizzo numerico dell'host> <porta iniziale> <porta finale>\n" ); exit (-1); }

p_start=atoi(argv[2]); p_end=atoi(argv[3]);

if ( ( p_start > p_end ) || ( p_start > 65535 ) || (p_end > 65535)) { printf("porta iniziale > porta finale o porta maggiore di 65535\n"); exit(-1); } scan_connect( argv[1], p_start, p_end );

return 0; }

da compilarsi con: gcc scanport.c -o scanport