Come fa il router a sapere dove inoltrare il pacchetto


68

Se diversi computer con indirizzi locali (192.168.0. #) Sono collegati a un router e ogni computer apre un browser Web e richiede una pagina su HTTP, quando questi pacchetti TCP: 80 vengono inviati, il router cambia l'indirizzo locale con il IP statico del router (ovvero IP fornito dal provider) in modo che il server possa rispondere all'indirizzo appropriato.

Ma come fa il router a sapere a quale computer inoltrare la risposta HTTP, poiché l'intestazione TCP non contiene l'indirizzo IP locale (vero?) E tutti i computer utilizzano la porta 80?

Questo ha qualcosa a che fare con gli indirizzi MAC?

Come funziona esattamente?

Risposte:


78

La maggior parte dei router domestici utilizza un caso speciale di NAT chiamato PAT.

Lo vedrai anche indicato come NAPT o IP Masquerading. Tutti e tre questi ultimi termini significano la stessa cosa in uso generale. (Gli acronimi: traduzione dell'indirizzo di rete / traduzione dell'indirizzo di porta / traduzione della porta di indirizzo di rete)

Quando il pacchetto esce dal computer interno, l'indirizzo di origine viene riscritto come ben sapete. Anche la porta di origine viene modificata, di solito in un numero elevato, e il router mantiene una tabella di traduzione degli indirizzi.

Ad esempio, supponiamo che tu abbia un computer client che va su www.google.com. Il tuo computer (ad esempio 192.168.1.100) cerca quell'indirizzo e crea una connessione TCP a 72.14.204.147 sulla porta 80 dal tuo indirizzo IP interno, usando una porta di origine casuale.

Al tuo computer, la connessione è simile alla seguente:

192.168.1.100:37641   <-->  72.14.204.147:80

Il computer invia il pacchetto al router, che seleziona una nuova porta alta casuale e riscrive il pacchetto. Ogni connessione in uscita ottiene la propria porta sul router. Il router inoltra quindi il pacchetto all'ISP dopo averlo aggiunto alla sua tabella di connessione:

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

* Ad esempio, ho usato un indirizzo che inizia con 10, ma questi non sono instradabili pubblicamente. Anche la tabella è in qualche modo semplificata.

Per google, la connessione è simile alla seguente:

10.6.23.5:59273   <-->  72.14.204.147:80

Google invierà la sua risposta al 10.6.23.5 sulla porta 59273. Il router quindi cerca tali informazioni nella tabella e inoltra il pacchetto a 192.168.1.100:37641.


3
Quindi per riassumere, il router utilizza i numeri di porta per ricordare cosa dall'esterno della rete locale va a cosa all'interno della rete. Tuttavia, questo non spiega come mi www.google.comtroverebbe se non avessi inviato una richiesta iniziale. In altre parole, i messaggi possono raggiungermi tramite il router solo se inizialmente ho inviato una richiesta tramite il router
CodyBugstein,

2
@Imray google.com (o qualsiasi altra cosa su Internet) non riesce a trovare il tuo computer se il tuo computer non ha avviato la richiesta. Ecco perché avere un router aggiunge molta sicurezza.
Jason,

6
@Jason È un mito pericoloso. Avere un firewall aggiunge sicurezza. Il lavoro di un tipico router SoHo è solo quello di far funzionare le cose, non di impedirne il funzionamento. Vedi qui per maggiori informazioni.
David Schwartz,

1
@Jason Meglio non cancellare il tuo commento, rende quella che sarebbe stata una discussione utile da leggere, impossibile da leggere.
barlop,

2
Un bell'esempio, ma questo significa che tutte le porte ad alto numero sono sempre aperte sui nostri router?
jiggunjer,

1

I router tra la rete locale e il resto di Internet usano una tecnica chiamata NAT.

Solo un estratto di TCP / IP Illustrated Volume 1 su NAPT, con una parola sulle carenze del suo semplice cugino, Basic NAT:

Il NAT di base esegue solo la riscrittura degli indirizzi IP. In sostanza, un indirizzo privato viene riscritto in un indirizzo pubblico, spesso da un pool o da un intervallo di indirizzi pubblici forniti da un ISP. Questo tipo di NAT non è il più popolare perché non aiuta a ridurre drasticamente la necessità di indirizzi IP: il numero di indirizzi instradabili a livello globale deve essere uguale o superiore al numero di host interni che desiderano accedere a Internet contemporaneamente. Un approccio molto più popolare, NAPT prevede l'utilizzo degli identificatori del livello di trasporto (ad es. Porte per TCP e UDP, identificatori di query per ICMP) per differenziare quale host sul lato privato del NAT è associato a un pacchetto particolare (vedere la Figura 7- 4). Ciò consente un numero elevato di host interni (ad es. più migliaia) per accedere a Internet contemporaneamente utilizzando un numero limitato di indirizzi pubblici, spesso solo uno. Useremo normalmente il termine NAT per includere sia NAT tradizionale sia NAPT a meno che la distinzione sia importante in un particolare contesto.

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.