Ja, internt for dig ser det sådan ud.
I IP protokollen bruges der et portnummer i begge ender. En FTP-servers port er f.eks., som du nævner, 21. Men, der er også et portnummer i den anden ende.
Forestil dig en direkte forbindelse uden at du har en NAT imellem dig og maskinen du forbinder til sådan her(I et code-tag for at bibeholde formatering)
Din computer Server
Port 1234 <- INTERNET HER -> Port 21
(Portnummeret ved din computer er tilfældigt)
Her svare FTP serveren bare tilbage på port 1234, og da der ikke er andre computere er dette den rigtige måde at gøre det på.
Forestil dig at du har to computere på et netværk som begge vil forbinde til nettet. De bruger begge den samme lytteport.
Computer 1
Port 1234 -----
|---- Router ------ FTP server
Computer 2 ----- Port 21
Port 1234
Når FTP serverne nu skal aflevere data til de to computere, så vil de prøve at returnere til disse computeres port-numre, men som du kan se bruger begge computerne den samme port til at modtage på, men de deler nu deres IP-adresse. Så har vi pludselig lidt af en konflikt.
NAT'en løser dette problem ved at ændre portnumrene. Du opdager det ikke, for NAT'en ændre helt automatisk IP-pakkerne, så deres portnumere ændres.
Computer 1
Port 1234 ----- <- Port nummer ændres til 2345
|
|---- NAT --------- FTP server 2 Port 21
|
Computer 2 ----- <- Port nummer ændres til 3456
Port 1234
(Alle portnumre udover 21 er tilfældige, og skal bare vise konceptet)
Når FTP serveren nu skal svare tilbage på data den får fra Computer 1, så vil den istedet svare til port 2345, og NAT'en sender så automatisk dette videre til Computer 1's port 1234.
Tilsvarende når FTP serveren skal svare tilbage på data den får fra Computer 2, så vil den sende til port 3456, og NAT'en sender så automatisk dette videre til Computer 2's 1234.
Lidt svært at forklare med rene bogstaver, men jeg håber det var til at forstå
.
Indlæg senest redigeret d. 02.01.2007 23:39 af Bruger #2330