【网络代理模块】反向代理(下)

server/2024/10/20 9:35:24/

1 反向代理部署遇到的问题

1.1 通道异常断开导致数据丢失

将外网程序布置在云服务器上(外网)测试,ssh协议进行测试会莫名其快通道断开,发现丢了一个报文。丢报文的原因是:我们内网模块从命令通道接收到外网模块发来的的ip和port后需要对外网模块和目标IP和port建立TCP连接的时候,这里的连接是非阻塞的,在三次握手没有完成之前,向socket中写入数据会失败,所以丢了一个报文。

可以在TCP连接外网和TCP连接目标IP和port后面加一行sleep(1)休眠1s,发现解决了数据丢失问题,但这不是解决问题的方法。

解决问题的方法是像正向代理一样最后对EPOLLIN和EPOLLOUT的操作。

1.2 定时器与心跳

跟正向代理一样,对内网程序来说定时器到了有两件事可以做:

1)设置进程的心跳;

2)清理空闲的客户端socket。

对外网程序来说,定时器到了有三件事情可做:

1)更新进程的心跳;

2)向命令通道发送心跳报文;

3)清理空闲的客户端socket。

一定要做心跳报文,如果不做心跳报文,TCP连接时间长了会被强制断开;心跳很简单,设置一个字符串传过去就行了。


http://www.ppmy.cn/server/131786.html

相关文章

(五)Proteus仿真STM32单片机串口数据流收发

(五)Protues仿真STM32单片机串口数据流收发 – ARMFUN 1,打开STM32CubeMX,找到USART1,配置模式Asynchronous,此时PA9、PA10自动变成串口模式 串口默认参数:115200bps 8bit None 1stop 2,NVIC Settings使能…

每天一个数据分析题(四百九十七)- 序列模式挖掘

序列模式挖掘 (sequence pattern mining )是指挖掘相对时间或其他模式出现频率高的模式,典型的应用还是限于离散型的序列。下列哪个选项不属于序列模式的时限约束? A. 最大跨度约束 B. 主键约束 C. 最小间隔和最大间隔约束 D. 窗口大小约…

gbase8s的事务、并发控制、锁机制、隔离级别

一、事务概念 事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更…

软件评测CNAS资质获取流程

软件评测实验室如有意向申请 CNAS 检验机构认可,首先需要依据 CNAS 的认可准则建立管理体系,正式运行6个月以上,自我评估满足 CNAS 认可条件后可向 CNAS 提交申请。软件评测实验室CNAS认可的整体流程如图所示,后面的内容针对每个环…

MySQL索引优化

索引 索引分类: 主键索引唯一索引普通索引组合索引全文索引 主键索引 非空唯一索引,一个表只有一个主键索引;在 innodb 中,主键索引的 B 树包含表数据信息; PRIMARY KEY(key1, key2);唯一索引 不可以出现相同的值…

tp8自带的文件缓存如何配置

TP8自带的缓存是文件缓存。‌ ThinkPHP6默认的缓存驱动是文件缓存,它将缓存数据存储在应用的runtime目录下的cache目录中。文件缓存适用于单机环境下的应用,对于数据量较小且读写频率较低的应用场景,是一种简单有效的缓存方案‌。 ThinkPHP8…

oracle归档日志爆满问题处理

最近客户单位的oracle数据库出了问题,经常出现无法连接,报错提示 ORA-00257: archiver error, Connect internal only, until freed.,手动清除归档日志后可以恢复访问,但是过不了几天依旧会爆满,每日生成的归档日志很大。经过详细…

私域流量运营的误区

私域流量运营是近年来营销领域的重要趋势,但在实际操作中,很多企业和个人容易陷入一些误区。以下是几个常见的私域流量运营误区及其解决方法: 1. 只关注流量,不重视内容 误区:许多运营者认为,只要吸引到足…