向大家请教几个 tcp 穿透的问题

2017-08-09 08:59:17 +08:00
 miniliuke

1.现在的 bt 协议的 p2p 是 tcp 还是 udp 协议啊? 2.tcp 穿透好像要端口复用,但是 tcp 不是一个端口要么监听要么发送请求么,一但关闭连接,立刻映射的端口就不一样了啊......到底怎么实现啊,怎么才能复用而不改变映射的地址啊,node 怎么实现

5122 次点击
所在节点    Node.js
16 条回复
miniliuke
2017-08-09 09:14:53 +08:00
难道真的没有好的解决方法?哪怕是全克隆
miniliuke
2017-08-09 09:33:17 +08:00
bt 下载点对点传输文件用的是 tcp 还是 udp 啊
rongyiran
2017-08-09 09:40:35 +08:00
可以看看 Http 权威指南,
你这么一问,让我第一想到的是 web 隧道。
gejigeji
2017-08-09 09:49:46 +08:00
感觉 lz 一些概念没搞明白
joshu
2017-08-09 09:50:26 +08:00
tcp 和 udp 都有
主动发送请求时端口是随机的,被动接受请求时用的是监听端口
bboot9001
2017-08-09 09:55:02 +08:00
可以搜搜内网穿透的原理看看
littlewing
2017-08-09 10:00:02 +08:00
upnp
miniliuke
2017-08-09 10:11:03 +08:00
@littlewing
@joshu
@bboot9001 UDP 的穿透我可以实现,因为我可以把监听和发送绑定在同一个端口,这样 NAT 映射的也是同一个端口。。。但是 TCP 无法实现,我看网上都说 tcp 的端口复用,不是很明白,因为印象中一般 TCP 绑定了端口,就没法再从同一个端口发送了,还是我错了
b1eberg0n
2017-08-09 11:17:15 +08:00
BT 走 TCP
hjc4869
2017-08-09 11:19:45 +08:00
@miniliuke TCP 也可以 reuse address/port。
disk
2017-08-09 11:51:53 +08:00
@miniliuke p2p 有 tracker 服务器的,客户端需要把一个监听端口映射出去。你干吗要自己造轮子呢。。。
miniliuke
2017-08-09 14:26:06 +08:00
@hjc4869 这个就是我想实现的,不过没太搞懂,也不知道怎么实现
SleipniR
2017-08-09 16:52:52 +08:00
一些关键字,仅供参考:
UPnP(Universal Plug and Play)
STUN(Simple Traversal of UDP Through Netwoek Address Translators)
TRUN(Traversal Using Relay NAT)
ALG(Application Layer Gatewqy)
ICE(Interactive Connectivity Establish)
jedihy
2017-08-10 02:52:17 +08:00
映射都是映射监听的端口,只有内网被动监听才需要映射,主动发起连接在不在内网没区别。

映射你 P2P 监听端口就行了。
jedihy
2017-08-10 02:53:31 +08:00
@miniliuke 你真的需要实现 resue port?而不是搞错概念了?这个只需要一行代码就可以实现`setsockopt(...)`。
mingl0280
2017-08-10 05:13:08 +08:00
我觉得你好像搞错了什么东西…… TCP 的连接建立以后,两端(几乎)对等,不存在谁只能监听或者谁只能发送的问题……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX