首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unix域协议学习小结

Unix域提供两种套接:字节流套接(类似TCP)以及数据报套接(类似UDP)。...根据《Unix网络编程卷1》,选择Unix套接有以下三点理由: 尽管使用的API类似于网络套接,但是所有的通信几乎都是发生在操作系统内核层面,往往比在同一个主机上使用TCP通信快一倍 Unix套接可以在同一主机的不同进程间传递描述符...Unix套接可以把客户的凭证(用户ID以及组ID)提供给服务器,从而能够提供额外的安全检查措施 使用方式 Unix套接对比网络套接,在适用方式上主要有以下几点不同: 1、地址 Unix套接使用...但是如果向一个套接(sockfd1)中写入,再从该套接读取,就会阻塞,只能够在另一个套接(sockfd0)中读取 读写可以位于同一个进程,也可以位于不同的进程,如父子进程。...如果不关闭管道就无法通知对端数据已经发送完毕,但是关闭了管道又无法送终读取结果数据。

2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux文件类型

当然,协议族往下,套接可细分为很多种类型,例如INET套接可以分为TCP套接、UDP套接、链路层套接、Raw套接等等。其中网络套接是网络编程的基础和核心。...Unix Domain套接 对于单机的进程间通信,使用Unix Domain套接比Inet套接更好,因为Unix Domain套接没有网络通信组件,也就是少了很多网络功能,它更加轻量级。...进程1向A写入数据,将自动推送到B上,进程2可从B上读取A写入的数据,同理进程2向B中写入数据将自动推送到A上,进程1可从A上读取B写入的数据。...对于bash shell,可以通过nc命令(NetCat)来创建,或者干脆使用两个命名管道来实现对应的功能。如有需要,可自行了解如何在bash shell中使用Unix Domain套接。...进程1向自己的套接的send buffer写入数据,将发送到对端的recv buffer中,然后对端的进程2就可以recv buffer中读取数据,反之亦然。

3K10

1-UNIX网络编程-Socket套接编程简介

触发学习UNIX网络编程的动力在于前段时间需要开发一个接入服务,需要考虑比较高的并发处理能力,且尽量少占用的机器资源,选用了JAVA的Netty框架,学习过程产生不少疑问,限于基础知识太薄弱无法理解原理...] 指定协议簇 : AF_INET(IPv4) AF_INET6(IPv6) AF_LOCAL(UNIX协议) AF_ROUTE(路由套接) AF_KEY(秘钥套接) [type]...[sockfd] socket函数返回的套接描述符 [myaddr] 是指向本地IP地址的通用套接结构 [addrlen] 特定套接结构的长度(IPv4、IPv6、Unix...字符,而机器则是不同操作系统使用不同的字节序 read 连接套接读取指定长度的内容 write 往连接套接中写取指定长度的内容 inet_pton...把字符串格式的IP地址,转成相应协议族的数值格式 另外一个配套的函数是inet_ntop,作用相反 fgets 函数,标准输入中读取指定长度字符串,有点像scanf

88730

socket套接是什么

UNIX/Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。...有了文件描述符,我们就可以使用普通的文件操作函数来传输数据了,例如: 用 read() 读取远程计算机传来的数据; 用 write() 向远程计算机写入数据。...格式套接(SOCK_STREAM) 流格式套接(Stream Sockets)也叫“面向连接的套接”,在代码中使用 SOCK_STREAM 表示。...数据报格式套接(SOCK_DGRAM) 数据报格式套接(Datagram Sockets)也叫“无连接的套接”,在代码中使用 SOCK_DGRAM 表示。...也就是说,数据错了就错了,无法重传。 因为数据报套接所做的校验工作少,所以在传输效率方面比流格式套接要高。

1.4K10

由 JVM Attach API 看跨进程通信中的信号和 Unix套接

套接Unix Domain Socket) 使用 TCP 和 UDP 进行 socket 通信是一种广为人知的 socket 使用方式,除了这种方式还有一种称为 Unix套接的方式,可以实现同一主机上的进程间通信...虽然使用 127.0.01 环回地址也可以通过网络实现同一主机的进程间通信,但 Unix套接更可靠、效率更高。...Docker 守护进程(Docker daemon)使用Unix套接,容器中的进程可以通过它与Docker 守护进程进行通信。MySQL 同样提供了域套接进行访问的方式。...Unix套接是什么?...Unix套接更加高效,Unix 套接不用进行协议处理,不需要计算序列号,也不需要发送确认报文,只需要复制数据即可 Unix套接是可靠的,不会丢失报文,普通套接是为不可靠通信设计的 Unix

1K20

数据库PostrageSQL-服务器配置连接和认证

合理的候选是0770(只有用户和同组的人可以访问, 又见unix_socket_group)和0700(只有用户自己可以访问)(请注意,对于 Unix套接,只有写权限有麻烦,因此没有对读取和执行权限的设置和收回...在通过 Unix套接连接的会话中,这个参数被忽略并且总是读作零。 在 Windows 上,值若为 0,系统会将该参数设置为 2 小时,因为 Windows不支持读取系统默认值。...在通过 Unix套接连接的会话中,这个参数被忽略并总被读作零。 在 Windows 上,值若为 0,系统会将该参数设置为 1 秒,因为 Windows不支持读取系统默认值。...0 值表示使用系统默认值。这个参数只有在支持TCP_KEEPCNT或等效套接选项的系统上才可以使用。在其他系统上,必须为零。在通过 Unix套接连接的会话中,这个参数被忽略并总被读作零。...它可以文件中读取密码、钥匙链得到密码等等。确保选中的机制足够安全是用户的责任。 这个参数只能在 postgresql.conf文件中或服务器命令行上进行设置。

4.4K20

进程间通信方式有哪些?

概览 进程间通信常见方式如下: 管道 FIFO 消息队列 信号量 共享内存 UNXI域套接 套接(Socket) 管道 管道是一种古老的IPC通信形式。...消息队列与后面介绍的UNIX套接相比,在速度上没有多少优势。 信号量 信号量是一个计数器,它主要用在多个进程需要对共享数据进行访问的时候。...UNIX套接 UNIX套接套接很相似,但是它有更高的效率,因为它不需要执行协议处理,例如计算校验和,发送确认报文等等,它仅仅复制数据。 当然,它也只适用于同一台计算机上的进程间通信。...例如redis服务配置unixsocket启动后,通过redis-cli的-s参数就可以指定UNIX套接,连接到redis服务器。...$ redis-cli -s /tmp/redis.sock redis /tmp/redis.sock> 它会比使用网络套接的速度要快。

1.6K20

linux进程间通信方式有哪些_高级进程通信方式

概览 进程间通信常见方式如下: 管道 FIFO 消息队列 信号量 共享内存 UNXI域套接 套接(Socket) 管道 管道是一种古老的IPC通信形式。...消息队列与后面介绍的UNIX套接相比,在速度上没有多少优势。 信号量 信号量是一个计数器,它主要用在多个进程需要对共享数据进行访问的时候。...UNIX套接 UNIX套接套接很相似,但是它有更高的效率,因为它不需要执行协议处理,例如计算校验和,发送确认报文等等,它仅仅复制数据。 当然,它也只适用于同一台计算机上的进程间通信。...例如redis服务配置unixsocket启动后,通过redis-cli的-s参数就可以指定UNIX套接,连接到redis服务器。...$ redis-cli -s /tmp/redis.sock redis /tmp/redis.sock> 它会比使用网络套接的速度要快。

2.5K20

如何在Debian 9上使用Postgres,Nginx和Gunicorn设置Django

如果在/run目录中找不到gunicorn.sock文件,通常意味着systemd套接文件无法创建它。返回检查Gunicorn套接文件的部分,逐步完成Gunicorn的故障排除步骤。...connect() to unix:/run/gunicorn.sock failed (13: Permission denied) 这表明由于权限问题,Nginx无法连接到Gunicorn套接。...使用root用户而不是sudo用户执行该过程时,可能会发生这种情况。虽然systemd能够创建Gunicorn套接文件,但Nginx无法访问它。...在上面的示例中,套接文件和通向套接文件的每个目录都具有全局读取和执行权限(目录的权限列以r-x而不是---结束)。Nginx进程应该能够成功访问套接。...如果通向套接的任何目录没有全局读取和执行权限,则Nginx将无法在不允许全局读取和执行权限的情况下访问套接,或确保将组所有权授予Nginx所属的组的。

6.4K21

如何在Debian 10上使用Postgres,Nginx和Gunicorn设置Django

如果在/run目录中找不到gunicorn.sock文件,通常意味着systemd套接文件无法创建它。 回到检查Gunicorn套接文件的部分 ,逐步完成Gunicorn的故障排除步骤。...connect()到unix:/run/gunicorn.sock失败(13:权限被拒绝) 这表明由于权限问题,Nginx无法连接到Gunicorn套接。...使用root用户而不是sudo用户执行此过程时,可能会发生这种情况。 虽然systemd能够创建Gunicorn套接文件,但Nginx无法访问它。...在上面的示例中,套接文件和通向套接文件的每个目录都具有全局读取和执行权限(目录的权限列以rx而不是---结尾)。 Nginx进程应该能够成功访问套接。...如果通向套接的任何目录没有世界读取和执行权限,则Nginx将无法在不允许全局读取和执行权限的情况下访问套接,或确保将组所有权授予Nginx所属的组的。

5.8K30

Unix套接进程通信初探【Go版本】

与网络套接不同,Unix套接使用网络协议栈,因此性能更高。它们主要用于需要高效、低延迟的本地进程通信场景。...Unix套接的工作流程 服务器端操作流程: 创建套接使用系统调用创建一个套接文件描述符。 绑定套接:将套接绑定到一个文件系统路径,类似于网络套接绑定到IP地址和端口。...关闭套接:完成通信后,关闭套接并清理资源。 客户端操作流程: 创建套接使用系统调用创建一个套接文件描述符。 连接到服务器:使用系统调用连接到服务器端的套接路径。...安全:Unix套接只能在本地主机上使用,降低了网络攻击的风险。 简单:配置和使用比网络套接更简单,不需要考虑网络配置和防火墙等问题。...Unix套接是一种高效、可靠的本地进程间通信机制,适用于需要低延迟和高性能的应用场景。它们通过文件系统路径进行标识和通信,使用方便且配置简单,是本地主机上进程通信的重要工具。

8910

如何在Ubuntu 18.04上使用Postgres,Nginx和Gunicorn设置Django

如果在/run目录中找不到gunicorn.sock文件,通常意味着systemd套接文件无法创建它。返回检查Gunicorn套接文件的部分,逐步完成Gunicorn的故障排除步骤。...connect()到unix:/run/gunicorn.sock失败(13:权限被拒绝) 这表明由于权限问题,Nginx无法连接到Gunicorn套接。...使用root用户而不是sudo用户执行该过程时,可能会发生这种情况。虽然systemd能够创建Gunicorn套接文件,但Nginx无法访问它。...在上面的示例中,套接文件和通向套接文件的每个目录都具有全局读取和执行权限(目录的权限列以r-x而不是---)结束。Nginx进程应该能够成功访问套接。...如果通向套接的任何目录没有全局读取和执行权限,则Nginx将无法在不允许全局读取和执行权限的情况下访问套接,或确保将组所有权授予Nginx所属的组的。

6.5K40

Linux进程通信之Unix套接(一)

Linux进程通信之Unix套接(一) 什么是套接 所谓套接(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。...所处的地位来讲,套接上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口 以上来自百度(实际则就是一种连接) 支持的协议 AF_INET(IPV4...原始套接(SOCK_RAW)即提供读取原始的网络协议。这种特殊的套接可用于手工构建任意类型的协议。一般使用这个套接来实现 ICMP 请求(例如 ping)。...PHP中封装了以socket开头和stream开头的两种函数,都可以实现Unix套接通信,具体可以查看PHP官方手册 Unix套接还分无命名的(用于父子、兄弟等有血缘关系进程通信)和命名的(任何进程都可以通信...) 无命名代码示例 无命名Unix套接通信TCP协议和UDP协议都可以使用 <?

2.6K30

细说Containerd CVE-2020–15257

containerd-shim是用作容器运行的载体,实现容器生命周期管理, 其API以抽象命名空间Unix套接方式暴露,该套接可通过根网络名称空间访问。...这些是Linux独有的Unix套接,其使用以空字节开头的长度前缀键,并且可以包含任意二进制序列。...@/containerd-shim///shim.sock\0 @/containerd-shim/.sock\0 containered-shim不仅具有绑定和侦听此类套接的能力,它还支持其父进程接收任意套接文件描述符...containerd-shim所使用的抽象的Unix套接,是绑定在主机的网络命名空间上的。...在使用的containerd(-shim)的两个主要版本1.2.x和1.3.x中,暴露以下能力: 任意文件读取 任意文件追加 任意文件写入 containerd-shim中的任意命令执行 runc config.json

1.3K20

数据库PostrageSQL-阻止服务器欺骗

欺骗是可能的,因为任何用户都可以启动一个数据库服务器;客户端无法识别一个无效的服务器,除非它被专门配置。...一种阻止local连接欺骗的方法是使用一个 Unix套接目录 (unix_socket_directories),该目录只对一个被信任的本地用户有写权限。...这可以防止恶意用户在该目录中创建自己的套接文件。...如果你担心有些应用程序可能仍然引用/tmp下的套接文件并且因此容易受到欺骗,可在操作系统启动时创建一个符号链接/tmp/.s.PGSQL.5432指向一个被重定位的套接文件。...local连接的另一个选项是对客户端使用requirepeer指定所需的连接到该套接的服务器进程的拥有者。

54110

Tina_Linux_syslog_使用指南

如果支持网络功能,它可能还会创建一个UDP 套接,并捆绑到端口514。syslog 守护进程从这些套接读取日志信息,然后再输出到 设定的目标位置(文件、串口等)。...域套接,并连接到syslog 守护进程的Unix套接绑定的路径名上。...• option 参数支持以下的值,可通过或操作(OR)让其支持多个option : option 说明 LOG_CONS 若日志无法通过Unix套接送到syslog 守护进程,则将其输出到console...数据报套接/dev/log 获取日志 source src { internal(); unix-dgram("/dev/log"); }; # /proc/kmsg 中获取内核的日志...对于Unix 域数据报套接测试结果来看/proc/sys/net/unix/max_dgram_qlen 会影响其缓冲区大小,但具体的 机制还不清楚。

10.2K60

进程间通讯IPC的几种方式的优缺点总结

每个使用者都可以读取写入数据,往往与其他通信机制,如信号量配合使用,来实现进程间的同步和通信。而它的局限性也在于此.即共享内存的诸进程必须共处同一个计算机系统.有物理内存可以共享才行。...本地套接 进程间通信的一种方式是使用UNIX套接sockaddr_un,人们在使用这种方式时往往用的不是网络套接,而是一种称为本地套接的方式。本地套接用于本地进程间的通讯更安全和稳定。...使用套接函数socket创建,不过传递的参数与网络套接不同。域参数应该是PF_LOCAL或者PF_UNIX,而不能用PF_INET之类。...本地套接的通讯类型应该是SOCK_STREAM或SOCK_DGRAM,协议为默认协议。 创建了套接字后,还必须进行绑定才能使用。...sun_family只能是AF_LOCAL或AF_UNIX,而sun_path是本地文件的路径。通常将文件放在/tmp目录下。 本地套接的其他操作都与网络套接相似。

5.6K00
领券