In che modo i pacchetti di risposte IP raggiungono la loro destinazione all'interno di una LAN privata? [duplicare]


26

Questa è una piccola domanda teorica che mi confonde da molto tempo.

Fondamentalmente, se siamo all'interno di una LAN privata e vogliamo che i pacchetti in arrivo raggiungano, ad esempio, un server HTTP situato su una delle macchine, inoltriamo le porte in modo che i pacchetti in arrivo raggiungano esattamente quel computer.

Ora, sono abbastanza confuso su come i pacchetti di "risposta" raggiungono la loro destinazione all'interno di una LAN, come quando apriamo una pagina web o giù di lì. Non riesco davvero a trovare alcuna informazione utile su quell'argomento.

Spero che qualcuno possa darmi un paio di indizi o collegarmi ad alcune informazioni che potrebbero spiegarlo. Grazie.

EDIT: penso che dovrei chiarire. Un esempio di ciò che sto chiedendo potrebbe essere qualcosa del genere:
1. Un computer all'interno di una LAN con un singolo IP esterno tenta di caricare una pagina Web da un server Web esterno a questa LAN (Fondamentalmente su Internet)
2 Il server Web risponde e invia la pagina Web al computer.

Ciò che mi confonde a questo punto è, come fa il router a sapere a quale computer inviare i dati in entrata (dato che il router è collegato a una LAN con più computer) senza il precedente port forwarding.


Ho appena visto un bel video sull'argomento: Network Address Translation - Computerphile
Der Hochstapler,

Risposte:


56

Anche se la domanda è stata interamente trattata. Sento che questo processo dovrebbe essere meglio descritto passo dopo passo.

Per questo esempio, mi siedo in una LAN privata connessa a Internet tramite un router. Poiché la nostra rete condivide un unico indirizzo IP pubblico, utilizziamo NAT.

Quindi quando richiedo la pagina superuser.comche genererà molti pacchetti IP. Diamo un'occhiata a uno solo.


Origine pacchetto IP : 192.168.1.12(il mio IP)
Destinazione: 64.34.119.12(superuser.com)

Ora, molto probabilmente il mio sistema è impostato in modo simile a quello in questione. Ho il mio indirizzo IP ( 192.168.1.12), una subnet mask ( 255.255.255.0) e un gateway predefinito ( 192.168.1.1). Ora, poiché il mio campo Destinazione nel mio pacchetto IP punta a una rete diversa dalla mia, viene inviato al mio gateway predefinito (anziché direttamente al computer).

Ma come può il pacchetto arrivare al gateway predefinito, se la Destinazione punta da qualche altra parte?

Ethernet

È facile, perché per questo utilizziamo l'indirizzamento del protocollo Ethernet. Abbiamo appena impostato il nostro indirizzo IP di destinazione nel pacchetto IP e l'indirizzo MAC del nostro gateway predefinito come destinazione nel frame Ethernet .

Ora questo assicurerà che il nostro gateway predefinito ottenga il pacchetto per superuser.com. Sìì!

Ora il gateway ha il nostro pacchetto e potrebbe inviarlo direttamente sul suo percorso. Ma per essere sicuri che otterrà la risposta, è necessario prima di sostituire il pacchetto sorgente indirizzo (altrimenti superuser.comavrebbe cercato di inviare la risposta ad alcuni (forse) dispositivo inesistente con il mio indirizzo IP sulla loro rete. Ora che non sarebbe molto bello.)
Quindi il mio router inserirà il suo indirizzo IP pubblico nel campo Origine :


Origine pacchetto IP : 92.69.127.243(il mio IP pubblico)
Destinazione: 64.34.119.12(superuser.com)

Ora lo stesso gioco continua all'infinito con tutti i router del mondo fino a quando il pacchetto arriva finalmente superuser.come viene generata una risposta.

La risposta

Rispondi a IP Packet
Source: 64.34.119.12(superuser.com)
Destinazione: 92.69.127.243(il mio IP pubblico)

