网上的资料大多是介绍穿越一级代理访问公网,要是存在多级代理该怎么办呢?比如 clientA->代理1(http、sock5等)->代理2(http、sock5等)->公网web服务器,我是觉得要穿越第一级代理,clientA要和代理1通过sock5等协议进行协商,这还在我们的客户端程序的控制范围之内,但是数据包到达代理1之后,代理1要和代理2协商,客户端程序好象就控制不了了吧?实际网络中应该是存在通过多级代理(http、sock5等)上网的吧,IE、QQ之类的是怎么做的呢?
调试欢乐多
那如果是这样的情形:clientA->NAT->代理(sock4、sock5等)->Server,
clientA发出的数据包能穿越代理到达Server吗?是不是这样:
1.NAT是透明的,如果clientA知道代理的IP,那它可以透过NAT和代理协商有关数据包穿越的问题,数据包就可以到达Server了?2.但是在这种情况下,我们往往不知道代理的IP吧?有办法知道吗?
但如果你不知道代理的IP,那显然不能用了,代理是你来用的,并不是NAT主动要用的,所以,代理的IP显然要由你去感知。当然,对于server也一样,不是NAT主动连server的,而是你要连的,所以,server的ip你也要知道。
你说得没错,我准备写一个实用一点的P2P程序,所以近段时间对NAT、代理、UDP编程等问题进行学习,在论坛上发了不少帖(不少是弱弱的问题)问大家,承蒙各位关照,现在已经弄出了一个初步的方案,下一阶段就要实践了,肯定也会碰到许多问题,到时还要向大家讨教,当然我也会把我的一些心得、理解跟大家分享,^_^,希望以后各位继续关照,谢谢!
原理=clientA->NAT->Server;
中间有多少代理你不须要关心,把它看作一个简单nat即可.
因为Client port=>nat Port->Server
Server->nat Port=>Client port
你明白我的意思了吗?