V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
miniliuke
V2EX  ›  Node.js

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

  •  
  •   miniliuke · Aug 9, 2017 via Android · 5935 views
    This topic created in 3194 days ago, the information mentioned may be changed or developed.

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

    16 replies    2017-08-10 05:13:08 +08:00
    miniliuke
        1
    miniliuke  
    OP
       Aug 9, 2017 via Android
    难道真的没有好的解决方法?哪怕是全克隆
    miniliuke
        2
    miniliuke  
    OP
       Aug 9, 2017 via Android
    bt 下载点对点传输文件用的是 tcp 还是 udp 啊
    rongyiran
        3
    rongyiran  
       Aug 9, 2017
    可以看看 Http 权威指南,
    你这么一问,让我第一想到的是 web 隧道。
    gejigeji
        4
    gejigeji  
       Aug 9, 2017
    感觉 lz 一些概念没搞明白
    joshu
        5
    joshu  
       Aug 9, 2017 via Android
    tcp 和 udp 都有
    主动发送请求时端口是随机的,被动接受请求时用的是监听端口
    bboot9001
        6
    bboot9001  
       Aug 9, 2017
    可以搜搜内网穿透的原理看看
    littlewing
        7
    littlewing  
       Aug 9, 2017
    upnp
    miniliuke
        8
    miniliuke  
    OP
       Aug 9, 2017 via Android
    @littlewing
    @joshu
    @bboot9001 UDP 的穿透我可以实现,因为我可以把监听和发送绑定在同一个端口,这样 NAT 映射的也是同一个端口。。。但是 TCP 无法实现,我看网上都说 tcp 的端口复用,不是很明白,因为印象中一般 TCP 绑定了端口,就没法再从同一个端口发送了,还是我错了
    b1eberg0n
        9
    b1eberg0n  
       Aug 9, 2017
    BT 走 TCP
    hjc4869
        10
    hjc4869  
       Aug 9, 2017   ❤️ 1
    @miniliuke TCP 也可以 reuse address/port。
    disk
        11
    disk  
       Aug 9, 2017 via Android
    @miniliuke p2p 有 tracker 服务器的,客户端需要把一个监听端口映射出去。你干吗要自己造轮子呢。。。
    miniliuke
        12
    miniliuke  
    OP
       Aug 9, 2017 via Android
    @hjc4869 这个就是我想实现的,不过没太搞懂,也不知道怎么实现
    SleipniR
        13
    SleipniR  
       Aug 9, 2017
    一些关键字,仅供参考:
    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
        14
    jedihy  
       Aug 10, 2017
    映射都是映射监听的端口,只有内网被动监听才需要映射,主动发起连接在不在内网没区别。

    映射你 P2P 监听端口就行了。
    jedihy
        15
    jedihy  
       Aug 10, 2017
    @miniliuke 你真的需要实现 resue port?而不是搞错概念了?这个只需要一行代码就可以实现`setsockopt(...)`。
    mingl0280
        16
    mingl0280  
       Aug 10, 2017
    我觉得你好像搞错了什么东西…… TCP 的连接建立以后,两端(几乎)对等,不存在谁只能监听或者谁只能发送的问题……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5648 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 07:36 · PVG 15:36 · LAX 00:36 · JFK 03:36
    ♥ Do have faith in what you're doing.