专栏首页贝塔博客tcp协议应用的坑

tcp协议应用的坑

最近在做个nodejs tcp内网穿透的APP

原理图:

目的是为了让内网的redis、mysql、mongodb、ssh、远程桌面等应用 暴露一个外网端口

测试了redis和ssh 正常,但是在用mysql和mongodb和远程桌面的时候,缺一直提示无法连接。

在打印日志的时候,发现了一个有趣的现象:

服务器启动成功
socket:{"address":"::ffff:127.0.0.1","family":"IPv6","port":8888}
代理连接成功
1 收到数据
1 收到数据
1 收到数据
1 收到数据
1 收到数据
socket:{"address":"::ffff:127.0.0.1","family":"IPv6","port":8888}
代理连接成功
2 收到数据
2 收到数据
2 收到数据
2 收到数据
1 收到数据
1 收到数据

由于我们设计的代理模式,只支持1个tcp,在这些应用中 他们却使用了多个tcp连接,就造成问题了。

外网服务器和内网客户端tcp连接也得多个,然后和外网tcp连接做个映射,或者使用数据包的方式,外网tcp连接多个,内网用和服务器只用一个。用自定义协议的数据包进行转发。

项目源码地址:https://github.com/newpanjing/fastnat

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • simpleui2.0发布采用element-ui+vue给django admin带来全新体验

    simpleui是由 Tompeppa 发起和维护的 Django 主题。该主题对Django的界面进行了大量的改进,让Django Admin成为更符合国人使...

    小贝壳
  • 网页顶部加载进度条NProgress

    Add [nprogress.js] and [nprogress.css] to your project.

    小贝壳
  • 图片在父容器中按比例缩放算法

    小贝壳
  • 大数据技术之_32_大数据面试题_01_Hive 基本面试 + Hive 数据分析面试 + Flume + Kafka 面试

    一、Hive 基本面试1、什么是 metastore2、metastore 安装方式有什么区别3、什么是 Managed Table 跟 External Ta...

    黑泽君
  • 3、backbone中的model实例[验证部分更新1.0.0]

    关于backbone,最基础的一个东西就是model,这个东西就像是后端开发中的数据库映射那个model一样,也是数据对象的模型,并且应该是和后端的model有...

    the5fire
  • 修改prototype使Event支持observe任何对象

    上次对js自定义事件做了一些介绍,这次修改prototype使得Event对象支持observe任何对象,代码如下: var Event = {     obs...

    用户1183026
  • 借助云开发实现小程序的登陆注册功能

    云开发的知识我讲过很多遍了,还不知道云开发是啥的同学可以翻看下我历史文章,或者看下我录制的云开发基础入门视频:《5小时零基础入门小程序云开发》

    编程小石头
  • Python网络编程

    套接字是计算机网络数据结构。在任何类型的通信开始之前,网络应用程序必须创建套接字。可以将它们比作电话插孔,没有它将无法进行通信。

    py3study
  • Clean Code之JavaScript代码示例

    作为一个开发者,如果你关心代码质量,除了需要认真测试代码能否正确执行以外,还要注重代码的整洁(clean code)。一个专业的开发者会从将来自己或则他人方便维...

    Fundebug
  • Chrome PDFium 整数截断漏洞分析

    本文通过介绍漏洞 5 大原理进而进行 POC 分析、zlib 分析、FlateUncompress 分析等漏洞分析,并进行 gdb 调试,最终完成补丁分析。

    腾讯玄武实验室

扫码关注云+社区

领取腾讯云代金券