首页 文章

什么是lua nginx模块中引用的TCP套接字?

提问于
浏览
0

在关于ngx.socket.tcp()(Link)的Lua Nginx模块文档中,它说:

创建并返回一个TCP或面向流的Unix域套接字对象(也称为“cosocket”对象的一种类型)

此TCP套接字可用于连接到远程主机,但在wiki中有关unix域套接字(Link):

Unix域套接字或IPC套接字(进程间通信套接字)是用于在同一主机操作系统上执行的进程之间交换数据的数据通信 endpoints

这引出了一些问题:

  • 这个TCP套接字是否是另一种类型的Unix域套接字?这个TCP套接字究竟是什么?

  • 文档中提到的cosocket是什么?我用谷歌找不到它

  • TCP协议也用于TCP / IP模型的传输层,这个API是否允许直接在传输层编程,绕过应用层?

1 回答

  • 0

    这个TCP套接字是另一种类型的Unix域套接字吗?这个TCP套接字究竟是什么?

    TCP和unix域套接字都是流套接字 . 您可以使用 ngx.socket.tcp() API创建两种类型的套接字 . OS套接字的类型将由connect方法定义,有两种不同的语法:

    如果使用 tcpsock:connect(host, port, options_table?) 语法连接,则套接字将为TCP套接字 .

    如果通过 tcpsock:connect("unix:/path/to/unix-domain.socket", options_table?) 语法连接,则套接字将是unix域套接字 . 显然你不能使用unix域套接字进行网络通信 .

    文档中提到的cosocket是什么?我用谷歌找不到它

    Cosocket是OpenResty生态系统的术语 . 如果使用 ngx.socket.tcp() API创建对象 - 则创建cosocket对象 .

    TCP协议也用于TCP / IP模型的传输层,这个API是否允许直接在传输层编程,绕过应用层?

    究竟 .

相关问题