xyooyx
V2EX  ›  问与答

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

  •  
  •   xyooyx · Aug 20, 2020 · 682 views
    This topic created in 2119 days ago, the information mentioned may be changed or developed.

    背景

    • 一直有在使用 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 端仅建立一个连接,不同端口数据通过报文包含字段去路由)

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2892 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.