NAT基础见:http://blog.csdn.net/xiaoshengqdlg/article/details/22064363
路由器将客户主机IP地址替换为公有IP地址的过程以及如何记忆是哪个客户IP发来的数据方法:
路由器首先会用一个公有IP来替换掉客户IP,然后会动态为这个 IP:端口 分配一个未用的端口,比如客户主机的IP地址是192.168.1.64,发送这个数据报的主机端口是50(话外音:端口和IP共同组成socket),则路由器会为其分配172.1.1.1:80(假设172.1.1.1是路由器的公有IP),公有ip地址后面的这个端口会随着不同客户的IP地址以及不同端口而不同。每个路由器端口对应一个客户主机IP地址和端口。所以在数据包发出后服务器会根据这个源地址172.1.1.1:80找到真正的发包的客户主机。
关于数据到达服务器的NAT过程涉及到一个Port Mapping(端口映射)的概念。客户在访问服务器地址的时候其实是访问的一个(公有IP地址:端口)的,这个 公有IP地址:端口 被服务器端的路由器静态映射到服务器所处内网中的某台主机的某个端口上。所以平时我们平时如果访问www.baidu.com访问的IP地址是172.1.1.2:80(这个公有IP地址是假设的),这个地址和端口的组合被静态的映射到了服务器所在内网的某台主机上的某个端口。
关于DMZ就是来自外网的访问的所有地址全部映射到一台主机上,这台主机可以选择接受或者丢弃,但是内网中的其他主机却可以正常的访问外网。DMZ就有了内网可以随意访问外网,外网不能随意访问内网的功能