注册 登录
编程论坛 ASP.NET技术论坛

客户端IP问题?

yunj1105 发布于 2008-12-01 16:00, 1111 次点击
为什么不管在哪客户端的IP总是192.168.0.56?string ip = Request.UserHostAddress.ToString();
我问了那个单位的人,他们说“映射的IP地址,只能56访问55,任何人都得映射成56”
那我应该怎么取实际的IP啊

[[it] 本帖最后由 yunj1105 于 2008-12-1 16:02 编辑 [/it]]
4 回复
#2
铲铲2008-12-01 17:34
地址影射NAT,是在网络层的技术,对于TCP协议而言是透明的,对于其上的HTTP更是透明的了。即便客户端向你报告了它的真实IP,那于你也无意义,因为这种IP属于一定范围内的私有IP地址,由各个私有网络管理员自行分配,使用它,你根本无法确定一个用户是谁,也不知道它在哪。
#3
yunj11052008-12-01 17:49
恩 客户要求是 一定的IP可以不需要用户名和密码就直接登陆 弄了半天取出来都是192.168.0.56郁闷死了
#4
铲铲2008-12-01 21:27
1、从你自己设计上来说,能用什么证明IP和一个人本身一一对应呢?IP地址并不是和人一一对应的,而是和网络层的终结点一一对应的,你如何证明网络层和一个人这个实体一一对应?
2、你和你的客户说明,这种需求无法实现。网络发展到现在,结构层次异常复杂,而且并不规范。IP地址这种数据结构,甚至连一台固定的主机都无法代表。为了解决IP地址短缺问题,引入的NAT地址翻译技术等,使得一个一定范围的局域网内部使用私有IP,这就更不能保证任何私有IP能代表一个客户。是在公网,使用DHCP分配IP的话,你也无从和一个主机对应起来。
人也是具有流动性的,因此主机和人也无法一一对应。

如果你执意要取出属于NAT隐藏掉的私有IP地址,除非建立一种机制,在客户端访问你的服务器时,将其当前IP地址报告给你。关于这个,浏览器不会给你任何实现,你能做的就是开发一个插件。问题是,客户能否接受安装插件?再次说明,即使取得了IP,那也是私有的,在NAT包含范围内表示一个网络层终结点(EndPoint),超过这个范围,就没有什么意义。
#5
yunj11052008-12-02 08:34
恩 谢谢斑竹 我明白了呵呵
1