V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lqw3030
V2EX  ›  问与答

请教一个关于内网穿透流程问题

  •  
  •   lqw3030 · 2020-08-20 09:51:57 +08:00 · 372 次点击
    这是一个创建于 1358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    • 一直有在使用 frp 非常方便。自身是 java 语言,因此试想尝试去实现基本功能,在过程中碰到些许问题,请教下朋友们

    流程

    ## A 公网服务器端
    ## B 内网应用端
    ## C 任意访问者
    
    需求:映射 B 的 80 端口至 A 的 7002 端口(即转发 A 的 7002 的端口的请求至 B 的 80 口)
    
    当下流程:
    1. B 客户端启动时会与 A 建立 tcp 连接( A 监听 7001 ),并保持心跳测活(中断重连)。
    2. 当 C 访问 A 监听的映射端口( A 监听 7002 )时,A 会向已建立的 TCP 连接( A 监听 7001 所保持的连接)通知 B 向 A 建立一个新的 TCP 连接( A 监听 7003 )
    3. A 在确定新的 TCP 连接建立后转发 7002 端口所有消息转发到 7003 端口
    

    问题

    • 请问上述流程是否存在问题,这个流程方面知识处于空白
    • 上述描述的流程虽说用编码实现了可以穿透,但每一个入站访问都得占用一个内网 B 到公网 A 的 TCP 连接,并且存在写入或读取过程中连接被重置
    • 能否共用一个 tcp 连接(内网 B 端和公网 A 端仅建立一个连接,不同端口数据通过报文包含字段去路由)

    麻烦有经验的朋友可以指导下或是留下联系方式我联系您,多谢!!!

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4831 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.