hmm good question. Here are a couple of points I can think of.
- A proxy's functionality scope is much more limited and specific, NAT technology can be used more flexibly than simply for "allowing a host of some internal network to gain access to resources of some external network" (check the excellent texts about Network Address Translation on this site for more info).
- NAT works on a more basic level than typical proxy implementations and this results in better compatibility with network protocols of higher level.
- For the same reason, proxy server implementations tend to be protocol-specific, offering support for certain application layer protocols like HTTP and FTP.
- There are also proxy implementations like SOCKS, which can serve for most types of data, but even these require additional support (and configuration) from each application. NAT technology works transparently to the end user/application, it is easier to implement and requires no extra configuration to use.
- NAT because it works in a basic level, causes much less overhead than proxies. In a sense, most proxy implementations will "parse" fully through their engine any content you've requested, before they deliver it to you. This is much slower than simply changing a couple of header fields to individual packets passing through some interface -like NAT does.
On the other hand, proxies offer some other advantages like more powerfull control capabilities over the traffic (since it is processed at a higher level), and allow the possibility to cache data locally for the same reason.
On the other hand, proxies offer some other advantages like more powerfull control capabilities over the traffic (since it is processed at a higher level)
. This also means that a well-written proxy can also serve as a security device - for example an HTTP proxy can examine the connection request coming in and refuse to pass it through to the web server if it looks dubious. The proxies in the Cyberguard firewall product do this, for example. In contrast, NAT is just a means of allowing the connection to be made by supporting the address translation/mapping