Ok, la risposta è arrivata al mio router, e adesso? Come fa ora il mio router a inviare la risposta 192.168.1.12?

TCP

Bene, in realtà funziona perché abbiamo esaminato solo le parti IP ed Ethernet della comunicazione. Ciò che rende questo lavoro è la parte TCP.

Molto probabilmente sai che i server web di solito vengono eseguiti sulla porta 80. IP non ha nozioni di porte . Viene da TCP . In TCP abbiamo (come in IP) una fonte e destinazione di porta .

Il mio pacchetto TCP su superuser.com
Fonte: 192.168.1.12(il mio IP)
Porta di origine: 11111(la porta creata dal mio computer)
Destinazione: 64.34.119.12(superuser.com)
Porta di destinazione:80

Quando il tuo router invia quel pacchetto iniziale (a cui è indirizzato superuser.comsulla porta 80), inserirà una nuova porta sorgente (come 12345).
E questa è la parte importante! Ricorderà quella sostituzione!

Il pacchetto TCP del mio router su superuser.com
Fonte: 92.69.127.243(il mio IP pubblico)
Porta di origine: 12345(la porta creata dal mio router)
Destinazione: 64.34.119.12(superuser.com)
Porta di destinazione:80

Quindi il pacchetto di risposta ricevuto dal router in realtà è simile al seguente:
Rispondi al pacchetto TCP da superuser.com
Fonte: 64.34.119.12(superuser.com)
Porta di origine: 80
Destinazione: 92.69.127.243(il mio IP pubblico)
Porta di destinazione: 12345(la porta creata dal mio router)

Quindi ora ottiene quel pacchetto e vede che è per una porta che in precedenza ricordava è stata assegnata alle operazioni NAT per l'indirizzo IP 192.168.1.12(il mio indirizzo IP).

Rispondi al pacchetto TCP dal mio router
Fonte: 64.34.119.12(superuser.com)
Porta di origine: 80
Destinazione: 192.168.1.12(il mio IP)
Porta di destinazione: 11111(la porta creata dal mio computer)


1
Ho modificato la tua risposta, non ha mostrato chiaramente cosa stava succedendo ai numeri di porta. Ho aggiunto altri esempi sui passaggi intermedi e su quali numeri di porta corrispondono a ciascun passaggio.
Scott Chamberlain,

1
@OliverSalzburg Stavo cercando la stessa risposta e la tua spiegazione mi ha aiutato a ricordare, solo una breve domanda su questo. Mi chiedo per quanto tempo il router manterrà questa mappatura inversa (porta di origine) come se si esaurisse lo spazio se continua a farlo per così tante richieste, le scarica troppo regolarmente?
Ahmed,

@Ahmed: la quantità di memoria per tenere traccia di tali informazioni è limitata. Ci sono 65536 possibili numeri di porta, sono memorizzati in 2 byte. Quindi, per ricordare un indirizzo IP (4 byte) per ogni porta si sommerebbe fino a 65536 x 4 byte = 262144 byte = 256 kB. Tuttavia, le specifiche sono implementate nel router, non c'è molta memoria.
Der Hochstapler,

@Oliver Ottima risposta, esattamente quello che stavo cercando! Ho alcune domande - (1) "lo stesso gioco continua all'infinito con tutti i router del mondo" - è esatto? Sicuramente il campo sorgente non continuerebbe a essere sostituito ad ogni passaggio? (2) Il router ricorda le porte aperte a lungo termine o le rilascia regolarmente per le richieste non rispondenti? (3) Questo significa che un hacker può far passare i pacchetti attraverso il firewall del tuo router con un attacco man-in-the-middle: ficcando i pacchetti TCP in uscita, quindi prendendo di mira la porta TCP aperta del router con un IP di origine falsificato corrispondente alla tua destinazione?
Jon Bentley

1
Come viene restituita una risposta ping ICMP a un computer in LAN? Ha qualcosa di simile alla porta per TCP? Che ne dici di altri protocolli?
Jean,

