| Unix sockets can use tcp, udp, or be a raw stream https://en.wikipedia.org/wiki/Unix_domain_socket#:~:text=The.... Puma creates a `UnixServer` which is a ruby stdlib class, using the defaults, which is extending `UnixSocket` which is also using the defaults https://github.com/puma/puma/blob/fba741b91780224a1db1c45664... Those defaults are creating a socket of type `SOCK_STREAM`, which is a tcp socket > SOCK_STREAM will create a stream socket. A stream socket provides a reliable, bidirectional, and connection-oriented communication channel between two processes. Data are carried using the Transmission Control Protocol (TCP). https://github.com/ruby/ruby/blob/5124f9ac7513eb590c37717337... You still have the tcp overhead when using a local unix socket with puma, but you do not have any network overhead. |
UDS using SOCK_STREAM does not do that; ie, it is not using IPPROTO_TCP.