Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Chi dice al router la porta per la risposta?

Linguaggi e sistemi

Moderatori: Foto UtenteMassimoB, Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Chi dice al router la porta per la risposta?

Messaggioda Foto Utenteelectrocompa » 22 mag 2018, 9:31

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
Avatar utente
Foto Utenteelectrocompa
81 1 2 8
Stabilizzato
Stabilizzato
 
Messaggi: 441
Iscritto il: 25 feb 2011, 21:28

1
voti

[2] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto Utenteboiler » 22 mag 2018, 10:14

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
Avatar utente
Foto Utenteboiler
18,4k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3420
Iscritto il: 9 nov 2011, 12:27

0
voti

[3] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto Utenteelectrocompa » 22 mag 2018, 14:46

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.
Avatar utente
Foto Utenteelectrocompa
81 1 2 8
Stabilizzato
Stabilizzato
 
Messaggi: 441
Iscritto il: 25 feb 2011, 21:28

0
voti

[4] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto Utenteboiler » 22 mag 2018, 15:39

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
Avatar utente
Foto Utenteboiler
18,4k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3420
Iscritto il: 9 nov 2011, 12:27

0
voti

[5] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto Utenteelectrocompa » 23 mag 2018, 7:19

Ciao,
Leggendo un po in rete non ho trovato prove a sostegno della mia ipotesi. Pertanto dovrebbe essere giusto come dici tu
Avatar utente
Foto Utenteelectrocompa
81 1 2 8
Stabilizzato
Stabilizzato
 
Messaggi: 441
Iscritto il: 25 feb 2011, 21:28

0
voti

[6] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto Utentesedetiam » 23 mag 2018, 8:17

"dai diamanti non nasce niente, dal letame nascono i fior" - Fabrizio De Andrè
Avatar utente
Foto Utentesedetiam
2.095 1 3 9
Master
Master
 
Messaggi: 488
Iscritto il: 11 gen 2013, 12:04

1
voti

[7] Re: Chi dice al router la porta per la risposta?

Messaggioda Foto UtenteDavideDaSerra » 27 mag 2018, 23:28

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.
Avatar utente
Foto UtenteDavideDaSerra
148 1 5
Frequentatore
Frequentatore
 
Messaggi: 224
Iscritto il: 21 gen 2018, 18:41


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti