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

ops/2024/10/17 21:57:08/

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/ops/124995.html

相关文章

欧科云链研究院深掘链上数据:洞察未来Web3的隐秘价值

目前链上数据正处于迈向下一个爆发的重要时刻。 随着Web3行业发展,公链数量呈现爆发式的增长,链上积聚的财富效应,特别是由行业热点话题引领的链上交互行为爆发式增长带来了巨量的链上数据,这些数据构筑了一个行为透明但与物理世…

ros1:使用C++编写ros程序,获取IMU数据,使用gazebo仿真

cd catkin_ws/src/catkin_create_pkg imu_pkg roscpp rospy sensor_msgs在src目录下创建,imu_node.cpp #include "ros/ros.h" #include "sensor_msgs/Imu.h" #include "tf/tf.h"void IMUCallback(sensor_msgs::Imu msg){if(msg.orien…

linux 配置ssh免密登录

一、 cd /root/.ssh/ #不存在就创建mkdir /root/.ssh ssh-keygen #连续按4个回车 ll二、将公钥发送到目标服务器下 #公钥上传到目标服务器 ssh-copy-id root192.168.31.142 #回车完也是要输入密码的 #测试一下免密登录: ssh root192.168.31.142 成功

安装openai-whisper 失败

昨晚安装python 语音识别模型经常失败: pip install openai-whisper 具体原因是因为国外的源使网络不稳定造成断网 查阅资料我自己的解决办法是在自己C:\Users\用户名目录下建一个pip文件夹,在pip文件夹下建一个pip.ini文件 在pip.ini文件中加入自己要…

Docker 容器跨主机通信 overlay

Docker 容器跨主机通信 overlay 一.Overlay网络概述 ​ Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式。Overlay网络采用VXLAN(Virtual Extensible LAN)技术…

univer实现excel协同

快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&q…

开发一个UniApp需要多长时间

开发一个UniApp所需的时间因项目的规模、复杂度、开发团队的经验水平以及开发过程中的需求变更等多种因素而异。因此&#xff0c;很难给出一个确切的时间范围。然而&#xff0c;我们可以从以下几个方面来大致估算开发时间&#xff1a; 项目规划与需求分析&#xff1a; 在项目开…

题目:1297. 子串的最大出现次数

> Problem: 1297. 子串的最大出现次数 题目&#xff1a;1297. 子串的最大出现次数 题目描述 给定一个字符串 s&#xff0c;要求找到满足以下条件的任意子串的出现次数&#xff0c;并返回该子串的最大出现次数&#xff1a; 子串中不同字母的数目必须小于等于 maxLetters。…