Buongiorno,
Ipotizzando una rete LAN composta da 1 router ed alcuni host PC utilizzati per la navigazione Internet.
Il router non ha porte aperte dall'utente.
Comincia host1, che invia un pacchetto di richiesta al sito www.sito1.it alla porta 80 di quest'ultimo.
Il sito1 risponde con un pacchetto dati: a quale porta invia tale messaggio? Come può il router capire qual è il PC che aveva inviato la richiesta e a cui destinare il pacchetto di risposta?
Grazie
Chi dice al router la porta per la risposta?
Moderatori: MassimoB,
Paolino,
fairyvilje
7 messaggi
• Pagina 1 di 1
1
voti
electrocompa ha scritto:Il sito1 risponde con un pacchetto dati: a quale porta invia tale messaggio?
Alla porta che il router richiede nel pacchetto con la richiesta. È il primo campo proprio all'inizio dell'header.
Come può il router capire qual è il PC che aveva inviato la richiesta e a cui destinare il pacchetto di risposta?
Il router mantiene una tabella delle connessioni aperte.
La richiesta che arriva da host1 avrà queste informazioni nell'header del pacchetto:
- source port = x
- destination port = 80
Il router manda la richiesta al server con queste informazioni
- source port = y
- destination port = 80
Il server risponde con
- source port = 80
- destination port = y
Il router riconosce la porta y che ha lui stesso assegnato a host1 e inoltra il pacchetto alla porta corretta con le informazioni
- source port = 80
- destination port = x
Boiler
0
voti
ma quindi la porta di invio e quella di ascolto di un dispositivo sono le stesse?
host1: source port TX = destination port RX = x ?
router: source port TX = destination port RX = y ?
Pensavo che l'invio fosse fatto su una porta e l'ascolto su una porta diversa.
host1: source port TX = destination port RX = x ?
router: source port TX = destination port RX = y ?
Pensavo che l'invio fosse fatto su una porta e l'ascolto su una porta diversa.
-
electrocompa
91 1 2 8 - Stabilizzato
- Messaggi: 481
- Iscritto il: 25 feb 2011, 21:28
0
voti
Avrei detto di sì, ma mi hai fatto venire un dubbio. Adesso sono in viaggio e non posso controllare, ma dopo guardo (magari con un po' di ricerca puoi rispondere tu)...
Ciao boiler
Ciao boiler
0
voti
Ciao,
Leggendo un po in rete non ho trovato prove a sostegno della mia ipotesi. Pertanto dovrebbe essere giusto come dici tu
Leggendo un po in rete non ho trovato prove a sostegno della mia ipotesi. Pertanto dovrebbe essere giusto come dici tu
-
electrocompa
91 1 2 8 - Stabilizzato
- Messaggi: 481
- Iscritto il: 25 feb 2011, 21:28
0
voti
Prova a dare un occhio a questo pdf, da pagina 23 :
http://web.diegm.uniud.it/pierluca/public_html/teaching/r2_nettuno/doc/lucidi_delle_lezioni/14.pdf
http://web.diegm.uniud.it/pierluca/public_html/teaching/r2_nettuno/doc/lucidi_delle_lezioni/14.pdf
"dai diamanti non nasce niente, dal letame nascono i fior" - Fabrizio De Andrè
1
voti
La descrizione di boiler del (Source) NAT è corretta, facciamo un esempio di percorso 'richiesta-risposta':
Browser -> ElectroYou
Il browser forgia una richiesta con:
SOURCE: <ip_locale_del_PC>:<una_porta_alta_a_caso [16000]>,
DEST: 78.46.154.208:80
DATI: GET / HTTP/1.1 ...
CHECKSUM: CHECK_1
Il router 'adatta' il pacchetto
SOURCE:<ip_pubblico_del_router>:<una_porta_alta_a_caso[12000]>
DEST: 78.46.154.208::80
DATI: [gli stessi della richiesta client]
CHECKSUM: CHECK1_RICALCOLATO col nuovo ip
Il router 'ricorda' il mapping <ip_locale_del_pc>:[16000] <- porta 12000, così che tutti i pacchetti ricevuti sulla porta 12000 vengono inoltrati alla 16000 del PC
EY -> Browser
ElectroYou forgia una risposta:
SOURCE: 78.46.154.208:80
DEST: <ip_pubblico_del_router>:<porta_alta [12000]>
DATI: HTTP/1.1 200 OK ...
CHECKSUM: XXX
il router riceve il pacchetto e lo modifica così:
SOURCE: 78.46.154.208:80
DEST: <IP_DEL_PC>:<porta_alta [16000]>
DATI: <come la risposta google>
CHECKSUM: [ricalcolato] XXY
Alla fine della connessione (per timeout o per la ricezione di un pacchetto di reset), il router 'dimentica' il collegamento tra porta 16000 del PC e porta 12000 perché ricordo, le porte sono 16K (2^14), e se non venissero 'riciclate' dopo poco tempo on si potrebbero più stabilire nuove connessioni. Inoltre il PC 'libera' la porta 16000 per una eventuale futura connessione
NOTA: se il router decide di mantenere il mapping 1-a-1 tra tporta PC e porta esterna (es il PC sceglie la 16000 e il router tiene quella) il checksum della risposta non deve essere aggiornato e si potrà inoltrare la risposta così com'è consumando meno CPU e garantendo migliori prestazioni.
Per approfondire cerca la parola chiave SNAT (Source Network Address Translation) e troverai parecchio materiale.
Browser -> ElectroYou
Il browser forgia una richiesta con:
SOURCE: <ip_locale_del_PC>:<una_porta_alta_a_caso [16000]>,
DEST: 78.46.154.208:80
DATI: GET / HTTP/1.1 ...
CHECKSUM: CHECK_1
Il router 'adatta' il pacchetto
SOURCE:<ip_pubblico_del_router>:<una_porta_alta_a_caso[12000]>
DEST: 78.46.154.208::80
DATI: [gli stessi della richiesta client]
CHECKSUM: CHECK1_RICALCOLATO col nuovo ip
Il router 'ricorda' il mapping <ip_locale_del_pc>:[16000] <- porta 12000, così che tutti i pacchetti ricevuti sulla porta 12000 vengono inoltrati alla 16000 del PC
EY -> Browser
ElectroYou forgia una risposta:
SOURCE: 78.46.154.208:80
DEST: <ip_pubblico_del_router>:<porta_alta [12000]>
DATI: HTTP/1.1 200 OK ...
CHECKSUM: XXX
il router riceve il pacchetto e lo modifica così:
SOURCE: 78.46.154.208:80
DEST: <IP_DEL_PC>:<porta_alta [16000]>
DATI: <come la risposta google>
CHECKSUM: [ricalcolato] XXY
Alla fine della connessione (per timeout o per la ricezione di un pacchetto di reset), il router 'dimentica' il collegamento tra porta 16000 del PC e porta 12000 perché ricordo, le porte sono 16K (2^14), e se non venissero 'riciclate' dopo poco tempo on si potrebbero più stabilire nuove connessioni. Inoltre il PC 'libera' la porta 16000 per una eventuale futura connessione
NOTA: se il router decide di mantenere il mapping 1-a-1 tra tporta PC e porta esterna (es il PC sceglie la 16000 e il router tiene quella) il checksum della risposta non deve essere aggiornato e si potrà inoltrare la risposta così com'è consumando meno CPU e garantendo migliori prestazioni.
Per approfondire cerca la parola chiave SNAT (Source Network Address Translation) e troverai parecchio materiale.
-
DavideDaSerra
213 1 5 - Expert
- Messaggi: 274
- Iscritto il: 21 gen 2018, 18:41
7 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti