Anteprima
Vedrai una selezione di 8 pagine su 31
Descrizione del livello applicativo Pag. 1 Descrizione del livello applicativo Pag. 2
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 6
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 11
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 16
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 21
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 26
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Descrizione del livello applicativo Pag. 31
1 su 31
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

PROGRAMMAZIONE SOCKET CON TCP

TCP è più affidabile, e c’è un’apertura di una connessione, quindi prima della

trasmissione dei dati si va a creare un canale logico dedicato tra i due end-

system, quindi di nuovo avremo i socket aperti su client e server, quindi sui

due nodi che comunicano, questo canale logico dedicato tra i due processi si

può creare perché sul server c’è un socket di benvenuto, questo è il socket (la

porta) che è aperto in attesa di ricevere richieste di connessione, lato client

andremo di nuovo a creare un socket usato per la comunicazione, quindi sul

client si crea un socket TCP locale usato dal client per la comunicazione.

All’apertura di questo socket locale vado a specificare l’indirizzo IP del server

e la porta di benvenuto su cui il server sta ascoltando, quindi l’apertura di

questi socket a livello applicativo si traduce a livello trasporto nell’apertura di

una connessione, vuol dire che dal momento in cui il server accetta questa

richiesta di connessione viene fondamentalmente creato un nuovo socket

dedicato a quel client e a quel processo su quel client, quindi se lo stesso

client contatta il server con processi diversi vengono aperti socket diversi

quindi connessioni dedicate diverse per lo stesso client per processi diversi e

questo garantisce l’affidabilità, fondamentalmente abbiamo un canale

dedicato per la comunicazione bidirezionale tra il server-processo sul server e

il client-processo sul client.

Vediamo lo schema che in questo caso è diverso dal precedente:

Sul server ci sarà l’apertura di un socket che è quello di benvenuto, è la porta

80 del web, sulla porta 80 il server è in ascolto e in attesa di richiesta di

connessione, nel momento in cui il server riceve dal client una richiesta di

connessione e nel momento in cui accetta questa richiesta abbiamo che la

serverSocket.accept() ritorna un connection socket, è un socket di

connessione cioè è la porta dedicata a quel client e a quel processo, quindi la

connection socket è quella che poi viene usata per la comunicazione con quel

client, non quella di benvenuto ma quella di connessione.

Vediamo la sorgente python lato client:

Abbiamo la creazione di un socket dicendo stream, quindi apriamo un socket

TCP, con la connect abbiamo che il socket usa una connect per specificare il

nome del server e la porta aperta sul server. Il client socket viene utilizzato

dopo aver aperto la connessione poiché il client butta i dati dentro al socket

senza dover specificare di nuovo l’indirizzo IP e la porta del server

Vediamo lato server:

Creiamo un socket di tipo TCP, assegniamo la porta 12000 e siamo in listen,

quindi siamo in attesa di richieste di connessione. Nel momento in cui

facciamo una accept quindi serverSocket.accept() abbiamo che questa

restituisce un connection socket, questa è quindi la porta di connessione che

andiamo ad utilizzare per ricevere quindi connectionSocket.recv dove

recv=receive, essa sembra simile all’udp ma in questo caso rievere da questa

porta vuol dire essere sicuri di ricevere dati da quel client e da quel processo

su quel client, avremo quindi delle send e delle receive e attraverso quel

socket siamo sicuri che i dati provengono da quel processo su quel client.

ANALISI DEL TRAFFICO DI RETE E WIRESHARK

Ogni macchina all’interno della rete è identificata da un indirizzo, protocolli

diversi possono utilizzare indirizzi diversi, ogni macchina sulla rete ha uno o

più indirizzi, se io voglio comunicare con un’altra macchina all’interno della

rete devo conoscere il suo indirizzo e, tra gli indirizzi più comuni, c’è

l’indirizzo IP e l’indirizzo MAC, quest’ultimo è quello utilizzato al livello 2

quindi al livello datalink mentre l’IP è il tipo di indirizzo che viene utilizzato al

livello internet, ciò vuol dire che il MAC address può essere utilizzato per

indirizzare macchine all’interno della stessa sottorete mentre l’indirizzo IP è

necessario quando si vuole indirizzare una macchina al di fuori della rete

locale, quindi della stessa sottorete. Nonostante per comunicare con una

macchina all’interno della stessa sottorete sia sufficiente il MAC address, in

realtà vengono utilizzati degli indirizzi IP anche all’interno della stessa

sottorete, ci sono quindi degli indirizzi IP definiti privati che sono riservali

all’utilizzo nelle reti locali, quindi dato un IP a caso è possibile determinare se

sia pubblico o privato, privato vuol dire che può essere usato solo all’interno

di una rete locale.

Le applicazioni dell’analisi del traffico sono molte, immaginiamo di lavorare

per un’azienda e c’è un problema con la rete, allora la causa potrebbe essere

che ad esempio è rotto il router oppure potrebbe essere più complicato, per

capire il problema uso gli analizzatori di traffico, quindi strumenti che ci fanno

visualizzare tutto quello che sta accadendo sulla rete, potrebbe anche essere

che siamo sviluppatori e stiamo sviluppando software che deve fare qualcosa

con la rete come mandare dei dati, allora per testare l’applicazione usiamo

l’analizzatore di traffico che ci fa capire se stiamo mandando o ricevendo

qualcosa e come viene costruito il pacchetto che stiamo mandando, se lo

