我可以在bash中隧道TLS流量而不使用多线程吗?

我可以在bash中隧道TLS流量而不使用多线程吗?,bash,proxy,tls1.2,tunneling,Bash,Proxy,Tls1.2,Tunneling,我想使用bash在Linux上隧道TLS流量。我可以不用多线程吗?是否有一个可预测的信息交换顺序,以便我在任何时候只需要听取其中一方的意见 我正在为Linux编写一个代理服务器,需要对TLS进行隧道。我更喜欢在bash中做 exec 3<>/dev/tcp/example.com/443 while 1 do cat <mypipe >&3 cat <&3 >mypipe done exec 3/dev/tcp/example

我想使用bash在Linux上隧道TLS流量。我可以不用多线程吗?是否有一个可预测的信息交换顺序,以便我在任何时候只需要听取其中一方的意见

我正在为Linux编写一个代理服务器,需要对TLS进行隧道。我更喜欢在bash中做

exec 3<>/dev/tcp/example.com/443
while 1
do
    cat <mypipe >&3
    cat <&3 >mypipe
done
exec 3/dev/tcp/example.com/443
而1
做
第三类
猫烟斗
完成
我可以这样做吗?粗略地我的意思是,这是一个可行的架构吗?不要介意我最终应该退出循环。我打算使用messenger在命名管道mypipe中提供数据,并收集响应

messenger将运行以下代码:

cat <&0 >mypipe
cat <mypipe
cat mypipe

cat不,它不是一个可行的架构

即使不了解您计划如何将数据馈送到管道中,通过TLS进行通信的端点也没有义务按照阻塞
cat
调用所需的顺序传递消息


此外,
bash
不执行多线程。它允许您启动多个作业/进程,但它本身不是多线程的。

我知道第一个cat块,但为什么会出现问题?因为它是一个代理,我假设您的管道是用来在两个方向上传递数据的,而第二个
cat
看起来是用来在其中一个方向上传递数据的。它将永远不会执行,因此数据将只流向一个方向。数据将由messenger提供给命名管道mypipe。一旦有数据,第一个cat就会执行并完成。然后,第二个cat侦听来自目标服务器的回复,读取该回复并将其转发到mypipe,messenger在mypipe中收集该回复。“这就是想法。”Henrik4在多个协议级别上来回发生。例如,请参见“强制性SSL/TLS握手图”,其中显示了在TLS设置过程中来回传递的消息。这就是TLS--http,尤其是keepalive(在单个连接上来回多次)等。我对你的问题的回答是:这不是一个可行的体系结构。我遇到了另一个问题:缓冲
cat(以及各种TCP堆栈)喜欢在传递数据之前缓冲大块数据。但是如果发送方完成并且缓冲区还没有满。。。由于每个人都在等待其他人,管道可能会停止(可能永远停止)。TCP有一种处理方法:通知接收网络堆栈立即刷新其缓冲区。但是
cat
无法识别这一点,更不用说将其传递到下一个链接了。