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

Unix协议学习小结

根据《Unix网络编程卷1》,选择Unix套接有以下三点理由: 尽管使用API类似于网络套接,但是所有的通信几乎都是发生在操作系统内核层面,往往比在同一个主机上使用TCP通信快一倍 Unix套接可以在同一主机不同进程间传递描述符...Unix套接可以把客户凭证(用户ID以及组ID)提供给服务器,从而能够提供额外安全检查措施 使用方式 Unix套接对比网络套接,在适用方式上主要有以下几点不同: 1、地址 Unix套接使用...2、客户端显示调用bind 客户端使用Unix套接一般都需要显示调用bind函数,而不像网络socket一样依赖系统自动分配地址。...数据包协议要求客户端必须显示bind一个路径名套接,这样服务器才能够回射应答路径名。...该函数创建两个套接都是无名socket,在Linux中,完全可以把这一对socket当成pipe返回描述符一样使用使用方式: sockfd0sockfd1每个套接都可用于读写。

2K20

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

unix_socket_directories (string) 指定服务器用于监听来自客户端应用连接 Unix 套接目录。通过列出用逗号分隔多个目录可以建立多个套接。...unix_socket_group (string) 设置 Unix 套接所属组(套接所属用户总是启动服务器用户)。...Windows 下没有 Unix 套接,因此这个参数与 Windows 无关。 unix_socket_permissions (integer) 设置 Unix 套接访问权限。...Unix 套接使用普通 Unix 文件系统权限集。这个参数值应该是数字形式,也就是系统调用chmodumask接受 形式(如果使用自定义八进制格式,数字必须以一个0(零)开头)。...合理候选是0770(只有用户同组的人可以访问, 又见unix_socket_group)0700(只有用户自己可以访问)(请注意,对于 Unix 套接,只有写权限有麻烦,因此没有对读取执行权限设置收回

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

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

,不管客户端发送什么消息,服务器端接受到消息之后原样返回给客户端。...[sockfd] socket函数返回套接描述符 [myaddr] 是指向本地IP地址通用套接结构 [addrlen] 特定套接结构长度(IPv4、IPv6、Unix...[sockfd] socket等待接受连接侦听套接。 [cliaddr] 客户端协议地址。如果不关注客户端地址,可以设置为NULL。...[sockfd] 由socket函数创建套接连接 [servaddr] 包含服务器IP地址端口号套接地址结构 [addrlen] 套接地址结构大小。...由机器字节序转变为网络字节序,网际协议使用大端字节序来表示 字符,而机器则是不同操作系统使用不同字节序 read 从连接套接读取指定长度内容

86830

RPC 服务器之【多进程描述符传递】高阶模型

这个「管道」比较特殊,它是 Unix 套接。普通套接可以跨机器传输消息Unix 套接只能在同一个机器不同进程之间传递消息。...同管道一样,Unix 套接也分为有名套接无名套接,有名套接会在文件系统指定一个路径名,无关进程之间都可以通过这个路径来访问 Unix 套接。...但是父子进程描述符都会指向同一个内核套接对象。 有了描述符传递能力,父进程就可以将 accept 客户端套接轮流传递给多个 Slave 进程,负载均衡目标就可以顺利实现了。...但是需要提供消息长度辅助数据长度参数。辅助数据长度比较特殊,需要使用 CMSG_LEN 方法来计算,因为辅助数据里面还有我们看不到额外头部信息。...父进程使用 roundrobin 策略平均分配接收到客户端套接。子进程接收到是一个描述符整数,需要将描述符包装成套接对象后方可读写。

90220

Linux进程间通信方式之socket使用实例

地址格式随(又被称为协议族,protocol family)不同而不同。每个协议族又可以使用一个或多个地址族定义地址格式。 1.套接 指定套接通信中使用网络介质。...最常见套接是AF_INET,它是指Internet网络,许多Linux局域网使用都是该网络,当然,因特网自身用也是它。...2.套接类型 流套接(在某些方面类似标准输入/输出流)提供是一个有序,可靠,双向字节流连接。...数据包套接 与流套接相反,由类型SOCK_DGRAM指定数据包套接不建立维持一个连接。它对可以发送数据包长度有限制。...一是普通命名,socket会根据此命名创建一个同名socket文件,客户端连接时候通过读取socket文件连接到socket服务端。

5.1K61

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

这篇会结合跨进程通信中信号 Unix 套接来看 JVM Attach API 实现原理, 你将获得下面这些相关知识 信号是什么 如何写一个不能被“轻易”杀死程序 Unix 套接用法...套接Unix Domain Socket使用 TCP UDP 进行 socket 通信是一种广为人知 socket 使用方式,除了这种方式还有一种称为 Unix 套接方式,可以实现同一主机上进程间通信...Docker 守护进程(Docker daemon)使用Unix 套接,容器中进程可以通过它与Docker 守护进程进行通信。MySQL 同样提供了套接进行访问方式。...Unix 套接更加高效,Unix 套接不用进行协议处理,不需要计算序列号,也不需要发送确认报文,只需要复制数据即可 Unix 套接是可靠,不会丢失报文,普通套接是为不可靠通信设计 Unix...这个过程如下图所示: Attach API 过程 小结 这篇文章介绍了同一主机进程间通信两种方式,信号 Unix 套接,JVM Attach 机制充分利用了信号套接提供功能,先创建一个临时文件

1K20

UNIX协议(命名套接

这里主要介绍命名UNIX套接 1.什么是UNIX套接 Unix协议并不是一个实际协议族,而是在单个主机上执行客户/服务通信一种方式。是进程间通信(IPC)一种方式。...它提供了两类套接:字节流套接(有点像TCP)和数据报套接(有点像UDP) UNIX数据报服务是可靠,不会丢失消息,也不会传递出错。...2.UNIX协议特点 1)UNIX套接TCP套接相比,在同一台主机传输速度前者是后者两倍。...UNIX套接仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验,不产生顺序号,也不需要发送确认报文 2)UNIX套接可以在同一台主机上各进程之间传递文件描述符 3)UNIX...比如把上面的目录改成/tmp/test_socket 3)UNIX流式套接connect发现监听队列满时,会立刻返回一个ECONNREFUSED,这TCP不同,如果监听队列满了,会忽略到来SYN

3K100

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

Unix套接工作流程 服务器端操作流程: 创建套接使用系统调用创建一个套接文件描述符。 绑定套接:将套接绑定一个文件系统路径,类似于网络套接绑定IP地址端口。...关闭套接:完成通信后,关闭套接并清理资源。 客户端操作流程: 创建套接使用系统调用创建一个套接文件描述符。 连接到服务器:使用系统调用连接到服务器端套接路径。...通信:通过读写操作在客户端和服务器之间传输数据。 关闭套接:完成通信后,关闭套接并清理资源。 优点应用场景 优点: 高效:由于不涉及网络协议栈处理,Unix套接具有更低开销更高性能。...安全:Unix套接只能在本地主机上使用,降低了网络攻击风险。 简单:配置使用比网络套接更简单,不需要考虑网络配置防火墙等问题。...它们通过文件系统路径进行标识通信,使用方便且配置简单,是本地主机上进程通信重要工具。 Go语言实现 下面来用Go语言实现一个基于unix服务端客户端,并且模拟进行进程间通讯。

8510

Linux C Socket Api详解

UNIX 环境高级编程对Socket通信描述是套接网络IPC(进程间通信),可以用于计算机间通信也可用于计算机内通信,管道、消息队列、信号量以及共享内存等都是属于计算机内通信情况。 ?...与应用程序使用文件描述符一样,访问套接需要使用套接描述符。套接描述符在UNIX系统是用文件描述符实现。...当对同一套接类型支持多个协议时,可以使用proticol参数选择一个特定协议。...这个新套接描述符原始套接(sockfd)具有相同套接类型地址族。传给accept原始套接没有关联这个连接,而是继续保持可用状态并接受其他连接请求。...Linux Socket Server 与 Client 例子 个人觉得这只是套接入门,如果一个服务器要连接多个客户端呢?以后有机会大家一起分享下select套接用法。

5.5K10

详解操作系统之进程间通信 IPC (InterProcess Communication)

(1)套接 它指定套接通信中使用网络介质,最常见套接有两种: 一是AF_INET,它指的是Internet网络。...当客户使用套接进行跨网络连接时,它就需要用到服务器计算机IP地址端口来指定一台联网机器上某个特定服务,所以在使用socket作为通信终点,服务器应用程序必须在开始通信之前绑定一个端口,服务器在指定端口等待客户连接...另一个AF_UNIX,表示UNIX文件系统,它就是文件输入/输出,而它地址就是文件名。...原始套接与标准套接区别在于: 原始套接可以读写内核没有处理IP数据包,而流套接只能读取TCP协议数据,数据报套接只能读取UDP协议数据。...客户端 (1)客户应用程序首先调用socket来创建一个未命名套接,然后将服务器命名套接作为一个地址来调用connect与服务器建立连接。

2.4K30

看图理解进程间通信IPC

信号(Signal) 系统消息从一个进程发送到另一个进程,一般不用于传输数据,而是用于远程传输命令。 套接(Socket) 通过网络接口将数据量发送到本机不同进程或远程计算机。...Unix套接(Unix domain socket) 用于在同一台机器上运行进程之间通信。虽然因特网套接可用于同一目的,但UNIX套接效率更高。...UNIX套接仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验,不要产生顺序号,无需发送确认报文。...消息队列(Message queue) 类似于套接数据流,但消息有自己结构,它允许多个进程只需要读写消息队列,而不需要直接相互连接。...消息传递(Message passing) 一般在并发模型中,允许多个程序使用消息队列或者托管通道通信。

2.5K20

python3--socket编程(tcp协议)

所以我们只要确立了ipport就能找到一个应用程序,并且使用socket模块来与之通信。...套接socket发展史 套接起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本 Unix,即人们所说 BSD Unix。...套接有两种(或者称为有两个种族),分别是基于文件型基于网络型 基于文件类型套接家族 套接家族名字:AF_UNIX unix一切皆文件,基于文件套接字调用就是底层文件系统来取数据,两个套接进程运行在同一机器...套接socket)初使用 基于TCP协议socket tcp是基于链接,必须先启动服务端,然后再启动客户端去链接服务端 windows如果不通,注意关闭防火墙 server端 import socket... 'q':  # (一定要是client先退出,读取内容为q,则退出)         conn.close()  # 关闭客户端套接         sk.close()  # 关闭服务器套接

1.7K30

如何在Debian 10上使用Postgres,NginxGunicorn设置Django

部分来描述套接,一个[Socket]部分来定义套接位置,还有一个[Install]部分来确保套接是在正确时间创建: /etc/systemd/system/gunicorn.socket [Unit...您可能会看到以下消息: connect()unix:/run/gunicorn.sock失败(2:没有这样文件或目录) 这表明Nginx无法在给定位置找到gunicorn.sock文件。...connect()unix:/run/gunicorn.sock失败(13:权限被拒绝) 这表明由于权限问题,Nginx无法连接到Gunicorn套接。...在上面的示例中,套接文件通向套接文件每个目录都具有全局读取执行权限(目录权限列以rx而不是---结尾)。 Nginx进程应该能够成功访问套接。...如果通向套接任何目录没有世界读取执行权限,则Nginx将无法在不允许全局读取执行权限情况下访问套接,或确保将组所有权授予Nginx所属

5.8K30

Pythonsocket编程,有兴趣了解一下?

socket起源于UNIX,在Unix一切皆文件哲学思想下,socket是一种"打开—读/写—关闭"模式实现,服务器客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容...socket英文原义是“插槽”或“插座”,就像我们家里座机一样,如果没有网线那个插口,电话是无法通信Socket是实现TCP,UDP协议接口,便于使用TCP,UDP。...Socket流程介绍 socket通信流程我们在这里简化成10个step: step1:创建服务器socket客户端socket(两个py文件) step2:服务器绑定socketip地址端口号...) step6:客户端连接成功,向服务器发送连接成功状态信息 step7:客户端socket写入信息(or服务端写入信息) step8:服务端读取socket信息(or客户端读取信息) step9:...sk.bind() # 绑定地址(host,port)套接, 在AF_INET下,以元组(host,port)形式表示地址。

81810

如何在Ubuntu 18.04上使用Postgres,NginxGunicorn设置Django

[Unit]部分,一个定义套接位置[Socket]部分,以及一个确保在正确时间创建套接[Install]部分: [Unit] Description=gunicorn socket ​ [Socket...您可能会看到以下消息: connect()unix:/run/gunicorn.sock失败(2:没有这样文件或目录) 这表明Nginx无法在给定位置找到该gunicorn.sock文件。...connect()unix:/run/gunicorn.sock失败(13:权限被拒绝) 这表明由于权限问题,Nginx无法连接到Gunicorn套接。...在上面的示例中,套接文件通向套接文件每个目录都具有全局读取执行权限(目录权限列以r-x而不是---)结束。Nginx进程应该能够成功访问套接。...如果通向套接任何目录没有全局读取执行权限,则Nginx将无法在不允许全局读取执行权限情况下访问套接,或确保将组所有权授予Nginx所属

6.5K40

如何在Debian 9上使用Postgres,NginxGunicorn设置Django

[Unit]部分,一个定义套接位置[Socket]部分,以及一个确保在正确时间创建套接[Install]部分: [Unit] Description=gunicorn socket ​ [Socket...文件,则表明无法正确创建Gunicorn套接。...,我们可以curl通过键入以下内容来发送连接到套接: curl --unix-socket /run/gunicorn.sock localhost 您应该在终端中看到应用程序HTML输出。...在上面的示例中,套接文件通向套接文件每个目录都具有全局读取执行权限(目录权限列以r-x而不是---结束)。Nginx进程应该能够成功访问套接。...如果通向套接任何目录没有全局读取执行权限,则Nginx将无法在不允许全局读取执行权限情况下访问套接,或确保将组所有权授予Nginx所属

6.4K21

python学习----------so

网络上两个程序通过一个双向通信连接实现数据交换,这个连接一端称为socketsocket通常也叫做"套接",用来描述ip地址端口,是一个通信连句柄,可以实现不同虚拟机计算机之间通信。...简单表达就是:两个程序通过网络交互数据就使用socket,也就是建立连接传输数据 二、socket通信流程     socket其实就是对文件操作一个实现,即就是“打开---读写---关闭”以...客户端连接成功,向服务端发送连接状态信息 服务端accept方法返回,连接成功 客户端socket写入信息 服务器读取信息 客户端关闭 服务端关闭 三、用代码来演示     我们用程序来演示消息传递...   数据报式socket , for UDP   socket.SOCK_RAW 原始套接,普通套接无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊...其它 sk.bind(address)   s.bind(address) 将套接绑定地址。

1K10

【Linux】《how linux work》第十章 网络应用和服务(2)

Linux用户大多免疫于恶意软件,如电子邮件蠕虫病毒,仅仅因为他们电子邮件客户端并不愚蠢实际运行他们在消息附件中收到程序。- 但Linux上确实存在恶意软件。...,我们在第 3 章中简要介绍过,称为 Unix 套接当一个进程连接到一个 Unix 套接时,它几乎与网络套接行为完全相同:它可以在套接上监听并接受连接,甚至可以选择不同类型套接来使其表现得像...甚至不需要配置网络就可以使用它。而且 Unix 套接不必绑定套接文件上。一个进程可以创建一个未命名 Unix 套接,并与另一个进程共享地址。...domain socket at /var/run/mysqld/mysqld.sock.编写Unix套接代码与支持普通网络套接并无太大不同。...由于好处可能非常显著,一些网络服务器提供通过网络Unix套接进行通信功能。

10910
领券