11

Traduzione dell'indirizzo di rete . In breve, quando il router gateway della LAN privata sostituisce l'indirizzo di origine della LAN privata con il proprio indirizzo pubblico, modifica il pacchetto in qualche modo, ad esempio assegnando un numero di porta univoco e altrimenti privo di significato locale che associa al nodo LAN di origine e alla richiesta in uscita . Ricorda questo mapping delle porte, quindi quando una risposta torna all'IP pubblico / porta unica #, (il router) sa come annullare il mapping a quello del suo nodo di origine. Questo è anche il modo in cui è possibile eseguire più schede, browser o istanze del browser e le risposte a ciascuna richiesta del browser tornano al browser e alla scheda corretti.


2
JRobert: E i protocolli IP (es. ICMP), diversi da tcp o udp, che non hanno un numero di porta?
Uri,

0

Quando un pacchetto iniziale arriva all'interfaccia esterna del router, cambia l'indirizzo IP di destinazione del pacchetto secondo la configurazione del port forwarding e trasmette il pacchetto modificato sull'interfaccia interna del router (dopo il normale ARP se necessario)

Il pacchetto raggiunge il server Web e ha ancora un indirizzo IP di origine esterno che verrà utilizzato come indirizzo di destinazione per qualsiasi risposta. Il server di conseguenza indirizza i pacchetti di risposta in uscita nel solito modo con un indirizzo IP di destinazione uguale all'indirizzo IP di origine della richiesta. Poiché l'indirizzo IP del richiedente è esterno, il pacchetto viene indirizzato, a livello MAC, all'interfaccia interna del router.

Si noti che esistono diversi target in ciascun livello di rete.


0

Il port forwarding viene solitamente eseguito su un router o dispositivo adiacente. Quando un dispositivo su una LAN invia traffico a un altro dispositivo su quella stessa LAN, il router non è affatto coinvolto. Il traffico non lo tocca nemmeno. Le regole di port forwarding non avranno alcun effetto sul traffico da LAN a LAN.

Ethernet è stata progettata pensando a una topologia "bus" in cui ogni computer era fisicamente collegato allo stesso supporto. Mentre i moderni switch ottimizzano il flusso di traffico apprendendo l'indirizzo MAC dall'altra parte della porta e replicando il traffico di conseguenza, la topologia "bus" rimane ancora. Qualsiasi cosa connessa a uno switch standard può "direttamente" raggiungere qualsiasi altra cosa (supponendo che sia all'interno della stessa sottorete) senza dover "passare attraverso" un dispositivo intermedio come un router.

Potresti essere confuso se il dispositivo a cui stai collegando tutti i computer ha più porte Ethernet "LAN" e quindi una singola porta "WAN". Questi tipi di dispositivi sono in realtà sia un router che commutano nello stesso chassis.

Quindi, all'interno della tua LAN, se il tuo server HTTP ha l'indirizzo 192.168.1.55, per raggiungerlo all'interno della tua LAN, dovrai digitare " http://192.168.1.55 " nella barra degli indirizzi del tuo browser. Il router non lo vede mai. Per raggiungerlo al di fuori della tua LAN, dovrai digitare il tuo IP esterno, ad esempio " http://256.99.88.77 : {la porta che hai inoltrato qui}" o qualunque cosa sia. Questo colpisce il tuo router, la funzione NAT del router funziona su di esso e quindi il router lo invia a 192.168.1.55.


0

Molto semplicemente, quando un computer all'interno della LAN privata avvia una connessione in uscita, il gateway NAT genera automaticamente un mapping delle porte per esso. Sono quasi uguali ai mapping delle porte che hai inserito manualmente prima: {porta pubblica, indirizzo privato, porta privata} e sono usati allo stesso modo. La differenza principale con i mapping dinamici è che il gateway NAT spesso deve assegnare arbitrariamente le porte pubbliche per i mapping, quando il numero di porta previsto è già in uso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.