stiamo costruendo nel modo corretto o meno, quindi possiamo fare

debugging sul software, inoltre un’altra applicazione è il reverse engeneering

di protocolli proprietari, infatti non tutti i protocolli sono descritti da uno

standard aperto ma alcuni protocolli sono mantenuti segreti da alcune

compagnie software, quindi quando queste applicazioni diventano

abbastanza comuni c’è l’interesse di permettere lo sviluppo di applicazioni

open source che possano gestire. Altre applicazioni sono legate al mondo

delle performance (ad esempio voglio capire perché la mia rete è lenta) e

della sicurezza (ad esempio voglio capire se una rete è stata infettata da un

malware).

Consideriamo un po' di terminologia:

· Packet Analyzer (o sniffer): analizzatore di traffico

· Packet Capture (o sniffing): l’attività effettuata dallo sniffer

· Network Interface Card (o NIC): quando utilizziamo uno sniffer

dobbiamo decidere su quale scheda di rete far funzionare lo sniffer, ad

esempio se abbiamo un portatile con due schede di rete, una wireless

e l’altra con il cavo, quando utilizziamo wireshark esso ci chiederà su

quale scheda di rete vogliamo avviare la cattura del traffico

· Promiscuous Mode & Monitor Mode: modalità di funzionamento delle

schede di rete

Le schede di rete più comuni sono ethernet (con cavo) e quelle wifi

(wireless), una scheda di rete può funzionare in molte modalità, di

default opera nella modalità normale, se vogliamo fare in modo che la

nostra scheda di rete non scarti i pacchetti che non sono indirizzati a

noi, quindi se vogliamo fare in modo che riesca a intercettare anche i

pacchetti che non sono indirizzati a noi dobbiamo impostare la scheda

di rete in modalità promiscua, a noi questo non interessa oerchè

intercetteremo solo i pacchetti indirizzati alla nostra macchina, anche

perché per intercettare i pacchetti che sono indirizzati ad altre

macchine, impostare la modalità promiscua e basta non è sufficiente,

bisogna effetturare uno step ulteriore, un’altra modalità è la monitor

mode, ess aè relativa solo alle schede di rete wireless, cioè se voglio

intercettare tutto il traffico wireless senza connettermi a un access

point, quindi a nessuna rete wireless, posso impostare la mia scheda di

rete in modalità monitor in questo caso vedo anche pacchetti che

mandano altri.

Ci sono diversi Packet Anakyzer:

· Wireshark

· Tshark (versione command line di Wireshark)

· tcpdump

· Ngrep

Snifferemo solo il traffico indirizzato solo alla nostra macchina, quindi al

nostro indirizzo IP oppure dei pacchetti che vengono inviati a tutte le

macchine della rete, però un sistemista di rete che deve risolvere un

problema sulla rete deve vedere tutti i pacchetti che viaggiano e non solo

quelli indirizzati a se per avere un quadro completo della rete, quindi il

posizionamento dello sniffer, quindi per sniffer intendiamo la macchina su cui

troviamo wireshark etc…, dipende dalla configurazione di rete, possiamo fare

una distinzione in 3 categorie, sono all’interno della rete in cui il dispositivo di

interconnessione è un:

· Sniffing con Hub: siccome l’hub funziona come un ripetitore quindi

inoltra il traffico su tutte le porte, non abbiamo bisogno di alcuna

configurazione particolare, attacchiamo lo sniffer all’hub e

automaticamente vediamo il traffico di tutti, gli hub però sono molto

rari per ora

· Sniffing con Switch: siamo con un dispositivo di interconnessione di

livello 2 in cui il traffico non viene inoltrato su tutte le porte, quindi in

questo caso vedrei solo il traffico indirizzato alla mia macchina, per

vedere il traffico indirizzato a tutte le macchine ci sono molte soluzioni

· la migliore è il port Mirroring, alcuni switch hanno una

configurazione ch e permettono di inoltrare il traffico di una

porta dello switch a una o più porte dello stesso switch. Le porte

sono numerate per poter fare ciò.

· Hubbing Out: isolo la macchina o le macchine che mi

interessano e vado a installare l’hub

· TAP: simile al hubbing out ma non vien eutilizzato un hub ma un

TAP che è ottimizzato per l’analisi del traffico

· ARP cache poisoning: implementare quetsa soluzione può

portare problemi sulla rete, viene implementata solo se le altre

soluzioni sono infattibili oppure se sono un utilizzatore malevolo

della rete e voglio attaccare qualche dispositivo

· Sniffing con Router: rete più complessa, ad esempio rete di un’azienda

medio-grande che ha più router, in questo caso valgono i concetti di

prima: dovrei fare una mappa della rete, segmentarla, quindi

segmento 1 con router 1, segmento 2 con router 2 etc… e una volta

che ho la mappa della rete vado ad analizzare segmento per

segmento, i segmenti sono di solito fatti da switch e ora utilizzo le

tecniche viste con lo switch, quindi vado a farlo segmento per

segmento, è più dispendioso in termini di tempo e può essere più

complicato ma più è grande la rete e più è complesso analizzarla.

WEB E DNS

Il browser Web implementa il lato client che richiede al Web server una

pagina Web. I server Web memorizzano le

Dettagli
Publisher
A.A. 2023-2024
31 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ab502 di informazioni apprese con la frequenza delle lezioni di Reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Massari Luisa.