socat
http://www.dest-unreach.org/socat/。
socat 是一个命令行工具,用以建立一个双向字节流交换数据。该字节流又可以被构造成不同地址类型,大量的地址选项也同样可以被作用于该流,因此socat非常强大。
filan 是一个打印文件描述符的工具,已经被重构用以调试socat,当然,也可以另做它用。
procan 是一个打印进程信息的工具,同样被重构用以调试socat。
socat 实例包含如下生命周期。
init 阶段解析命令参数,初始化日志打印;
open阶段打开第一个地址并且转发到第二个地址字节流,此阶段可能会阻塞,因此类似socks的复杂地址选项,需要在连接请求或认证对话框完成后才会开始下一阶段。
transfer阶段通过select 参数观察源地址流的读写操作,当可读或者可写时,socat完成到目的流数据转发。
当任意一方流eof,closing阶段开始,socat 主动发送eof操作到对等需要关闭的另外一方尝试优雅的关闭它的写操作的字节流,在运行的时间范围内,socat也可能会继续传输数据到另外一个方向,直到所有的通道被关闭。
命令的地址参数为用户给socat 建立字节流的必要信息。
一个地址规范通常包含一个地址类型的关键词,零或者多个地址参数通过":"间隔,零或者多个地址选项通过","间隔。
关键词指定地址类型(tcp4、open、exec),而对于一些关键字存在...