在关于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 回答
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是OpenResty生态系统的术语 . 如果使用
ngx.socket.tcp()
API创建对象 - 则创建cosocket对象 .究竟 .