|
楼主 |
发表于 2008-5-13 09:45:22
|
显示全部楼层
Post by maxleaf_ye;1848852
恩,如果你的主机是通过路由器上网的话就应该是那样的,当然也可能会有其他的实现方式~~
我猜你想知道的应该就是那个模型了~呵呵
NAT的原理我是知道的,我也知道路由器里的Route和NAT不一样,Route是不修改包里的源地址或者目的地址的,而NAT修改;照这么说的话,我猜工作在网络层的Route只能用在公网IP机器和Internet的之间,就是说IP地址不可以为192.168.0.0/255.255.0.0和172.16.0.0/255.255.0.0;而工作同样在网络层的NAT可以用在局域网和Internet的之间,他会把局域网客户端的192.168.0.0/255.255.0.0和172.16.0.0/255.255.0.0转换成自己网关公网IP,把端口改为映射局域网内的这个客户端的端口号,并且用哈希表以目的地址:目的端口号为键,客户端源端口号(就是包里未修改前的源端口号)为值保存这次的连接关系;当接收到网站发来的数据后NAT在网络层查看TCP里的端口号先确认局域网内的客户端,然后再根据包中的源地址:源端口号从哈希表中找到客户端的源端口号,然后修改TCP里的目的端口号为该端口号,然后再发送给该客户端,NAT在网络层既要修改IP包里的地址也要修改TCP里的端口,并且要用到哈希表结构来临时存储一些连接关系信息,局域网里的客户端和NAT网关的通信只在网络层,NAT网关和目的网站的通信也只在网络层,而局域网里的客户端和目的网站是在传输层使用TCP或UDP协议通信
嗯嗯,差不多实现原理就是我说的这样吧,这次应该算是真正理清了,3Q |
|