PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Source Adresse im Falle eines Routers?



Prick
27-01-2003, 00:19
Hallo,

ich habe eine kleine Verständniss-Frage:
Nehmen wir an, ich habe ein kleines Programm geschrieben, womit ich Pakete mit gesetztem SYN-Flag an einen gewünschten Rechner im Internet sende. Nun möchte ich die Antwort des Ziels aber auswerten. Also, welche Pakete zurückkommen oder wie auch immer. Nun befinde ich mich aber in einem internen Netz und sende über einen Router hinweg, woher weiß nun der Ziel-Rechner, wohin er seine Antwort schicken soll? Denn als IP könnte ich im Paket-Header ja nur die vom Internen-Interface angeben? Ich bin noch sehr frisch, was das Programmieren mit Sockets anbelangt, daher bitte nicht auf komplizierte Quelltexte verweisen :-).
Sollte jemand um Rat wissen bzw. eine einfache Erklärung haben, wäre ich ihm sehr verbunden.

Danke vielmals,
h.d.

anda_skoa
27-01-2003, 06:57
Um die Adressen musst du dich nicht kümmern, das erledigt der Router.

Das Paket hat ja deine Adresse als Absender Adresse, daher weiß der Zielrechner, an welchen Rechner er das Antwortpaket zu schicken hat.
Wenn die Route dorthin ncht unterbrochen ist, wird das Paket irgendwann an deinem Router ankommen, der die Zieladresse untersucht und feststellt, dass sie in seinen Bereich fällt.
Dann schickt er das Paket an dich weiter.

Wenn der Fall eintritt, dass die intere Adresse nur bis zum Router gilt, also wenn NAT (network address translation) läuft, dann ersetzt das NAT deine Adresse durch eine externe und merkt sich die Erstzung und den Zielrechner.

Wenn nun ein Paket zurückkommt, sieht das NAT in seiner Tabelle nach, erkennt, dass es da einen Eintrag gibt und ersetzt die Zieladresse des Antwortpakets durch deine intere Adresse. Dann läuft alles weiter wie im ersten Fall.

Ciao,
_

Prick
27-01-2003, 12:15
Dankeschön, das Verfahren des "NATens" war mir klar, aber heißt das nun, dass ich im Paketheader einfach keine Soruceadresse angebe? Oder muss die SourceAdresse die IP des Routers bzw. des externen Interfaces beinhalten? Ich hoffe darauf, keine IP angeben zu müssen. :-)

Danke nochmal vielmals,
h.d.

mehlvogel
27-01-2003, 12:48
So wie ich anda_skoa verstanden habe (habe selber wenig ahnung davon) musst du deine IP angeben (also die IP desInterfaces über die du schickst, damit der Router weis wo das Antwortpaket, welches zurückkommt hingeschickt werden muss.

gEistiO
27-01-2003, 13:51
mehlvogel hat recht!
du musst als source einfach deine IP des lokalen interfaces eintragen. der router ersetzt dann deine IP durch seine öffentliche, routet das paket ins internet und merkt sich deine absender IP. wenn dann eine antwort auf das paket kommt, sieht der router in seiner NAT table nach, zu welcher anfrage das paket gehört und schickt es dann an deinen computer weiter...

ich hoffe, dass ich mich nicht zu kompliziert ausgedrückt habe :)

Prick
27-01-2003, 16:55
Ok, das habe ich denke ich verstanden, dankesehr.


h.d.