1.假设机器A通过 机器B 211.100.x.x与互联网相通,机器C通过机器D
168.100.x.x与互联网相通,那么A和C这俩台机器能否建立socket连接(A和C都是非真正的Ip地址),若能则如何建立???
 2.请问代理和路由的建立方式有没有区别???

解决方案 »

  1.   

    不可以。
    A机器对于B机器是透明的,他们之所以能以互连网连接,是因为代理的问题,A可以以D机器相连接,但是却不可以直接的与B机器连接,除非在机器D上另有一个专门的中间代理。
      

  2.   

    1、如果A和C各占有固定的IP,当然不成问题,与本地通信没有区别;
    2、如A有固定地址,而C没有,可由C发起,A服务。
    3、如两机都没有固定地址,不可能。
      

  3.   

    讲讲原理。
    本地10台PC,通过proxy上网,实既上与通过专线+路由 方式没有本质区别。
    大家伙儿只得到了一个公网IP,大家都要上,怎么办?NAT 网络地址转换
    即建立如下映射关系:
     本地IP <=======> 公共IP + PORT
    ip包在通过NAT设备时,对其中地址和PORT信息进行相应转换,出去的包改SOURCE信息,让对方知道往哪回复;进来的包改TARGET信息,这样才能回送到真正的发起人。
     对端主机并不知道NAT的存在,它以为自己在和公网地址交谈。这就象"网聊",你胡子拉渣也可以冒充MM,但对方并不知晓。这个NAT设备可以是ROUTER,也可以是proxy软件。
      

  4.   

    thanks , 我也就死了心拉 那么A和C有没有可能进行通信,传送数据呢 就象qq,MSN一样
      

  5.   

    QQ、MAN是通过服务器间接通信的,clients之间没有任何连接。
      

  6.   

    thanks,不过如果两个人在一个局域网的话,QQ是可以建立P2P连接的。两人开聊后,如果断开服务器,还可以继续聊天,不在一个局域网就不行了。
      

  7.   

    这个我不知道,看来QQ做得很细致体贴。
    说实话,我从未上网聊天过,很土是吧?
    今天的话题有一定代表性,看来软件工程师也要知道一些习惯上认为是硬件范畴的知识,比如IP协议相关常识,只会配地址+掩码是不够的。
    实既上网络协议本身,是真正的超级软件工程,网络设备的核心也就是各种协议算法。
    衷心希望各位网络编程爱好者,拓展知识面,少走弯路。
      

  8.   

    不同局域网可以通信,只要以某种手段相连接:路由器、网关。
    proxy则只是在内外网间进行NAT映射,内外IP彼此是隔离的。
    IP包的内部信息(为方便,称为data),对IP层协议而言,只是数据,就象货物对于货车的关系。
    实既上,对于任何具体应用,data本身也有其结构,这种结构可以很简单,也可以很复杂,复杂到一定程度时,开发商也会称其为"协议",我们常说得应用层协议,就是这东西。
    建议您读一点儿TCP/IP协议封装的材料,并不难,也不必如何牢记于胸,但有助理解。这就象在入门边缘徘徊的MFC爱好者读《深入浅出MFC》的作用类似。
    但我猜您要表达的也许不是这个意思。
      

  9.   

    哈哈 谢谢 我是在写一个可以在网上带子目录传文件小程序,纯粹是为了写篇文章骗个毕业证。不过既然搞了,就想写好,如果能在internet实现,作用可能比较大,只是在局域网上实现,没什么意义。看来要学的东西还很多,可惜精力时间都不够,等以后有时间再说吧,谢谢mrlp先生及其他几位。