首先我问一个问题:如何判断本机的IP是公网(外网)IP还是内网IP?
    我自已登录:www.ip38.com 时获得的本机IP是:59.42.94.235 ,可是我用Dos命令:ipconfig 查看到的IP是:192.168.0.178
两者是不同的.请问这样说明我现在用的IP不是外网IP吗?可以的话请告诉我一个判断方法,谢谢!
    还有一个问题就是:现在我用网络测试助手测试,硬件端通过GPRS往上面第一个IP:59.42.94.235发送数据,可以通信,我发回去硬件端也可以接收.可是为什么用内网的IP向我这台电脑的IP发数据时却收不到了呢?这说明我用的是外网IP吗?这样的话那岂不是有点矛盾了?
    我听我们电脑部门的人解释说我这台电脑的IP是公网的IP,只是映射到我的电脑后用ipconfig看到的是192.168.0.178.
请高手指点一下到底是什么原因?还有NAT的具体原理是怎样的?万分感谢!
     

解决方案 »

  1.   


    说明你的机器是经过NAT之后上网的...www.ip38.com 时获得的本机IP是:59.42.94.235 -- 这个ip实际是给局域网做nat的机器的ip
      

  2.   


    我也相信我的IP是通过映射后的,可是有没有谁能告诉我:就以上现象,我用的IP是外网的还是内网的?如果判断我的IP地址是外网的还是内网的?
      

  3.   

    其实正常情况下不管你用的是外网还是内网的IP,你只要在接收端首先获取对方的IP,然后超这个IP发过去就可以了,当然如果是内外网的话要做端口转发。如果是在同一局域网内的话不需要端口转发,直接指定对方内网地址端口就可以了。
      

  4.   

    你这个情况应该是这样:
    你的电脑是在一个路由器下划分的一个内部局域网。你的ip 192.168.0.178 是你在这个局域网内部的ip,而你们这个内部局域网所有电脑对外的IP都是59.42.94.235 ,这个ip是在路由器那设定的,问你们网管就知道了。所以你上www.ip38.com时,他看到的是你们对外的IP59.42.94.235 。你从里往外通信时,先发给路由器,路由器在发给你通信的目标,这样很明确;反之,如果外网给你这个局域网内你的电脑通信,它只能发给你们这个局域网对外的ip59.42.94.235 ,因为外网只知道这个,发到这个ip的某个端口后,路由器就糊涂了,因为它下边有好多个内网ip,它不知道要转发给谁,所以就需要你进行端口映射了,就是指定如果路由器(59.42.94.235 )收到外边发到你指定端口映射的端口的数据,就直接转发给你的这台电脑(192.168.0.178 )。
    至于怎么进行端口映射,那看你有没有权限拉,你在地址栏输入192.168.0.1 或者192.168.0.3 ,用户名是admin 密码是admin ,如果能进去的话,那么就能配置端口映射,如果不能就找网管把。配置端口映射,你上网上查查吧。还有种情况,我之前作工程遇到过,就是如果你从内往外从某个端口向外发数据,然后在极短的时间内(我记得当初测试过,这个时间记得好像小于1秒),在该端口能收到返回的数据,那么就不用配置端口映射了,这个现在我也没明白,自己的解释就是路由器由短暂的“记忆“功能,如果你从某个端口发出数据,然后短时间内收到数据,那么它就会自动转发给刚刚发出数据的电脑。还有种情况 是外边往你这发数据,如果发给你不是特殊的端口,比如80或者qq用那个端口,那么可能你就收不到数据,因为被屏蔽了,这样一般都是为了防止攻击,或者是因为路由在处理时候有端口优先级的,如果不是常用端口,那么可能排到最后,这样就可能无法得到处理,进而你收不到数据。
      

  5.   

    你的Ip就是 192.168.0.178 内网访问不到你 你不是你机器的防火墙的问题
    登录:www.ip38.com 时获得的本机IP是:59.42.94.235 是你网关的IP 也是公网Ip你是通过网关的Ip
    外网你访问到你因为 先连接到59.42.94.235 这个机器在把数据转给你的,原因你说过了 做了端口映射
      

  6.   

    NAT原理:http://net.zdnet.com.cn/network_security_zone/2009/0316/1356149.shtml
      

  7.   

    首先非常感谢你的解答,你说的正是我现在头疼的地方!现在我有一个疑问:为什么硬件端向:59.42.94.235 这个IP发数据过来,我可以收到?你也说了,我的本机IP:192.168.0.178是由那个外网IP映射得到的,那硬件端通过GPRS发向外网IP后,为什么就直接找到了我这台电脑的IP呢?是不是因为它只映射了我这一台电脑的IP?你说可能是这个原因吗?
    对于你上面说的那个"路由器的“记忆“功能",我也很感兴趣,这也是一种很有可能的解释.
      

  8.   

    这个也就是发到你网关,网关怎么处理就需要根据NAT来知道把数据包发送给内网哪台机器
      

  9.   

    恩,应该是做了端口映射.而且我刚才有问我们公司服务器的管理员,他们说只对我这一台电脑做了端口映射,这也就解释了为什么硬件端那边通过GPRS向外网IP发数据时为什么可以收到了.因为只设置了我这一个端口映射,所以很容易就找到了我的电脑.顺便问一下,如果路由器那边设置了很多端口映射,是不是就会收不到了呢?我想确定一下这个想法是否正确.
      

  10.   

    可是为什么我用内网IP的电脑向公网IP:59.42.94.235 发送数据我又收不到呢?即使是做了NAT,可是只是对我这一台电脑做了啊,按理来说,我也应该可以收到的啊?就好比不管是内网IP的电脑,还是外网IP的电脑,都可以访问像"百度"这样的外网IP.这又如何解释呢?
      

  11.   

    这个你说的情况我不是完全明白。 如果这个局域网内就你一个电脑  那应该会发给你把  。如果还有别的电脑那就怪了,你不配置端口映射 它就能直接发给你?是不是我说的路由器记忆哪种情况呢,就是你发请求 然后硬件端才给你回的。如果不是上述情况  单纯就是硬件向59.42.94.235发 然后你就能收到  还真怪了!呵呵另外想起当时我做网络通信块时的一个要注意的地方  就是如果你用的是瑞星防火墙  那么你一定要把你接收外边数据的端口添加到允许  否则瑞星默认是拒绝的   当时我遇到这个情况  很麻烦才解决  你可以用telnet这个dos命令来判断你的端口情况
      

  12.   

    由以上现象我是这样认为的:我本机服务器所在的IP不是外网IP,它只是通过外网IP端口映射处理了的.会不会是因为我们公司的局域网被服务器端受限了,不能访问外网的IP呀?因为我用我的电脑使用ping "百度公网IP"可以通过,可是我们公司的其他内网电脑就不能通过.所以我才会想会不会是服务器端拦截了或是禁用了内网访问外网IP的权限.你们说我的这种猜测有可能吗?