Jump to content

Talk:Unix domain socket

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Stevebroshar (talk | contribs) at 18:10, 8 August 2024 (Name: Reply). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Filesystem

They are referenced by processes as inodes in the file system.

This is not quite correct. On several OS you can set the first byte of the pathname to 0, causing the following name to be looked up in a filesystem independent namespace (without any filesystem access control checks). Even from within a chroot.

Notes

The PF_UNIX (also known as PF_LOCAL) socket family is used to communicate between processes on the same machine efficiently. Unix sockets can be either anonymous (created by socketpair) or associated with a file of type socket. Linux also supports an abstract namespace which is independent of the file system.

Valid types are SOCK_STREAM for a stream oriented socket and SOCK_DGRAM for a datagram oriented socket that preserves message boundaries. Unix sockets are always reliable and don't reorder datagrams.

Unix sockets support passing file descriptors or process credentials to other processes using ancillary data. 220.225.70.2 04:58, 4 April 2007

Advertising based resources

Why do the external links point to copies of the Linux documentation on an ad-covered page, rather than the authoritative source? --David Chisnall (talk) 18:35, 19 November 2007 (UTC)[reply]

Name

What does domain in Unix domain socket stand for? --Abdull (talk) 20:52, 9 March 2015 (UTC)[reply]

It's essentially the standard English meaning of the word. It's the first parameter of socket(2). The Linux manpage calls it the "communication domain", if that helps, though I've never heard anyone call it that. — Preceding unsigned comment added by 2601:602:A080:1240:45D4:8FC9:967D:6C67 (talk) 02:41, 22 January 2023 (UTC)[reply]
The info from (unknown) is good, but leaves me with more questions that I started with. I assumed that domain means in this context what it means normally (in English!), so that part is not helpful. I see at https://man7.org/linux/man-pages/man2/socket.2.html that socket is a function that accepts an arg called domain. Further, there is a value AF_UNIX for that arg that I assume is what "Unix domain" is referring to. The manual does use communication domain to describe domain. Also, uses protocol family and format. Make up your mind guys! Stevebroshar (talk) 17:53, 8 August 2024 (UTC)[reply]
I think one thing that's confusing about the term Unix domain socket is that socket is a concept in the domain (as in context) of Unix. Therefore, the term Unix domain socket could mean two different things. It could mean a socket created with AF_UNIX or it could mean socket(2) (any sub-type). But, the normal meaning is the former. The confusion would be less if instead of Unix domain socket we called it local domain socket (note that AF_LOCAL is another name for AF_UNIX). Oh well. Stevebroshar (talk) 18:10, 8 August 2024 (UTC)[reply]

History or naming

I think a section on the historical derivation of "Unix domain sockets", or else an explanation of the name, is warranted. They are often called just "sockets" or "socket files" as well. The common synonyms (even if incorrect) and differentiation from commonly conflated entities would be a good addition. DouglasHeld (talk) 17:47, 24 January 2022 (UTC)[reply]

It seems (from my limited study of Unix socket) that a Unix domain socket is what you get by passing AF_UNIX for the domain arg to the function socket() -- i.e. socket(AF_UNIX, type, protocol). You can create other kinds of sockets by passing a different value for the domain arg. So socket refers to any type/kind whereas Unix domain socket refers to a subset. If the context is clearly Unix domain socket (or any particular sub-type), then could use just socket as a short form. Stevebroshar (talk) 18:03, 8 August 2024 (UTC)[reply]