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

时间:2018-08-06 05:06:43

标签: sockets nginx tcp lua openresty

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

  

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

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

  

Unix域套接字或IPC套接字(进程间通信套接字)是用于在相同主机操作系统

上执行的进程之间交换数据的数据通信端点。

这使我提出一些问题:

  1. 此TCP套接字是另一种Unix域套接字吗?这个TCP套接字到底是什么?
  2. 文档中的cosocket是什么?我无法使用Google找到它
  3. TCP / IP模型的传输层中也使用了TCP协议,这个API是否允许绕过应用程序层直接在传输层中编程?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 此TCP套接字是另一种Unix域套接字吗?这个TCP套接字到底是什么?
  2.   

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

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

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

  
      
  1. 文档中的cosocket是什么?我无法使用Google找到它
  2.   

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

  
      
  1. TCP / IP模型的传输层中也使用了TCP协议,这个API是否允许绕过应用程序层直接在传输层中编程?
  2.   

完全正确。