python学习笔记-ipc机制 (进程间通信)及其代码实现

本文深入解析了进程间通信IPC的概念,探讨了空会话的特殊性,详细介绍了IPC建立过程及连接条件,并列举了常见错误号分析。实例演示了如何在Python中利用multiprocessing进行进程间通信,包括队列的使用和错误排查技巧。
摘要由CSDN通过智能技术生成

IPC(Inter-Process Communication,进程间通信)。进程间通信是指两个进程的数据之间产生交互

IPC的概念
空会话的概念
空会话是在没有信任的情况下与服务器建立的会话,对于一个空会话,LSA提供的令牌的SID(空会话的SID)是S-1-5-7,用户名是:ANONYMOUS LOGON(系统内置的帐号),该访问令牌包含下面伪装的组:Everyone和Network。
IPC建立的过程
1)会话请求者(客户)向会话接收者(服务器)传送一个数据包,请求安全隧道的建立;
2)服务器产生一个随机的64位数(实现挑战)传送回客户;
3)客户取得这个由服务器产生的64位数,用试图建立会话的帐号的口令打乱它,将结果返回到服务器(实现响应);
4)服务器接受响应后发送给本地安全验证(LSA),LSA通过使用该用户正确的口令来核实响应以便确认请求者身份。如果请求者的帐号是服务器的本地帐号,核实本地发生;如果请求的帐号是一个域的帐号,响应传送到域控制器去核实。当对挑战的响应核实为正确后,一个访问令牌产生,然后传送给客户。客户使用这个访问令牌连接到服务器上的资源直到建议的会话被终止。
IPC连接条件
★ 跟操作系统相关(NT/2000/XP可以建立ipc 连 接 , 98 / M E 不 能 建 立 i p c 连接,98/ME不能建立ipc 98/MEipc连接);
★ 目标主机必须要开启ipc 共 享 ; ★ 本 地 主 机 必 须 要 启 动 L a n m a n w o r k s t a t i o n 服 务 ( 功 能 为 提 供 网 络 链 结 和 通 讯 ) ; ★ 目 标 主 机 必 须 要 启 动 L a n m a n s e r v e r 服 务 ( i p c 共享; ★本地主机必须要启动Lanmanworkstation服务(功能为提供网络链结和通讯); ★ 目标主机必须要启动Lanmanserver服务(ipc LanmanworkstationLanmanserveripc依赖于此服务,它提供了 RPC 支持、文件、打印以及命名管道共享);
★ 目标主机必须要启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份;
★ 目标主机应该启动NBT(打开139端口);
★ 目标主机防火墙配置(如果屏蔽139和445端口也将导致连接失败);
★ 用户名或者密码错误;
★ 命令输入错误(特别要注意空格的输入,用户名和密码中不包含空格时两边的双引号可以省略,密码为空,直接输入两个引号"");
★ 建立好连接后目标主机重启,ipc 连 接 会 自 动 断 开 。 连 接 错 误 号 分 析 错 误 号 5 : 拒 绝 访 问 , 权 限 不 够 ; 错 误 号 51 : 无 法 找 到 网 络 路 径 ( 网 络 有 问 题 ) ; 错 误 号 53 : 找 不 到 网 络 路 径 ( i p 地 址 错 误 ; 目 标 主 机 未 开 机 ; 目 标 主 机 l a n m a n s e r v e r 服 务 未 启 动 ; 目 标 主 机 防 火 墙 设 置 过 滤 端 口 ) ; 错 误 号 67 : 找 不 到 网 络 名 ( 本 地 主 机 中 l a n m a n w o r k s t a t i o n 服 务 未 启 动 或 者 目 标 主 机 删 除 了 i p c 连接会自动断开。 连接错误号分析 错误号5: 拒绝访问,权限不够; 错误号51: 无法找到网络路径(网络有问题); 错误号53: 找不到网络路径(ip地址错误;目标主机未开机;目标主机lanmanserver服务未启动;目标主机防火墙设置过滤端口); 错误号67: 找不到网络名(本地主机中lanmanworkstation服务未启动或者目标主机删除了ipc 5访5153iplanmanserver67lanmanworkstationipc);
错误号1219: 提供的凭据与已存在的凭据集冲突(已经建立了一个ipcKaTeX parse error: Undefined control sequence: \ipc at position 122: …连接: net use\\IP\̲i̲p̲c̲"" /user:""
★ 建立非空连接: net use\IP\ipc$“password” /user:“username”
★ 查看远程主机的共享资源(但看不到默认共享) net view\IP
★ 查看本地主机的共享资源(可以看到本地的默认共享) net share
★ 得到远程主机的用户名列表 nbtstat -A IP
★ 得到本地主机的用户列表 net user
★ 查看远程主机的当前时间 net time\IP
★ 显示本地主机当前服务 net start
★ 启动/关闭本地服务 net start 服务名 /y net stop 服务名 /y
★ 映射远程共享: net use z:\IP\sihochina此命令将共享名为sihochina的共享资源映射到z盘
★ 删除共享映射 net use z: /del /y 删除映射的z盘net use * /del /y 删除全部
★ 向远程主机复制文件 copy \路径*.exe\IP\共享目录名,如: copy sihochina.exe\IP\c将当前目录下的sihochina.exe复制到对方c盘内
★ 远程添加计划任务 at\ip时间 程序名,如: at\192.168.0.111:00 sihochina.exe 11:00在主机192.168.0.1上运行sihochina.exe

代码实现

from multiprocessing import Queue, Process

"""
    一.主进程跟子进程借助于队列通信
    二.子进程跟子进程借助于队列通信
"""
def producer(A):
    A.put('准备服务')


def consumer(A):
    print(A.get())


if __name__ == '__main__':
    A = Queue()
    B = Process(target=producer,args=(A,))
    B1 = Process(target=consumer,args=(A,))
    B.start()
    B1.start()

效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值