Mein Computer ist in einem lokalen LAN angeschlossen. Um eine Verbindung zum Internet herzustellen, wird der Datenverkehr über den Proxyserver geleitet. Mein Verständnis des Proxyservers ist, dass er die Anfrage im Namen des ursprünglichen Absenders der Anfrage sendet . Wenn der Server antwortet, sendet er die Antwort an den Proxy und denkt, dass es sich um den Client handelt. Der Proxy leitet die Antwort dann an meinen Computer weiter.
Nehmen Sie den Fall der Übersetzung der Netzwerkadresse . Ihre Anfrage geht über den Nat-Router. Der nat-Router stellt Ihnen dann eine öffentliche IP-Adresse zur Verfügung und speichert diese Zuordnung in seiner Tabelle. Die Antwort (vom Server) wird an diese zugewiesene öffentliche Adresse gesendet. Was der Nat-Router aus der Tabelle in Ihre lokale IP-Adresse auflöst und die Antwort an Ihren Computer weiterleitet.
Meine Frage, warum nat erforderlich ist, wenn der Proxy selbst den Datenverkehr vermitteln und Ihnen den Zugang zum Internet ermöglichen kann?
quelle
Antworten:
MadHatter hat eine hervorragende Erklärung für Laien über die Unterschiede zwischen Proxies und NAT verfasst.
Für weitere technische Details empfehle ich Ihnen, sich über das OSI-Modell und das TCP / IP-Modell zu informieren. Nat arbeitet auf späteren 3 des OSI-Modells (in diesem Fall auf der Netzwerkschicht, IP), und Proxys arbeiten im Allgemeinen auf Schicht 7 (der Anwendungsschicht, HTTP oder was auch immer Sie als Proxy verwenden).
NAT und Proxys versuchen auch, etwas andere Probleme zu lösen. NAT versteckt eine Reihe privater IPs hinter einer kleineren Anzahl öffentlicher IPs, um den Mangel an IP-Adressen zu verringern, während Proxys aus Sicherheits-, Prüfungs- oder Leistungsgründen einen Netzwerk-Choke-Point erstellen
quelle
Mir scheint, Sie haben die Grundlagen hier recht gut verstanden, und die kurze Antwort lautet: Wenn Sie einen Proxy mit einer öffentlichen Adresse verwenden, benötigen Sie kein NAT - für die Protokolle, die vom Proxy vermittelt werden .
Es gibt jedoch mehr Protokolle im Himmel und auf der Erde, als in Ihrer Philosophie geträumt werden . Nicht alle von ihnen sind proxy-fähig, und Proxies existieren nicht einmal für alle, daher ist NAT ein praktischer Fallback für diese.
Bearbeiten : Ein Proxy ist ein Computergerät, das auf Anwendungsebene arbeitet. Ein HTTP-Proxy empfängt HTTP-Anforderungen für einen Remote-Standort. Wie Sie bereits betont haben, wird er an diesen Standort selbst weitergeleitet, stellt die Anforderung und gibt die Antwort an den anfordernden Client zurück. Dazu muss HTTP jedoch detailliert verstanden werden.
In ähnlicher Weise könnten Sie einen FTP-Proxy schreiben, der jedoch die Details von MKD-, DELE-, LIST- und ähnlichen FTP-Protokollbefehlen verstehen muss, um die Anforderungen des Clients korrekt zu proxyieren. Jeder Proxy, der transparent arbeiten möchte, muss im Allgemeinen die Interna des Protokolls genau verstehen, um dieses Protokoll zu vertreten.
SOCKS ist bis zu einem gewissen Grad eine Ausnahme von dieser Regel, aber das liegt daran, dass das SOCKS-Protokoll eine allgemeinere Schnittstelle für das Proxy-System einrichtet, bei der jeder Client SOCKSified sein muss und daher in der Lage ist, die richtigen Anforderungen des SOCKS-Proxys zum Festlegen zu stellen die Art von Proxy, die jeder benötigt, was nicht gerade transparent ist.
quelle