ACE P2P中,tcp打孔的问题
现在有NETA和NETB,Client-A 在NETA下,Client-B在NETB下,使用ACE成功的进行p2p连接,但是我发现Client-A在向Client-B打孔后,随即Client-A监听同一SOCKET,也就是随即进行Listen操作,等待Client-B连接,这时有一个问题,就是Client-B连接Client-A,如果在打孔后1分钟之内连接,连接是成功的,如果超过1分钟则不成功,我想知道这是什么原因?是NET的session么?因为我想达到的目的就是这个孔会持续存在,只要打孔了,程序仍运行,Client-B在任何时间内都可连接Clinet-A。 tcp打孔? tcp打孔?modern 发表于 2011-2-22 12:50 http://www.acejoy.com/bbs/images/common/back.gif
恩,TCP穿透。 1. 一种是在A的网关上做端口映射。
2. B不再内网中,此时B让服务器告诉A反向连接到自己这里。
3. A与B都在内网,有一种建立直接P2P TCP连接的方法有时候会被使用。大多数TCP连接都是从一个终端发从一个SYN包到另一个终端,另一个中断同步响应一个SYN-ACK包。无论怎样,对于两个终端来说,同时通过发送同步包到对方然后用一个ACK包应答来建立一个TCP连接是可行的。这种过程就被称为 "simultaneous open "(同时打开)
如果一个网关从尝试建立一个TCP连接的私有网络的外面接受一个TCP SYN包,网关通常以丢弃这个SYN包或者发送一个TCP RST(连接复位)包的方式来拒绝这个连接尝试。但是,如果同步包与源和目的地址端口一起到达,那么会让网关相信一个TCP连接已经建立起来,然后网关将会允许数据包通过。特别是如果网关刚刚得到并转换了一个从同样地址和端口来的SYN包,它将认为连接是成立的并允许进来的SYN通过。如果客户端A和B能彼此预测公共端口,它们各自的网关将分配的下一个TCP连接端口,如果其中一个客户端和另一个客户端建立一个外部的TCP连接,可以在对方SYN到达本地网关之前就发送SYN包通过它本地自己的网关,那么P2P TCP连接就可以工作了。 (不过这种方式在实际中成功率太低了) 最近在和大家一起看,不过好像他们叫穿越 tcp穿透貌似得路由支持才行。。
页:
[1]