`AF_UNIX` 和 `AF_LOCAL`

简介: `AF_UNIX` 和 `AF_LOCAL`

AF_UNIXAF_LOCAL 在计算机网络编程中都是指同一种类型的地址家族,它们被用来创建和管理UNIX域套接字(Unix Domain Sockets)。在不同的系统或标准文档中,可能会使用这两个名称中的任意一个来表示同一概念。

UNIX域套接字 主要用于同一台操作系统中的进程间通信(IPC),不同于基于网络的套接字如 AF_INET(用于IPv4)或 AF_INET6(用于IPv6),它并不通过网络进行数据交换,而是利用了操作系统的内核机制,在进程之间直接传递数据。

当在调用 socket() 函数创建套接字时,可以选择 AF_UNIXAF_LOCAL 作为第一个参数 domain,这表明你将创建的是一个用于本地进程间通信的套接字。

另外,PF_UNIXPF_LOCAL 通常与 AF_UNIXAF_LOCAL 是等价的,只是在某些系统中可能作为另一种表述方式出现。在POSIX兼容的系统中,PF_* 常常作为与 AF_* 对应的协议家族标识符使用,尽管在实践中二者在UNIX域套接字的情况下可互换。

UNIX域套接字可以是:

  • SOCK_STREAM 类型,提供一种有序、可靠、双向全双工的连接,类似于TCP。
  • SOCK_DGRAM 类型,提供无连接、不可靠的消息服务,类似于UDP,但即使在 SOCK_DGRAM 模式下,UNIX域套接字仍然保证消息边界,即发送的小块数据不会像网络UDP那样被重组。

这种套接字的地址结构是 sockaddr_un,其中可以包含一个文件系统路径(命名套接字)或是一个在内核中创建的匿名套接字对(由 socketpair() 函数创建)。由于数据传输发生在本地,不需要网络协议栈处理,所以相比网络套接字,UNIX域套接字具有更快的速度和更低的开销。

目录
相关文章
|
6月前
|
网络协议 安全 Unix
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
455 3
|
6月前
|
网络协议 Unix Linux
`AF_INET`
`AF_INET`
110 3
|
5月前
|
Unix Linux
`AF_UNIX` 和 `AF_LOCAL`
`AF_UNIX` 和 `AF_LOCAL` 在使用socket()函数创建套接字时,具有相同的意义。它们都表示使用Unix域套接字(Unix Domain Socket),这种套接字主要用于在同一台
|
5月前
|
网络协议 Python
`AF_INET6`
`AF_INET6` 是一个常量,在套接字编程中用于指定使用 IPv6 地址族。当你创建一个套接字(socket)时,你需要指定地址族(Address Family)、套接字类型以及协议。`AF_IN
|
6月前
|
网络协议 Linux C++
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
307 0
|
网络协议 Linux
tcp/ip源码(18)——struct inet_sock中的cork用途
作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 在前面的学习过程中,遇到了位于struct inet_sock中的cork,当时没有把这个变量搞得很明白,没有完全搞清这个变量的用途。
1311 0
|
API
错误 C4996 ‘inet_ntoa‘: Use inet_ntop() or InetNtop() instead or define _WINS
错误 C4996 ‘inet_ntoa‘: Use inet_ntop() or InetNtop() instead or define _WINS
1571 0
内核中的UDP socket流程(5)——inet_create
内核中的UDP socket流程(5)——inet_create 作者:gfree.wind@gmail.com 原文:http://blog.chinaunix.net/space.
1075 0
|
Linux 数据安全/隐私保护