⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_21228.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<p>
序号:21228 发表者:Redspider 发表日期:2002-11-15 09:01:19
<br>主题:探讨一下oicq用户如何是在两个私网里,之间是如何发消息的呢?
<br>内容:我抓包分析了一下,应该是把对方的代理服务器上的udp代理端口作为目标端口的。但我自己试验了一下,却没成功。<BR><BR>情形是这样的。我在两台机器上做试验,均通过代理上网,本身可以使用OICQ等程序。<BR>机器A通过代理a访问网络,机器B通过b访问网络,a和b都是可以直接访问internet的,我在A上写一个程序,以udp访问机器b的6000端口,b能收到,收到的报文的源地址是a和一个1xxxx的端口,从b上向a的这个地址和端口发送udp报文,A可以在6000端口上收到。这证明我原来的想法是对的。但问题就是:我从B的6000端口同样向a的该端口发送udp报文,A却收不到。我想不明白。是不是代理服务器的端口映射都要求是一一对应的?但oicq用的是同样的方法。谁有主意?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:目不识丁 回复日期:2002-11-15 20:58:57
<br>内容:QQ使用的方式和局域网直接互联不太一样。<BR>防火墙内的计算机可以和另一个放火墙外的计算机直接发送消息(防火墙可以理解为Proxy),使用的是直接地址ARP协议,如果两台计算机都在防火墙内就必须通过QQ服务器中转,对用户是透明的,即用户不知道自己的消息是直接发的还是转发的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-17 11:15:37
<br>内容:但我抓包分析看到的,的确是发向对方的代理端口的。至少和OICQ启动时所连接的服务器是不同的地址。<BR><BR>可惜抓包保存的文件在公司里。等我明天把那个包文件贴上来,一起分析一下。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:目不识丁 回复日期:2002-11-17 15:35:51
<br>内容:好
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-18 09:37:05
<br>内容:192.168.1.89是我在私网内的机器地址,218.19.82.106是我在广州的朋友的代理服务器地址,202.104.129.253是腾讯的服务器地址,上面可以看出,oicq在向对方发送消息(也就是udp报文)时,首先向对方的代理地址发送(218.19.82.106:42304),每次发送三个包,如果得不到对方的应答,就重试,最多一共发送6次,如果最终仍失败,就发给腾讯服务器由其转交(202.104.129.253:8000)。oicq这样做,证明是可以在两个不同的私网内的机器,通过代理端口,是可以相互发送udp报文的(毕竟不是每次都由服务器中转的)。<BR><BR>不过,似乎也和代理软件有关系。和有些朋友在公司里聊天,每次都是服务器中转。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:目不识丁 回复日期:2002-11-18 21:21:10
<br>内容:那个代理服务器218.19.82.106之所以使用42304端口,是因为他通过代理登陆OICQ的服务器时代理为他分配的端口,并不是固定的,下次登陆可能会改
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:赵万 回复日期:2002-11-19 09:04:02
<br>内容:我想提一个问题:<BR>书上不是说udp包,不应答吗?tcp才应答吗?<BR><BR>还有上面的问题,我想说一点自己的设想,不一定对,大家参考。局域网用代理上oicq,我看到不同机子显示的ip是一样的,但端口不同。于是我想也许就是登陆oicq时,代理分配一个端口给你,腾讯服务器记下你的ip和端口,同时把在线好友的端口和ip发给你,这样你就可以通过对方的ip和端口直接和好友通讯。<BR>因此我想Redspider 的设想是完全对的,他的实验也可以说是成功的。最后的问题应该是代理服务器的问题,因为我不知道大家有没有这样的经验:有时,好友明明在线,但是他发过来的消息还是带了“(通过服务器中转)”的字样,这就真说明Redspider 的实验。<BR>不过我还有一个问题,Redspider 如何得到对方的ip和端口呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-19 10:14:44
<br>内容:UDP本身是无应答的,应用程序(如oicq)可以在应用层自己做应答以确信传输的正确性。<BR><BR>其实,代理服务器对于udp报文的代理方式,我推测的和你们说的一样,也是通过端口映射。但代理服务器对于这个端口的分配和维护方式,却是个盲点。我推测可能是代理服务器维护一个计时器,超时就释放掉。oicq本身会定时向腾讯的服务器发个udp包过去,以表明自己还在线,这个应该也就会保证这个端口不会释放掉。但如果碰上代理服务器对于端口的超时计算比较短,就会造成用户虽然始终在线,但这个端口却始终在变化,那好友发送消息时就始终不能使用该用户的新端口成功发送过去了。这后面一点,只是我个人的胡猜而已。<BR><BR>但现在的问题是,用公网上的机器,我可以代理服务器的代理端口发送udp报文给私网里的机器(私网之前是不间断的向这台公网的机器的固定端口发送udp报文的,确保代理端口不被释放),而我用这台公网机器代理下的另一台私网机器,按照同样的目的地址和端口发送的报文,就没一次收到过。看样子是原理有问题。所以,迷惘啊。。。<BR><BR>上面那个画面是用sniffer pro截下来的,所以能看到对方的ip和端口。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:huanglixin 回复日期:2002-11-26 17:08:10
<br>内容:关于QQ的通讯方式.我没有考证过,这里仅谈一下我自已的看法.<BR>希望大家探讨一下.QQ的普通版.用户是通过TCP方式连接到QQ服务器上<BR>去的.用户与用户之间的通讯方式是通过upd方式来处理一般的聊天信息.传送文件又是用户与用户之间的TCp方式来实现的.用户在连上服务<BR>器时.服务器就会把用户之间不管你通过n层代理,最后会把公网上的<BR>也就是你的IP包出口的ip+port 告诉对方,在聊天时只必对着这个ip+<BR>port发送upd包,由于代理服务器根据你它分配的端口一级一级的向下<BR>派发直到你的私网里面.在上面你的例子中如果从一个私网上向:<BR>218.19.82.106+42304 发送upd数据包.那你的192.168.1.89一定能够收到它发的数据包(前提是你必须在线这样你的临时端口才有效),实际上代理服务器只是一个转发而已.由于upd不能保证数据一定到达,当发送数据收不应答时,这通过QQ服务TCp连接转发所以你经常会看见通过转发这样的提示,当处在不同代理的服务器的用户发送文件时,QQ需要两个私网的机器建立Tcp 连接.而建立这个连接首先得发一个连接分节的ip请求<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:huanglixin 回复日期:2002-11-26 17:36:28
<br>内容:继续:<BR>假设私网上对方开一个8001监听端口,等待你去建立连接的.在这里假设:<BR>&nbsp;&nbsp;A机 localIP:192.168.0.1  代理服务器:202.11.11.11(公网)<BR> B机 localIP:100.135.6.1&nbsp;&nbsp; 代理服务器:201.11.11.11(公网)<BR>&nbsp;&nbsp;QQ: IP 202.104.129.253(8000).假设下述分配成立<BR> ProxyA-&gt;QQSrv(202.11.11.11,8888 &lt;-&gt;202.104.129.253,8000))<BR> ProxyB-&gt;QQSrv(201.11.11.11,9999 &lt;-&gt;202.104.129.253,8000))<BR>那么在又方在连接上QQ服务器之后,得到对方的公网ip+port即.<BR>proxyA:202.11.11.11:8888 proxyB:201.11.11.11:9999.如果A向B<BR>发聊天信息只须 sendto(201.11.11.11:9999,szContent.....)<BR>b向A发聊天信息只须 sendto(202.11.11.11:8888,szContent.....)<BR><BR>注意了.如果要A-&gt;B建立连接的话.根所TCP的三路握手规则首先得发送一个syn 报文的ip包.如果对方开的一个8001监听端口的那么它的IP包<BR>只能是 201.11.11.11(8001) 这样这个ip包到达代理服务器时如果代理<BR>服务器给B分配的临时端口的话不是8001 这个包就会丢掉.所以这个连接的请求包可能根本没有走到B的私有网上,连接当然就建不上的.而upd发送<BR>数据是没有问题的.这就是经常我们看见的你处在不同防火墙下面.<BR>msn( 传文件也是一样的).这只是我的想法,没有验证过的,欢迎探讨:<BR>QQ:3964363<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-26 17:46:32
<br>内容:我不知道你所说的普通版指哪个版本,我所看到的,oicq客户端和服务器的连接方式也是udp。这样,一来服务器负载低,二来oicq向服务器发udp包的过程中就可以促使代理服务器为私网里的客户端机器分配一个代理端口。<BR><BR>理论上,通过这个代理端口,任务机器都可以向私网里的机器发送udp报文。但实际情况却是取决于代理服务器的处理方式。我的试验结果是,有些代理服务器,只有私网里的机器起初发送的udp报文的目标地址和端口来的报文,代理服务器才会转发给私网里的机器,这也就是有些私网用户用oicq时,别人给他发的消息全部都是从服务器中转的原因,因为代理服务器只会转发由腾讯服务器的登录端口来的udp报文。我公司里的代理服务器就是这个样的。所以别人老埋怨我在oicq上不理人,冤枉得很。<BR><BR>至于具体的哪些代理软件是怎样的代理方式,我也没弄清楚,等有空了再做试验吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:齐乐 回复日期:2002-11-28 09:06:55
<br>内容:用的什么抓包软件?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:就这样被你征服 回复日期:2002-11-28 09:27:15
<br>内容:关注ing
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-28 09:35:53
<br>内容:sniffer pro.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-11-28 09:37:35
<br>内容:我的理解和jansen99基本一致,但实际试验结果却有出入,和我上面所讲的那样,这个细节得取决于代理服务器所采用的策略。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:和风 回复日期:2002-12-04 11:13:46
<br>内容:对这个问题,你理解的没错,只是你仔细想一想,你两个试验的情况是不一样的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Redspider 回复日期:2002-12-04 12:37:02
<br>内容:原闻其详。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -