Una persona, che chiameremo Bob, connette il proprio laptop ad uno switch ethernet e scarica una pagina web, www.example.org. Questa richiesta apparentemente semplice sottintende moltissime cose e sarà quello che andremo ad analizzare senza scendere troppo nei dettagli ma cercando di non trascurare almeno i passaggi importanti.
Si comincia: DHCP, UDP, IP e Ethernet
Supponiamo che Bob accenda il suo laptop e lo colleghi a un cavo Ethernet connesso ad uno switch Ethernet che a sua volta è connesso al router come si vede in figura
Il router è connesso a un ISP che fornisce anche il servizio DNS. Assumiamo che il server DHCP sia eseguito nel router, come avviene spesso.
Quando Bob connette il suo laptop alla rete, non può fare niente, nemmeno scaricare una pagina web, senza un indirizzo IP. Quindi la prima azione riguardante la rete intrapresa dal laptop di Bob è quella di eseguire il protocollo DHCP per ottenere un indirizzo IP, insieme ad altre informazioni, dal server DHCP locale. I passaggi per ottenerlo sarebbero quattro ma consideriamo per semplicità solo i due essenziali.
Il sistema operativo del laptop di Bob crea un messaggio DHCP request e inserisce questo messaggio in un segmento UDP con porta di destinazione 67 (server DHCP) e porta sorgente 68 (client DHCP). Il segmento UDP viene quindi inserito all’interno di un datagramma IP con indirizzo IP di destinazione broadcast (255.255.255.255) e indirizzo IP sorgente 0.0.0.0, in quanto il laptop di Bob non ha ancora un indirizzo IP.
Il datagramma IP contenente il messaggio di richiesta DHCP è quindi posto in un frame Ethernet. Il frame Ethernet ha indirizzo MAC di destinazione FF:FF:FF:FF:FF:FF in modo che il frame venga inviato in broadcast a tutti i dispositivi connessi allo switch, tra i quali si spera ci sia un server DHCP; l’indirizzo MAC della sorgente del frame è quello del laptop di Bob, 00:16:D3:23:68:8A.
Il frame Ethernet broadcast contenente la richiesta DHCP è il primo frame inviato dal laptop di Bob allo switch Ethernet. Lo switch invia in broadcast il frame in entrata a tutte le porte in uscita, compresa la porta che lo connette al router.
Il router riceve il frame broadcast Ethernet che contiene la richiesta DHCP sulla sua interfaccia con indirizzo MAC 00:22:6B:45:1F:1B e il datagramma IP è estratto dal frame Ethernet. L’indirizzo IP di destinazione del datagramma broadcast indica che tale datagramma IP dovrebbe essere elaborato dai protocolli di livello superiore su questo nodo; quindi sul payload del datagramma (un segmento UDP) viene effettuato un demultiplexing verso UDP e il messaggio di richiesta DHCP viene estratto dal segmento UDP. Ora il server DHCP ha il messaggio di richiesta DHCP.
Supponiamo ora che il server DHCP in esecuzione sul router possa allocare in- dirizzi IP nel blocco indirizzi privato 192.168.1.0/24. Supponiamo che il server DHCP allochi l’indirizzo 192.168.1.2 al laptop di Bob. Il server DHCP crea un messaggio DHCP ACK contenente tale indirizzo IP, insieme all’indirizzo IP del server DNS (192.168.1.1), l’indirizzo IP del gateway di default che corrisponde al router stesso (192.168.1.1) e il blocco della sottorete (192.168.1.0/24 o equivalentemente la maschera di rete 255.255.255.0). Il messaggio DHCP è posto all’interno di un segmento UDP inserito in un datagramma IP a sua volta posto in un frame Ethernet. Il frame Ethernet ha come indirizzo MAC sorgente quello dell’interfaccia del router sulla rete domestica (00:22:6B:45:1F:1B) e come indirizzo MAC di destinazione quello del laptob di Bob (00:16:D3:23:68:8A).
Il frame Ethernet contenente il messaggio DHCP ACK è inviato (in unicast) dal router allo switch. Lo switch, poiché è in grado di auto-apprendere e ha precedentemente ricevuto dal laptop di Bob un frame Ethernet contenente la richiesta DHCP, sa di dover inoltrare un frame indirizzato a 00:16:D3:23:68:8A solo alla porta di uscita verso il laptop di Bob.
Il laptop di Bob riceve il frame Ethernet contenente il messaggio DHCP ACK, estrae dal frame Ethernet il datagramma IP, estrae dal datagramma IP il segmento UDP ed estrae dal segmento UDP il messaggio DHCP ACK. Il client DHCP di Bob memorizza il suo indirizzo IP e quello del server DNS. Inoltre installa l’indirizzo del gateway di default nella sua tabella di inoltro. Il laptop di Bob invierà tutti i datagrammi il cui indirizzo di destinazione è all’esterno della sua sottorete 192.168.1.0/24 al gateway di default.
Questo è quello che verrebbe visualizzato utilizzando la shell di linux dove tra le altre informazioni si vedono proprio i parametri di cui abbiamo parlato
bob@laptop:~$ ip route show
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
bob@laptop:~$ ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:D3:23:68:8A brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
...............
A questo punto, il laptop di Bob ha inizializzato le sue componenti di rete ed è pronto a iniziare a elaborare la lettura della pagina web.
Ma siamo soltanto all’inizio…