oracle 旁路监听,TCP打孔(旁路监听插座)

博主在尝试使用UDP打洞技术成功穿透NAT后,遇到TCP连接的问题。在TCP连接过程中,虽然能建立连接,但监听套接字无法捕获入站连接,总是由已连接套接字接收。根据文章引用,正常的期望是同时拥有连接和监听套接字。博主在Windows环境下实验,发现关闭连接套接字会导致NAT洞口关闭。问题在于为何监听套接字无法正常工作。寻求解决方法。
摘要由CSDN通过智能技术生成

我已经有几天没有打洞了,为了有可靠的行为,但我现在已经到了死胡同了。在

UDP打孔非常有效:只需先将数据包发送到远程,然后让远程设备以另一种方式发送数据包,因为它将通过源NAT着陆。从我尝试的结果来看,这是相当可靠的。在

但是现在TCP。。。我不明白。在

现在,我可以通过nat建立连接,但是只能使用连接套接字:A.connect(B) -> Crash agains't B's NAT, but open a hole in A's NAT.

B.connect(A) -> Get in A's NAT hole, reach A's connecting socket.

但是现在,发送SYN数据包进行连接的两个套接字已经连接。在

你会以为我会这么做,通过2个NAT连接,万岁。在

但问题是,这不是一个正常的行为,本文给出了:http://www.brynosaurus.com/pub/net/p2pnat/,我应该能够有一个与连接套接字平行的侦听套接字。在

入站连接,我会接受一个侦听套接字。在

但是入站连接总是被连接套接字捕获,而不是被侦听套接字捕获…

例如:

^{pr2}$

现在有了这个脚本,只需与朋友或其他人商定一个端口,并在一端执行,Connecting.connect(...)应该运行一段时间(等待超时,因为SYN包撞到了遥远的NAT,但幸运的是在他自己的NAT中打开了一个洞),同时在另一端执行脚本,现在,Connecting.connect(...)将返回,因为它将已连接。在

最奇怪的是:Listening套接字从未被触发过。在

为什么?如何让侦听套接字通过连接套接字捕获入站连接?在

注意:关闭连接插座确实会在网络上发送一些立即关闭孔的信息,至少在我的网络上是这样。在

第二个注意:我在窗户上。在

编辑:主要问题是,在任何情况下,这个脚本输出CONNECTED [...],而不是{},这是不应该发生的。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值